标签: kustomize

当我们在资源部分下的 kustomization.yaml 文件中指定基本清单文件时,Kubernetes kustomize 命令给出错误

我正在尝试为特定环境示例构建清单文件:- 测试,我想重新使用基本清单文件,如下所述。

k8s/kustomize/overlays/test/kustomization.yaml

commonLabels:
  variant: test
  app: test-app
resources:
- ../../base/deployment.yaml
- ../../base/service.yaml
- ../../base/configmap.yaml
- ../../base/secret.yaml
- namespace.yaml
namespace: app-test
patchesStrategicMerge:
- secret.yaml
- configmap.yaml
Run Code Online (Sandbox Code Playgroud)

但是当我运行命令时出现以下错误 - kustomize build k8s/kustomize/overlay/test

2020/02/19 16:04:36 got file 'deployment.yaml', but 'path/k8s/kustomize/base/deployment.yaml' must be a directory to be a root
Error: accumulating resources: accumulating resources from '../../base/deployment.yaml': security; file 'path/k8s/kustomize/base/deployment.yaml' is not in or below 'path/k8s/kustomize/overlay/test'

Run Code Online (Sandbox Code Playgroud)
P.S: kustomize version is - Version: {KustomizeVersion:3.2.0 GitCommit:a3103f1e62ddb5b696daa3fd359bb6f2e8333b49 BuildDate:2019-09-18T18:31:04+01:00 GoOs:darwin GoArch:amd64}
Run Code Online (Sandbox Code Playgroud)

我是 kubernetes 和 kustomize 的新手。请帮帮我好吗?

yaml kubernetes kustomize

9
推荐指数
1
解决办法
9668
查看次数

在 kustomize 中选择性应用名称前缀/名称后缀

目前我们正在使用 ${HOME}/bin/kustomize edit set nameprefix prefix1

但它正在向我们的所有资源(例如,deployment.yaml 和 service.yaml)添加 nameprefix。

我们只想将 nameprefix 应用于deployment.yaml,而不将其应用于service.yaml

kubernetes kustomize

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

使用 Kustomize 在 kubernetes 清单中修补列表

我想使用Kustomize修补(覆盖) kubernetes清单中的列表。我正在使用 patchStrategicMerge 方法。当我修补不在列表中的参数时,修补会按预期工作 - 仅替换 patch.yaml 中的已寻址参数,其余部分保持不变。当我修补列表时,整个列表都会被替换。

如何仅替换列表中的特定项目,并且列表中项目的资源保持不变?

我找到了这两个资源:
https://github.com/kubernetes-sigs/kustomize/issues/581
https://github.com/kubernetes/community/blob/master/contributors/devel/sig-api-machinery/strategic -merge-patch.md
但无法做出所需的解决方案。

示例代码:orig-file.yaml

apiVersion: monitoring.coreos.com/v1alpha1
kind: AlertmanagerConfig
metadata:
  name: alertmanager-slack-config
  namespace: system-namespace
spec:
  test: test
  other: other-stuff
  receivers:
    - name: default
      slackConfigs:
        - name: slack
          username: test-user
          channel: "#alerts"
          sendResolved: true
          apiURL:
            name: slack-webhook-url
            key: address
Run Code Online (Sandbox Code Playgroud)

补丁.yaml:

apiVersion: monitoring.coreos.com/v1alpha1
kind: AlertmanagerConfig
metadata:
  name: alertmanager-slack-config
  namespace: system-namespace
spec:
  test: brase-yourself
  receivers:
    - name: default
      slackConfigs:
        - name: slack
          username: Karl
Run Code Online (Sandbox Code Playgroud)

自定义.yaml

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization …
Run Code Online (Sandbox Code Playgroud)

kubernetes kustomize

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

Kustomize - 合并多个 configMapGenerator

所以我正在处理这样的结构:

\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 1\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 env-vars\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 kustomization.yaml\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 2\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 env-vars\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 kustomization.yaml\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 env-vars\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 kustomization.yaml\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 shared\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 env-vars\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 kustomization.yaml\n
Run Code Online (Sandbox Code Playgroud)\n

而每个级别内的环境变量都有一些环境变量并且

\n
$cat kustomization.yaml\nbases:\n- 1/\n- 2/\n\nnamePrefix: toplevel-\n\nconfigMapGenerator:\n  - name: env-cm\n    behavior: merge\n    envs:\n    - env-vars\n
Run Code Online (Sandbox Code Playgroud)\n
$cat 1/kustomization.yaml\nbases:\n- ./../shared\n\nnamePrefix: first-\n\nconfigMapGenerator:\n  - name: env-cm\n    behavior: merge\n    envs:\n    - env-vars\n
Run Code Online (Sandbox Code Playgroud)\n
$cat 2/kustomization.yaml\nbases:\n- ./../shared\n\nnamePrefix: second-\n\nconfigMapGenerator:\n  - name: env-cm\n    behavior: merge\n    envs:\n    - env-vars\n
Run Code Online (Sandbox Code Playgroud)\n
$cat shared/kustomization.yaml\nconfigMapGenerator:\n  - name: env-cm\n    behavior: create\n    envs:\n    - env-vars\n
Run Code Online (Sandbox Code Playgroud)\n

我本质上是试图创建 2 个具有一些共享值的配置映射(它们是从不同的资源注入的:从shared目录和顶级目录)

\n …

kubernetes configmap kustomize

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

有没有办法使用 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
查看次数

排除 kustomization.yaml 中的资源

我有一个 kustomize 基础,我想在不编辑它的情况下重新使用它。不幸的是,它创建了一个我不想创建的命名空间。我想在编译清单时简单地从考虑中删除该资源并为我的添加一个资源,因为我无法修补命名空间来更改名称。

这能做到吗?如何?

kubernetes kustomize

8
推荐指数
3
解决办法
5164
查看次数

我们可以使用 k8s kustomize 和 kubectl 来设置镜像并创建秘密文件吗?

我正在使用 k8s kustomize 设置图像并创建秘密文件

$(cd ./k8s/overlays/prod && kustomize edit set image gcr.io/PROJECT_ID/image:1.0)

这有效!

现在我尝试使用 来做kubectl kustomize同样的事情而不做cd . ./k8s/overlays/prod

是否可以将 Kustomize 插件内置到 kubectl 中?

与 kubectl相同,kustomize edit add secret而不执行cd进入目录?

kubectl kustomize

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

kubectl apply -k throws Error: rawResources failed to read Resources: Load from path ../../base failed: '../../base' must be a file

Can you please help me figure out why kubectl apply fails? When I try to run kubectl apply -k k8s/overlays/dev it fails with error message "error: rawResources failed to read Resources: Load from path ../../base failed: '../../base' must be a file" But if I run kustomize build k8s/overlays/dev it works fine.

folder structure

|____k8s
| |____overlays
| | |____dev
| | | |____kustomization.yaml
| |____base
| | |____deployment.yaml
| | |____kustomization.yaml
Run Code Online (Sandbox Code Playgroud)

k8s/base/deployment.yaml

|____k8s
| |____overlays
| | |____dev
| | …
Run Code Online (Sandbox Code Playgroud)

kubernetes kubectl kustomize

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

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