service + endpoints + ingress实现内部ip:port服务对外访问
在k8s集群中,需要访问集群外部的一些服务且服务是ip:port形式暴露的,可以使用类型为ClusterIP的Kubernetes Service和Endpoint实现对外部服务的访问。比如我们有一个web服务:http://192.168.32.10:8080。可通过如下配置,实现外部域名安全访问。
·
意义
在k8s集群中,需要访问集群外部的一些服务且服务是ip:port形式暴露的,可以使用类型为ClusterIP的Kubernetes Service和Endpoint及Ingress实现对外部服务的访问。好处如下:
- 纳入k8s资源后,可以通过ingress便捷配置域名和证书。
- 通过ingress配置同域名不同路径实现跨域访问。
实现
比如我们有一个web服务:http://192.168.32.10:8080。
可通过如下配置,实现外部域名安全访问。
---
apiVersion: v1
kind: Service
metadata:
name: web-agent-svc
spec:
ports:
- name: web-agent-port # 需要和Endpoints中name保持一致
port: 18080 # 可自定义指定
protocol: TCP
sessionAffinity: None
type: ClusterIP
---
apiVersion: v1
kind: Endpoints
metadata:
name: web-agent-svc
subsets:
- addresses:
- ip: 192.168.32.10
ports:
- port: 8080 # web服务端口
name: web-agent-port
protocol: TCP
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: web-agent-svc-ingress
annotations:
kubernetes.io/ingress.class: 'nginx'
nginx.ingress.kubernetes.io/rewrite-target: /$1 # $1代指ingress path中(.*)部分
spec:
tls:
- hosts:
- web.wfbi.net
secretName: web.wfbi.net-https # 需要创建tls证书
rules:
- host: web.wfbi.net
http:
paths:
- backend:
service:
name: web-agent-svc
port:
number: 18080
pathType: Prefix
path: /(.*)
如上配置后可通过:https://web.wfbi.net
域名访问
更多推荐
已为社区贡献3条内容
所有评论(0)