Как создать и использовать новую 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