kubernetes-helm - 调用第三方chart时如何新建和使用新的ConfigMap?
问题描述
我们有一个 Concourse 实例,它通过HelmRelease文件使用 Flux 部署到 Kubernetes,该文件保存我们的自定义值并引用Concourse Helm Chart。注意:我们使用的是 Helm v3。
该图表允许您指定addionalVolumes
和additionalVolumneMounts
;我希望用来映射/etc/Docker/Daemon.json
到我们的工作 pod 以使它们使用我们的 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 文件引用预先存在的资源)。
我想以这样一种方式定义资源,使它们在我的通量回购中得到完全管理;即,而不是通过运行手动创建配置映射kubectl apply ...
;这样任何推送到主分支的资源更改都会自动同步到我们的 kubernetes 实例。
我的背景是 Windows 全栈,所以我对所有涉及 Linux、Kubernetes、Flux 和 Helm 的概念都很陌生,所以如果我忽略了一些明显的事情,请提前道歉。
解决方案
我最终通过在 helm 图表之外创建一个 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
推荐阅读
- java - Java:使用 java.util.Random 对象最有效的方法是什么?
- flutter - 如何修复:错误:未能将一些参考推送到 | 创建远程 GitHub 存储库?
- c# - 找不到 VSCode .NET Core SDK
- reactjs - 如何在 nextjs 中切换主 CSS 文件?
- android - 为什么我的简单 RecyclerView 没有在屏幕上显示任何内容?
- ag-grid - ag-grid 中的树过滤
- javascript - 如何在本地环境中测试 fs.readdir
- vega-lite - vega-lite:间隔选择拖放错误
- c# - Asp.net 社交媒体网站文件在数据列表中显示问题
- python - Python openpyxl Excel无法识别保存的文件