En este documento se explica cómo configurar credenciales preparadas para clústeres de usuario en Google Distributed Cloud.
Con las credenciales preparadas, puedes almacenar las credenciales de tus clústeres de usuarios en secretos de tu clúster de administrador. Esto proporciona un elemento de seguridad, ya que no tienes que guardar contraseñas ni claves de cuentas de servicio en tu estación de trabajo de administrador al crear tus clústeres de usuarios.
Ten en cuenta la siguiente limitación de los clústeres avanzados:
- Versión 1.31: las credenciales preparadas no se admiten en los clústeres avanzados.
- Versión 1.32 y posteriores: las credenciales preparadas se admiten en clústeres avanzados.
Prepara los secretos en el clúster de administrador con antelación. Después, cuando crees clústeres de usuarios, podrás especificar que se tomen determinadas credenciales de los secretos preparados en el clúster de administrador. También puedes usar los secretos preparados cuando rotes las credenciales en un clúster de usuario.
Antes de empezar
Crea un clúster de administrador si aún no tienes uno.
Resumen del procedimiento
Rellena un archivo de configuración de secretos.
En tu clúster de administrador, crea grupos de secretos. Cada grupo de secretos está en su propio espacio de nombres de Kubernetes.
Crea un clúster de usuarios. En el archivo de configuración del clúster de usuarios, indica que quieres que las credenciales se tomen de los secretos de un espacio de nombres concreto del clúster de administradores.
Crea grupos de secretos y versiones adicionales de tus secretos según sea necesario.
Actualiza las credenciales de un clúster de usuarios cuando sea necesario.
Crea los clústeres de usuarios adicionales que quieras. En cada archivo de configuración de clúster de usuarios, especifica un espacio de nombres de Secrets. También puedes especificar qué versión de un secreto quieres usar para una credencial concreta.
Rellena el archivo de configuración de secretos
Genera una plantilla para un archivo de configuración de Secrets:
gkectl create-config secrets
El comando anterior genera un archivo llamado secrets.yaml
. Si quieres, puedes cambiar el nombre y la ubicación de este archivo.
Familiarízate con el archivo de configuración leyendo el documento Archivo de configuración de secretos. Te recomendamos que mantengas este documento abierto en otra pestaña o ventana.
En el archivo de configuración de secretos, rellena los valores que correspondan a tu situación. Debes introducir un valor en namespace
que empiece por gke-onprem-secrets-
.
A continuación se muestra un ejemplo de un archivo de configuración de Secrets que tiene un grupo de Secret. El grupo tiene valores para las credenciales de vCenter y cuatro claves de cuenta de servicio:
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"
Crear secretos preparados
Crea secretos preparados en tu clúster de administrador:
gkectl prepare secrets --kubeconfig ADMIN_CLUSTER_KUBECONFIG --secret-config SECRETS_CONFIG
Haz los cambios siguientes:
ADMIN_CLUSTER_KUBECONFIG: la ruta del archivo kubeconfig del clúster de administrador
SECRETS_CONFIG: la ruta del archivo de configuración de Secrets
Ver los secretos preparados
Lista los secretos preparados en el clúster de administración:
gkectl list secrets --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Ejemplo:
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
También puedes ejecutar kubectl get secrets
para enumerar los secretos de un espacio de nombres. Por ejemplo:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get secrets --namespace gke-onprem-secrets-user-cluster-1
Ejemplo:
component-access-sa-creds ... cloud-audit-logging-service-account-creds ... register-service-account-creds.1 ... stackdriver-service-account-creds.1 ... vsphere-creds.1 ...
En el resultado anterior, puede ver que cada nombre de Secret tiene una extensión que indica la versión del Secret. En este ejemplo, todos los secretos tienen la versión 1.
Crear clúster de usuarios
Sigue las instrucciones de Crear un clúster de usuarios.
Cuando rellenes el archivo de configuración del clúster de usuarios, introduce un valor en preparedSecrets.namespace
. Este valor debe coincidir con un espacio de nombres que hayas especificado anteriormente en un archivo de configuración de secretos.
Ejemplo:
preparedSecrets: namespace: "gke-onprem-secrets-user-cluster-1"
En el archivo de configuración del clúster de usuarios, no especifiques valores para los siguientes campos. Estos campos no son necesarios, ya que Google Distributed Cloud obtiene las credenciales y las claves de los secretos que hayas preparado.
vCenter.credentials.fileRef.path
componentAccessServiceAccountKeyPath
loadBalancer.f5BigIP.credentials.fileRef.path
gkeConnect.registerServiceAccountKeyPath
stackdriver.serviceAccountKeyPath
usageMetering.bigQueryServiceAccountKeyPath
cloudAuditLogging.serviceAccountKeyPath
privateRegistry.credentials.fileRef.path
En el archivo de configuración del clúster de usuarios, especifica las versiones de los secretos preparados que quieras usar. Aquí tienes un ejemplo que especifica la versión 1 para cada uno de los cinco secretos:
vCenter: credentials: secretRef: version "1" ... componentAccessServiceAccountKey: secretRef: version: "1" ... gkeConnect: registerServiceAccountKey: secretRef: version: "1" ... stackdriver: serviceAccountKey: secretRef: version: "1" ... cloudAuditLogging: serviceAccountKey: secretRef: version: "1"
El valor de version
debe ser una cadena de números enteros o la cadena "latest". Si no especifica ningún valor para version
, se usará la versión más reciente.
Termina de crear el clúster de usuarios tal como se describe en Crear un clúster de usuarios.
Crear secretos preparados adicionales
En esta sección se muestra cómo crear la versión 2 de algunos de los secretos de un espacio de nombres.
Crea un archivo de configuración de secretos llamado secrets-2.yaml
. Especifica un espacio de nombres y proporciona las credenciales de los secretos seleccionados.
Ejemplo:
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"
En el ejemplo anterior se proporcionan rutas de claves para los siguientes secretos del espacio de nombres gke-onprem-secrets-user-cluster-1
.
- Versión 2 del secreto
stackdriver-service-account-creds
- Versión 2 del secreto
cloud-audit-logging-service-account-creds
Crea los nuevos secretos:
gkectl prepare secrets --kubeconfig ADMIN_CLUSTER_KUBECONFIG --secret-config secrets-2.yaml
Lista los secretos preparados en el clúster de administración:
gkectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG list secrets
Ejemplo:
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
En el resultado anterior, puedes ver que hay dos versiones del secreto stackdriver-service-account-creds
y dos versiones del secreto cloud-audit-logging-service-account-creds
.
Rotar las credenciales de un clúster de usuario
En esta sección se muestra cómo rotar las credenciales seleccionadas de un clúster de usuario.
Antes de rotar las credenciales, comprueba las versiones de Secret que se usan en el clúster:
gkectl list secrets cluster --cluster-name USER_CLUSTER_NAME kubeconfig ADMIN_CLUSTER_KUBECONFIG
Ejemplo:
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
Copia el archivo de configuración del clúster de usuarios en un archivo llamado user-cluster-update.yaml
.
En user-cluster-update.yaml
, añade secciones serviceAccountKey
. Por ejemplo, en el siguiente ejemplo hay secciones serviceAccountKey
en stackdriver
y 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"
En el ejemplo anterior se especifica que, cuando se actualice el clúster de usuarios, se utilizará lo siguiente:
Versión 2 del secreto
stackdriver-service-account-creds
La última versión del
cloud-audit-logging-service-account-creds
secreto. En este ejemplo, se trata de la versión 2.
Actualiza las credenciales del clúster de usuarios:
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
Ahora, el clúster de usuarios usa los siguientes secretos preparados:
- Versión 1 de
vsphere-creds
- Versión 1 de
component-access-sa-creds
- Versión 1 de
register-service-account-creds
- Versión 2 de
stackdriver-service-account-creds
- Versión 2 de
cloud-audit-logging-service-account-creds
Crear secretos y clústeres de usuarios adicionales
Si tienes previsto crear clústeres de usuarios adicionales, piensa en cómo quieres organizar los secretos que hayas preparado. Puede crear un espacio de nombres independiente en su clúster de administrador para cada clúster de usuarios. También puedes compartir el mismo espacio de nombres Secret preparado con varios o todos los clústeres de usuarios.
Por ejemplo, supongamos que Alicia, Borja y Carla tienen cada uno un clúster de usuarios. Podrías crear tres grupos de secretos, como se muestra en este ejemplo:
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"
Con el tiempo, puedes crear versiones adicionales de los secretos de cada grupo de secretos.
En los archivos de configuración de clúster de usuarios, proporcione valores para serviceAccountKey.secretRef.version
para especificar qué versiones de sus secretos quiere usar. Puede asignar el valor "latest"
(cadena vacía) o una cadena de números enteros.
Por ejemplo, supongamos que todos tus secretos tienen las versiones 1, 2 y 3. Supongamos que esta es una parte del archivo de configuración del clúster de usuarios de Alicia.
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: ""
En el ejemplo anterior, podemos ver lo siguiente:
No se ha especificado ningún
secretRef
para vCenter, por lo que el clúster usará la versión más reciente del secretovsphere-creds
en el espacio de nombresgke-onprem-secrets-alice
.El clúster usará la versión 2 del secreto
register-service-account-creds
en el espacio de nombresgke-onprem-secrets-alice
.El clúster usará la versión más reciente del secreto
stackdriver-service-account-creds
en el espacio de nombresgke-onprem-secrets-alice
. En este ejemplo, se trata de la versión 3.La versión de
cloudAuditLogging
es la cadena vacía, por lo que el clúster usará la versión más reciente del secretocloud-audit-logging-service-account-creds
en el espacio de nombresgke-onprem-secrets-alice
. En este ejemplo, es la versión 3.No se ha especificado ningún
secretRef.version
para la cuenta de servicio de acceso al componente, por lo que el clúster usará la versión más reciente.
Eliminar secretos preparados
Para enumerar todos los secretos preparados y sus espacios de nombres, haz lo siguiente:
gkectl list secrets --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Si ningún clúster de usuario utiliza un espacio de nombres de Secret preparado, puedes eliminarlo.
Para eliminar un espacio de nombres de Secret preparado y todos los secretos que contiene, haz lo siguiente:
gkectl delete secret –namespace PREPARED_SECRET_NAMESPACE \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Si ningún clúster de usuarios utiliza un secreto preparado, puedes eliminarlo.
Para eliminar un secreto preparado concreto, sigue estos pasos:
gkectl delete secret –namespace PREPARED_SECRET_NAMESPACE \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --secret-name SECRET
Documentos relacionados
- Archivo de configuración de secretos
- Archivo de configuración de clúster de usuarios
- Crear un clúster de usuarios
- Crear cuentas de servicio