searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

云原生网关Ingress管理方式介绍

2023-09-27 01:55:06
31
0

1.  Ingress介绍

  • Ingress是Kubernetes中的一个资源对象,用来管理集群外部访问集群内部服务的方式
  • 通过Ingress资源来配置不同的转发规则,从而达到根据不同的规则设置访问集群内不同的Service所对应的后端Pod

2.  MSE Ingress Controller

2.1.  介绍

MSE云原生网关提供的一个组件,该组件核心功能是方便用户使用常规的K8s Custom Resource来管理MSE云原生网关实例的生命周期以及Ingress资源的监听选项

2.2.  安装方式

  • 组件发布在容器服务的应用市场中
  • 由用户通过Helm包管理的形式自行安装到ACK集群中

 

2.3.  概念介绍

  • Service是后端真实服务的抽象,一个Service可以代表多个相同的后端服务。
  • Ingress是反向代理规则,用来规定HTTP和HTTPS请求应该被转发到哪个Service上。例如:根据请求中不同的Host和URL路径,让请求转发到不同的Service上。
  • MseIngressConfig是由MSE Ingress Controller提供的CRD来描述云原生网关实例基本信息。
  • MSE Ingress Controller负责监听集群中的MseIngressConfig资源,实时动态维护该资源对应的云原生网关实例的生命周期以及网关与ACK集群的关联性。

2.4.  主要功能

2.4.1.  管理云原生网关的生命周期

MSE Ingress Controller负责监听集群中用户创建的MseIngressConfig资源,实时动态维护该资源对应的云原生网关实例的生命周期以及网关与ACK集群的关联性。

 MseIngressConfig资源示例

apiVersion: mse.alibabacloud.com/v1alpha1
kind: MseIngressConfig
metadata:
   name: test
spec:
   name: mse-ingress
   common:
      pay:
         payType: POSTPAY
      instance:
         spec: 4c8g
         replicas: 3
      network:
         vSwitches:
            - "vsw-1"
            - "vsw-2"
         publicSLBSpec: slb.s2.small
      securityGroupType: normal
   global:
      ipAccessControl:
         whitelist:
            - 1.1.xx.xx
            - 2.2.xx.xx
   monitor:
      logging:
         sls:
            reuseProject: "xxx" # 为空,表示使用默认
      tracing:
         xTrace:
            sampleRate: "100"
   ingress:
      local:
         ingressClass:  mse # 默认为mse,比 K8s IngressClass 资源的优先级低
         watchNamespace: "" # ""表示所有命名空间中的Ingress资源

 

2.4.2.  监听Ingress资源

MSE云原生网关的控制面通过关联的ACK集群的API Server获取Ingress资源的变化,然后动态更新MSE云原生网关的路由规则。当MSE云原生网关收到请求时,匹配Ingress转发规则转发请求到后端Service所对应的Pod。

云原生网关支持Nginx-Ingress中比较常用和核心的Annotation,方便从Nginx-Ingress无缝迁移至MSE云原生网关。

在ACK集群中创建ingress资源,网关会监听该资源并展示到控制台上。

 

3. 测试与验证

apiVersion: apps/v1
kind: Deployment
metadata:
  name: go-httpbin
spec:
  replicas: 1
  selector:
    matchLabels:
      app: go-httpbin
  template:
    metadata:
      labels:
        app: go-httpbin
        version: v1
    spec:
      containers:
        - image: specialyang/go-httpbin:v3
          args:
            - "--port=8090"
            - "--version=v1"
          imagePullPolicy: Always
          name: go-httpbin
          ports:
            - containerPort: 8090
---
apiVersion: v1
kind: Service
metadata:
  name: go-httpbin
spec:
  ports:
    - port: 80
      targetPort: 8090
      protocol: TCP
  selector:
    app: go-httpbin

 创建并应用以下Ingress资源,在annotations中包含超时的相关配置:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress
  annotations: 
    nginx.org/proxy-connect-timeout: "30s" 
    nginx.org/proxy-read-timeout: "20s" 
spec:
  ingressClassName: mse
  rules:
  - http:
      paths:
      - backend:
          service:
            name: go-httpbin
            port:
              number: 80
        path: /version
        pathType: Prefix

查看目标Ingress的IP地址。

kubectl get ingress ingress

预期输出:

NAME      CLASS   HOSTS   ADDRESS         PORTS   AGE
ingress   mse     *       114.55.xx.xx   80      12m

 进行访问测试

curl 114.55.xx.xx/version

预期输出:

version:v1
0条评论
作者已关闭评论
熊****阳
4文章数
1粉丝数
熊****阳
4 文章 | 1 粉丝
熊****阳
4文章数
1粉丝数
熊****阳
4 文章 | 1 粉丝
原创

云原生网关Ingress管理方式介绍

2023-09-27 01:55:06
31
0

1.  Ingress介绍

  • Ingress是Kubernetes中的一个资源对象,用来管理集群外部访问集群内部服务的方式
  • 通过Ingress资源来配置不同的转发规则,从而达到根据不同的规则设置访问集群内不同的Service所对应的后端Pod

2.  MSE Ingress Controller

2.1.  介绍

MSE云原生网关提供的一个组件,该组件核心功能是方便用户使用常规的K8s Custom Resource来管理MSE云原生网关实例的生命周期以及Ingress资源的监听选项

2.2.  安装方式

  • 组件发布在容器服务的应用市场中
  • 由用户通过Helm包管理的形式自行安装到ACK集群中

 

2.3.  概念介绍

  • Service是后端真实服务的抽象,一个Service可以代表多个相同的后端服务。
  • Ingress是反向代理规则,用来规定HTTP和HTTPS请求应该被转发到哪个Service上。例如:根据请求中不同的Host和URL路径,让请求转发到不同的Service上。
  • MseIngressConfig是由MSE Ingress Controller提供的CRD来描述云原生网关实例基本信息。
  • MSE Ingress Controller负责监听集群中的MseIngressConfig资源,实时动态维护该资源对应的云原生网关实例的生命周期以及网关与ACK集群的关联性。

2.4.  主要功能

2.4.1.  管理云原生网关的生命周期

MSE Ingress Controller负责监听集群中用户创建的MseIngressConfig资源,实时动态维护该资源对应的云原生网关实例的生命周期以及网关与ACK集群的关联性。

 MseIngressConfig资源示例

apiVersion: mse.alibabacloud.com/v1alpha1
kind: MseIngressConfig
metadata:
   name: test
spec:
   name: mse-ingress
   common:
      pay:
         payType: POSTPAY
      instance:
         spec: 4c8g
         replicas: 3
      network:
         vSwitches:
            - "vsw-1"
            - "vsw-2"
         publicSLBSpec: slb.s2.small
      securityGroupType: normal
   global:
      ipAccessControl:
         whitelist:
            - 1.1.xx.xx
            - 2.2.xx.xx
   monitor:
      logging:
         sls:
            reuseProject: "xxx" # 为空,表示使用默认
      tracing:
         xTrace:
            sampleRate: "100"
   ingress:
      local:
         ingressClass:  mse # 默认为mse,比 K8s IngressClass 资源的优先级低
         watchNamespace: "" # ""表示所有命名空间中的Ingress资源

 

2.4.2.  监听Ingress资源

MSE云原生网关的控制面通过关联的ACK集群的API Server获取Ingress资源的变化,然后动态更新MSE云原生网关的路由规则。当MSE云原生网关收到请求时,匹配Ingress转发规则转发请求到后端Service所对应的Pod。

云原生网关支持Nginx-Ingress中比较常用和核心的Annotation,方便从Nginx-Ingress无缝迁移至MSE云原生网关。

在ACK集群中创建ingress资源,网关会监听该资源并展示到控制台上。

 

3. 测试与验证

apiVersion: apps/v1
kind: Deployment
metadata:
  name: go-httpbin
spec:
  replicas: 1
  selector:
    matchLabels:
      app: go-httpbin
  template:
    metadata:
      labels:
        app: go-httpbin
        version: v1
    spec:
      containers:
        - image: specialyang/go-httpbin:v3
          args:
            - "--port=8090"
            - "--version=v1"
          imagePullPolicy: Always
          name: go-httpbin
          ports:
            - containerPort: 8090
---
apiVersion: v1
kind: Service
metadata:
  name: go-httpbin
spec:
  ports:
    - port: 80
      targetPort: 8090
      protocol: TCP
  selector:
    app: go-httpbin

 创建并应用以下Ingress资源,在annotations中包含超时的相关配置:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress
  annotations: 
    nginx.org/proxy-connect-timeout: "30s" 
    nginx.org/proxy-read-timeout: "20s" 
spec:
  ingressClassName: mse
  rules:
  - http:
      paths:
      - backend:
          service:
            name: go-httpbin
            port:
              number: 80
        path: /version
        pathType: Prefix

查看目标Ingress的IP地址。

kubectl get ingress ingress

预期输出:

NAME      CLASS   HOSTS   ADDRESS         PORTS   AGE
ingress   mse     *       114.55.xx.xx   80      12m

 进行访问测试

curl 114.55.xx.xx/version

预期输出:

version:v1
文章来自个人专栏
小熊的笔记
4 文章 | 1 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0