首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kubernetes部署缺少Kustomize的散列后缀

Kubernetes部署缺少Kustomize的散列后缀
EN

Stack Overflow用户
提问于 2019-05-19 18:11:50
回答 1查看 4.3K关注 0票数 2

我对Kubernetes很陌生。在我的项目中,我试图使用Kustomize来为我的部署生成configMaps。Kustomize在configMap名称之后添加了一个散列,但我无法让它也更改部署以使用新的configMap名称。

部署:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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,应用部署,并检查它是否应用了环境。

代码语言:javascript
复制
$ 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中的散列后缀。

代码语言:javascript
复制
generatorOptions:
  disableNameSuffixHash: true

我似乎遗漏了一步来告诉部署新configMap的名称。那是什么?

EN

回答 1

Stack Overflow用户

发布于 2019-06-05 09:15:22

看起来,问题来自这样一个事实:您通过kustomize生成配置映射,而通过kubectl直接生成配置映射,而不使用kustomize。

基本上,kustomize将在所有资源中查找所有的env-receiver-config,并将它们替换为散列后缀版本。

要使其工作,所有您的资源都必须通过kustomize。要做到这一点,您需要向kustomization.yml添加

代码语言:javascript
复制
resources:
  - yourDeployment.yml

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

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56210674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档