【Kubernetes】 Ingress HTTPS代理访问

什么是Kubernetes Ingress?

Ingress是K8s中的一个API对象,用于管理和配置外部对集群内服务的访问。它允许我们定义HTTP和HTTPS路由规则,将请求从集群外部的负载均衡器引导到相应的服务。Ingress的灵活性使得我们能够实现高级的应用程序路由、SSL终端和负载均衡等功能

通过Ingress,我们可以将集群内的多个服务暴露到外部,并根据需要进行定制化的路由设置。这为应用的扩展和灵活部署提供了便利。

Ingress的基本结构

Ingress由以下几个主要组件构成:

规则(Rules): 每个Ingress对象可以包含多个规则,每个规则定义了一组路径匹配规则和与之关联的后端服务。
后端服务(Backend Services)
: 规则中指定的后端服务是Ingress路由请求到达时的目标服务。这可以是集群中的Service、Pod或外部服务。
路径(Paths): 路径定义了应该如何将请求路由到后端服务。可以使用通配符和正则表达式进行路径匹配。
TLS(Transport Layer Security): Ingress还支持TLS,用于启用HTTPS。TLS配置包括证书和密钥,确保数据在传输过程中的安全性。


Ingress 资源对象 ,kubernetes的一个资源对象,用于编写 资源 配置规则;
Ingress配置规则 控制器通过service服务发现机制,动态实现后端Pod路由转发规则的实现;

Ingress Controller,Ingress控制器
ingress-controller,调用k8s的api动态感知集群中Pod的变化而动态更新配置文件,并重载proxy 反向代理负载均衡器 的配置
ingress-controller监听apiserver,获取服务新增,删除等变化,并结合ingress规则动态更新到反向代理负载均衡器上,并重载配置使其生效

proxy 反向代理负载均衡器 ,接收并按照ingress定义的规则进行转发,通常为nginx,haproxy,traefik等,常用的是 Ingress-nginx
反向代理负载均衡器,实现七层转发的Edge Router 边沿路由器,proxy 通过ingress-controller,proxy 需要ingress-controller监听apiserver,感知集群中Pod的变化而动态更新配置文件,
通常以DaemonSets或Deployments的形式部署,并对外暴露80和443端口,
对于DaemonSets来说,一般是以hostNetwork或者hostPort的形式暴露,
对于Deployments来说则以NodePort的方式暴露,控制器的多个节点则借助外部负载均衡ExternalLB以实现统一接入;

Ingress HTTPS 代理访问

mkdir /opt/ingress-nodeport/httpstom
cd /opt/ingress-nodeport/httpstom

创建ssl证书

openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/CN=www3.tomxcz.com/O=tomcatsvc"

创建 secret 资源进行存储

kubectl create secret tls tlstom-secret --key tls.key --cert tls.crt

kubectl get secret

在这里插入图片描述

创建 deployment、Service、Ingress Yaml 资源

vim ingress-https.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: tomcat-app
spec:
  replicas: 2
  selector:
    matchLabels:
      name: tomcat
  template:
    metadata:
      labels:
        name: tomcat
    spec:
      containers:
        - name: tomcat
          image: tomcat:9
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
  name: tomcat-svc
spec:
  ports:
    - port: 8080
      targetPort: 8080
      protocol: TCP
  selector:
    name: tomcat
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: tomcat-https
spec:
  tls:
    - hosts:
      - www3.tomxcz.com
      secretName: tlstom-secret
  rules:
    - host: www3.tomxcz.com
      http:
        paths:
        - path: /
          pathType: Prefix
          backend:
            service: 
              name: tomcat-svc
              port:
                number: 8080
kubectl apply -f ingress-https.yaml

kubectl get svc 

在这里插入图片描述

访问测试

在宿主机的 C:\Windows\System32\drivers\etc\hosts 文件中添加 192.168.99.172 www3.tomxcz.com 记录。
使用谷歌浏览器访问 https://www3.tomxcz.com

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值