Helm模板kubernetes服务与多个端口

问题描述 投票:1回答:2

我有kubernetes服务暴露2个我想用helm管理的端口:

apiVersion: v1
kind: Service
metadata:
  name: myproject-svc
spec:
  type: ClusterIP
  ports:
  - name: myproject-web
    port: 80
    protocol: TCP
    targetPort: 8181
  - name: myproject-tcp
    port: 61616
    protocol: TCP
    targetPort: 61616
  selector:
    app: myproject-dev

我创建了一个kubernetes-helm模板:

apiVersion: v1
kind: Service
metadata:
  name: {{ .Values.project }}-svc
spec:
  type: ClusterIP
  ports:
  - name: {{ .Values.project }}-web
    port: {{ .Values.serviceweb.port }}
    protocol: TCP
    targetPort: {{ .Values.serviceweb.targetPort }}
  - name: {{ .Values.project }}-tcp
    port: {{ .Values.servicetcp.port }}
    protocol: TCP
    targetPort: {{ .Values.servicetcp.targetPort }}
  selector:
    app: {{ .Values.project }}-{{ .Values.environment }}

在我的values.yaml

project: activemq

serviceweb:
  type: ClusterIP
  port: 8161

servicetcp:
  type: ClusterIP
  port: 61616

当我执行一个干运行命令时,如果没有定义.Values.service,那么helm似乎不高兴:

helm install --dry-run --set environment=dev --name myproject --debug myproject/;

Error: render error in "myproject/templates/NOTES.txt": template: myproject/templates/NOTES.txt:8:39: executing "myproject/templates/NOTES.txt" at <.Values.service.type>: can't evaluate field type in type interface {}

我看到.Values.service也被引用在templates/tests/test-connection.yaml。这些文件包含使用helm create命令生成后的原始值。

是否有一种优雅的方法来创建具有多个端口的服务的头盔模板?

kubernetes-helm
2个回答
0
投票

看看NOTES.txt中的错误,你将类型称为.Values.service.type。这将失败,因为在values.yaml中,类型的根对象是servicewebservicetcp

根据您的使用情况,您可能需要将该行替换为.Values.serviceweb.type.Values.servicetcp.type,然后尝试。


0
投票

我的问题来自对掌舵的了解不足。许多文件在helm图表文件结构中是可选的,NOTES.txt是其中之一。

当你像我一样开始使用helm create时,它会创建一个目录结构(带有optionnal文件),在values.yaml中预先配置部署,服务和入口模板以及默认值。如果您需要使用我的2个服务端口更像我这样的特定功能,则需要编辑模板,values.yaml和所有引用单个服务端口的文件。如果这些文件是可选的,您也可以删除它们。

© www.soinside.com 2019 - 2024. All rights reserved.