我想知道是否有任何方法可以将我的主机别名外部化,以便从值文件中读取以随环境而变化。
deployment.yaml
...
hostAliases:
valueFrom:
configMapKeyRef:
name: host-aliases-configuration
key: hostaliases
configmap.yaml种类:ConfigMap元数据:名称:主机别名配置数据:hostaliases:{{.Values.hosts}}
values.yaml主持人:-ip:“ 13.21.219.253”主机名:-“ test-test.com”-ip:“ 13.71.225.255”主机名:-“ test-test.net”
这不起作用:
helm install --name网关。
错误:发布网关失败:版本“ v1”中的部署不能作为部署处理:v1.Deployment.Spec:v1.DeploymentSpec.Template:v1.PodTemplateSpec.Spec:v1.PodSpec.HostAliases:[] v1.HostAlias :解码切片:期望[或n,但发现{,在... |别名的#10字节中发现错误”:{“ valueFrom | ...,较大的上下文... | config”,“名称”:“ 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 }}
对于主要问题,当configMapKeyRef期望键-值参数而不是configmap提供的数组时,您遇到了错误。
1。您可以尝试:
deployment.yaml
...
hostAliases:
{{ toYaml .Values.hosts | indent 4 }}
values.yaml
hosts:
- ip: "13.21.219.253"
hostnames:
- "test-test.com"
- ip: "13.71.225.255"
hostnames:
- "test-test.net"
注意-hostAliases:
由于文件的托管性质,如果在容器重新启动或重新安排Pod的情况下,当Kubelet重新安装主机文件时,任何用户编写的内容都将被覆盖。因此,不建议修改文件的内容。
请参阅HostAliases
此外,这些收件人仅在POD级别使用。
2。不清楚您要做什么。
看看external IPs应该在服务级别完成。
如果有外部IP路由到一个或多个集群节点,则Kubernetes Services可以在这些外部IP上公开。在服务端口上使用外部IP(作为目标IP)进入群集的流量将被路由到服务端点之一。外部IP不受Kubernetes的管理,由集群管理员负责。
希望获得帮助