标签: kustomize

Helm 和 Kustomize 有什么区别?

我已经使用 Kubernetes 和 Helm 一段时间了,现在第一次遇到 Kustomize。

但是 Kustomize 和 Helm 到底有什么区别呢?

两者是否只是用于捆绑 K8s 元素(例如服务、部署等)的不同解决方案?或者同时使用 Helm 和 Kustomize 是否有意义?

kubernetes kubernetes-helm kustomize

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

有人可以解释一下“patchesStrategicMerge”吗

patchesStrategicMerge我在 kustomization.yaml 文件中看到,但没有清楚地了解它,比如它的需要是什么或者我们为什么需要它?

自定义.yaml

resources:
- a.yaml

patchesStrategicMerge:
- b.yaml
- c.yaml
Run Code Online (Sandbox Code Playgroud)

我经历过这个: https: //kubernetes.io/docs/tasks/manage-kubernetes-objects/kustomization/#customizinghttps://github.com/kubernetes/community/blob/master/contributors/devel/sig- api-machinery/strategic-merge-patch.md

yaml kubernetes kubernetes-helm kustomize

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

如何使用 kustomize 创建命名空间?

我有一个像这样使用 kustomize 的简单项目:

base/
  namespace.yaml
  kustomization.yaml
  service.yaml
Run Code Online (Sandbox Code Playgroud)

kustomization.yaml是:

resources:
  - namespace.yaml
  - service.yaml
namespace: my_wanted_namespace
Run Code Online (Sandbox Code Playgroud)

并且namespace.yaml是:

apiVersion: v1
kind: Namespace
metadata:
  name: default
Run Code Online (Sandbox Code Playgroud)

问题是,当我这样做时: kustomize build ./base

我有这个:

apiVersion: v1
kind: Namespace
metadata:
  name: default
Run Code Online (Sandbox Code Playgroud)

我怎么会有

apiVersion: v1
kind: Namespace
metadata:
  name: my_wanted_namespace
Run Code Online (Sandbox Code Playgroud)

谢谢。

kustomize

14
推荐指数
3
解决办法
8550
查看次数

Kustomize 中的补丁与补丁Json6902 有什么区别

根据我阅读的文档,有 3 种修补方法:

  • 补丁
  • 补丁策略合并
  • 补丁Json6902。

patchesStrategicMerge和之间的区别patchesJson6902很明显。patchesStrategicMerge需要 kubernetes 资源的重复结构来标识正在修补的基本资源,然后是规范的修改部分以指示更改(或删除)的内容。

patchesJson6902 定义了一个 'target' 属性,用于指定 kubernetes 资源和一个 'path' 属性,该属性指定资源中的哪个属性被修改、添加或删除。

但是,什么是我不明白之间的差别patchespatchesJson6902。它们在性质上似乎非常相似。两者都指定了一个“目标”属性和描述被修改内容的操作对象。

我注意到的唯一区别是patches不需要“组”属性,而需要patchesJson6902;原因不明。

那么为什么两者之间存在差异呢?我如何确定使用哪一个?

patch json-patch kubernetes kustomize

13
推荐指数
1
解决办法
4793
查看次数

如何在 Kubernetes 部署中使用动态/可变镜像标签?

在我们的项目中,也使用 Kustomize,我们的基本deployment.yaml文件如下所示:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:IMAGE_TAG # <------------------------------
        ports:
        - containerPort: 80
Run Code Online (Sandbox Code Playgroud)

然后我们用它sed来替换IMAGE_TAG我们想要部署的镜像版本。

是否有更复杂的方法来执行此操作,而不是使用 编辑文本 yaml 文件sed

kubernetes google-kubernetes-engine kustomize

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

kustomize 修补特定容器而不是通过数组 (/containers/0)

我正在尝试查看是否有一种方法可以将 kustomize patchTransformer 应用到 pod 中的特定容器,而不是使用其数组索引。例如,如果我的 pod 中有 3 个容器 (0, 1, 2),并且我想修补容器“1”,我通常会执行以下操作:

patch: |-
  - op: add
    path: /spec/containers/1/command
    value:  ["sh", "-c", "tail -f /dev/null"]
Run Code Online (Sandbox Code Playgroud)

这在很大程度上取决于集装箱订单保持静态。如果容器“1”由于某种原因被删除,数组将被重新洗牌,容器“2”突然变成容器“1”,使我的补丁不再适用。

有没有办法按名称修补,或定位标签/注释,或其他机制?

path: /spec/containers/${NAME_OF_CONTAINER}/command
Run Code Online (Sandbox Code Playgroud)

任何见解都将受到高度赞赏。

arrays containers patch kubernetes kustomize

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

ArgoCD 跟踪指定路径中的子目录

我正在使用 ArgoCD,我想跟踪不同子目录下的文件。我已将路径设置为 ./root_directory,但我还想跟踪 root_directory 子目录中的文件。例如 /root_directory/dir1、/root_directory/dir2,还有 /root_directory/dir1/dir1.1 ecc.. 我该怎么做?

感谢您的帮助

openshift kubernetes kustomize gitops argocd

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

当我们在资源部分下的 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
查看次数

查找 kubectl 附带的 kustomize 版本

我通常使用 kubectl 提供的 kustomize。我想知道是否有办法找到 kubectl 附带的 kustomize 版本?

kubernetes kubectl kustomize

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

如何修复metadata.resourceVersion:无效值:“”:必须为更新指定

所以我已经在 GKE 中部署了这个项目,并且我正在尝试从 github 操作制作 CI/CD。所以我添加了工作流程文件,其中包含

name: Build and Deploy to GKE

on:
  push:
    branches:
      - main

env:
  PROJECT_ID: ${{ secrets.GKE_PROJECT }}
  GKE_CLUSTER: ${{ secrets.GKE_CLUSTER }}    # Add your cluster name here.
  GKE_ZONE: ${{ secrets.GKE_ZONE }}   # Add your cluster zone here.
  DEPLOYMENT_NAME: ems-app # Add your deployment name here.
  IMAGE: ciputra-ems-backend

jobs:
  setup-build-publish-deploy:
    name: Setup, Build, Publish, and Deploy
    runs-on: ubuntu-latest
    environment: production

    steps:
    - name: Checkout
      uses: actions/checkout@v2

    # Setup gcloud CLI
    - uses: google-github-actions/setup-gcloud@94337306dda8180d967a56932ceb4ddcf01edae7
      with:
        service_account_key: ${{ …
Run Code Online (Sandbox Code Playgroud)

kubernetes google-kubernetes-engine kubectl github-actions kustomize

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