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. Esta página descreve como o Config Connector usa valores de secret ao configurar seus recursos 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, se você estiver usando o mesmo valor de secret para recursos de Namespaces diferentes, aplique 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 CLI do Google Cloud:
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.