在现代云原生环境中,Kubernetes已成为容器编排的标准。虽然Kubernetes主要用于管理和调度集群内的服务,但有时我们也需要通过集群来访问外部的服务。这可以通过配置Ingress控制器来实现。本文将详细介绍如何设置Ingress以代理集群外的Web服务,从而提供一个统一的入口点,并简化网络配置。

备份是美德,恢复是艺术,谨慎是关键
Kubernetes集群:确保你拥有一个运行中的Kubernetes集群。
Ingress控制器:安装并配置了支持外部服务代理的Ingress控制器,如Nginx Ingress Controller。
1、创建service资源
$ cat <<'EOF' | kubectl apply -f -
apiVersion: v1
kind: Service
metadata:
name: grafana
spec:
externalName: 172.139.20.170
ports:
- name: http
port: 3000
protocol: TCP
targetPort: 3000
sessionAffinity: None
type: ExternalName
EOF
$ kubectl get svc grafana
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
grafana ExternalName <none> 172.139.20.170 3000/TCP 11s
2、创建ingress资源
$ cat <<'EOF' | kubectl apply -f -
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
cert-manager.io/cluster-issuer: ca-cluster-issuer
cert-manager.io/common-name: ops.jiaxzeng.com
name: ops-system
namespace: default
spec:
ingressClassName: nginx
rules:
- host: ops.jiaxzeng.com
http:
paths:
- pathType: Prefix
path: /grafana
backend:
service:
name: grafana
port:
number: 3000
tls:
- hosts:
- ops.jiaxzeng.com
secretName: ops.jiaxzeng.com
EOF
1、命令行验证
$ curl -k -I -LH 'Host: ops.jiaxzeng.com' https://172.139.20.100/grafana
HTTP/1.1 302 Found
Date: Mon, 30 Sep 2024 15:02:24 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
Cache-Control: no-store
Location: /grafana/login
Set-Cookie: redirect_to=%2Fgrafana; Path=/grafana; HttpOnly; SameSite=Lax
X-Content-Type-Options: nosniff
X-Frame-Options: deny
X-Xss-Protection: 1; mode=block
Strict-Transport-Security: max-age=31536000; includeSubDomains
HTTP/1.1 200 OK
Date: Mon, 30 Sep 2024 15:02:24 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Cache-Control: no-store
X-Content-Type-Options: nosniff
X-Frame-Options: deny
X-Xss-Protection: 1; mode=block
Strict-Transport-Security: max-age=31536000; includeSubDomains
2、浏览器验证

https://www.kancloud.cn/jiaxzeng/kubernetes/3125885
通过上述步骤,我们成功地利用Kubernetes Ingress控制器将集群外的Web服务纳入统一的管理之下。这种方式不仅简化了网络架构,还提供了灵活的路由控制能力。希望这篇指南能帮助你在实际工作中更高效地利用Kubernetes的强大功能。如果你有任何疑问或想分享自己的经验,请随时留言交流!让我们一起探索更多云原生技术的可能性。
别忘了,关注我们的公众号,获取更多关于容器技术和云原生领域的深度洞察和技术实战,让我们携手在技术的海洋中乘风破浪!

文章转载自Linux运维智行录,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




