标签: kustomize

kustomize 和 kubectl 未找到 CRD

我正在使用 kustomize 将清单通过管道传输到新 k8s 集群 (v1.17.2) 上的 kubectl。这包括 CRD,但其他对象无法找到它们。例如:

unable to recognize "STDIN": no matches for kind "Certificate" in version "cert-manager.io/v1alpha2"
unable to recognize "STDIN": no matches for kind "IngressRoute" in version "traefik.containo.us/v1alpha1"
Run Code Online (Sandbox Code Playgroud)

CRD 在resources我的 kubectl 部分中定义,它们显示在我通过管道传输到 kubectl 的输出中,并且我确信这种将所有内容放入一个文件的方法在我上次执行此操作时有效。

如果我先应用 CRD,然后单独应用主清单,那么一切都会顺利进行。我可以同时做所有这些吗?如果是这样,我做错了什么?如果没有,为什么它之前有效?

谁能指出我问题可能出在哪里?

CRD 定义示例:

apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  name: ingressroutetcps.traefik.containo.us
spec:
  group: traefik.containo.us
  names:
    kind: IngressRouteTCP
    plural: ingressroutetcps
    singular: ingressroutetcp
  scope: Namespaced
  version: v1alpha1
Run Code Online (Sandbox Code Playgroud)

kubernetes kustomize

7
推荐指数
1
解决办法
6037
查看次数

从 kustomization 中的另一个目录引用资源 yaml

我在下面给出的文件夹结构中有一个资源 yaml 文件

根据

---- 首先.yaml

主要的

---- kustomization.yaml

在 kustomization.yaml 中,我将 first.yaml 称为

资源:

  • ../base/first.yaml

但是当我应用 kubectl apply -f kustomizatio.yaml 时出现错误

accumulating resources: accumulating resources from '../base/first.yaml': security; file '../base/first.yaml' is not in or below '../base'
Run Code Online (Sandbox Code Playgroud)

如何从文件夹库调用first.yaml资源到主文件夹中的kustomization?

yaml kubernetes kustomize

7
推荐指数
1
解决办法
2万
查看次数

如何覆盖命名空间覆盖

在以下场景中,我在 ../base/ 中定义了我的容器。

在这个 /dev/ 目录中,我想启动命名空间 dev 中的所有部署和状态集。

问题是我还想在 local-path-storage 命名空间中运行 local-path-storage CSI。kustomize 将覆盖它并在“dev”命名空间中创建它。

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: dev
bases:
  - ../base    
resources:
  - local-path-storage.yaml
Run Code Online (Sandbox Code Playgroud)

如何仅撤销 local-path-storage.yaml 的命名空间覆盖?

kubernetes kustomize

6
推荐指数
3
解决办法
3930
查看次数

如何使用 kustomize 修补 json 文件中的 configmap?

如何使用 kustomize 在以下 cm 中修补“db.password”?

配置图:

apiVersion: v1
data:
  dbp.conf: |-
    {
      "db_properties": {
        "db.driver": "com.mysql.jdbc.Driver",
        "db.password": "123456",
        "db.user": "root"
      }
    }

kind: ConfigMap
metadata:
  labels: {}
  name: dbcm
Run Code Online (Sandbox Code Playgroud)

kubernetes configmap kustomize

6
推荐指数
1
解决办法
2324
查看次数

使用共享 ConfigMap 时自定义覆盖

我有一个由 Pod 组成的环境,它根据一个名为 、 或 的环境变量来处理CONF_ENVtest目标stage环境prod

\n

Pod 内运行的应用程序跨环境具有相同的源代码,配置文件是根据CONF_ENV环境变量选择的。

\n

我将其封装CONF_ENV*.properties文件中只是因为稍后我可能需要添加更多环境变量,但我确保每个属性文件包含预期的CONF_ENV例如:

\n
    \n
  • test.properitesCONF_ENV=test
  • \n
  • prod.propertiesCONF_ENV=prod, 等等...
  • \n
\n

我很难使用 Kustomize 覆盖来完成这项工作,因为我想将 a 定义ConfigMap为同一覆盖内所有 Pod 的共享资源,例如test(每个 Pod 都在自己的目录中,需要时与其他内容一起)。

\n

所以想法是:

\n
    \n
  • base/(共享)与 的定义NamespaceConfigMap(以及潜在的其他共享资源
  • \n
  • base/pod1/定义 pod1 从共享中挑选ConfigMap(默认为test,但原则上可能不同)
  • \n
\n

然后是叠加:

\n
    \n
  • overlay/test …

environment-variables kubernetes kubectl configmap kustomize

6
推荐指数
1
解决办法
9560
查看次数

使用 kubectl kustomize 将项目添加到列表

我想将base/foo.yaml应用于我的所有环境,它部分看起来像这样

Kubernetes:
  deploymentPatches:
    - patch: |-
      - {"op": "add", "path": "/spec/template/spec/volumes/-", "value": {"name": "volume", "secret": {"secretName": "my-secret"}}}
      - {"op": "add", "path": "/spec/template/spec/containers/0/volumeMounts/-", "value": {"mountPath": "/connections", "name": "volume"}}
Run Code Online (Sandbox Code Playgroud)

现在我还想添加特定于环境的补丁,因此运行eg后我的最终目标kubectl kustomize accept应该是

Kubernetes:
  deploymentPatches:
    - patch: |-
      - {"op": "add", "path": "/spec/template/spec/volumes/-", "value": {"name": "volume", "secret": {"secretName": "my-secret"}}}
      - {"op": "add", "path": "/spec/template/spec/containers/0/volumeMounts/-", "value": {"mountPath": "/connections", "name": "volume"}}
      - {"op": "add", "path": "/spec/template/spec/containers/0/env/-", "value": {"name": "MY_ENVIRONMENT", "value": "accept"}}
Run Code Online (Sandbox Code Playgroud)

或者

Kubernetes:
  deploymentPatches:
    - patch: |-
      - {"op": "add", "path": …
Run Code Online (Sandbox Code Playgroud)

kubectl kustomize

6
推荐指数
1
解决办法
2万
查看次数

ArgoCD & Traefik 2.x:如何配置 argocd-server 部署以在禁用 TLS 的情况下运行(在哪里放置 --insecure 标志)

我们设置了 Traefik 作为入口控制器/CRD 和 ArgoCD。我们将 ArgoCD 安装到EKS 设置中,如Argo 入门指南中所述:

kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
Run Code Online (Sandbox Code Playgroud)

现在,正如文档所述,正确配置 Traefik 的对象IngressRoute如下所示:

apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: argocd-server
  namespace: argocd
spec:
  entryPoints:
    - websecure
  routes:
    - kind: Rule
      match: Host(`argocd.tekton-argocd.de`)
      priority: 10
      services:
        - name: argocd-server
          port: 80
    - kind: Rule
      match: Host(`argocd.tekton-argocd.de`) && Headers(`Content-Type`, `application/grpc`)
      priority: 11
      services:
        - name: argocd-server
          port: 80
          scheme: h2c
  tls:
    certResolver: default
    
Run Code Online (Sandbox Code Playgroud)

现在文档中有一个错误- …

kubernetes traefik kubernetes-ingress kustomize argocd

6
推荐指数
1
解决办法
6713
查看次数

Kustomize - 修补列表中的每个项目

我正在尝试在 Kustomize 中使用修补来修改 Kubernetes 资源,我想知道是否有一种巧妙的方法来更新列表中的每个项目。

这是我想要自定义的 yaml:

apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:
  annotations:
  name: validating-webhook-configuration
webhooks:
- admissionReviewVersions:
  - v1
  clientConfig:
    service:
      name: webhook-service
      namespace: rabbitmq-system
      path: /validate-rabbitmq-com-v1beta1-binding
- admissionReviewVersions:
  - v1
  clientConfig:
    service:
      name: webhook-service
      namespace: rabbitmq-system
      path: /validate-rabbitmq-com-v1beta1-exchange
- admissionReviewVersions:
  - v1
  clientConfig:
    service:
      name: webhook-service
      namespace: rabbitmq-system
      path: /validate-rabbitmq-com-v1beta1-federation
Run Code Online (Sandbox Code Playgroud)

这是我想要实现的最终效果(请参阅NEWVALUE):

apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:
  annotations:
  name: validating-webhook-configuration
webhooks:
- admissionReviewVersions:
  - v1
  clientConfig:
    NEWVALUE: value
    service:
      name: webhook-service
      namespace: rabbitmq-system
      path: /validate-rabbitmq-com-v1beta1-binding
- admissionReviewVersions: …
Run Code Online (Sandbox Code Playgroud)

kubernetes kustomize

6
推荐指数
1
解决办法
4879
查看次数

如何使用 kustomize 复制覆盖层中的基础对象?

我有一个基础对象(自定义资源),我需要多次使用不同的名称并添加(或更改)一个属性。所以我定义了一个基本 yaml 文件并在覆盖层中引用它kustomization.yaml

\n
\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 base\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 kustomization.yaml\n|   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 base.ClusterOutput.yaml\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 my-env\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 kustomization.yaml\n
Run Code Online (Sandbox Code Playgroud)\n

现在我需要更新该metadata.name字段并添加一个可以通过补丁完成的属性kustomization.yaml

\n
\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 base\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 kustomization.yaml\n|   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 base.ClusterOutput.yaml\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 my-env\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 kustomization.yaml\n
Run Code Online (Sandbox Code Playgroud)\n

直到这里它都按预期工作,但在某些环境中我需要多个自定义资源实例,并且我不知道如何做到这一点。我尝试了多个补丁,但它们相互覆盖,最终得到一个具有最后一个补丁的对象。\n我不想编写多个基础对象,在某些环境中我只需要一个,并且除了名称之外它们是相等的无论如何,还有一个属性。\n有什么方法可以用 kustomize 来做到这一点吗?

\n

kustomize

6
推荐指数
0
解决办法
812
查看次数

是否建议在 helm 之后使用 kustomize ?

有时,当我使用 helm 图表时,并非所有我想要修改的内容都可以与给定值一起使用。使用 kustomize 修改渲染的 Helm Chart 是否实用?
像这样:
chart -> helm template -> kustomize -> kubectl deploy

kubernetes kubernetes-helm kustomize

5
推荐指数
1
解决办法
3876
查看次数