扩展 helm upgrade cmd 添加一些字段值
Extend helm upgrade cmd to add some field values
我正在使用修改后的 yaml 文件安装 ingress nginx
kubectl apply -f deploy.yaml
yaml 文件只是 original deploy file 但添加了用于部署的主机端口:
ports:
- name: http
containerPort: 80
protocol: TCP
- name: https
containerPort: 443
protocol: TCP
- name: webhook
containerPort: 8443
protocol: TCP
成为:
ports:
- name: http
containerPort: 80
protocol: TCP
hostPort: 80 #<-- added
- name: https
containerPort: 443
protocol: TCP
hostPort: 443 #<-- added
- name: webhook
containerPort: 8443
protocol: TCP
hostPort: 8443 #<-- added
所以这对我有用。但我想 install 使用 helm 进入 nginx:
helm upgrade --install ingress-nginx ingress-nginx \
--repo https://kubernetes.github.io/ingress-nginx \
--namespace ingress-nginx --create-namespace
是否可以使用 helm (-f values.yml
) 添加 hostPort
值?我需要在 Deployment.spec.template.containers.ports
中添加 hostPort
,但是我在编写正确的 values.yml 文件时遇到两个问题:
values.yml
# How to access the deployment?
spec:
template:
containers:
ports: # How to add field with existing containerPort value of each element in the array?
两种查找方式:
你可以仔细看看helm图本身https://github.com/kubernetes/ingress-nginx/blob/main/charts/ingress-nginx
在它下面,你可以看到,有一个条件可以启用 hostPort
https://github.com/kubernetes/ingress-nginx/blob/main/charts/ingress-nginx/templates/controller-deployment.yaml#L113
(正确的)总是挖掘 values.yaml
https://github.com/kubernetes/ingress-nginx/blob/main/charts/ingress-nginx/values.yaml#L90
首先,您在 values.yaml 中已经有 hostPort
。见 following fragment:
## Use host ports 80 and 443
## Disabled by default
hostPort:
# -- Enable 'hostPort' or not
enabled: false
ports:
# -- 'hostPort' http port
http: 80
# -- 'hostPort' https port
https: 443
您应该在 values.yaml:
中打开它
## Use host ports 80 and 443
## Disabled by default
hostPort:
# -- Enable 'hostPort' or not
enabled: true
毕竟 - 如您所知 - 您可以通过 helm
安装您的入口。
helm install -f values.yaml
关于 webhook - 请参阅 here。
您也可以在部署文件中找到 hostPort
。 Here 是模板之一 (controller-deployment.yaml):
在此文件中,您可以找到 hostPort
的三个外观(值 controller.hostPort.enabled
- 负责启用或禁用 hostPort)。
Here:
{{- if $.Values.controller.hostPort.enabled }}
hostPort: {{ index $.Values.controller.hostPort.ports $key | default $value }}
{{- end }}
和here:
{{- range $key, $value := .Values.tcp }}
- name: {{ $key }}-tcp
containerPort: {{ $key }}
protocol: TCP
{{- if $.Values.controller.hostPort.enabled }}
hostPort: {{ $key }}
{{- end }}
{{- end }}
{{- range $key, $value := .Values.udp }}
- name: {{ $key }}-udp
containerPort: {{ $key }}
protocol: UDP
{{- if $.Values.controller.hostPort.enabled }}
hostPort: {{ $key }}
{{- end }}
{{- end }}
另请参阅:
我正在使用修改后的 yaml 文件安装 ingress nginx
kubectl apply -f deploy.yaml
yaml 文件只是 original deploy file 但添加了用于部署的主机端口:
ports:
- name: http
containerPort: 80
protocol: TCP
- name: https
containerPort: 443
protocol: TCP
- name: webhook
containerPort: 8443
protocol: TCP
成为:
ports:
- name: http
containerPort: 80
protocol: TCP
hostPort: 80 #<-- added
- name: https
containerPort: 443
protocol: TCP
hostPort: 443 #<-- added
- name: webhook
containerPort: 8443
protocol: TCP
hostPort: 8443 #<-- added
所以这对我有用。但我想 install 使用 helm 进入 nginx:
helm upgrade --install ingress-nginx ingress-nginx \
--repo https://kubernetes.github.io/ingress-nginx \
--namespace ingress-nginx --create-namespace
是否可以使用 helm (-f values.yml
) 添加 hostPort
值?我需要在 Deployment.spec.template.containers.ports
中添加 hostPort
,但是我在编写正确的 values.yml 文件时遇到两个问题:
values.yml
# How to access the deployment?
spec:
template:
containers:
ports: # How to add field with existing containerPort value of each element in the array?
两种查找方式:
你可以仔细看看helm图本身https://github.com/kubernetes/ingress-nginx/blob/main/charts/ingress-nginx
在它下面,你可以看到,有一个条件可以启用
hostPort
https://github.com/kubernetes/ingress-nginx/blob/main/charts/ingress-nginx/templates/controller-deployment.yaml#L113(正确的)总是挖掘
values.yaml
https://github.com/kubernetes/ingress-nginx/blob/main/charts/ingress-nginx/values.yaml#L90
首先,您在 values.yaml 中已经有 hostPort
。见 following fragment:
## Use host ports 80 and 443
## Disabled by default
hostPort:
# -- Enable 'hostPort' or not
enabled: false
ports:
# -- 'hostPort' http port
http: 80
# -- 'hostPort' https port
https: 443
您应该在 values.yaml:
中打开它 ## Use host ports 80 and 443
## Disabled by default
hostPort:
# -- Enable 'hostPort' or not
enabled: true
毕竟 - 如您所知 - 您可以通过 helm
安装您的入口。
helm install -f values.yaml
关于 webhook - 请参阅 here。
您也可以在部署文件中找到 hostPort
。 Here 是模板之一 (controller-deployment.yaml):
在此文件中,您可以找到 hostPort
的三个外观(值 controller.hostPort.enabled
- 负责启用或禁用 hostPort)。
Here:
{{- if $.Values.controller.hostPort.enabled }}
hostPort: {{ index $.Values.controller.hostPort.ports $key | default $value }}
{{- end }}
和here:
{{- range $key, $value := .Values.tcp }}
- name: {{ $key }}-tcp
containerPort: {{ $key }}
protocol: TCP
{{- if $.Values.controller.hostPort.enabled }}
hostPort: {{ $key }}
{{- end }}
{{- end }}
{{- range $key, $value := .Values.udp }}
- name: {{ $key }}-udp
containerPort: {{ $key }}
protocol: UDP
{{- if $.Values.controller.hostPort.enabled }}
hostPort: {{ $key }}
{{- end }}
{{- end }}
另请参阅: