如何使用 k8s 在 对外暴露 pods 的任意端口?
现在想实现使用 self host kubernetes 的code-server进行 web preview,现在的用法是使用 yaml 文件里面写 services 和 ingress 进行暴露,但是 ports 是写死的,如果要打开新的端口就需要重新修改 ymal 。搜了半天也没找到办法,希望 v2 的大佬们指点一下。
example yaml:
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: code-server-01
namespace: code-server-01
annotations:
kubernetes.io/ingress.class: nginx
spec:
# 内网
rules:
- host: code-server-01.xxxxxxx.xip.io
http:
paths:
- backend:
serviceName: code-server-01
servicePort: 80
- host: preview-code-server-01.xxxxxxx.xip.io
http:
paths:
- backend:
serviceName: code-server-01
servicePort: 5500
# 外网
- host: code-01.xxx.com
http:
paths:
- backend:
serviceName: code-server-01
servicePort: 80
- host: preview-code-01.xxx.com
http:
paths:
- backend:
serviceName: code-server-01
servicePort: 5500
---
apiVersion: v1
kind: Service
metadata:
name: code-server-01
namespace: code-server-01
spec:
ports:
- port: 80
name: web
targetPort: 8080
- port: 5500
name: preview
targetPort: 5500
selector:
app: code-server-01
期望实现:
比如说 gitpod.io 的 preview 就是根据需求打开端口
复现过程:
我想请教请教这个过程是如何实现的?
ps:感觉是使用了什么神奇的 ingress controller,不知道有没有开源产品
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.