Este documento mostra como configurar credenciais preparadas para clusters de utilizadores no Google Distributed Cloud.
Com as credenciais preparadas, pode armazenar credenciais para os seus clusters de utilizadores em segredos no cluster de administrador. Isto oferece um elemento de segurança, porque não tem de manter as palavras-passe e as chaves de contas de serviço na sua estação de trabalho de administrador à medida que cria os clusters de utilizadores.
Tenha em atenção a seguinte limitação com os clusters avançados:
- Versão 1.31: as credenciais preparadas não são suportadas em clusters avançados.
- Versão 1.32 e superior: as credenciais preparadas são suportadas em clusters avançados.
Prepara os segredos no cluster de administrador antecipadamente. Em seguida, à medida que cria clusters de utilizadores, pode especificar que determinadas credenciais devem ser retiradas dos segredos preparados no cluster de administrador. Também pode usar os segredos preparados quando roda as credenciais num cluster de utilizadores.
Antes de começar
Crie um cluster de administrador se ainda não tiver um.
Vista geral do procedimento
Preencha um ficheiro de configuração de segredos.
No cluster de administrador, crie grupos de segredos. Cada grupo de segredos está no seu próprio espaço de nomes do Kubernetes.
Crie um cluster de utilizadores. No ficheiro de configuração do cluster de utilizadores, indique que quer que as credenciais sejam retiradas de segredos num espaço de nomes específico no cluster de administrador.
Crie grupos de Secrets adicionais e versões adicionais dos seus Secrets, conforme necessário.
Atualize as credenciais de um cluster de utilizadores existente conforme necessário.
Crie clusters de utilizadores adicionais conforme desejado. Em cada ficheiro de configuração do cluster de utilizadores, especifique um namespace de segredos. Também pode especificar que versão de um Secret quer usar para uma credencial específica.
Preencha o ficheiro de configuração de segredos
Gere um modelo para um ficheiro de configuração de segredos:
gkectl create-config secrets
O comando anterior gera um ficheiro com o nome secrets.yaml
. Pode alterar o nome e a localização deste ficheiro, se quiser.
Familiarize-se com o ficheiro de configuração lendo o documento Ficheiro de configuração de segredos. Recomendamos que mantenha este documento aberto num separador ou numa janela separados.
No ficheiro de configuração de segredos, preencha os valores relevantes para a sua situação. Tem de preencher um valor para namespace
que comece por
gke-onprem-secrets-
.
Segue-se um exemplo de um ficheiro de configuração de segredos que tem um grupo de segredos. O grupo tem valores para as credenciais do vCenter e quatro chaves de contas de serviço:
apiVersion: v1 kind: ClusterSecrets secretGroups: - namespace: "gke-onprem-secrets-user-cluster-1" secrets vCenter: username: "my-vcenter-account" password: "U$icUKEW#INE" componentAccessServiceAccount: serviceAccountKeyPath: "my-key-folder/component-access-key.json" registerServiceAccount: serviceAccountKeyPath: "my-key-folder/connect-register-key.json" stackdriverServiceAccount: serviceAccountKeyPath: "my-key-folder/log-mon-key.json" cloudAuditLoggingServiceAccount: serviceAccountKeyPath: "my-key-folder/audit-log-key.json"
Crie Secrets preparados
Crie segredos preparados no cluster de administrador:
gkectl prepare secrets --kubeconfig ADMIN_CLUSTER_KUBECONFIG --secret-config SECRETS_CONFIG
Substitua o seguinte:
ADMIN_CLUSTER_KUBECONFIG: o caminho do ficheiro kubeconfig do cluster de administrador
SECRETS_CONFIG: o caminho do seu ficheiro de configuração de segredos
Veja os seus segredos preparados
Liste os segredos preparados no cluster de administração:
gkectl list secrets --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Exemplo de saída:
The following secrets have been found: - namespace: gke-onprem-secrets-user-cluster-1 - secrets with name prefix: component-access-sa-creds name: component-access-sa-creds.1, version 1, age: 58s - secrets with name prefix: cloud-audit-logging-service-account-creds name: cloud-audit-logging-service-account-creds.1, version: 1, age: 58s - secrets with name prefix: register-service-account-creds name: register-service-account-creds.1, version: 1, age: 58s - secrets with name prefix: stackdriver-service-account-creds name: stackdriver-service-account-creds.1, version: 1, age: 58s - secrets with name prefix: vsphere-creds name: vsphere-creds.1, version: 1, age: 58s
Também pode executar kubectl get secrets
para listar os segredos num espaço de nomes. Por
exemplo:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get secrets --namespace gke-onprem-secrets-user-cluster-1
Exemplo de saída:
component-access-sa-creds ... cloud-audit-logging-service-account-creds ... register-service-account-creds.1 ... stackdriver-service-account-creds.1 ... vsphere-creds.1 ...
Na saída anterior, pode ver que cada nome do Secret tem uma extensão que indica a versão do Secret. Neste exemplo, todos os segredos têm a versão 1.
Crie um cluster de utilizadores
Siga as instruções em Crie um cluster de utilizadores.
À medida que preenche o ficheiro de configuração do cluster de utilizadores, introduza um valor para
preparedSecrets.namespace
. Este valor tem de corresponder a um espaço de nomes que especificou anteriormente num ficheiro de configuração de segredos.
Exemplo:
preparedSecrets: namespace: "gke-onprem-secrets-user-cluster-1"
No ficheiro de configuração do cluster de utilizadores, não especifique valores para os seguintes campos. Estes campos não são necessários porque o Google Distributed Cloud obtém as credenciais e as chaves dos seus segredos preparados.
vCenter.credentials.fileRef.path
componentAccessServiceAccountKeyPath
loadBalancer.f5BigIP.credentials.fileRef.path
gkeConnect.registerServiceAccountKeyPath
stackdriver.serviceAccountKeyPath
usageMetering.bigQueryServiceAccountKeyPath
cloudAuditLogging.serviceAccountKeyPath
privateRegistry.credentials.fileRef.path
No ficheiro de configuração do cluster de utilizadores, especifique as versões dos segredos preparados que pretende usar. Segue-se um exemplo que especifica a versão 1 para cada um dos cinco segredos:
vCenter: credentials: secretRef: version "1" ... componentAccessServiceAccountKey: secretRef: version: "1" ... gkeConnect: registerServiceAccountKey: secretRef: version: "1" ... stackdriver: serviceAccountKey: secretRef: version: "1" ... cloudAuditLogging: serviceAccountKey: secretRef: version: "1"
O valor de version
tem de ser uma string de número inteiro ou a string "latest". Se não especificar um valor para version
, é usada a versão mais recente.
Conclua a criação do cluster de utilizadores conforme descrito em Crie um cluster de utilizadores.
Crie Secrets preparados adicionais
Esta secção mostra como criar a versão 2 de alguns dos segredos num espaço de nomes existente.
Crie um novo ficheiro de configuração de segredos denominado secrets-2.yaml
. Especifique um espaço de nomes existente e faculte credenciais para os segredos selecionados.
Exemplo:
apiVersion: v1 kind: ClusterSecrets secretGroups: - namespace: "gke-onprem-secrets-user-cluster-1" secrets: stackdriverServiceAccount: serviceAccountKeyPath: "log-mon-sa-2.json" cloudAuditLoggingServiceAccount: serviceAccountKeyPath: "audit-log-sa-2.json"
O exemplo anterior fornece caminhos de chaves para os seguintes segredos no espaço de nomes gke-onprem-secrets-user-cluster-1
.
- Versão 2 do
stackdriver-service-account-creds
secret - Versão 2 do
cloud-audit-logging-service-account-creds
secret
Crie os novos Secrets:
gkectl prepare secrets --kubeconfig ADMIN_CLUSTER_KUBECONFIG --secret-config secrets-2.yaml
Liste os segredos preparados no cluster de administração:
gkectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG list secrets
Exemplo de saída:
The following secrets have been found: - namespace: gke-onprem-secrets-user-cluster-1 - secrets with name prefix: component-access-sa-creds name: component-access-sa-creds.1, version 1, age: 11h - secrets with name prefix: cloud-audit-logging-service-account-creds name: cloud-audit-logging-service-account-creds.1, version: 1, age: 11h name: cloud-audit-logging-service-account-creds.2, version: 2, age: 33m - secrets with name prefix: register-service-account-creds name: register-service-account-creds.1, version: 1, age: 11h - secrets with name prefix: stackdriver-service-account-creds name: stackdriver-service-account-creds.1, version: 1, age: 11h name: stackdriver-service-account-creds.2, version: 2, age: 33m - secrets with name prefix: vsphere-creds name: vsphere-creds.1, version: 1, age: 11h
Na saída anterior, pode ver que existem duas versões do
stackdriver-service-account-creds
Secret e duas versões do
cloud-audit-logging-service-account-creds
Secret.
Rode as credenciais de um cluster de utilizadores
Esta secção mostra como rodar as credenciais selecionadas para um cluster de utilizadores existente.
Antes de rodar as credenciais, verifique as versões secretas atuais usadas no cluster:
gkectl list secrets cluster --cluster-name USER_CLUSTER_NAME kubeconfig ADMIN_CLUSTER_KUBECONFIG
Exemplo de saída:
The following prepared secrets have been used for cluster "user-cluster-1": - namespace: gke-onprem-secrets-user-cluster-1 secret: vsphere-creds.1, version: 1 secret: f5-creds.1, version: 1 secret: component-access-sa-creds.1, version 1 secret: register-service-account-creds.1, version: 1 secret: stackdriver-service-account-creds.1, version: 1 secret: cloud-audit-logging-service-account-creds.1, version: 1
Copie o ficheiro de configuração do cluster de utilizadores para um ficheiro denominado user-cluster-update.yaml
.
Em user-cluster-update.yaml
, adicione secções serviceAccountKey
. Por exemplo, o exemplo seguinte tem serviceAccountKey
secções em stackdriver
e cloudAuditLogging
:
stackdriver: projectID: "my-project-123" clusterLocation: "us-central1" serviceAccountKey: secretRef: version: "2" cloudAuditLogging: projectID: "my-project-123" clusterLocation: "us-central-1" serviceAccountKey: secretRef: version: "latest"
O exemplo anterior especifica que, quando o cluster de utilizadores é atualizado, usa:
Versão 2 do
stackdriver-service-account-creds
secretA versão mais recente do
cloud-audit-logging-service-account-creds
Secret. Neste exemplo, é a versão 2.
Atualize as credenciais do cluster de utilizadores:
gkectl update credentials stackdriver --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config user-cluster-2.yaml gkectl update credentials cloudauditlogging --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config user-cluster-2.yaml
Agora, o cluster de utilizadores usa os seguintes segredos preparados:
- Versão 1 de
vsphere-creds
- Versão 1 de
component-access-sa-creds
- Versão 1 de
register-service-account-creds
- Versão 2 de
stackdriver-service-account-creds
- Versão 2 de
cloud-audit-logging-service-account-creds
Crie segredos e clusters de utilizadores adicionais
Se planeia criar clusters de utilizadores adicionais, pense em como quer organizar os segredos preparados. Pode criar um espaço de nomes separado no cluster de administrador para cada cluster de utilizador. Em alternativa, pode querer partilhar o mesmo espaço de nomes secreto preparado para vários ou todos os clusters de utilizadores.
Por exemplo, suponhamos que a Alice, o Bob e a Carol vão ter cada um um cluster de utilizadores. Pode criar três grupos secretos, como mostrado neste exemplo:
apiVersion: v1 kind: ClusterSecrets secretGroups: - namespace: "gke-onprem-secrets-alice" secrets: vCenter: username: "alice" password: "zC7r^URDPq2t" componentAccessServiceAccount: serviceAccountKeyPath: "component-access-sa-a.json" registerServiceAccount: serviceAccountKeyPath: "register-sa-a.json" stackdriverServiceAccount: serviceAccountKeyPath: "log-mon-sa-a.json" cloudAuditLoggingServiceAccount: serviceAccountKeyPath: "audit-log-sa-a.json" - namespace: "gke-onprem-secrets-bob" secrets: vCenter: username: "bob" password: "zC8r^URDPq2t" componentAccessServiceAccount: serviceAccountKeyPath: "component-access-sa-b.json" registerServiceAccount: serviceAccountKeyPath: "register-sa-b.json" stackdriverServiceAccount: serviceAccountKeyPath: "log-mon-sa-b.json" cloudAuditLoggingServiceAccount: serviceAccountKeyPath: "audit-log-sa-b.json" - namespace: "gke-onprem-secrets-carol" secrets: vCenter: username: "carol" password: "zC9r^URDPq2t" componentAccessServiceAccount: serviceAccountKeyPath: "component-access-sa-c.json" registerServiceAccount: serviceAccountKeyPath: "register-sa-c.json" stackdriverServiceAccount: serviceAccountKeyPath: "log-mon-sa-c.json" cloudAuditLoggingServiceAccount: serviceAccountKeyPath: "audit-log-sa-c.json"
Ao longo do tempo, pode criar versões adicionais dos segredos em cada grupo de segredos.
Nos ficheiros de configuração do cluster de utilizadores, indique valores para
serviceAccountKey.secretRef.version
para especificar as versões dos seus segredos
que quer usar. Pode definir o valor como "latest"
, a string vazia ou uma string de número inteiro.
Por exemplo, suponhamos que todos os seus segredos têm as versões 1, 2 e 3. Suponhamos que esta é uma parte do ficheiro de configuração do cluster de utilizadores para a Alice.
apiVersion: v1 kind: UserCluster name: "user-cluster-alice" preparedSecrets: namespace: "gke-onprem-secrets-alice" ... vCenter: credentials: gkeConnect: projectID: "project-a" serviceAccountKey: secretRef: version: "2" stackdriver: projectID: "project-a" clusterLocation: "us-central1" serviceAccountKey: secretRef: version: "latest" cloudAuditLogging: projectID: "project-a" clusterLocation: "us-central-1" serviceAccountKey: secretRef: version: ""
No exemplo anterior, podemos ver:
Não existe nenhum
secretRef
especificado para o vCenter, pelo que o cluster vai usar a versão mais recente do segredovsphere-creds
no espaço de nomesgke-onprem-secrets-alice
.O cluster vai usar a versão 2 do
register-service-account-creds
Secret no espaço de nomesgke-onprem-secrets-alice
.O cluster vai usar a versão mais recente do Secret no espaço de nomes
gke-onprem-secrets-alice
.stackdriver-service-account-creds
Neste exemplo, é a versão 3.A versão de
cloudAuditLogging
é a string vazia, pelo que o cluster vai usar a versão mais recente do segredocloud-audit-logging-service-account-creds
no espaço de nomesgke-onprem-secrets-alice
. Neste exemplo, é a versão 3.Não existe nenhum
secretRef.version
especificado para a conta de serviço de acesso aos componentes, pelo que o cluster vai usar a versão mais recente.
Elimine segredos preparados
Para listar todos os segredos preparados e os respetivos espaços de nomes:
gkectl list secrets --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Se nenhum cluster de utilizadores estiver a usar um espaço de nomes secreto preparado, pode eliminar o espaço de nomes.
Para eliminar um espaço de nomes de segredos preparado e todos os segredos no mesmo:
gkectl delete secret –namespace PREPARED_SECRET_NAMESPACE \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Se um segredo preparado individual não estiver a ser usado por nenhum cluster de utilizadores, pode eliminar o segredo.
Para eliminar um segredo preparado individual:
gkectl delete secret –namespace PREPARED_SECRET_NAMESPACE \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --secret-name SECRET
Documentos relacionados
- Ficheiro de configuração de segredos
- Ficheiro de configuração do cluster de utilizadores
- Crie um cluster de utilizadores
- Crie contas de serviço