Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes 将独立修补程序定义为YAML_Kubernetes_Fluxcd - Fatal编程技术网

Kubernetes 将独立修补程序定义为YAML

Kubernetes 将独立修补程序定义为YAML,kubernetes,fluxcd,Kubernetes,Fluxcd,我需要将独立补丁定义为YAML 更具体地说,我想做以下工作: kubectl patch serviceaccount default -p '{"imagePullSecrets": [{"name": "registry-my-registry"}]}' 问题是我不能使用kubectl补丁。我将GitOps工作流与flux一起使用,我要修补的资源是在flux之外创建的默认资源 换句话说,我需要执行与上述命令相同的操作,但仅使用ku

我需要将独立补丁定义为YAML

更具体地说,我想做以下工作:

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
    default-token-xxxxx
    名称,没问题,只需将该字段保留在yaml之外即可

  • 只要yaml有足够的字段来标识目标资源(名称、种类、名称空间),它就会添加/编辑您设置的字段

  • 我创建了一个集群(本例中为minikube,但它可以是任意集群),并检索了当前默认的serviceAccount:

  • 然后,我们创建一个yaml文件,其中包含要添加的内容:
  • 现在我们应用并验证:
如您所见,ImagePullPolicy已添加到资源中

我希望它符合你的需要。如果您还有任何问题,请在评论中告诉我

  • 从资源配置中设置和删除的字段由
    Kubectl apply
    合并到资源中:
  • 如果资源已存在,则“应用”将通过合并 将本地资源配置导入远程资源
  • 从资源配置中删除的字段将从远程资源中删除
你可以了解更多关于

  • 如果您的限制是不知道secret
    default-token-xxxxx
    名称,没问题,只需将该字段保留在yaml之外即可

  • 只要yaml有足够的字段来标识目标资源(名称、种类、名称空间),它就会添加/编辑您设置的字段

  • 我创建了一个集群(本例中为minikube,但它可以是任意集群),并检索了当前默认的serviceAccount:

  • 然后,我们创建一个yaml文件,其中包含要添加的内容:
  • 现在我们应用并验证:
如您所见,ImagePullPolicy已添加到资源中


我希望它符合你的需要。如果您有任何其他问题,请在评论中告诉我。

下面提供的解决方案是否是您想要的?@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