Usar secretos para almacenar datos sensibles
Puedes usar un secreto para almacenar información de configuración sensible, como contraseñas y claves de acceso, en tu clúster de GKE. En esta página se describe cómo usa Config Connector los valores de Secret al configurar tus recursos de Google Cloud .
Información general
En esta sección se ofrece una descripción general sobre el uso de secretos con Config Connector.
Usar un secreto al crear un recurso
Puede usar los datos de un secreto al crear un recurso. En Transferir un secreto a un recurso, creas un secreto que contiene una contraseña y, a continuación, haces referencia al secreto de un usuario en una base de datos de Cloud SQL.
Actualizar secretos
Cuando aplicas una actualización a un Secret, Config Connector actualiza el recurso la próxima vez que concilie el estado que quieras. Por ejemplo, si actualizas el secreto
que se utiliza como contraseña de un SQLUser
, Config Connector actualizará la contraseña del usuario.
Eliminar secretos
Si eliminas un Secret que está usando un recurso, Config Connector no quitará la referencia del recurso al Secret. Por ejemplo, si creas un SQLUser con una contraseña que hace referencia a un Secret y, a continuación, eliminas el Secret, la contraseña permanecerá en el SQLUser.
Solución de problemas
Si creas un recurso que hace referencia a un Secret que no existe, Config Connector creará un DependencyNotFound
o un DependencyInvalid
Event.
Secretos y espacios de nombres de Kubernetes
Como Kubernetes no permite el acceso a secretos entre espacios de nombres, si utilizas el mismo valor de secreto para recursos de diferentes espacios de nombres, debes aplicar los secretos en cada espacio de nombres.
Transferir un secreto a un recurso
En esta sección, crearás un servidor de Cloud SQL y definirás la contraseña del usuario predeterminado con un secreto.
Antes de empezar
Para completar estos pasos, necesitas lo siguiente:
- Config Connector instalado en un clúster de Kubernetes
La API Admin de Cloud SQL habilitada en tu proyecto. Para confirmar que la API está habilitada, ejecuta el siguiente comando
gcloud
:gcloud services list --filter=sqladmin.googleapis.com
Si el comando imprime
Listed 0 items.
, debes habilitar la API. Puedes habilitar la API con Config Connector y la API Resource Manager, o con un comandogcloud
.
API de Uso de Servicio
- Config Connector usa la API Service Usage para habilitar las APIs de servicio. Para llevar a cabo estos pasos, debes habilitar la API Uso de Servicio. Puedes habilitar esta API con la CLI de Google Cloud:
gcloud services enable serviceusage.googleapis.com
Copia el siguiente código YAML en un archivo llamado
enable-sql.yaml
.apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1 kind: Service metadata: name: sqladmin.googleapis.com
Aplica
enable-sql.yaml
a tu clúster conkubectl
:kubectl apply -f enable-sql.yaml --namespace CC_NAMESPACE
Sustituye
CC_NAMESPACE
por el espacio de nombres desde el que Config Connector gestiona los recursos.
gcloud
Para habilitar la API Admin de SQL con la CLI de Google Cloud, ejecuta el siguiente comando:
gcloud services enable sqladmin.googleapis.com
Crear un Cloud SQL Server
Copia el código YAML que aparece a continuación en un archivo llamado
sql-server-example.yaml
. De esta forma, se crea un servidor de Cloud SQL llamadosqlserver-1
y un usuario llamadosqluser-sample
. La contraseña desqluser-sample
se define mediante una referencia de recurso a un secreto llamadosecret-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
Copia el código YAML que aparece a continuación en un archivo llamado
example-secret.yaml
. Edita el valor depassword
antes de guardar. Declarasecret-1
, a la que se hace referencia en la sección anterior.apiVersion: v1 kind: Secret metadata: name: secret-1 stringData: password: PASSWORD
Aplica las configuraciones a tu clúster.
kubectl apply -n CC_NAMESPACE -f example-secret.yaml
kubectl apply -n CC_NAMESPACE -f sql-server-example.yaml
Sustituye
CC_NAMESPACE
por el espacio de nombres desde el que Config Connector gestiona los recursos.Config Connector crea la instancia de Cloud SQL y un usuario con la contraseña que has especificado. Este proceso puede tardar varios minutos.
Espera varios minutos y confirma que la instancia está disponible:
gcloud sql instances list --filter="name=sqlserver-1"
El resultado debe incluir un servidor con un
STATUS
deRUNNABLE
.Confirma que puedes conectarte a la instancia de SQL:
gcloud sql connect sqlserver-1 --user=sqluser-sample
Se te pide la contraseña.
Eliminar los recursos utilizados
Si no quieres conservar la instancia, elimina la instancia de Cloud SQL, el usuario y el secreto con kubectl
.
kubectl delete -n CC_NAMESPACE -f sql-server-example.yaml
kubectl delete -n CC_NAMESPACE -f example-secret.yaml
Sustituye CC_NAMESPACE
por el espacio de nombres desde el que Config Connector gestiona los recursos.
Siguientes pasos
Consulta cómo especificar referencias de recursos entre recursos de Config Connector.
Consulta información detallada sobre los secretos de Kubernetes.