通过CCE使用K8S_Ingress
所有文档
menu

容器引擎 CCE

通过CCE使用K8S_Ingress

产品详情自助选购

Ingress是Kubernetes提供的一种7层流量接入方式,它通过连接外部负载均衡与容器内部服务的方式对流量进行管理。相比LoadBalancer Service,Ingress可以简化主机对外开放端口的管理,同时利用外部负载的能力提供更完善的路由和安全规则,详情参考官网说明:Kubernetes Ingress

Ingress主要由两部分组成:

  • Ingress资源对象:提供Ingress Kubernetes对象,能够通过yaml进行创建和更新,将服务与域名对应起来。
  • Ingress Controller:部署在集群中的公共组件,将Ingress资源对象的配置转化成外部负载均衡的配置,对负载均衡器进行管理和更新。

CCE提供了基于百度智能云负载均衡服务的CCE Ingress Controller的实现,用户在使用Ingress的同时将会联动创建和配置管理百度智能云负载均衡(应用型BLB)和弹性公网IP(EIP),从而实现对集群外部流量的接入和管理。Ingress的使用方式与原生的Kubernetes保持一致,用户可以通过百度智能云控制台或者yaml创建和管理Ingress。

创建 Ingress

创建Ingress需要进入Ingress控制台,配置Ingress的基本信息、证书、转发规则、高级配置,并确认资源创建Ready。

进入Ingress控制台

打开 CCE 控制台,在左侧“流量接入”子菜单中找到“Ingress”。

点击Ingress列表中的“新建Ingress”。

截屏2022-05-31 09.45.02.png

配置基本信息

在新建Ingress页面,首先填写基本信息部分:

image.png

  • Ingress名称:按需填写。
  • 命名空间:选择Ingress所在的命名空间。Ingress只能向所在命名空间的Service转发流量。
  • 负载均衡器:支持应用型 BLB 和 Nginx 类型,Nginx类型请参考使用NGINX Ingress。需安装对应类型的组件。
  • 访问类型:“公网”类型将为Ingress分配EIP,而“内网”类型不分配EIP。
  • 指定BLB:可选新建或指定已有的应用型BLB。注意,一个BLB只能用于一个Ingress,不能复用。
  • 指定EIP:可选新建或指定已有的EIP。注意,一个EIP只能用于一个Ingress,不能复用。
  • 指定VPC子网:选择当前Ingress关联创建的BLB所在的子网。如果不是新建BLB而是指定了已有BLB,该选项不会生效。

配置证书

如果创建Ingress时,选择的监听端口包括HTTPS:443,则需要在创建Ingress时选择证书。

点击“添加证书”,可以将证书上传。需要填写证书名称,证书内容和私钥。请点击“查看参考样例”获取证书内容和私钥的填写示例。

截屏2022-05-31 10.05.40.png

如果还有更多问题,请点击右下方链接进入“证书管理”的说明文档。

配置HTTP/HTTPS转发规则

为每一条新增的规则,选择转发的协议类型、域名、URI,服务名称、服务端口:

  • 监听协议:HTTP和HTTPS规则是互相独立的,如果需要在HTTP和HTTPS上都支持,需要分别在HTTP和HTTPS监听协议上都创建一次。
  • 监听端口:跟随监听协议,HTTP为80,HTTPS为443。
  • 域名:请按照格式约束填写域名。

    • 限制长度<100;
    • 通配符仅支持*;
    • 通配符*可出现0次或1次;
    • 通配符*可匹配0-n个字符;
    • 仅支持前缀匹配,即只可出现在域名的开头,如:*.baidu.com。
  • URI:请按照格式约束填写URI。

    • 限制长度<100;
    • 通配符仅支持*;
    • 通配符*可出现0次或1次;
    • 通配符*可匹配0-n个字符;
    • 支持前、中、后缀匹配,即可出现在匹配规则的任意位置。
  • 服务名称:目前仅支持NodePort或LoadBalancer类型的Service,必需和Ingress处于同一命名空间。
  • 服务端口:选择Service暴露的端口。

image.png

高级配置

CCE Ingress还支持一些高级配置:

截屏2022-05-31 09.52.46.png

  • 超时时间:配置Ingress等待后端服务器响应的超时时间。
  • HTTP重定向:是否打开HTTP重定向,将HTTP请求转发到HTTPS端口上。该选项仅在勾选HTTPS后出现。
  • K8S标签:为当前Ingress资源添加一些K8S Label。
  • 注释:为当前Ingress资源添加一些K8S Annotation。CCE定义的Annotation请参考BLB Ingress Annotation说明

等待部署完成

完成上述配置后,即可点击“完成”按钮完成创建。

刚刚创建的Ingress,详情页和转发规则页都会显示“NotReady”:

截屏2022-05-31 10.31.42.png

截屏2022-05-31 10.31.49.png

等待几分钟之后,Ingress完成配置,将会显示为“Ready”状态,此时Ingress已经可以使用了:

截屏2022-05-31 10.34.02.png

截屏2022-05-31 10.34.08.png

Ingress使用示例

在“部署”页面和“服务”页面分别以下yaml内容创建示例Deployment和Service资源:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: ingress-nginx-deployment
      labels:
        app: ingress-nginx
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: ingress-nginx
      template:
        metadata:
          labels:
            app: ingress-nginx
        spec:
          containers:
          - name: nginx
            image: hub.baidubce.com/cce/nginx-ingress
            ports:
            - containerPort: 80

    ---
    kind: Service
    apiVersion: v1
    metadata:
      name: hello-service
    spec:
      selector:
        app: ingress-nginx
      type: NodePort
      ports:
      - protocol: TCP
        port: 8000
        targetPort: 80

    ---
    kind: Service
    apiVersion: v1
    metadata:
      name: world-service
    spec:
      selector:
        app: ingress-nginx
      type: NodePort
      ports:
      - protocol: TCP
        port: 9000
        targetPort: 80

2.创建名为helloworld的Ingress对象:

image.png

3.配置Ingress转发规则:

  • www.cce-ingress.com/hello/* -> hello-service:8000/hello/
  • www.cce-ingress.com/world/* -> world-service:9000/world/

Service对应后端服务必须支持转发策略的URI,如果要支持所有情况,建议设置为/*,这里对URI的路径要求很严格注意“/”,设置如下所示:

image.png

4.修改本地/etc/hosts,将www.cce-ingress.com指向EIP(例如:106.12.52.80):

5.访问测试:

image.png

image.png

上一篇
LoadBalancer Service Annotation说明
下一篇
通过YAML创建CCE_Ingress