kustomize:将 imagePullSecrets 添加到所有部署

job*_*ers 4 kubernetes kustomize

我有一组在一个环境中工作的 kubernetes 配置文件。我希望部署到另一个环境中,在那里我需要向所有Deployment配置添加一个 imagePullSecrets 条目。

我可以:

regcred-1.yaml:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: deployment-1
spec:
  template:
    spec:
      imagePullSecrets:
      - name: regcred
Run Code Online (Sandbox Code Playgroud)

kustomization.yaml:

bases:
  - ../base

patchesStrategicMerge:
  - regcred-1.yaml
Run Code Online (Sandbox Code Playgroud)

这只会修补deployment-1

有没有办法将补丁应用到所有部署?

alb*_*nte 8

使用内联补丁

kind: Kustomization
apiVersion: kustomize.config.k8s.io/v1beta1
resources:
  - ../../base
patches:
  - target:
      kind: Deployment
    patch: |-
      - op: add
        path: /spec/template/spec/imagePullSecrets
        value: [{ name: image-pull-secret }]
Run Code Online (Sandbox Code Playgroud)

参考:一次修补多个资源。


aci*_*uji 5

您可以使用patchesfield 而不是patchesStrategicMerge为了修补多个资源。

基于此演示示例,您可以通过指定补丁和目标选择器来执行此操作:

patches:
- path: <PatchFile>   target:
    group: <Group>
    version: <Version>
    kind: <Kind>
    name: <Name>
    namespace: <Namespace>
    labelSelector: <LabelSelector>
    annotationSelector: <AnnotationSelector>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您kustomization.yaml应该如下所示:

bases:
  - ../base

patches:
- path: regcred-1.yaml
 target:
   kind: Deployment
Run Code Online (Sandbox Code Playgroud)

如果这解决了您的问题,请告诉我。


mpe*_*pen 5

像这样的东西似乎可以附加一个imagePullSecret

patches:
    -   target:
            kind: Deployment
        patch: |-
            - op: add
              path: /spec/template/spec/imagePullSecrets/-
              value:
                name: regcred
    -   target:
            kind: CronJob
        patch: |-
            - op: replace
              path: /spec/jobTemplate/spec/template/spec/imagePullSecrets
              value:
                - name: regcred
Run Code Online (Sandbox Code Playgroud)

或者更简单地说,您只需运行一次:

kubectl patch serviceaccount default -p '{"imagePullSecrets": [{"name": "regcred"}]}'
Run Code Online (Sandbox Code Playgroud)