Adicionar configurações a uma fonte de informações
Nesta página, explicamos como adicionar e organizar configurações armazenadas em uma fonte de verdade.
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. Um config é 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 (Visualização) como fonte. 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 confidenciais que podem ser
inadequadas para armazenar 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.
Esta página mostra como adicionar configs à sua fonte de verdade. Para saber como publicar uma imagem OCI, consulte Sincronizar artefatos OCI do Artifact Registry. Para saber como sincronizar a partir de um gráfico do Helm, consulte Sincronizar gráficos do Helm no Artifact Registry (Visualização).
Selecionar como organizar suas configurações
O Config Sync usa uma fonte de verdade para o armazenamento de configuração e o controle de versão. Há dois formatos diferentes para a fonte de informações, não estruturado e hierárquico.
O formato de origem não estruturada permite organizar as 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 origem 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, você precisa 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 formato para um objeto RootSync ou a fonte central da verdade | Compatível | Compatível |
Usado como formato para um objeto RepoSync | Compatível | Sem suporte |
Usado em conjunto com o controlador de hierarquia | Compatível | Não recomendado |
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 |
Sem suporte | 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 | Sem suporte | Compatível |
Repo objetos |
Sem suporte | Compatível |
Objetos HierarchyConfig |
Sem suporte | Compatível |
Namespaces hierárquicos no controlador de hierarquia | Compatível | Sem suporte |
Adicionar configurações à sua fonte de informações
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 fonte da verdade
Depois de criar uma fonte de verdade e definir as configurações nela, será possível configurar o Config Sync para ler a fonte. Depois de concluir esta etapa, o Config Sync sincroniza as configurações da sua fonte de informações com os clusters.
Você define o local da fonte da verdade ao instalar o Config Sync e pode editar a configuração do Config Sync 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 verdade sobre a implantação de uma determinada equipe de produto. No entanto, quando você concede a uma pessoa acesso a uma fonte de verdade, ela também recebe o mesmo RBAC que o reconciliador em execução para essa fonte de verdade.
Para configurar a autenticação e 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.