K8S ConfigMapとSecretを使用してプロパティを管理しています。私の設計は非常にシンプルで、プロパティファイルをgitリポジトリに保持し、Thoughtworks GOなどのビルドサーバーを使用して、自動的にConfigMapsまたはSecrets(選択条件に応じて)をk8sクラスターに展開します。
現在、私は既存のConfigMapとSecretを常に削除し、新しいものを作成して以下のように更新する必要があることはあまり効率的ではないことがわかりました。
kubectl delete configmap foo
kubectl create configmap foo --from-file foo.properties
上記の手順を1つ削除して、現在の手順を削除するよりも効率的な、素敵で簡単な方法はありますか?古いconfigmapが削除され、新しいconfigmapが作成されていないときにマウントしようとすると、これらのconfigmapを使用するコンテナーが危険にさらされる可能性があります。
前もって感謝します。
次のように、kubectl create configmap
コマンドからyamlを取得し、kubectl replace
にパイプすることができます。
kubectl create configmap foo --from-file foo.properties -o yaml --dry-run | kubectl replace -f -
将来の参照のために、kubectl replace
はこれを実現する非常に便利な方法になりました
kubectl replace -f some_spec.yaml
configMap(または他のオブジェクト)全体を更新できます
ドキュメントと例を直接参照してください here
ヘルプからコピー/貼り付け:
# Replace a pod using the data in pod.json.
kubectl replace -f ./pod.json
# Replace a pod based on the JSON passed into stdin.
cat pod.json | kubectl replace -f -
# Update a single-container pod's image version (tag) to v4
kubectl get pod mypod -o yaml | sed 's/\(image: myimage\):.*$/\1:v4/' | kubectl replace -f -
# Force replace, delete and then re-create the resource
kubectl replace --force -f ./pod.json
configMap
の小さな変更には、edit
を使用します
kubectl edit configmap <cfg-name>
これにより、vi
エディターでconfigMapが開きます。変更を加えて保存します。