Usar un repositorio no estructurado

Crear un repositorio no estructurado te permite organizar tu repositorio de forma arbitraria, sin seguir la estructura de directorio de repositorios predeterminada. Anthos Config Management sincroniza el mismo conjunto de objetos de Kubernetes con tu clúster que sincroniza en el repositorio jerárquico predeterminado.

Esto te permite sincronizar la configuración de Kubernetes existente con el repositorio de Anthos Config Management. Por ejemplo, si deseas sincronizar un gráfico de Helm con tu clúster, puedes ejecutar helm template y enviar el manifiesto procesado a tu repositorio.

Limitaciones

Los repositorios no estructurados no admiten todas las características de Anthos Config Management. En esta sección, se describen las diferencias principales entre los repositorios jerárquicos y no estructurados.

Objetos no compatibles

No puedes usar los objetos de Kubernetes Repo y HierarchyConfig en un repositorio no estructurado.

Objetos con alcance de espacio de nombres

Los espacios de nombres abstractos no son compatibles con los repositorios no estructurados.

En un repositorio no estructurado, todos los objetos con alcance de espacio de nombres deben declarar la anotación metadata.namespace o NamespaceSelector. La declaración de ambas anotaciones no es válida. Si los recursos con permisos de espacios de nombres no declaran metadata.namespace o la anotación NamespaceSelector, Anthos Config Management usa el espacio de nombres “predeterminado” del clúster. Consulta la sección Selectores a continuación para obtener información sobre la semántica de NamespaceSelector.

Selectores

Puedes declarar ClusterSelectors y NamespaceSelectors en un repositorio no estructurado.

En un repositorio no estructurado, ClusterSelectors funciona con normalidad.

En un repositorio no estructurado, los objetos que declaran la anotación NamespaceSelector se aplican a todos los espacios de nombres que cumplan con las condiciones de NamespaceSelector. Antes de crear un repositorio no estructurado con objetos que se usaron con anterioridad en un repositorio jerárquico, verifica que tus NamespaceSelectors no se apliquen a recursos adicionales.

Configura un repositorio no estructurado

Para configurar un repositorio no estructurado, establece el valor de spec.sourceFormat en unstructured en config-management.yaml.

Por ejemplo, el config-management.yaml a continuación configura la canalización de integración continua de ejemplo.

# config-management.yaml

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: https://github.com/GoogleCloudPlatform/csp-config-management/ 
    syncBranch: 1.0.0
    secretType: ssh
    policyDir: ci-pipeline-unstructured
  sourceFormat: unstructured

Próximos pasos

Consulta el repositorio no estructurado de ejemplo en la canalización de integración continua.