Como usar secrets para armazenar dados confidenciais
Use um Secret para armazenar informações sensíveis de configuração, como senhas e chaves de acesso, no cluster do GKE. Nesta página, descrevemos como o Config Connector usa valores de secret ao configurar os recursos do Google Cloud.
Visão geral
Nesta seção, apresentamos uma visão geral sobre o uso de Secrets com o Config Connector.
Como usar um secret ao criar um recurso
É possível usar os dados dentro de um secret ao criar um recurso. Em Como passar um secret para um recurso, crie um secret que contenha uma senha e referencie o secret de um usuário em um banco de dados do Cloud SQL.
Como atualizar Secrets
Quando você aplica uma atualização a um Secret, o Config Connector atualiza o recurso na próxima
reconciliação do estado pretendido. Por exemplo, se você atualizar o secret
mencionado como a senha de um SQLUser
, o Config Connector atualizará
a senha do usuário.
Como excluir Secrets
Se você excluir um secret que está sendo usado por um recurso, o Config Connector não removerá a referência do recurso do secret. Por exemplo, se você criar um SQLUser com uma senha que referencie um secret e, em seguida, excluir o secret, a senha permanecerá no SQLUser.
Solução de problemas
Se você criar um recurso que faça referência a um Secret inexistente o
Config Connector criará um Evento
DependencyNotFound
ou DependencyInvalid
.
Secrets e namespaces do Kubernetes
Como o Kubernetes não permite acesso a secrets nos namespaces, estão usando o mesmo valor de secret para recursos de namespaces diferentes, precisa aplicar secrets em todos os namespaces.
Como passar um Secret para um recurso
Nesta seção, você criará um servidor Cloud SQL e definirá a senha do usuário padrão com um Secret.
Antes de começar
Para concluir essas etapas, você precisa do seguinte:
- Config Connector instalado em um cluster do Kubernetes
A API Cloud SQL Admin ativada no seu projeto. Para confirmar que a API está ativada, execute o seguinte comando
gcloud
:gcloud services list --filter=sqladmin.googleapis.com
Se o comando imprimir
Listed 0 items.
, você precisará ativar a API. É possível ativar a API com o Config Connector e a API Resource Manager, ou um comandogcloud
.
API Service Usage
- O Config Connector usa a API Service Usage para ativar as APIs de serviço. Para executar
essas etapas, ative a
API
Service Usage. É possível ativar essa API usando a Google Cloud CLI:
gcloud services enable serviceusage.googleapis.com
Copie o seguinte YAML em um arquivo chamado
enable-sql.yaml
apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1 kind: Service metadata: name: sqladmin.googleapis.com
Aplique
enable-sql.yaml
ao cluster comkubectl
:kubectl apply -f enable-sql.yaml --namespace CC_NAMESPACE
Substitua
CC_NAMESPACE
pelo namespace em que o Config Connector gerencia recursos.
gcloud
Para ativar a API SQL Admin com a CLI do Google Cloud, execute o seguinte comando:
gcloud services enable sqladmin.googleapis.com
Como criar um servidor do Cloud SQL
Copie o YAML abaixo para um arquivo chamado
sql-server-example.yaml
. Isso cria um servidor do Cloud SQL chamadosqlserver-1
e um usuário chamadosqluser-sample
. A senha desqluser-sample
é definida por uma referência de recurso para um secret chamadosecret-1
.apiVersion: sql.cnrm.cloud.google.com/v1beta1 kind: SQLInstance metadata: labels: label-one: "sql-server-example" name: sqlserver-1 spec: region: us-central1 databaseVersion: MYSQL_5_7 settings: tier: db-g1-small --- apiVersion: sql.cnrm.cloud.google.com/v1beta1 kind: SQLUser metadata: name: sqluser-sample spec: instanceRef: name: sqlserver-1 host: "%" password: valueFrom: secretKeyRef: name: secret-1 # Name of the Secret object to extract a value from key: password # Key that identifies the value to be extracted
Copie o YAML abaixo para um arquivo chamado
example-secret.yaml
. Edite o valor depassword
antes de salvar. Isso declarasecret-1
, mencionado na seção anterior.apiVersion: v1 kind: Secret metadata: name: secret-1 stringData: password: PASSWORD
Aplique as configurações ao cluster.
kubectl apply -n CC_NAMESPACE -f example-secret.yaml
kubectl apply -n CC_NAMESPACE -f sql-server-example.yaml
Substitua
CC_NAMESPACE
pelo namespace em que o Config Connector gerencia recursos.O Config Connector cria a instância do Cloud SQL e um usuário com a senha que você especificou. Isso pode levar alguns minutos.
Aguarde alguns minutos e confirme se a instância está disponível:
gcloud sql instances list --filter="name=sqlserver-1"
O resultado precisa incluir um servidor com
STATUS
deRUNNABLE
.Confirme se é possível se conectar à instância SQL:
gcloud sql connect sqlserver-1 --user=sqluser-sample
Sua senha será solicitada.
Como limpar
Se você não quer manter a instância, exclua essa instância, o usuário e o
secret do Cloud SQL com kubectl
.
kubectl delete -n CC_NAMESPACE -f sql-server-example.yaml
kubectl delete -n CC_NAMESPACE -f example-secret.yaml
Substitua CC_NAMESPACE
pelo namespace em que o Config Connector gerencia recursos.
A seguir
Aprenda a especificar Referências de recursos entre os recursos do Config Connector.
Aprofunde-se nos Secrets do Kubernetes.