- 从资源配置中设置和删除的字段通过以下方式合并到资源中
Kubectl apply
:
- 如果 Resource 已经存在,Apply 通过将本地 Resource Config 合并到远程 Resources 来更新 Resources
- 从资源配置中删除的字段将从远程资源中删除
您可以了解有关Kubernetes 字段合并语义的更多信息。
如果您的限制是不知道秘密default-token-xxxxx
名称,没问题,只需将该字段保留在您的 yaml 之外。
只要 yaml 有足够的字段来识别目标资源(名称、种类、命名空间),它就会添加/编辑您设置的字段。
我创建了一个集群(本例中为 minikube,但它可以是任何集群)并检索当前的默认 serviceAccount:
$ kubectl get serviceaccount default -o yaml
apiVersion: v1
kind: ServiceAccount
metadata:
creationTimestamp: "2020-07-01T14:51:38Z"
name: default
namespace: default
resourceVersion: "330"
selfLink: /api/v1/namespaces/default/serviceaccounts/default
uid: a9e5ff4a-8bfb-466f-8873-58c2172a5d11
secrets:
- name: default-token-j6zx2
- 然后,我们使用要添加的内容创建一个 yaml 文件:
$ cat add-image-pull-secrets.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: default
namespace: default
imagePullSecrets:
- name: registry-my-registry
$ kubectl apply -f add-image-pull-secrets.yaml
serviceaccount/default configured
$ kubectl get serviceaccount default -o yaml
apiVersion: v1
imagePullSecrets:
- name: registry-my-registry
kind: ServiceAccount
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"v1","imagePullSecrets":[{"name":"registry-my-registry2"}],"kind":"ServiceAccount","metadata":{"annotations":{},"name":"default","namespace":"default"}}
creationTimestamp: "2020-07-01T14:51:38Z"
name: default
namespace: default
resourceVersion: "2382"
selfLink: /api/v1/namespaces/default/serviceaccounts/default
uid: a9e5ff4a-8bfb-466f-8873-58c2172a5d11
secrets:
- name: default-token-j6zx2
如您所见,ImagePullPolicy 已添加到资源中。
我希望它符合您的需求。如果您有任何其他问题,请在评论中告诉我。