我正在尝试在特定端口上安装带有节点端口的头盔图。例如:30005
,但忽略了节点端口部分。
==> v1/Service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hello-app NodePort 10.109.69.245 <none> 8080:32146/TCP 0s
我尝试设置特定端口:
helm install --set service.type=NodePort,service.nodePort=30005 --name hello-app /home/ubuntu/hello-app
我的values.yaml
“服务”部分。
imagePullSecrets: []
nameOverride: ""
fullnameOverride: ""
service:
type: NodePort
port: 8080
nodePort: 30005
我的预期结果:
==> v1/Service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hello-app NodePort 10.109.69.245 <none> 8080:30005/TCP 0s
答案 0 :(得分:1)
很显然,您在服务的掌舵模板中的某个地方有错字,或者忽略了变量名称区分大小写的事实。请仔细检查。
还请参见官方参考nginx图表示例,其中service掌舵模板也使type
和nodePort
也可由最终用户配置,这完美地工作了带有头盔覆盖参数(--set)。
您可以在发布安装之前使用以下命令来验证helm渲染的清单文件:
helm template --set service.type=NodePort --set service.nodePort=31000 --debug docs/examples/nginx/
最后一点:
确保由您的nodePort指定的那个尚未被使用。
您可以在--server-dry-run
中使用kubectl
选项,例如
kubectl apply -f service-31000-nodeport-conflict.yaml --server-dry-run
万一它已经被占用,您会看到类似的错误,该错误是从API服务器返回的:
The Service "release-name-nginx-conflict" is invalid: spec.ports[0].nodePort: Invalid value: 31000: provided port is already allocated
答案 1 :(得分:0)
对不起,我忘记添加到我的/template/service.yaml中
ports:
- port: {{ .Values.service.port }}
nodePort: {{ .Values.service.nodePort }}
protocol: TCP
targetPort: 8080