Usar segredos para armazenar dados confidenciais
Pode usar um segredo para armazenar informações de configuração confidenciais, como palavras-passe e chaves de acesso, no seu cluster do GKE. Esta página descreve como o Config Connector usa valores secretos ao configurar os seus Google Cloud recursos.
Vista geral
Esta secção apresenta uma vista geral da utilização de segredos com o Config Connector.
Usar um Secret ao criar um recurso
Pode usar os dados num segredo quando cria um recurso. Em Transmitir um segredo a um recurso, cria um segredo que contém uma palavra-passe e, em seguida, faz referência ao segredo para um utilizador numa base de dados do Cloud SQL.
Atualizar segredos
Quando aplica uma atualização a um segredo, o Config Connector atualiza o recurso quando reconcilia o estado pretendido. Por exemplo, se atualizar o segredo que é referenciado como a palavra-passe para um SQLUser
, o Config Connector atualiza a palavra-passe do utilizador.
Eliminar segredos
Se eliminar um segredo que está a ser usado por um recurso, o Config Connector não remove a referência do recurso ao segredo. Por exemplo, se criar um SQLUser com uma palavra-passe que faça referência a um segredo e, em seguida, eliminar o segredo, a palavra-passe permanece no SQLUser.
Resolução de problemas
Se criar um recurso que faça referência a um segredo que não existe, o Config Connector cria um DependencyNotFound
ou um DependencyInvalid
Evento.
Informações secretas e espaços de nomes do Kubernetes
Uma vez que o Kubernetes não permite o acesso a segredos em todos os espaços de nomes, se estiver a usar o mesmo valor secreto para recursos de diferentes espaços de nomes, tem de aplicar segredos em todos os espaços de nomes.
Transmitir um Secret a um recurso
Nesta secção, vai criar um servidor do Cloud SQL e definir a palavra-passe do utilizador predefinido com um segredo.
Antes de começar
Para concluir estes passos, precisa do seguinte:
- Config Connector instalado num cluster do Kubernetes
A API Admin do Cloud SQL 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.
, tem de ativar a API. Pode ativar a API com o Config Connector e a API Resource Manager, ou umgcloud
comando.
API Service Usage
- O Config Connector usa a API Service Usage para ativar as APIs de serviços. Para realizar
estes passos, tem de ativar a API
Service Usage. Pode ativar esta API através da Google Cloud CLI:
gcloud services enable serviceusage.googleapis.com
Copie o seguinte YAML para um ficheiro com o nome
enable-sql.yaml
apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1 kind: Service metadata: name: sqladmin.googleapis.com
Aplique
enable-sql.yaml
ao seu cluster comkubectl
:kubectl apply -f enable-sql.yaml --namespace CC_NAMESPACE
Substitua
CC_NAMESPACE
pelo espaço de nomes a partir do qual o Config Connector gere os recursos.
gcloud
Para ativar a API Admin do SQL com a CLI do Google Cloud, execute o seguinte comando:
gcloud services enable sqladmin.googleapis.com
Criar um servidor do Cloud SQL
Copie o YAML abaixo para um ficheiro com o nome
sql-server-example.yaml
. Isto cria um servidor do Cloud SQL denominadosqlserver-1
e um utilizador denominadosqluser-sample
. A palavra-passe parasqluser-sample
é definida por uma referência de recurso para um segredo denominadosecret-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 ficheiro com o nome
example-secret.yaml
. Edite o valor depassword
antes de guardar. Isto declarasecret-1
, referenciado na secçã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 espaço de nomes a partir do qual o Config Connector gere os recursos.O Config Connector cria a instância do Cloud SQL e um utilizador com a palavra-passe que especificou. Pode demorar alguns minutos.
Aguarde vários minutos e confirme se a instância está disponível:
gcloud sql instances list --filter="name=sqlserver-1"
A saída deve incluir um servidor com um
STATUS
deRUNNABLE
.Confirme se consegue estabelecer ligação à instância do SQL:
gcloud sql connect sqlserver-1 --user=sqluser-sample
É-lhe pedida a sua palavra-passe.
Limpar
Se não quiser manter a instância, elimine a instância, o utilizador e o segredo do Cloud SQL com o comando kubectl
.
kubectl delete -n CC_NAMESPACE -f sql-server-example.yaml
kubectl delete -n CC_NAMESPACE -f example-secret.yaml
Substitua CC_NAMESPACE
pelo espaço de nomes a partir do qual o Config Connector gere os recursos.
O que se segue?
Saiba como especificar referências de recursos entre recursos do Config Connector.
Explore em detalhe os segredos do Kubernetes.