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 Config Connector usa valores de Secret cuando configuras tus recursos de Google Cloud.
Descripción general
Esta sección presenta una descripción general sobre el uso de Secretos con el Conector de configuración.
Usa un secreto cuando creas un recurso
Puedes usar los datos dentro de un secreto cuando creas un recurso. En Pasa un secreto a un recurso, creas un secreto que contiene una contraseña y, luego, haces referencia al secreto para un usuario en una base de datos de Cloud SQL.
Actualización de secretos
Cuando aplicas una actualización a un secreto, el conector de configuración actualiza el recurso la próxima vez que concilia el estado deseado. Por ejemplo, si actualizas el secreto al que se hace referencia como la contraseña de un SQLUser
, Config Connector actualizará la contraseña del usuario.
Eliminar secretos
Si borras un secreto que está en uso por un recurso, Config Connector no quitará la referencia del recurso al secreto. Por ejemplo, si creas un SQLUser con una contraseña que hace referencia a un secreto y, luego, lo borras, la contraseña permanecerá en el SQLUser.
Soluciona problemas
Si creas un recurso que hace referencia a un secreto que no existe, el conector de configuración creará un evento DependencyNotFound
o DependencyInvalid
.
Secretos y espacios de nombres de Kubernetes
Debido a que Kubernetes no permite el acceso a los secretos entre espacios de nombres, si usan el mismo valor secreto para los recursos de diferentes espacios de nombres, debe aplicar Secrets en cada espacio de nombres.
Pasar un secreto a un recurso
En esta sección, crearás un servidor de Cloud SQL y establecerás la contraseña predeterminada del usuario con un secreto.
Antes de comenzar
Para completar estos pasos, necesitas lo siguiente:
- Config Connector instalado en un clúster de Kubernetes
La API de Administrador de Cloud SQL habilitada en tu proyecto. Si deseas confirmar que la API está habilitada, ejecuta el siguiente comando de
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 de Resource Manager, o un comando degcloud
.
API de Service Usage
- Config Connector usa la API de Service Usage para habilitar las APIs de servicio. Para realizar
estos pasos, debes habilitar el
Service Usage
API de gcloud. Puedes habilitar esta API con Google Cloud CLI:
gcloud services enable serviceusage.googleapis.com
Copia el siguiente 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
Reemplaza
CC_NAMESPACE
con el espacio de nombres que administra Config Connector.
gcloud
Para habilitar la API de SQL Admin con Google Cloud CLI, ejecuta el siguiente comando:
gcloud services enable sqladmin.googleapis.com
Crea un servidor de Cloud SQL
Copia el YAML a continuación en un archivo llamado
sql-server-example.yaml
. Esto crea un servidor de Cloud SQL llamadosqlserver-1
y un usuario llamadosqluser-sample
. La contraseña parasqluser-sample
se establece 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 YAML a continuación en un archivo llamado
example-secret.yaml
. Edita el valor depassword
antes de guardar. Esto declarasecret-1
, mencionado 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
Reemplaza
CC_NAMESPACE
con el espacio de nombres que administra Config Connector.El conector de configuración crea la instancia de Cloud SQL y un usuario con la contraseña que especificaste. Esto podría llevar varios minutos.
Espera varios minutos y confirma que la instancia está disponible:
gcloud sql instances list --filter="name=sqlserver-1"
La salida 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 solicita tu contraseña.
Limpia
Si no deseas 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
Reemplaza CC_NAMESPACE
con el espacio de nombres que administra Config Connector.
¿Qué sigue?
Aprende a especificar Referencias de recursos entre los recursos del conector de configuración.
Sumérgete en Secretos de Kubernetes.