kubernetes - 有什么方法可以在 Kubernetes 中使用 configmap 从值中读取 hostAliases?
问题描述
我想知道是否有任何方法可以外部化我的 hostaliases,以便从值文件中读取以因环境而异。
deployment.yaml
...
hostAliases:
valueFrom:
configMapKeyRef:
name: host-aliases-configuration
key: hostaliases
configmap.yaml
kind: ConfigMap
metadata:
name: host-aliases-configuration
data:
hostaliases: |
{{ .Values.hosts }}
values.yaml
hosts:
- ip: "13.21.219.253"
hostnames:
- "test-test.com"
- ip: "13.71.225.255"
hostnames:
- "test-test.net"
这不起作用:
掌舵安装 --name 网关。
错误:发布网关失败:版本“v1”中的部署不能作为部署处理:v1.Deployment.Spec:v1.DeploymentSpec.Template:v1.PodTemplateSpec.Spec:v1.PodSpec.HostAliases:[]v1.HostAlias:解码切片:期望 [ 或 n,但发现 {,在 ...|Aliases 的 #10 字节中发现错误:{“valueFrom|...,更大的上下文 ...|config”,“name”:“config-volume "}]}],"hostAliases":{"valueFrom":{"configMapKeyRef":{"key":"hostaliases|...
我想知道是否有任何方法可以通过 env 将这些 url 外部化,也许可以使用另一种方法。
解决方案
我有同样的问题。
我最终想出的解决方案是创建一个external-hosts
图表,其中将包含我所有的外部 IP 引用(抽象为 clusterIP 服务),并将该图表包含在requirements.yaml
每个图表的
requirements.yaml
每张图表:
dependencies:
- name: external-hosts
version: "0.1.*"
repository: "file://../external-hosts"
external-hosts
图表本身包含:
values.yaml
:主机列表+所需端口:
headless:
- host: test-test.com
ip: "13.21.219.253"
ports:
- 80
- 443
- host: test-test.net
ip: "13.71.225.255"
ports:
- 3306
templates/headless.yaml
- 这个为每个主机创建一个具有单个端点的 clusterIP 服务。有点压倒性,但它确实有效。
{{ range .Values.headless }}
---
kind: Service
apiVersion: v1
metadata:
name: {{ .host }}
labels:
{{ include "external-hosts.labels" $ | indent 4 }}
spec:
ports:
{{ range .ports }}
- name: {{ . | quote }}
port: {{ . }}
targetPort: {{ . }}
{{ end }}
{{ end }}
---
{{ range .Values.headless }}
---
kind: Endpoints
apiVersion: v1
metadata:
name: {{ .host }}
labels:
{{ include "external-hosts.labels" $ | indent 4 }}
subsets:
- addresses:
- ip: {{ .ip }}
ports:
{{ range .ports }}
- name: {{ . | quote}}
port: {{ . }}
{{ end }}
{{ end }}
推荐阅读
- angular - 创建具有多个组件的 Angular 库的正确方法是什么?
- python - Python Pip 安装 pyodbc SSLCertVerificationError - [SSL: CERTIFICATE_VERIFY_FAILED] - 无法获取本地颁发者证书 (_ssl.c:1076)
- javascript - RegEx JS - 如何在 : 和 defore / or end 之后获取所有内容
- javascript - 为什么 useEffect 会运行多次?
- javascript - Rxjs Websocket:如何添加标头
- python-3.x - 使用 python 从使用 SimplifiedDoc 检索的肥皂中写入空白值
- python - 如何使用 Turtle 绘制星星
- c# - 测试 C# 时从响应中删除 Cookie 时请求中的 cookie 消失
- python - 如何使用来自 Apache Airflow 的 Docker Operator 的音量
- javascript - 重构复杂的多条件 if-else 语句