Esta página explica como adicionar e organizar configurações armazenadas em uma fonte de verdade.
Sobre as configurações
O Config Sync foi projetado para operadores de cluster que gerenciam muitos clusters. É possível garantir que os clusters atendam aos padrões de negócios e conformidade permitindo que o Config Sync gerencie namespaces, papéis, RoleBindings, ResourceQuotas e outros objetos importantes do Kubernetes na sua frota.
Quando o Config Sync gerencia esses recursos, ele mantém seus clusters registrados em
sincronia usando configs. Uma configuração é um arquivo YAML ou JSON armazenado em uma fonte
de verdade. O Config Sync é compatível com repositórios Git, imagens OCI e gráficos Helm
como fontes de verdade. As configurações
contêm o mesmo tipo de detalhes de configuração que você
pode aplicar manualmente a um cluster usando o comando kubectl apply
. É possível criar um
config para qualquer objeto do Kubernetes que possa existir em um cluster. No entanto, alguns
objetos do Kubernetes, como secrets, contêm informações sensíveis que podem ser
inadequadas para armazenamento em uma fonte de verdade. Use seu bom senso ao considerar
se quer gerenciar esses tipos de objetos usando o Config Sync.
Também é possível usar o Config Sync com o Config Connector para sincronizar as configurações dos recursos do Google Cloud. Para saber mais sobre como trabalhar com o Config Connector, consulte Gerenciar recursos do Google Cloud usando o Config Connector. Também é possível simplificar a instalação do Config Sync e do Config Connector configurando o Config Controller.
Limitações
Não é possível alterar nenhum campo imutável em uma configuração mudando o valor na fonte da verdade. Se você precisar atualizar um campo imutável, exclua manualmente o objeto do cluster. O Config Sync pode recriar o objeto com o novo valor do campo.
Selecionar como organizar suas configurações
O Config Sync usa uma fonte de verdade para o armazenamento de configurações e o controle de versões. Há dois formatos diferentes para a fonte de informações, não estruturado e hierárquico.
O formato de origem não estruturado permite organizar configurações da maneira mais conveniente. Esse formato pode ser útil principalmente se você estiver organizando ou gerando configurações usando uma ferramenta como Kustomize, kpt ou helm. Para ver um exemplo de como organizar as configurações, consulte Exemplo de formato para um repositório não estruturado.
O formato de origem hierárquico ou estruturado separa as configurações em categorias distintas para ajudar você a organizá-las. As categorias são configurações do sistema, metadados de cluster, configuração no nível do cluster e configuração de namespace. Para mais informações sobre o formato de fonte hierárquica, consulte Estrutura do repositório hierárquico.
Não estruturado é o formato recomendado para a maioria dos usuários. Além disso, ao configurar objetos RepoSync, é necessário usar o formato de origem não estruturado.
Recursos compatíveis para formatos não estruturados e hierárquicos
A tabela a seguir destaca as diferenças entre os formatos não estruturados e hierárquicos:
Recursos | Formato não estruturado (recomendado) | Formato hierárquico |
---|---|---|
Usado como o formato de um objeto RootSync ou a fonte central da verdade. | Compatível | Compatível |
Usado como o formato para um objeto RepoSync | Compatível | Incompatível |
ClusterSelector |
Compatível | Compatível |
NamespaceSelector |
Compatível | Compatível |
O comando nomos hydrate |
Compatível com a sinalização --source-format=unstructured |
Compatível |
O comando nomos init |
Incompatível | Compatível |
O comando nomos vet |
Compatível com a sinalização --source-format=unstructured |
Compatível |
Todos os outros comandos nomos |
Compatível | Compatível |
Namespaces abstratos | Incompatível | Compatível |
Repo objetos |
Incompatível | Compatível |
Objetos HierarchyConfig |
Incompatível | Compatível |
Quando adicionar configurações à origem
Se você estiver criando um formato não estruturado, poderá começar a adicionar configurações a
ele assim que ele for criado. Se você estiver criando um formato hierárquico, use
o comando nomos init
para
inicializar a fonte da verdade ou crie a estrutura de diretórios manualmente.
Diretórios vazios não podem ser confirmados em um repositório Git. Portanto, antes de configurar o Config Sync, crie configurações e adicione-as ao seu repositório.
Depois de criar a fonte da verdade e adicionar configs a ela, use o comando nomos vet
para verificar a estrutura da fonte e verificar a sintaxe e a validade das suas configurações.
Configurar o Config Sync para ler a partir da fonte da verdade
Depois de criar uma fonte de verdade e colocar suas configurações nela, será possível configurar o Config Sync para ler a origem. Depois que você concluir essa etapa, o Config Sync vai sincronizar as configurações da fonte de verdade com os clusters.
Você configura o local da fonte de verdade ao instalar o Config Sync e pode editar a configuração dele mais tarde. Além do local da fonte da verdade, você pode especificar uma ramificação ou subdiretório para observar, se a fonte tiver outros conteúdos além das configurações.
Se você estiver usando um formato hierárquico e
instalar o Config Sync manualmente com kubectl
,
não coloque a configuração do operador no diretório system/
.
Qualquer um dos outros diretórios reservados, como cluster/
ou
namespaces/
. Colocar a configuração em um dos diretórios reservados faz com que
nomos vet
falhe e registre um erro, como
KNV1033: IllegalSystemResourcePlacementError,
KNV1038: IllegalKindInNamespacesError
ou KNV1039: IllegalKindInClusterError.
É possível conceder às pessoas acesso à fonte de informações de implantação de uma determinada equipe de produto. No entanto, quando você concede a uma pessoa acesso a uma fonte da verdade de implantação, ela também recebe o mesmo RBAC que o reconciliador executado por essa fonte de verdade.
Para configurar a autenticação e a autorização entre o Config Sync e
a fonte da verdade, consulte a etapa de instalação sobre
como configurar o secret git-creds
.
Ignorar mutações de objeto
Se você não quiser que o Config Sync mantenha o estado do objeto no
cluster após ele existir, adicione a
anotação client.lifecycle.config.k8s.io/mutation: ignore
ao objeto em que
o Config Sync deve ignorar as mutações.
Para usar a anotação, é necessário ativar as APIs RootSync e RepoSync.
O exemplo a seguir mostra como adicionar a anotação a um objeto:
metadata:
annotations:
client.lifecycle.config.k8s.io/mutation: ignore
Não é possível modificar manualmente essa anotação em objetos gerenciados no cluster.
A seguir
- Saiba como gerenciar namespaces e objetos com escopo de namespace.
- Para saber como publicar uma imagem OCI, consulte Sincronizar artefatos OCI do Artifact Registry.
- Para saber como realizar a sincronização por meio de um gráfico Helm, consulte Sincronizar gráficos Helm por meio do Artifact Registry.