【问题标题】:Kubernetes deployment is missing Kustomize's hash suffixesKubernetes 部署缺少 Kustomize 的哈希后缀
【发布时间】:2019-05-19 18:11:50
【问题描述】:

我是 Kubernetes 新手。在我的项目中,我尝试使用 Kustomize 为我的部署生成 configMaps。 Kustomize 在 configMap 名称后添加了一个哈希,但我无法让它也更改部署以使用新的 configMap 名称。

部署:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: env-receiver-deployment
  labels:
    app: env-receiver-app
    project: env-project
spec:
  replicas: 1
  selector:
    matchLabels:
      app: env-receiver-app
  template:
    metadata:
      labels:
        app: env-receiver-app
        project: env-project
    spec:
      containers:
      - name: env-receiver-container
        image: eu.gcr.io/influxdb-241011/env-receiver:latest
        resources: {}
        ports:
        - containerPort: 8080
        envFrom:
        - configMapRef:
            name: env-receiver-config
        args: [ "-port=$(ER_PORT)", "-dbaddr=$(ER_DBADDR)", "-dbuser=$(ER_DBUSER)", "-dbpass=$(ER_DBPASS)" ]

kustomize.yml:

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
configMapGenerator:
- name: env-receiver-config
  literals:
  - ER_PORT=8080
  - ER_DBADDR=http://localhost:8086
  - ER_DBUSER=writeuser
  - ER_DBPASS=writeuser

然后我运行 kustomize,应用部署并检查它是否应用了环境。

$ kubectl apply -k .
configmap/env-receiver-config-258g858mgg created
$ kubectl apply -f k8s/deployment.yml
deployment.apps/env-receiver-deployment unchanged
$ kubectl describe pod env-receiver-deployment-76c678dcf-5r2hl 
Name:               env-receiver-deployment-76c678dcf-5r2hl
[...]
    Environment Variables from:
      env-receiver-config  ConfigMap  Optional: false
    Environment:           <none>
[...]

但它仍然从以下位置获取环境变量:env-receiver-config,而不是 env-receiver-config-258g858mgg

我目前的解决方法是禁用 kustomize.yml 中的哈希后缀。

generatorOptions:
  disableNameSuffixHash: true

看起来我缺少一个步骤来告诉部署新 configMap 的名称。这是什么?

【问题讨论】:

    标签: kubernetes kustomize


    【解决方案1】:

    看起来问题出在您通过 kustomize 生成配置映射但直接通过 kubectl 部署而不使用 kustomize 的事实。

    基本上,kustomize 会在你所有的资源中查找所有的env-receiver-config,并用哈希后缀的版本替换它们。

    要使其工作,所有您的资源必须经过 kustomize。 为此,您需要添加到您的kustomization.yml

    resources:
      - yourDeployment.yml
    

    然后运行kubectl apply -k .。它应该使用正确的 ConfigMap 名称同时创建 ConfigMap 和 Deployment

    【讨论】:

      猜你喜欢
      • 2014-06-26
      • 1970-01-01
      • 1970-01-01
      • 2014-06-10
      • 1970-01-01
      • 2022-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多