调用第三方chart时如何创建并使用新的ConfigMap?
How to create and use a new ConfigMap when calling a third party chart?
我们有一个 Concourse 实例,它通过 HelmRelease file, which holds our custom values and references the Concourse Helm Chart 使用 Flux 部署到 Kubernetes。注意:我们使用的是 Helm v3.
图表允许您指定addionalVolumes
和additionalVolumneMounts
;我希望用来将 /etc/Docker/Daemon.json
映射到我们的工作人员 pods 的功能,让他们使用我们的 pull-through 镜像代理(即避免 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"]
}
如果我自己开发图表,我已经看到了如何定义这样的资源,但是由于我们使用的是第三方图表并且只是为发布提供值,所以我不确定应该如何定义实现(例如,有没有一种方法可以在 HelmRelease 的值中内联提供 configMap 的定义,以便在部署图表时创建它,我是否需要创建一个自定义图表来包装第三方图表并添加此资源,或者我是否需要在任何图表之外创建 configMap,然后通过 HelmRelease 文件引用预先存在的资源。
我想以在我的 flux repo 中完全管理它们的方式定义资源;即,而不是通过 运行 kubectl apply ...
手动创建配置映射;这样,推送到我们主分支的对该资源的任何更改都会自动同步到我们的 kubernetes 实例。
我的背景是 Windows 全栈,所以我对 Linux、Kubernetes、Flux 和 Helm 涉及的所有概念都很陌生,如果我忽略了某些事情,请提前致歉显而易见。
我最终通过在 helm chart 之外创建一个 configMap,然后在 helm chart 中使用它来解决这个问题。
配置图:
---
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
我们有一个 Concourse 实例,它通过 HelmRelease file, which holds our custom values and references the Concourse Helm Chart 使用 Flux 部署到 Kubernetes。注意:我们使用的是 Helm v3.
图表允许您指定addionalVolumes
和additionalVolumneMounts
;我希望用来将 /etc/Docker/Daemon.json
映射到我们的工作人员 pods 的功能,让他们使用我们的 pull-through 镜像代理(即避免 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"]
}
如果我自己开发图表,我已经看到了如何定义这样的资源,但是由于我们使用的是第三方图表并且只是为发布提供值,所以我不确定应该如何定义实现(例如,有没有一种方法可以在 HelmRelease 的值中内联提供 configMap 的定义,以便在部署图表时创建它,我是否需要创建一个自定义图表来包装第三方图表并添加此资源,或者我是否需要在任何图表之外创建 configMap,然后通过 HelmRelease 文件引用预先存在的资源。
我想以在我的 flux repo 中完全管理它们的方式定义资源;即,而不是通过 运行 kubectl apply ...
手动创建配置映射;这样,推送到我们主分支的对该资源的任何更改都会自动同步到我们的 kubernetes 实例。
我的背景是 Windows 全栈,所以我对 Linux、Kubernetes、Flux 和 Helm 涉及的所有概念都很陌生,如果我忽略了某些事情,请提前致歉显而易见。
我最终通过在 helm chart 之外创建一个 configMap,然后在 helm chart 中使用它来解决这个问题。
配置图:
---
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