暴露应用
Kubernetes Workload 可以相互暴露,但也可以通过 Kubernetes Service 或 Ingress 公开暴露到互联网。
一个 Service 为暴露的应用程序分配了专用 IP 地址,而 Ingress 则用于 HTTP 的协议,以减轻每个端点需要单独 IP 的需求。
使用 Ingress
使用 Ingress 用于 HTTP 的应用程序可节省 IP 地址空间,并提供 DNS 名称以及 TLS 证书,从而通过 https 访问您的应用程序。
目前提供 2 种方式使用:
- 共享模式:在创建集群中已经存在 IngressClass
nginx
, 使用 Ingress 时指定 IngressClass 为nginx
即可 - 独占模式:使用下面的公共服务 (Service LB), 部署自己的 Ingress Controller
使用共享 Ingress Controller
- 设置
spec.ingressClassName
值为nginx
以显示使用共享的 Ingress Controller - 设置
spec.rules.host
值格式为<app>.<cluster>.ing.zw1.paratera.com
,例如ollama.vcluster-example.ing.zw1.paratera.com
<app>
为自定义名称<cluster>
从kubeconfig
中的clusters.name
获取
- 如果需要支持 tls 则额外设置
metadata.annotations.cert-manager.io/cluster-issuer
为zerossl-prod
spec.tls.secretName
为ollama-tls
spec.tls.hosts
为spec.rules.hosts
相同值
示例:
ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ollama
namespace: default
annotations:
cert-manager.io/cluster-issuer: zerossl-prod
spec:
ingressClassName: nginx
tls:
- hosts:
- ollama.vcluster-example.ing.zw1.paratera.com
secretName: ollama-tls
rules:
- host: ollama.vcluster-example.ing.zw1.paratera.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: ollama
port:
number: 80
使用独占 Ingress Controller
⚠️
依赖公共服务
公共服务 (Service LB)
⚠️
需要申请使用