标签: kustomize

有没有办法使用 Kustomize 添加新资源(而不是覆盖它们)?

使用kubectl apply -k,您可以覆盖资源配置(您已经定义)。你也可以创建资源吗?

\n\n

在我的具体情况下,我想为开发环境创建一个本地卷。不过,我的基本文件夹中没有此资源。

\n\n

我的文件夹结构是这样的:

\n\n
\n
~/someApp\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 base\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 deployment.yaml\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 kustomization.yaml\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 service.yaml\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 overlays\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 development\n    \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 cpu_count.yaml\n    \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 kustomization.yaml\n    \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 replica_count.yaml\n    \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 volume.yaml <--- *Is this possible*?\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 production\n        \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 cpu_count.yaml\n        \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 kustomization.yaml\n        \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 replica_count.yaml\n
Run Code Online (Sandbox Code Playgroud)\n
\n

templating kubernetes kustomize

8
推荐指数
1
解决办法
6915
查看次数

kustomize 环境源文件中的多行值

我正在尝试设置多行值(ca 证书文件的内容)来为特定密钥设置 kustomize 环境文件,如下面的代码所示。有办法实现这一点吗?

注意:向 some_params.env 中的值添加引号不起作用。

kustomize.yaml

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
commonLabels:
  role: authentication
bases:
- ./somebase

configMapGenerator:
- name: some-parameters
  env: some_params.env
vars:
- name: ca_contents
  objref:
    kind: ConfigMap
    name: some-parameters
    apiVersion: v1
  fieldref:
    fieldpath: data.ca_contents
configurations:
 - some_params.yaml
Run Code Online (Sandbox Code Playgroud)

some_params.yaml

varReference:
- path: data/ca.pem
  kind: ConfigMap
Run Code Online (Sandbox Code Playgroud)

some_params.env

ca_contents= |
-----BEGIN CERTIFICATE-----
YOUR CA CERTIFICATE CONTENTS
-----END CERTIFICATE-----
Run Code Online (Sandbox Code Playgroud)

运行以下命令: kustomize build base

返回: Error: NewResMapFromConfigMapArgs: NewResMapFromConfigMapArgs: env source file: some_params.env: "-----BEGIN CERTIFICATE-----" is not a valid key name: a …

environment-variables kubernetes kustomize

8
推荐指数
1
解决办法
5899
查看次数

Kustomize 资源 GitHub 私有存储库

我想知道是否可以从私有 GitHub 存储库中的kustomize获取资源,我已经尝试过类似的操作但没有成功

apiVersion: kustomize.config.k8s.io/v1beta1

kind: Kustomization

resources:
- git@github.com:gituser/kustomize.git/kustomize/main/nginx.yaml

- ssh://github.com/gituser/kustomize.git/kustomize/main/nginx.yaml
Run Code Online (Sandbox Code Playgroud)

错误

Error: accumulating resources: accumulation err='accumulating resources from 'ssh://github.com/diego1277/kustomize.git//kustomize/main/nginx.yaml': evalsymlink failure on '/Users/diego/Desktop/estudo/kustomize/see/base/ssh:/github.com/diego1277/kustomize.git/kustomize/main/nginx.yaml' : lstat /Users/diego/Desktop/estudo/kustomize/see/base/ssh:: no such file or directory': evalsymlink failure on '/private/var/folders/qq/mk6t7dpd5435qm78_zsfdjvm0000gp/T/kustomize-056937086/kustomize/main/nginx.yaml' : lstat /private/var/folders/qq/mk6t7dpd5435qm78_zsfdjvm0000gp/T/kustomize-056937086/kustomize: no such file or directory
Run Code Online (Sandbox Code Playgroud)

github kubernetes devops kustomize

8
推荐指数
1
解决办法
9621
查看次数

使用 Kustomize 替换列表中项目的内容

我在尝试使用 kustomize 来替换列表中项目的内容时遇到困难。

我的自定义文件

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

resources:
  - resource.yaml

patches:
  - patch.yaml

Run Code Online (Sandbox Code Playgroud)

我的 patch.yaml 文件

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-service
spec:
  template:
    spec:
      initContainers:
        - name: web-service-migration
          env:
            - name: PG_DATABASE
              value: web-pgdb


Run Code Online (Sandbox Code Playgroud)

我的资源.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-service
spec:
  template:
    spec:
      initContainers:
        - name: web-service-migration
          env:
            - name: PG_DATABASE
              valueFrom:
                secretKeyRef:
                  name: web-pgdb
                  key: database


Run Code Online (Sandbox Code Playgroud)

自定义构建返回

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-service
spec:
  template:
    spec:
      initContainers:
      - env:
        - name: PG_DATABASE
          value: …
Run Code Online (Sandbox Code Playgroud)

kubernetes kustomize

8
推荐指数
1
解决办法
4677
查看次数

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
查看次数

kustomize、secretGenerator 和 patchStrategicMerge:envFrom.secretRef 不读取散列秘密名称

在我的kustomization.yaml我有:

\n
...\nsecretGenerator:\n  - name: db-env\n    behavior: create\n    envs:\n      - my.env\npatchesStrategicMerge:\n  - app.yaml\n
Run Code Online (Sandbox Code Playgroud)\n

然后在我的app.yaml(补丁)中我有:

\n
apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: app-deployment\nspec:\n  template:\n    spec:\n      containers:\n        - name: server\n          envFrom:\n            - secretRef:\n                name: db-env\n
Run Code Online (Sandbox Code Playgroud)\n

当我尝试通过构建这个时,kustomize build k8s/development我退出了:

\n
apiVersion: apps/v1\nkind: Deployment\n...\n    spec:\n      containers:\n      - envFrom:\n        - secretRef:\n            name: db-env\n        name: server\n
Run Code Online (Sandbox Code Playgroud)\n

什么时候应该是:

\n
      - envFrom:\n        - secretRef:\n            name: db-env-4g95hhmhfc\n
Run Code Online (Sandbox Code Playgroud)\n

如何让secretGenerator名称哈希也适用patchesStrategicMerge

\n

或者,将一些环境变量注入到特定覆盖的部署中的正确方法是什么?

\n

这是为了发展。

\n
\n

我的文件结构是这样的:

\n
\xe2\x9d\xaf …
Run Code Online (Sandbox Code Playgroud)

kubernetes kustomize

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

从 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万
查看次数

使用 Kustomize 将环境变量添加到 Kubernetes StatefulSet

我有一个像这样的 StatefulSet:

apiVersion: apps/v1
kind: StatefulSet
metadata:
  namespace: myns
  name: myapp
spec:
  replicas: 3
  template:
    spec:
      containers:
      - name: mycontainer
        image: ...
        ...
        env:
        - name: MY_ENV1
          value: "1"
Run Code Online (Sandbox Code Playgroud)

现在我想通过 Kustomize 添加第二个环境变量,因为它仅在开发环境中使用。我做了这样的事情:

namespace: myns

resources:
...

patches:
- patch: |-
    - op: add
      path: "/spec/template/spec/containers/0/env/-"
      value:
        - name: MY_ENV2
          value: "2"
  target:
    kind: StatefulSet
    namespace: myns
    name: myapp
Run Code Online (Sandbox Code Playgroud)

问题是它不起作用。如果我运行,kustomize build我看不到这个附加变量(我看到其他变体)。

谁能帮助我了解如何实施它?

kubernetes kustomize

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

Kustomize nameSuffix 跳过某些资源

我正在使用 Kustomize 来管理同一集群的多个变体。我正在使用nameSuffix选项为我的所有资源添加后缀:

nameSuffix: -mysfx
Run Code Online (Sandbox Code Playgroud)

我的问题是一切正常,但仅将此后缀添加到一个服务资源会给我带来问题。我的问题是应用程序(Patroni)与必须调用的服务交互:

CLUSTER-NAME-config
Run Code Online (Sandbox Code Playgroud)

所以我想从nameSuffix. 我知道由于此功能的设计方式,这是不可能的。我在 StackOverflow 和网络上阅读了几篇文章。nameSuffix我知道我可以跳过对一类资源的使用。所以我尝试输入我的kustomization.yaml行:

configurations:
- kustomize-config/kustomize-config.yaml
Run Code Online (Sandbox Code Playgroud)

跳过所有服务资源。然后在文件中kustomize-config/kustomize-config.yaml

nameSuffix:
- path: metadata/name
  apiVersion: v1
  kind: Service
  skip: true
Run Code Online (Sandbox Code Playgroud)

但这行不通。

有谁知道这个配置有什么问题吗?

然后假设我现在可以跳过nameSuffix仅使用服务资源,我还有其他两个服务要添加此后缀。我需要做什么才能添加nameSuffix到这两项服务而不是上面提到的服务?

如果对此有更好的解决方案,请告诉我。

kubernetes kustomize

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

如何使用 kustomize 共享具有多个覆盖的资源/补丁?

我使用 kustomize 将 kube-prometheus 部署到多个环境。

kube-prometheus 是一个基础,每个环境都是一个覆盖层。假设我想将仪表板部署到覆盖层,这意味着我需要为每个覆盖层部署相同的 ConfigMap 和相同的补丁。

理想情况下,我希望避免更改基础,因为它是在我的存储库之外声明的,并保持干燥,而不是在各处复制相同的配置。

有办法实现这一点吗?

文件夹结构:

/base/
     /kube-prometheus/
/overlays/
     /qa/       <--- 
     /dev/      <--- I want to share resources+patches between those
     /staging/  <---

Run Code Online (Sandbox Code Playgroud)

kubernetes kustomize

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