暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

集群外Web服务如何秒变Kubernetes原生?

Linux运维智行录 2024-10-03
36

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

备份是美德,恢复是艺术,谨慎是关键


01
前提条件
  • Kubernetes集群:确保你拥有一个运行中的Kubernetes集群。

  • Ingress控制器:安装并配置了支持外部服务代理的Ingress控制器,如Nginx Ingress Controller。


02
Ingress代理外部web服务

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


03
验证

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、浏览器验证


04
参考文档
  • https://www.kancloud.cn/jiaxzeng/kubernetes/3125885


05
结语

通过上述步骤,我们成功地利用Kubernetes Ingress控制器将集群外的Web服务纳入统一的管理之下。这种方式不仅简化了网络架构,还提供了灵活的路由控制能力。希望这篇指南能帮助你在实际工作中更高效地利用Kubernetes的强大功能。如果你有任何疑问或想分享自己的经验,请随时留言交流!让我们一起探索更多云原生技术的可能性。


别忘了,关注我们的公众号,获取更多关于容器技术和云原生领域的深度洞察和技术实战,让我们携手在技术的海洋中乘风破浪!

END


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

评论