Kubernetes 将独立修补程序定义为YAML
我需要将独立补丁定义为YAML 更具体地说,我想做以下工作:Kubernetes 将独立修补程序定义为YAML,kubernetes,fluxcd,Kubernetes,Fluxcd,我需要将独立补丁定义为YAML 更具体地说,我想做以下工作: kubectl patch serviceaccount default -p '{"imagePullSecrets": [{"name": "registry-my-registry"}]}' 问题是我不能使用kubectl补丁。我将GitOps工作流与flux一起使用,我要修补的资源是在flux之外创建的默认资源 换句话说,我需要执行与上述命令相同的操作,但仅使用ku
kubectl patch serviceaccount default -p '{"imagePullSecrets": [{"name": "registry-my-registry"}]}'
问题是我不能使用kubectl补丁
。我将GitOps工作流与flux一起使用,我要修补的资源是在flux之外创建的默认资源
换句话说,我需要执行与上述命令相同的操作,但仅使用kubectl apply
:
kubectl apply patch.yaml
我不知道你是否能定义这样一个补丁
关键是我无法预测新集群上默认秘密令牌的名称(因为名称是随机的,即
默认令牌uudge
)比方说,您的服务帐户YAML如下所示:
$kubectl获得sa演示-o yaml
版本:v1
种类:服务帐户
元数据:
名称:demo
名称空间:默认值
秘密:
-名称:默认令牌uEdge
现在,您需要为该服务帐户添加或更改imagePullSecrets
。为此,编辑YAML文件并添加imagePullSecrets
apiVersion:v1
种类:服务帐户
元数据:
名称:demo
名称空间:默认值
秘密:
-名称:默认令牌uEdge
你的秘密:
-姓名:myregistrykey
最后,应用更改:
$kubectl apply-f service-account.yaml
比方说,您的服务帐户YAML如下所示:
$kubectl获得sa演示-o yaml
版本:v1
种类:服务帐户
元数据:
名称:demo
名称空间:默认值
秘密:
-名称:默认令牌uEdge
现在,您需要为该服务帐户添加或更改imagePullSecrets
。为此,编辑YAML文件并添加imagePullSecrets
apiVersion:v1
种类:服务帐户
元数据:
名称:demo
名称空间:默认值
秘密:
-名称:默认令牌uEdge
你的秘密:
-姓名:myregistrykey
最后,应用更改:
$kubectl apply-f service-account.yaml
- 从资源配置中设置和删除的字段由
合并到资源中:Kubectl apply
- 如果资源已存在,则“应用”将通过合并 将本地资源配置导入远程资源
- 从资源配置中删除的字段将从远程资源中删除
- 如果您的限制是不知道secret
名称,没问题,只需将该字段保留在yaml之外即可default-token-xxxxx
- 只要yaml有足够的字段来标识目标资源(名称、种类、名称空间),它就会添加/编辑您设置的字段
- 我创建了一个集群(本例中为minikube,但它可以是任意集群),并检索了当前默认的serviceAccount:
- 然后,我们创建一个yaml文件,其中包含要添加的内容:
- 现在我们应用并验证:
- 从资源配置中设置和删除的字段由
合并到资源中:Kubectl apply
- 如果资源已存在,则“应用”将通过合并 将本地资源配置导入远程资源
- 从资源配置中删除的字段将从远程资源中删除
- 如果您的限制是不知道secret
名称,没问题,只需将该字段保留在yaml之外即可default-token-xxxxx
- 只要yaml有足够的字段来标识目标资源(名称、种类、名称空间),它就会添加/编辑您设置的字段
- 我创建了一个集群(本例中为minikube,但它可以是任意集群),并检索了当前默认的serviceAccount:
- 然后,我们创建一个yaml文件,其中包含要添加的内容:
- 现在我们应用并验证:
我希望它符合你的需要。如果您有任何其他问题,请在评论中告诉我。下面提供的解决方案是否是您想要的?@willrof遗憾的是,您没有检查我提供的解决方案吗?告诉我这是否也适用于你。下面提供的解决方案是否符合你的要求?@willrof遗憾的是,你没有检查我提供的解决方案吗?告诉我这是否对你也有效。不幸的是,这不起作用。我无法预测新集群上默认令牌的名称,因为最后五个字符是随机的。我需要这个在任何新的集群上运行。不幸的是,这不起作用。我无法预测新集群上默认令牌的名称,因为最后五个字符是随机的。我需要这个来处理任何新的集群。
$ 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
$ 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