新kubernetes kustomize支持中的变量替换(自1.14.0起):kubectl apply -k ./

问题描述 投票:2回答:1

我们以这种方式使用kustomize来进行kubernetes部署:

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_VERSION}
        ports:
        - containerPort: 80

并部署此yaml用1.7.9替换变量IMAGE_VERSION

kustomize build ./nginx/overlays/dev/ | sed -e 's|${IMAGE_VERSION}'"|1.7.9|g" | kubectl apply -f -

由于kubectl 1.14支持kustomize。

现在我们可以做一些非常好的事情

kubectl apply -k ./

但是如何用这个新命令替换IMAGE_VERSION变量?

kubernetes customization kubectl declarative kustomize
1个回答
2
投票

您必须创建包含自定义项的kustomization.yaml文件。

即:

# kustomization.yaml
bases:
- ../base
images:
  - name: nginx-pod
    newTag: 1.15
    newName: nginx-pod-2

对于模板,您可以创建一个包含kustomization.yaml的基本文件夹,并参考部署和依赖关系,即:

# ../base/kustomization.yaml
resources:
- deployment.yaml

# ../base/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx-pod

运行命令:

kubectl apply -k

上面的命令将编译自定义并生成以下应用于集群的yaml:

# Modified Base Resource
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      # The image image tag has been changed for the container
      - name: nginx
        image: nginx-pod-2:1.15
© www.soinside.com 2019 - 2024. All rights reserved.