В развертывании в Kubernetes отсутствуют суффиксы Kustomize - PullRequest
0 голосов
/ 19 мая 2019

Я новичок в Кубернетесе.В моем проекте я пытаюсь использовать 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.Что это?

1 Ответ

2 голосов
/ 05 июня 2019

Похоже, проблема в том, что вы генерируете карту конфигурации через kustomize, но развертываете напрямую через kubectl без использования kustomize.

По сути, kustomize будет искать все env-receiver-config во всех ваших ресурсах и заменяет их версией с суффиксом.

Чтобы все заработало, все ваши ресурсы должны пройти через кастомизацию. Для этого нужно добавить в свой kustomization.yml:

resources:
  - yourDeployment.yml

, а затем просто запустите kubectl apply -k .. Необходимо создать как ConfigMap, так и Deployment, используя правильное имя ConfigMap

...