cm-myapp-*
のような名前のconfigmapを使用するデプロイメントがあります。すべてのデプロイメントを確認し、cm-myapp-*
の一部を新しい特定のcm-myapp-123
に再設定するスクリプトを作成するにはどうすればよいですか?スクリプトを使用して配置のConfigMapを変更するにはどうすればよいですか?
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: myapp
spec:
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp
image: myapp:2
volumeMounts:
- name: config-volume
mountPath: /etc/myapp/
volumes:
- name: config-volume
configMap:
name: cm-myapp-9375546193
---
apiVersion: v1
kind: ConfigMap
metadata:
name: cm-myapp-123
data:
myapp.conf: |
hi
「JSONパッチ」を受け入れるkubectl patch
があり、かつインタラクティブなだけのように見えるkubectl edit
あります。一部のkubectl
コマンドはgo-templatesを受け入れますが、編集用ではありません。設定全体をダンプすると、余分なフィールドがいくつか与えられます。
は、いくつかのものを抽出することができます。
kubectl get deployment -o go-template --template="{{range .items}}{{\$deploymentName := .metadata.name}}{{range .spec.template.spec.volumes}}{{if .configMap}}{{\$deploymentName}} {{.configMap}}:{{end}}{{end}}{{end}}" | tr ':' '\n'
kubectl get deployment myapp -ojsonpath="{.spec.template.spec.volumes[0].configMap.name}}"
は(動作していない)、それにパッチを適用する必要があります。
kubectl patch deployment myapp -p '{ "op": "replace", "path": ".spec.template.spec.volumes[0].name", "value": "cf" }'
、どのようにそれを行うことができますか? kubectl patch
の構文は何ですか?
'echo" xx:cm-my-app- * "| sed s/cm-my-app - [*]/cm-my-app-123/'? –
@ mh-cbon、Kubernetesによって返された設定には、私が適用するのが快適ではない他のフィールドがあります。 – Velkan
私はまったく同じことをやろうとしましたが、 'patch'は同じファイル内の複数のリソースでは動作しません。それらを別々のファイルに分割すると、 'patch'を使うことができます。 –