kubernetes-helm - 用于多个入口/路径的 helm 入口模板
问题描述
我们使用 Helm 来部署我们的应用程序,其中一个使用 2 个(将来可能是 3 个)入口,每个入口都有多个路径。现在我们简单地描述 ingress.yaml 中的所有内容,如下所示:
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: {{ $fullName }}-api
...
rules:
{{- range .Values.ingress.hosts }}
- host: {{ . | quote }}
http:
paths:
- path: /api/health
pathType: Prefix
backend:
service:
name: {{ $global.ingress.app.serviceName }}
port:
number: {{ $global.ingress.app.servicePort }}
- path: /api/ready
pathType: Prefix
backend:
service:
name: {{ $global.ingress.app.serviceName }}
port:
number: {{ $global.ingress.app.servicePort }}
- path: /api
pathType: Prefix
backend:
service:
name: {{ $global.ingress.api.serviceName }}
port:
number: {{ $global.ingress.api.servicePort }}
...
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: {{ $fullName }}-main
...
rules:
{{- range .Values.ingress.hosts }}
- host: {{ . | quote }}
http:
paths:
- path: /socket.io
pathType: Prefix
backend:
service:
name: {{ $global.ingress.socketio.serviceName }}
port:
number: {{ $global.ingress.socketio.servicePort }}
- path: /games
pathType: Prefix
backend:
service:
name: {{ $global.ingress.games.serviceName }}
port:
number: {{ $global.ingress.games.servicePort }}
...
和 values.yaml 包含类似
ingress:
enabled: true
annotations:
nginx.ingress.kubernetes.io/auth-type: basic
nginx.ingress.kubernetes.io/auth-secret: basic-auth
nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required'
globalStaticIPName: "ext_ip-1"
class: "nginx"
app:
serviceName: web-1
servicePort: 3000
api:
serviceName: web-1
servicePort: 3000
graphql:
serviceName: web-1
servicePort: 3000
socketio:
serviceName: web-1
servicePort: 3001
games:
serviceName: web-1
servicePort: 3001
它可以工作,但是 - 我们如何重写模板中的规则块以从自定义 values.yaml 中获取所有内容 - 路径、端口、名称 - 以使实际的 ingress.yaml 模板更短并动态生成?
解决方案
推荐阅读
- c++ - 为什么私有方法覆盖基类公共虚拟方法(具有公共继承)?
- angular - 角 HttpClient | 相当于 curl --user (基本认证)
- regex - 如何在 Google Data Studio 中使用 REGEXP_EXTRACT 从 URL 路径中提取年份?
- postgresql - 可以用 plpgsql 读/写/删除操作系统文件吗?
- r - 使用 R ggplot2 grobs 来显示绘图。这会导致内存泄漏吗?
- python - 计算重复项,然后删除它们
- serialization - 确保在使用 CHtmlView 控件打开文件之前将文件保存为 XML
- python-3.x - tornado v6 似乎已经放弃了 tornado.web.asynchronous 协程。在代码中解决这个问题有什么不同的方法吗?
- ios - 将视频上传到 iPhone 画廊中的特定相册
- webcam - 如何将网络摄像头转为 rtsp