Configurar Config Sync con comandos kubectl

En esta página se explica cómo configurar Config Sync con comandos kubectl después de instalar Config Sync con la consola Google Cloud o la CLI de Google Cloud.

Aunque puedes hacer muchos cambios en la configuración mediante la consola o la CLI, debes usar los comandos kubectl para anular algunos valores predeterminados de Config Sync, controlar la verificación de certificados SSL y usar una autoridad de certificación.

Crear y editar el archivo de configuración de RootSync

Para configurar Config Sync con comandos kubectl, edita un objeto RootSync creando un archivo YAML.

Cuando instalas Config Sync mediante la consola o la CLI de Google Cloud, Config Sync crea automáticamente un objeto RootSync llamado root-sync. Google Cloud Este objeto contiene la información de configuración más reciente de Config Sync. Cada vez que hagas un cambio en la Google Cloud consola o en la interfaz de línea de comandos de Google Cloud, root-sync se actualizará.

Información sobre los campos que puedes editar con kubectl

Puedes hacer cambios avanzados en root-sync con los comandos de kubectl para los campos que no se admiten en la consola de Google Cloud ni en la CLI de Google Cloud. Si quieres crear y actualizar objetos RootSync o RepoSync directamente mediante comandos kubectl, consulta Campos de RootSync y RepoSync.

Antes de hacer cambios en el archivo YAML que crees en la siguiente sección, consulta la tabla que aparece a continuación. En esta tabla se indican los campos que puede editar y añadir. Si editas campos que no aparecen en esta tabla, Config Sync revertirá automáticamente los cambios a los valores que hayas definido la última vez que configuraste Config Sync en la Google Cloud consola o en la CLI de Google Cloud.

Clave Descripción
spec.git.noSSLVerify noSSLVerify especifica si se habilita o inhabilita la verificación del certificado SSL. Valor predeterminado: false.
Si noSSLVerify tiene el valor true, indica a Git que omita la verificación del certificado SSL.
spec.git.caCertSecretRef.name Nombre del secreto que contiene el certificado de la autoridad de certificación (CA). Si se proporciona este campo, el servidor Git debe usar un certificado emitido por esta CA. El certificado de la AC debe almacenarse en el secreto con la clave `cert`.
spec.override.resources Lista de solicitudes de recursos de contenedor y anulaciones de límites. Opcional.
Cada elemento de la lista contiene tres campos:
  • containerName: este campo puede ser git-sync, oci-sync, hydration-controller o reconciler.
  • cpuRequest (opcional)
  • cpuLimit (opcional)
  • memoryRequest (opcional)
  • memoryLimit (opcional)

Si no se proporciona un valor de sustitución para una solicitud o un límite de recursos, se utiliza el valor de recurso predeterminado de la solicitud o el límite.
spec.override.gitSyncDepth gitSyncDepth te permite anular el número de confirmaciones de Git que se van a obtener.
Debe ser igual o superior a 0.
Config Sync hace una clonación completa si este campo es 0 y una clonación superficial si este campo es mayor que 0.
Si no se proporciona este campo, Config Sync lo configura automáticamente.
spec.override.statusMode statusMode te permite habilitar o inhabilitar la captura del estado a nivel de recurso.
El valor predeterminado es enabled.
Para inhabilitar la captura del estado a nivel de recurso, asigna el valor disabled a este campo.
spec.override.reconcileTimeout reconcileTimeout te permite anular el umbral de tiempo que se espera a los recursos de un grupo de aplicaciones para conciliarse antes de abandonar. Todos los recursos de una confirmación pueden estar en varios grupos de aplicación en función de las dependencias.
El tiempo de espera predeterminado es 5m.
Usa una cadena para especificar el valor de este campo; por ejemplo, 30s 5m.
spec.override.enableShellInRendering enableShellInRendering especifica si se habilita o inhabilita el acceso a la shell en el proceso de renderización. Las bases remotas de Kustomize requieren acceso a la shell. Si se asigna el valor true a este campo, se habilita el acceso a shell en el proceso de renderización y se admite la extracción de bases remotas de repositorios públicos.
El valor predeterminado es false.

Crea el archivo

Para crear y editar un archivo de configuración de root-sync, sigue estos pasos:

  1. Para asegurarte de que obtienes la información de configuración del clúster correcto, configura el acceso a la línea de comandos kubectl:

    gcloud container clusters get-credentials CLUSTER_NAME \
        --zone ZONE \
        --project PROJECT_ID
    

    Haz los cambios siguientes:

    • CLUSTER_NAME: el nombre del clúster que tiene la configuración de Config Sync que quieres cambiar
    • ZONE: la zona en la que has creado el clúster
    • PROJECT_ID: tu ID de proyecto
  2. Copia la información de configuración del objeto RootSync que ha creado Config Sync en un archivo YAML:

    kubectl get rootsync root-sync -n config-management-system -o yaml >
    FILE_NAME.yaml
    

    Sustituye FILE_NAME por el nombre que quieras darle al archivo de configuración.

  3. Abre el archivo YAML que has creado y haz los cambios de configuración necesarios. Por ejemplo, para anular el límite de memoria del contenedor git-sync, añade los siguientes campos en negrita:

    apiVersion: v1
    items:
    - apiVersion: configsync.gke.io/v1beta1
    kind: RootSync
    metadata:
    annotations:
      configmanagement.gke.io/managed-by-hub: "true"
      configmanagement.gke.io/update-time: "1644945169"
    creationTimestamp: "2022-02-15T17:12:52Z"
    generation: 1
    name: root-sync
    namespace: config-management-system
    resourceVersion: "211980457"
    uid: aa30a94b-2825-4590-ad30-5af848403502
    spec:
    git:
      auth: none
      branch: main
      dir: /quickstart/config-sync
      period: 15s
      repo: https://github.com/GoogleCloudPlatform/anthos-config-management-samples
      revision: HEAD
      secretRef: {}
    override:
      resources:
      - containerName: "git-sync"
        memoryLimit: "400Mi"
    sourceFormat: unstructured
    # Remainder of RootSync omitted
    
  4. Aplica los cambios al archivo YAML:

    kubectl apply -f FILE_NAME.yaml
    
  5. Para verificar que Config Sync ha aplicado los cambios, consulta el objeto RootSync:

    kubectl describe rootsync root-sync -n config-management-system
    
  6. Para comprobar que los cambios no han introducido ningún error, usa el comando nomos status:

    nomos status
    

Configurar autoridad de certificación

En el caso de los servidores configurados con certificados de una autoridad de certificación (CA) que aún no sea de confianza, Config Sync se puede configurar para que use un certificado de CA con el fin de verificar las conexiones HTTPS al servidor. Esta opción se admite en servidores Git, Helm u OCI. El certificado de la AC debe incluir certificados SSL completos (raíz, intermedio y hoja). Si tu servidor ya usa una autoridad de certificación de confianza o no te conectas a través de HTTPS, puedes saltarte este paso y dejar caCertSecretRef sin definir.

RootSync

  1. Obtén el certificado de la AC que se usó para emitir el certificado de tu servidor Git y guárdalo en un archivo.

  2. En el caso de los objetos RootSync, el secreto debe crearse en el espacio de nombres config-management-system. Por ejemplo:

    kubectl create secret generic ROOT_CA_CERT_SECRET_NAME 
    --namespace=config-management-system
    --from-file=cert=/path/to/CA_CERT_FILE

  3. Cuando configures el objeto RootSync, asigna el valor ROOT_CA_CERT_SECRET_NAME al campo caCertSecretRef.name del objeto RootSync.

RepoSync

  1. Obtén el certificado de la AC que se usó para emitir el certificado de tu servidor Git y guárdalo en un archivo.

  2. En el caso de los objetos RepoSync, el secreto debe crearse en el mismo espacio de nombres que el RepoSync. Por ejemplo:

    kubectl create secret generic NAMESPACE_CA_CERT_SECRET_NAME 
    --namespace=REPO_SYNC_NAMESPACE
    --from-file=cert=/path/to/CA_CERT_FILE

  3. Cuando configures RepoSync, asigna el valor NAMESPACE_CA_CERT_SECRET_NAME al campo caCertSecretRef.name del objeto RepoSync.

Eliminar el objeto RootSync

Para eliminar root-sync, ejecuta el siguiente comando:

kubectl delete -f FILE_NAME

Sustituye FILE_NAME por el nombre del archivo de configuración de RootSync. Por ejemplo, root-sync.yaml.

Si se elimina un objeto RootSync o RepoSync, no se limpiarán las anotaciones ni las etiquetas de Config Sync. Para limpiar los recursos gestionados, sincroniza desde un directorio de Git vacío.

Siguientes pasos