标签: kustomize

使用 kustomize 修改nodeSelector的

如果能够在更高级别定义一种方法来确定一组 pod 应该在其上运行的一组节点,对我来说将会非常有用。

有没有办法使用 kustomize 以便我可以指定部署应具有哪些 nodeSelector?

kubernetes kustomize

5
推荐指数
2
解决办法
6755
查看次数

使用 kustomization.yaml 更改图像标签和名称

根据官方文档,我应该能够使用一些漂亮的kustomization语法轻松覆盖我的 docker 图像的标签和名称。我试图重现这一点。

在我的deployment.yaml我有以下内容:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    service: my-app
  name: my-app
spec:
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        service: my-app
    spec:
      imagePullSecrets:
      - name: my-docker-secret
      containers:
      - name: my-app
        image: the-my-app
        imagePullPolicy: Always
        ports:
        - containerPort: 1234
      restartPolicy: Always
Run Code Online (Sandbox Code Playgroud)

在我的kustomization.yaml我有以下内容:

bases:
- ../base
resources:
- deployment.yaml
namespace: my-namespace

images:
- name: the-my-app
- newName: my.docker.registry.com/my-project/my-app
  newTag: test
Run Code Online (Sandbox Code Playgroud)

但是,当我这样做时:

kubectl apply -k my-kustomization-dir
Run Code Online (Sandbox Code Playgroud)

并等待部署启动,然后再做

kubectl describe pod/my-app-xxxxxxxxx-xxxxx
Run Code Online (Sandbox Code Playgroud)

事件如下所示:

Events:
  Type …
Run Code Online (Sandbox Code Playgroud)

tags docker kubernetes kubectl kustomize

5
推荐指数
2
解决办法
8800
查看次数

如何在 Terraform 中将 Amazon EFS 与 EKS 结合使用

到目前为止我有2个目录:

aws/ k8s/

里面aws/.tf描述 VPC、网络、安全组、IAM 角色、EKS 集群、EKS 节点组和一些 EFS 挂载的文件。这些都使用AWS提供商,状态存储在S3中。

然后,k8s/我使用 Kubernetes 提供程序并在我创建的 EKS 集群内创建 Kubernetes 资源。此状态存储在同一 S3 存储桶中的不同状态文件中。

我无法弄清楚如何将 EFS 作为持久卷挂载到我的 Pod。

我找到了描述使用 efs-provisioner pod 来执行此操作的文档。请参阅如何将 EFS 与 EKS 结合使用?

在最近的 EKS 文档中,他们现在说使用Amazon EFS CSI Driver。第一步是创建kubectl apply以下文件。

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
bases:
- ../../base
images:
- name: amazon/aws-efs-csi-driver
  newName: 602401143452.dkr.ecr.us-west-2.amazonaws.com/eks/aws-efs-csi-driver
  newTag: v0.2.0
- name: quay.io/k8scsi/livenessprobe
  newName: 602401143452.dkr.ecr.us-west-2.amazonaws.com/eks/csi-liveness-probe
  newTag: v1.1.0
- name: quay.io/k8scsi/csi-node-driver-registrar
  newName: 602401143452.dkr.ecr.us-west-2.amazonaws.com/eks/csi-node-driver-registrar
  newTag: v1.1.0
Run Code Online (Sandbox Code Playgroud)

有谁知道我将如何在 …

amazon-web-services kubernetes amazon-efs amazon-eks kustomize

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

使用 kustomize 设置 hostPath 路径

是否可以使用 kustomize 从环境变量指定卷主机路径?

我有一个 Kubernetes 清单,它描述了由容器组成的部署。在开发过程中,我使用不同的映像(包含开发工具)并将代码从主机装载到容器中。这样我就可以更改代码而无需重新部署。

我正在使用 patchStategicMerge 来替换生产映像,即我想在开发期间使用的映像并将代码安装到容器中,即

自定义.yaml

kind: Kustomization

bases:
- ../../base

patchesStrategicMerge:
- my-service.yaml
Run Code Online (Sandbox Code Playgroud)

我的服务.yaml

---
apiVersion: apps/v1
...
...
    spec:
      containers:
        - name: myservice
          image: myservice-dev-image:1.0.0
          command: ['CompileDaemon',  '--build=make build', '--command=./myservice']
          volumeMounts:
          - name: code
            mountPath: /go/src/app
      volumes:
      - name: code
        hostPath:
          path: /source/mycodepath/github.com/myservice
Run Code Online (Sandbox Code Playgroud)

我想做的是通过环境变量使路径可配置,这样我就不必将我的特定路径(/source/mycodepath/)检查到git中,以便其他开发人员可以轻松地在他们的项目中使用它自己的环境。

可以用 kustomize 来做到这一点吗?

kubernetes kustomize

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

为特定类型定制metadata.name:

我是 Kustomize 的新手,我想知道:

  • 如何以特定的 yaml 类型“修补”metadata.name:RedisInstance。

我尝试将 nameSuffix 设置为特定的 yaml(种类:RedisInstance),但没有成功。

自定义.yaml

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

namespace: community-organization-uat-product

bases:
- ../../../../common/base/custom/gcp
- ../../../../common/base/custom/gcp/organization

commonAnnotations:
  cnrm.cloud.google.com/managed: "true"
  cnrm.cloud.google.com/project-id: community-organization-uat-product

patchesStrategicMerge:
- 1-cXXXXX-patch.yaml
- 3-mXXXXX-patch.yaml
- 4-mXXXXX-patch.yaml
- 5-cXXXXX-patch.yaml
- 6-mXXXXX-patch.yaml
- 7-memorystore-patch.yaml
Run Code Online (Sandbox Code Playgroud)

这是我的补丁:

7-内存存储-patch.yaml

apiVersion: redis.cnrm.cloud.google.com/v1beta1
kind: RedisInstance
metadata:
  name: memorystore-redis
spec:
  displayName: memorystore-redis-organization-community-uat
  memorySizeGb: 2
  redisVersion: REDIS_5_0
  reservedIpRange: 10.1XXXXX/29
Run Code Online (Sandbox Code Playgroud)

内存存储.yaml

apiVersion: redis.cnrm.cloud.google.com/v1beta1
kind: RedisInstance
metadata:
  name: memorystore-redis
spec:
  displayName: Value defined by Kustomize
  region: XXXX
  connectMode: PRIVATE_SERVICE_ACCESS
  locationId: usXXXX
  memorySizeGb: Value …
Run Code Online (Sandbox Code Playgroud)

yaml kubernetes kustomize

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

使用不同名称的 kustomization.yaml

出于 CI/CD 的目的,该项目正在维护 2 个 kustomization.yaml 文件

  1. 常规部署 - kustomization_deploy.yaml
  2. 回滚部署 - kustomization_rollback.yaml

要运行 kustomize build,当前目录中需要一个名为“kustomization.yaml”的文件。如果项目要使用 kustomization_rollback.yaml 而不是 kustomization.yaml,这怎么可能?kustomize 是否接受文件名作为参数?文档对此没有指定任何内容。

kubernetes kubectl kustomize

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

如何在 kustomize 中使用生成的 env configMap 条目作为 var?

我有一个生成的配置图

configMapGenerator:
  - name: template-vars
    envs:
      - templateVars.env
Run Code Online (Sandbox Code Playgroud)

并想使用其中包含的值之一

ROUTE_HOST=somewhere.else.org
Run Code Online (Sandbox Code Playgroud)

作为变量

vars:
  - name: ROUTE_HOST
    objref:
      kind: ConfigMap
      name: template-vars
      apiVersion: v1
    fieldref:
      fieldpath: data.ROUTE_HOST
Run Code Online (Sandbox Code Playgroud)

在我的 OCP 路线中

apiVersion: route.openshift.io/v1
kind: Route
spec:
  host: $(ROUTE_HOST)
Run Code Online (Sandbox Code Playgroud)

这可能吗?

我知道我可以用环境变量做一些几乎相同的事情:

env:
  - name: ROUTE_HOST
    valueFrom:
      configMapKeyRef:
        name: template-vars
        key: ROUTE_HOST
Run Code Online (Sandbox Code Playgroud)

openshift kubernetes kustomize

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

Kustomize 如何只替换 Ingress 配置中的主机

我有这个 ingress.yaml 基本配置:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  labels:
    sia: aza
    app: asap-ingress-internal
  name: asap-ingress-internal
  annotations:
    kubernetes.io/ingress.class: "nginx-external"
    nginx.ingress.kubernetes.io/use-regex: "true"
spec:
  rules:
    - host: the-host-value
      http:
        paths:
          - path: /asap-srv-template/(.*)
            backend:
              serviceName: asap-srv-template
              servicePort: 8080
Run Code Online (Sandbox Code Playgroud)

并且只想替换 spoec.rules.host 值(并保持所有 http.paths 原样。

所以我创建了一个这样的 env-var.yaml :

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: asap-ingress-internal
spec:
  rules:
    - host: the.real.hostname
Run Code Online (Sandbox Code Playgroud)

但结果如下:

$ kustomize build
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx-external
    nginx.ingress.kubernetes.io/use-regex: "true"
  labels:
    app: asap-ingress-internal
    env: dev
    sia: aza
  name: asap-ingress-internal
  namespace: aza-72461-dev …
Run Code Online (Sandbox Code Playgroud)

kubernetes nginx-ingress kustomize

5
推荐指数
2
解决办法
1518
查看次数

如何通过使用模式/正则表达式/...,使用 kustomize configMapGenerator 将多个配置文件添加到 configMap?

目前我这样做:

configMapGenerator:
  - name: sql-config-map
    files:
      - "someDirectory/one.sql"
      - "someDirectory/two.sql"
      - "someDirectory/three.sql"
Run Code Online (Sandbox Code Playgroud)

我想做某事。像这样:

configMapGenerator:
  - name: sql-config-map
    files:
      - "someDirectory/*.sql"
Run Code Online (Sandbox Code Playgroud)

这有可能吗?

openshift kubernetes configmap kustomize

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

使用 kustomize 图像转换器为所有图像添加注册表前缀

将 Kubernetes 清单部署到集群时的一个常见要求是为容器名称添加镜像允许镜像的可信注册表前缀。通常与准入控制器一起使用。

有没有一种明智的方法可以使用 Kustomize 来执行此操作,而不必在kustomization.yaml images:转换器节中按名称列出每个图像?

鉴于这种kustomization.yaml

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
  - "https://github.com/prometheus-operator/kube-prometheus"
Run Code Online (Sandbox Code Playgroud)

如果我想为其引用的所有图像添加前缀,mytrusted.registry/我需要将其附加到我的kustomization.yaml

images:
- name: grafana/grafana
  newName: mytrusted.registry/grafana/grafana
- name: jimmidyson/configmap-reload
  newName: mytrusted.registry/jimmidyson/configmap-reload
- name: k8s.gcr.io/kube-state-metrics/kube-state-metrics
  newName: mytrusted.registry/k8s.gcr.io/kube-state-metrics/kube-state-metrics
- name: k8s.gcr.io/prometheus-adapter/prometheus-adapter
  newName: mytrusted.registry/k8s.gcr.io/prometheus-adapter/prometheus-adapter
- name: quay.io/brancz/kube-rbac-proxy
  newName: mytrusted.registry/quay.io/brancz/kube-rbac-proxy
- name: quay.io/prometheus/alertmanager
  newName: mytrusted.registry/quay.io/prometheus/alertmanager
- name: quay.io/prometheus/blackbox-exporter
  newName: mytrusted.registry/quay.io/prometheus/blackbox-exporter
- name: quay.io/prometheus/node-exporter
  newName: mytrusted.registry/quay.io/prometheus/node-exporter
- name: quay.io/prometheus-operator/prometheus-operator
  newName: mytrusted.registry/quay.io/prometheus-operator/prometheus-operator
- name: quay.io/prometheus/prometheus
  newName: mytrusted.registry/quay.io/prometheus/prometheus
Run Code Online (Sandbox Code Playgroud)

这是我用这个腐烂的、脆弱的怪物生成的(如果你的容器是通过哈希指定的,或者你的注册表前缀中有一个端口,它就会崩溃):

kustomize build | \ …
Run Code Online (Sandbox Code Playgroud)

kubernetes kustomize

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