Usar un repositorio no estructurado

Resumen

Crear un repositorio no estructurado te permite organizar tu repositorio arbitrariamente, sin seguir la estructura predeterminada de directorio de repositorios. 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 son compatibles con todas las características de Anthos Config Management. En esta sección, se describen las principales diferencias entre los repositorios jerárquicos y los no estructurados.

Objetos no compatibles

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

Objetos con permisos de espacios de nombres

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

En un repositorio no estructurado, todos los objetos con permisos de espacios de nombres deben declarar la anotación metadata.namespace o NamespaceSelector. Declarar ambas anotaciones no es válido. Consulta Selectores a continuación para conocer 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 ubjetos que se usaron previamente 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, configura el valor de spec.sourceFormat como unstructured en config-management.yaml.

Por ejemplo, a través del siguiente config-management.yaml , se 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

¿Qué sigue?

Crea objetos de Clusters y de Espacios de nombres con permisos.

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