Configuraciones de la escritura

En esta guía de inicio rápido, se muestra cómo escribir su propia configuración, validarla y sincronizarla con un clúster. Este tema se basa en las habilidades que aprendió en la guía de inicio rápido para usar un repositorio de solo lectura. Imagine que es un nuevo miembro del equipo de cumplimiento de su organización, y debe crear su primera configuración.

Después de completar esta guía de inicio rápido, puede seguir una guía de inicio rápido avanzada sobre cómo administrar y dejar de administrar objetos de clúster.

Antes de comenzar

Anthos Config Management requiere una autorización activa de Anthos. Para obtener más información, consulta los precios de Anthos.

  1. Siga la guía de inicio rápido para usar un repositorio de solo lectura y no borre el clúster.

  2. Cree una cuenta de GitHub si no tiene una.

  3. Siga las instrucciones para agregar una nueva llave SSH a su cuenta de GitHub en la documentación de GitHub.

También es útil estar familiarizado con bifurcación y clonación de repositorios Git.

Crea tu repositorio

Para esta guía de inicio rápido, cree su repositorio mediante la creación de una bifurcación del repositorio foo-corp y, luego, cree un clon local como su copia de trabajo.

  1. En su navegador, vaya al repositorio foo-corp y haga clic en el botón Bifurcar.

  2. En su sistema local, clone su bifurcación. Reemplace [my-git-username] con su nombre de usuario github.

    git clone git@github.com:[my-git-username]/csp-config-management.git
  3. Configure su sistema local para autenticarse en GitHub con la llave SSH que agregó en Antes de comenzar.

Cree el hook de confirmación previa nomos vet

Puede instalar un hook de confirmación previa que ejecuta el comando nomos vet en su cambio. Con este hook, nomos vet busca errores de sintaxis u otros problemas con tus cambios antes de que confirmes en el repositorio local.

  1. En una terminal, vaya al directorio donde clonó su repositorio.

  2. Edita el archivo .git/hooks/pre-commit. Observe el carácter . en el directorio .git/.

  3. nomos vet debe ejecutarse en el directorio foo-corp en su repositorio clonado localmente. Reemplaza [/path/to/repo] con la ruta totalmente calificada a donde clonaste el repositorio para agregar lo siguiente al archivo.

    nomos vet --path=/path/to/repo/foo-corp

    Guarde el archivo.

  4. Asegúrese de que el archivo .git/hooks/pre-commit sea ejecutable:

    chmod +x .git/hooks/pre-commit
  5. Pruebe la confirmación previa con git commit . nomos vet se ejecuta y muestra un mensaje de error.

Configura tu clúster

Crea el secreto git-creds

  1. Obtenga la clave privada registrada con su repositorio Git. Tenga en cuenta cómo descarga el archivo y dónde lo almacena, ya que puede usarse para autenticarse en su repositorio Git.

  2. Almacene la clave privada como un secreto llamado git-creds en el clúster de Kubernetes:

    kubectl create secret generic git-creds \
     --namespace=config-management-system \
     --from-file=ssh=/path/to/[KEYPAIR-PRIVATE-KEY-FILENAME]
    
  3. Proteja la clave privada en su disco local o, de lo contrario, bórrela.

Actualiza el objeto ConfigManagement

Edite el archivo config-management.yaml que creó en la guía de inicio rápido para usar un repositorio de solo lectura. Realiza los siguientes cambios:

  1. Actualice el valor de syncRepo a la dirección de su bifurcación y reemplace my-github-username con su nombre de usuario de GitHub.
  2. Actualice el valor de secretType a ssh. El Secreto git-creds ya debería existir en el clúster.

El siguiente ejemplo muestra una actualización. Consulte las instrucciones de instalación para obtener una explicación de los campos.

apiVersion: configmanagement.gke.io/v1
kind: ConfigManagement
metadata:
  name: config-management
spec:
  # clusterName is required and must be unique among all managed clusters
  clusterName: my-cluster
  git:
    syncRepo: git@github.com:my-github-username/csp-config-management.git
    syncBranch: 1.0.0
    secretType: ssh
    policyDir: "foo-corp"

Aplica la configuración a tu clúster:

kubectl apply -f config-management.yaml

Si el comando tiene éxito, Kubernetes actualiza el Operador de administración de configuración en su clúster para comenzar a sincronizar la configuración de su clúster desde el repositorio. Para verificar que el operador de administración de configuración se está ejecutando, enumere todos los pods que se ejecutan en el espacio de nombres config-management-system

kubectl get pods -n config-management-system
NAME                                   READY     STATUS    RESTARTS   AGE
git-importer-5f8bdb59bd-7nn5m          2/2       Running   0          2m
monitor-58c48fbc66-ggrmd               1/1       Running   0          2m
syncer-7bbfd7686b-dxb45                1/1       Running   0          2m

En este punto, su clúster tiene exactamente las mismas opciones de configuración que en la guía de inicio rápido para usar un repositorio de solo lectura, porque su bifurcación tiene el mismo contenido. Puede seguir los ejercicios en esa guía de inicio rápido y ver los mismos resultados.

Modifica una configuración en el repositorio

Cuando crea o modifica una configuración en el repositorio, Anthos Config Management detecta la confirmación y aplica la nueva configuración a los objetos Kubernetes relevantes.

En este ejemplo, agrega el usuario jane@foo-corp.com al ClusterRoleBinding namespace-readers.

Abra una terminal y emita el siguiente comando para ver los cambios para ClusterRoleBinding namespace-readers:

kubectl get clusterrolebindings namespace-readers -o yaml --watch

Abra otra terminal y vaya al clon local de su repositorio. Edite el archivo cluster/namespace-reader-clusterrolebinding.yaml para agregar jane@foo-corp.com al campo subjects. Después de editar, el archivo tiene estos contenidos:

kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: namespace-readers
subjects:
- kind: User
  name: cheryl@foo-corp.com
  apiGroup: rbac.authorization.k8s.io
- kind: User
  name: jane@foo-corp.com
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: namespace-reader
  apiGroup: rbac.authorization.k8s.io

Guarde el archivo. Crea una confirmación.

git add cluster/namespace-reader-clusterrolebinding.yaml

git commit -m "Add Jane to namespace-reader"

El comando nomos vet se ejecuta cuando intenta confirmar y evita que confirme una configuración con errores de sintaxis. Para probar esto, puede agregar intencionalmente un error de sintaxis al archivo (por ejemplo, eliminando un carácter :), antes de intentar confirmar.

Aplique una confirmación a su bifurcación:

git push origin master

Regrese a la terminal donde está mirando el objeto namespace-reader. En unos segundos, el cambio se sincroniza con el clúster.

También es fácil revertir un cambio. Regrese a la terminal que estaba usando para Git. Use el comando git log para encontrar el hash (en este ejemplo, es la entrada superior) y revertirlo. En el siguiente comando, use el hash de la confirmación donde vea [HASH]. Debido a que una operación de reversión crea una nueva confirmación, nomos vet verifica la configuración resultante nuevamente.

git revert [HASH]

git push origin master

Regrese a la terminal donde está mirando el objeto namespace-reader y observe que jane@foo-corp.com ya no aparece en los temas del ClusterRole.

Presione Control + C para dejar de mostrar el objeto namespace-reader.

En este ejercicio, se muestra que Anthos Config Management mantiene los objetos sincronizados con las opciones de configuración en su repositorio cuando confirma cambios en el repositorio.

Limpia

Después de terminar los ejercicios de este tema, haga lo siguiente para limpiar:

  • Elimine el clúster que utilizó para las pruebas.
  • Elimina el clon local de tu bifurcación.
  • Elimine la llave SSH privada local, si corresponde.
  • Elimine su bifurcación del repositorio de ejemplo. Esto elimina cualquier clave de implementación asociada solo al repositorio.

¿Qué sigue?