Temos um conjunto bastante amplo de arquivos de configuração yaml que usamos para definir as implantações, conjuntos com estados, namespaces, serviços, etc. recursos que devem ser criados na API do kubernetes em um cluster.
Experimentamos algumas ferramentas como terraform e ansible para implantar o cluster subjacente compute e k8s, e elas funcionam bem para aplicar o gerenciamento de configuração nesse nível.
O que não encontrei é uma boa maneira de automatizar de maneira inteligente a implantação e a atualização desses recursos. Usamos o controle de origem para gerenciar alterações nessas definições de recursos e alimentar essas alterações nos clusters de teste e produção com kubectl apply -f
.
Geralmente, a alteração é algo simples, como atualizar a tag de imagem de um pod em uma implantação. Nesse caso, um patch simples da propriedade image
adequada na implementação é tudo o que é necessário.
Para alguns dos recursos canônicos, eu toquei um pouco com o provedor de formas de terra do kubernetes . É muito legal, pois é consciente da propriedade e pode fazer coisas como decidir entre uma desmontagem / reconstrução de uma entidade e um patch simples.
Ele cai, no entanto, em sua velocidade de desenvolvimento. É difícil fazer qualquer coisa além do lançamento do van8 k8s. Isso torna a ferramenta inútil para recursos personalizados, como os usados com os operadores. Existem provedores similares que aplicarão as definições do yaml do k8s, descascando para kubectl
, mas elas não são reconhecidas pela propriedade.
Quaisquer sugestões sobre soluções seriam apreciadas antes de eu começar a aplicar algum bash-fu.