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