Como usar um repositório não estruturado

Criar um repo não estruturado permite organizar seu repo arbitrariamente, sem seguir a estrutura de diretório de repositórios padrão. O Anthos Config Management sincroniza o mesmo conjunto de objetos Kubernetes com o cluster como no repositório hierárquico padrão.

Isso permite que você sincronize sua configuração atual do Kubernetes com seu repo Anthos Config Management. Por exemplo, se você quer sincronizar um gráfico Helm com seu cluster, é possível executar helm template e confirmar o manifesto renderizado no seu repo.

Limitações

Os repositórios não estruturados não são compatíveis com todos os recursos do Anthos Config Management. Esta seção descreve as principais diferenças entre repositórios hierárquicos e não estruturados.

Objetos não compatíveis

Não é possível usar os objetos Kubernetes Repo e HierarchyConfig em um repositório não estruturado.

Objetos com escopo no namespace

Os namespaces abstratos não são compatíveis em repos não estruturados.

Em um repositório não estruturado, todos os objetos com escopo de namespace precisam declarar a anotação metadata.namespace ou NamespaceSelector. Declarar as duas anotações é inválido. Se os recursos com escopo de namespace não declararem metadata.namespace ou a anotação NamespaceSelector, o Anthos Config Management usará o namespace "padrão" do cluster. Consulte Seletores abaixo para conhecer a semântica do NamespaceSelector.

Seletores

É possível declarar ClusterSelectors e NamespaceSelectors em um repositório não estruturado.

Em um repositório não estruturado, ClusterSelectors funciona normalmente.

Em um repositório não estruturado, os objetos que declaram a anotação NamespaceSelector são aplicados a todos os namespaces que satisfazem as condições do NamespaceSelector. Antes de criar um repositório não estruturado com objetos que foram usados anteriormente em um repositório hierárquico, verifique se NamespaceSelectors não se aplica a recursos adicionais.

Como configurar um repositório não estruturado

Para configurar um repositório não estruturado, defina o valor de spec.sourceFormat como unstructured em config-management.yaml.

Por exemplo, o config-management.yaml abaixo configura o pipeline de integração contínua de exemplo.

# 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

A seguir

Veja o exemplo de repositório não estruturado no pipeline de integração contínua.