Как создать и использовать новую ConfigMap при вызове сторонней диаграммы?

У нас есть экземпляр Concourse, который развертывается в Kubernetes с помощью Flux через файл HelmRelease, который содержит наши пользовательские значения и ссылается на Concourse Helm Chart. Примечание: мы используем Helm v3.

Диаграмма позволяет указать addionalVolumes и additionalVolumneMounts; функция, которую я надеюсь использовать для отображения /etc/Docker/Daemon.json нашим рабочим модулям, чтобы они использовали наш сквозной зеркальный прокси (то есть, чтобы избежать проблем с ограничением скорости Docker).

apiVersion: helm.fluxcd.io/v1
kind: HelmRelease
metadata:
  name: concourse
  namespace: concourse
spec:
  helmVersion: v3
  releaseName: concourse
  chart:
    repository: https://concourse-charts.storage.googleapis.com/
    name: concourse
    version: 14.2.0
spec:
  #...
  values:
    #...
    worker:
      #...
      additionalVolumes:
        - name: "concourse-worker-docker-daemon"
          configMap:
            name: "concourse-worker-docker-daemon"
      additionalVolumeMounts:
        - name: "concourse-worker-docker-daemon"
          mountPath: /etc/docker/daemon.json
          subPath: daemon.json
          readOnly: true

Однако мне нужно создать этот ресурс configMap примерно так:

apiVersion: v1
kind: ConfigMap
metadata:
  name: concourse-worker-docker-daemon
  labels:
    app: concourse-worker
data:
  daemon.json: |
    {
      "registry-mirrors": ["https://myDockerMirror.example.com:5000"]
    }

Я видел, как я мог бы определить такой ресурс, если бы я сам разрабатывал диаграмму, но поскольку мы используем стороннюю диаграмму и просто предоставляем значения для выпуска, я не уверен, как это должно быть достигнуто (например, есть ли там способ предоставить определение configMap встроенным в значения HelmRelease, чтобы оно создавалось при развертывании диаграммы, нужно ли мне создавать настраиваемую диаграмму, которая обертывает стороннюю диаграмму и добавляет этот ресурс, или мне нужно создать configMap вне любых диаграмм, затем обратитесь к ранее существовавшему ресурсу через файл HelmRelease).

Я хочу определить ресурсы таким образом, чтобы они полностью управлялись в моем репозитории flux; т.е. вместо того, чтобы создавать карту конфигурации вручную, запустив kubectl apply ...; так что любые изменения этого ресурса, которые помещаются в нашу основную ветку, будут автоматически синхронизироваться с нашим экземпляром kubernetes.

Мой опыт работы с полным стеком Windows, поэтому я новичок во всех концепциях, связанных с Linux, Kubernetes, Flux и Helm, поэтому заранее извиняюсь, если я упустил из виду что-то очевидное.

1 ответ

Решение

В конечном итоге я решил эту проблему, создав configMap вне диаграммы управления, а затем потребляя ее внутри.

Карта конфигурации:

---
apiVersion: v1
kind: ConfigMap
metadata:
  namespace: concourse
  name: concourse-worker-docker-daemon
  labels:
    app: concourse-worker
    #chart: "concourse-14.2.0"
    release: "concourse"
    #heritage: "Helm"
data:
  daemon.json: |
    {
      "registry-mirrors": ["https://myDockerMirror.example.com:5000"]
    }

Выпуск Шлема:

spec:
  # ...
  values:
  # ...
    worker:
      # ...
      additionalVolumes:
        - name: concourse-worker-docker-daemon
          configMap:
            name: concourse-worker-docker-daemon
      additionalVolumeMounts:
        - name: concourse-worker-docker-daemon
          mountPath: /etc/docker/daemon.json
          subPath: daemon.json
          readOnly: true
Другие вопросы по тегам