日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

通過MSE Ingress訪問容器服務

MSE Ingress是基于阿里云MSE云原生網關構建的Ingress服務,兼容Nginx Ingress以及Nginx Ingress Annotation,支持多服務版本同時灰度發布、靈活的服務治理能力以及全方位的安全防護保障,能夠滿足大規模云原生分布式應用的流量治理訴求。本文介紹如何通過MSE Ingress訪問容器服務。

前提條件

背景信息

在容器服務領域,您可以通過定義Ingress資源來管理對外暴露的內部服務。Ingress是允許訪問集群內Service的規則集合,您可以在目標容器服務集群定義Ingress資源來配置轉發規則,實現不同URL訪問集群內不同的Service。

Ingress指流量治理規則,而Ingress Controller是Ingress資源的實施者,其中Nginx Ingress Controller較為常見。但Nginx Ingress Controller無法滿足云原生應用服務對復雜業務路由、多種應用層協議(例如Dubbo和QUIC)、大規模七層流量能力的需求。

MSE Ingress是阿里云推出的下一代網關,具備低成本、安全、高集成和高可用的產品優勢。關于MSE Ingress的介紹和工作原理,請參見MSE Ingress概覽

步驟一:通過MseIngressConfig配置MSE云原生網關實例

MseIngressConfig是由MSE Ingress Controller提供的CRD資源,MSE Ingress Controller使用MseIngressConfig來管理MSE云原生網關實例的生命周期以及全局配置。

重要
  • 一個MseIngressConfig對應一個MSE云原生網關實例,如果您需要使用多個MSE云原生網關實例,需要創建多MseIngressConfig配置。

  • 復用場景外,刪除MseIngressConfig配置,會級聯刪除對應的MSE云原生網關實例。

執行以下命令,創建一個實例名稱為mse-ingress,該實例包含3個2c4g副本,且交換機、SLB和安全組等其他信息會取默認值。更多關于MseIngressConfig的配置信息,請參見MseIngressConfig說明

說明
  1. 交換機若未設置時,則默認取MSE Ingress Controller被調度到的K8s Node節點所在的交換機,導致被創建的MSE云原生網關實例處于單交換機模式,生產環境建議手動配置兩個交換機。

  2. SLB未設置時,則默認為MSE云原生網關創建一個slb.s2.small規格的公網SLB。

  3. 安全組未設置時,則默認為MSE云原生網關創建普通類型的安全組。

cat << EOF | kubectl apply -f -
apiVersion: mse.alibabacloud.com/v1alpha1
kind: MseIngressConfig
metadata:
  name: test
spec:
  name: mse-ingress
  common:
    instance:
      spec: 2c4g
      replicas: 3
EOF

以上Spec中出現的配置項說明如下:

參數

說明

是否可選

示例值

spec.name

MSE云原生網關實例名稱。

可選

mse-ingress

spec.common.instance.spec

MSE云原生網關實例的規格。默認為4c8g。

可選

2c4g

spec.common.instance.replicas

MSE云原生網關實例的副本數。默認為3個。

可選

3

步驟二:配置IngressClass

目前,MSE Ingress支持兩種方式配置IngressClass,您可以根據實際的業務場景選擇對應的方式。

  • 通過K8s IngressClass資源方式

    通過標準的K8s IngressClass資源為MSE Ingress配置IngressClass,該方式適用于新業務接入MSE Ingress的場景。

  • 通過MseIngressConfig資源方式

    通過MseIngressConfig中Ingress相關的配置為MSE Ingress配置IngressClass,該方式適用于從其他Ingress(如Nginx Ingress)遷移至MSE Ingress的場景。因為一個K8s集群中只能有一個同名的IngressClass資源,而遷移時需要Nginx Ingress和MSE Ingress同時監聽相同的IngressClass,所以MSE Ingress額外提供了通過MseIngressConfig資源方式配置IngressClass。

通過K8s IngressClass資源方式

IngressClass是Ingress處理器的描述,用于在K8s集群中聲明一個Ingress處理器實現,關聯該IngressClass的Ingress資源會被該Ingress處理器解析。此外,需要通過IngressClass的Parameter字段關聯一個MseIngressConfig(MSE云原生網關),用于實施被解析的Ingress資源描述的流量管理規則。

執行以下命令,創建IngressClass資源,并在spec.parameters中關聯步驟一:通過MseIngressConfig配置MSE云原生網關實例創建的MseIngressConfig配置。

1.19之前版本集群

cat << EOF | kubectl apply -f -
apiVersion: networking.k8s.io/v1beta1
kind: IngressClass
metadata:
  name: mse
spec:
  controller: mse.alibabacloud.com/ingress
  parameters:
    apiGroup: mse.alibabacloud.com
    kind: MseIngressConfig
    name: test
EOF

1.19及之后版本集群

cat << EOF | kubectl apply -f -
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
  name: mse
spec:
  controller: mse.alibabacloud.com/ingress
  parameters:
    apiGroup: mse.alibabacloud.com
    kind: MseIngressConfig
    name: test
EOF

通過MseIngressConfig資源方式

主要適用于遷移的場景,或者是無法創建IngressClass資源的場景。您可以通過MseIngressConfig中Ingress相關的配置,為MSE Ingress配置IngressClass。

比如,修改步驟一創建的MseIngressConfig配置,配置IngressClass為mse。

apiVersion: mse.alibabacloud.com/v1alpha1
kind: MseIngressConfig
metadata:
  name: test
spec:
  name: mse-ingress
  common:
    instance:
      spec: 2c4g
      replicas: 3
  ingress:
    local:
      ingressClass: mse

參數

說明

ingress

ingress的監聽配置。

ingress.local

為云原生網關配置當前容器服務集群的Ingress的監聽配置。

ingress.local.ingressClass

云原生網關監聽集群中具體IngressClass下的Ingress資源,可選值如下所示。

  • 未配置:不監聽任何Ingress資源。

  • 配置為mse:監聽IngressClass為mse的Ingress資源。

  • 配置為空"":監聽所有Ingress資源。

  • 配置為nginx:監聽IngressClass為nginx或者未關聯任何IngressClass的Ingress資源。

  • 配置為其他值:監聽IngressClass為指定值的Ingress資源。

說明

該配置的優先級低于用戶通過IngressClass資源關聯MseIngressConfig的方式。

驗證IngressClass配置成功

執行以下命令,查詢MseIngressConfig的狀態。當狀態顯示為 Listening時,表示云原生網關創建成功并且處于運行狀態。并自動監聽集群中IngressClass為mse的Ingress資源。

kubectl get MseIngressConfig test

預期結果為:

NAME   STATUS      AGE
test   Listening   3m15s
說明

MseIngressConfig會按照Pending >Running > Listening的狀態依次變化。各狀態說明如下:

  • Pending :表示云原生網關正在創建中,需等待3min左右。

  • Running :表示云原生網關創建成功,并處于運行狀態。

  • Listening:表示云原生處于運行狀態,并監聽集群中Ingress資源。

  • Failed:表示云原生網關處于非法狀態,可以查看Status字段中Message來進一步明確原因。

步驟三:通過MSE Ingress訪問容器服務

  1. 執行以下命令,部署以下后端服務go-httpbin。

    cat << EOF | kubectl apply -f -
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: go-httpbin
      namespace: default
    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
      namespace: default
    spec:
      ports:
        - port: 80
          targetPort: 8090
          protocol: TCP
      selector:
        app: go-httpbin
    EOF
  2. 執行以下命令,創建Ingress資源。代碼中域名example.com下的/version路由規則暴露后端服務go-httpbin。

    1.19之前版本集群

    cat << EOF | kubectl apply -f -
    apiVersion: networking.k8s.io/v1beta1
    kind: Ingress
    metadata:
      name: ingress
      namespace: default
    spec:
      ingressClassName: mse
      rules:
       - host: example.com
         http:
          paths:
          - path: /version
            backend:
              serviceName: go-httpbin
              servicePort: 80
    EOF

    1.19及之后版本集群

    cat << EOF | kubectl apply -f -
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: ingress
      namespace: default
    spec:
      ingressClassName: mse
      rules:
      - host: example.com 
        http:
          paths:
          - backend:
              service:
                name: go-httpbin
                port:
                  number: 80
            path: /version
            pathType: Prefix
    EOF
  3. 查看目標Ingress的IP地址。

    kubectl get ingress ingress

    預期輸出:

    NAME      CLASS   HOSTS            ADDRESS         PORTS   AGE
    ingress   mse     example.com      114.55.XX.XX   80      12m
  4. 執行以下命令,進行訪問測試。

    curl -H "host: example.com" 114.55.XX.XX/version

    預期輸出:

    version:v1