Tenho usado K8S ConfigMap e Secret para gerenciar nossas propriedades. Meu projeto é bastante simples, que mantém os arquivos de propriedades em um repositório git e usa um servidor de compilação como o Thoughtworks GO para implementá-los automaticamente como ConfigMaps ou Secrets (na condição de escolha) para meu cluster k8s.
Atualmente, descobri que não é muito eficiente ter que sempre excluir o ConfigMap e o Segredo existentes e criar um novo para atualizar conforme abaixo:
kubectl delete configmap foo
kubectl create configmap foo --from-file foo.properties
Existe uma maneira simples e agradável de tornar o acima de uma etapa mais eficiente do que excluir a corrente? potencialmente, o que estou fazendo agora pode comprometer o contêiner que usa esses configmaps se ele tentar montar enquanto o antigo configmap é excluído e o novo não foi criado.
Desde já, obrigado.
fonte
Respostas:
Você pode obter YAML a partir do
kubectl create configmap
comando e canalizá-lo parakubectl replace
, assim:fonte
error: error validating "STDIN": error validating data: [apiVersion not set, kind not set]; if you choose to ignore these errors, turn validation off with --validate=false
kubectl apply
vez dekubectl replace
, funcionará tanto para o configmap novo quanto para o existentePara referência futura,
kubectl replace
agora é uma maneira muito útil de conseguir issokubectl replace -f some_spec.yaml
Permite que você atualize um configMap completo (ou outros objetos)Veja documentos e exemplos diretamente aqui
Copiar / colar da ajuda:
fonte
--from-file
requisito. Os configmaps podem ser criados a partir de um arquivo arbitrário, não apenas do yaml.--force
opção, o que nos permitiria usar o<dry-run ConfigMap creation> | kubectl replace --force -f -
comando de aproximação ainda pela 1ª vez, quando o ConfigMap ainda não existe. Mas não tenho certeza se é seguro excluir o ConfigMap, pois os pods podem quebrar durante sua falta por não encontrá-lo. Talvez seja melhor a abordagem<dry-run ConfigMap creation> | kubectl apply -f -
? Este ponto foi introduzido por @ karthic-c, o que você acha? Também @ jordan-liggitt, o que você acha?Para pequenas mudanças em
configMap
, useedit
Isso abrirá o configMap no
vi
editor. Faça as alterações e salve-as.fonte
kubectl replace
falha se um configmap já existe:A melhor solução é usar o
kubectl apply
que criaria o configmap, se não estiver presente, ou atualizar o configmap, se estiver presente:fonte
kubectl replace
falha se um configmap ainda não existir".