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

使用ASM網(wǎng)關(guān)作為Ingress Controller暴露集群內(nèi)的服務(wù)

ASM支持在管理的集群中使用Ingress資源,并指定特定的ASM網(wǎng)關(guān)作為Ingress Controller。本文介紹如何在ACK中配置Ingress資源,使用ASM網(wǎng)關(guān)作為Ingress Controller暴露集群內(nèi)的服務(wù)。

前提條件

使用限制

  • 使用ASM網(wǎng)關(guān)作為Ingress Controller時,不支持在Ingress中配置defaultBackend字段。更多信息,請參見Ingress

  • 僅支持V1版本的Ingress API,使用前請確認數(shù)據(jù)面中的Ingress API版本為V1。

功能介紹

Ingress是Kubernetes的標準API對象,用于管理Kubernetes服務(wù)的外部訪問。您可以在Ingress中配置路由規(guī)則,將集群內(nèi)的HTTP或HTTPS服務(wù)暴露到集群外部。

ASM支持在管理的集群中使用Ingress資源,并指定特定的ASM網(wǎng)關(guān)作為Ingress Controller。ASM網(wǎng)關(guān)支持自動擴縮容、TLS硬件加速、網(wǎng)關(guān)優(yōu)雅下線等多項高級功能。當使用ASM網(wǎng)關(guān)作為Ingress Controller時,您可以使用服務(wù)網(wǎng)格提供的多種可觀測能力和安全能力。ASM網(wǎng)關(guān)還支持動態(tài)加載證書。TLS(Transport Layer Security)所需的私鑰、服務(wù)器證書以及根證書,都可以在網(wǎng)關(guān)不重啟的條件下動態(tài)配置。

步驟一:在目標網(wǎng)關(guān)上啟用Ingress

  1. 登錄ASM控制臺,在左側(cè)導航欄,選擇服務(wù)網(wǎng)格 > 網(wǎng)格管理

  2. 網(wǎng)格管理頁面,單擊目標實例名稱,然后在左側(cè)導航欄,選擇ASM網(wǎng)關(guān) > 入口網(wǎng)關(guān)

  3. 在目標網(wǎng)關(guān)右側(cè)的高級功能區(qū)域,單擊啟用Ingress API訪問,然后在確認對話框,單擊確定

步驟二:創(chuàng)建Ingress資源,并指定ASM網(wǎng)關(guān)為IngressController

Ingress不支持選擇網(wǎng)關(guān)監(jiān)聽的端口。HTTP協(xié)議默認會使用80端口,HTTPS協(xié)議默認使用443端口。因此,您的ASM網(wǎng)關(guān)需要開啟80和443端口的監(jiān)聽。

使用Annotations指定IngressController

  1. 使用以下內(nèi)容,創(chuàng)建ingress.yaml

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      annotations:
        kubernetes.io/ingress.class: istio
      name: ingress
    spec:
      rules:
      - host: httpbin.aliyun.com
        http:
          paths:
          - path: /status
            pathType: Prefix
            backend:
              service:
                name: httpbin
                port:
                  number: 8000
  2. 使用kubectl連接到ACK集群,執(zhí)行以下命令,指定ASM網(wǎng)關(guān)為IngressController。

    kubectl apply -f ingress.yaml

使用IngressClass指定IngressController

  1. 使用以下內(nèi)容,創(chuàng)建ingress.yaml

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: ingress
    spec:
      ingressClassName: istio
      rules:
      - host: httpbin.aliyun.com
        http:
          paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: httpbin
                port:
                  number: 8000
  2. 使用kubectl連接到ACK集群,執(zhí)行以下命令,指定ASM網(wǎng)關(guān)為IngressController。

    kubectl apply -f ingress.yaml

步驟三:使用HTTP的方式訪問httpbin服務(wù)

使用以下命令,訪問httpbin服務(wù)。

curl -H 'host: httpbin.aliyun.com'  http://${ASM網(wǎng)關(guān)IP地址}/status/418

預期輸出:

    -=[ teapot ]=-

       _...._
     .'  _ _ `.
    | ."` ^ `". _,
    \_;`"---"`|//
      |       ;/
      \_     _/

預期輸出表明,使用Ingress在ASM網(wǎng)關(guān)上暴露httpbin應(yīng)用成功。

步驟四:設(shè)置TLS并使用HTTPS的方式訪問httpbin服務(wù)

ASM支持Ingress指定TLS設(shè)置。ASM網(wǎng)關(guān)運行在命名空間istio-system,因此Ingress中引用的Secret也必須存在于istio-system命名空間。

ASM網(wǎng)關(guān)作為Ingress資源控制器,支持動態(tài)加載證書。TLS(Transport Layer Security)所需的私鑰、服務(wù)器證書以及根證書,都可以在網(wǎng)關(guān)不重啟的條件下動態(tài)配置。同時,ASM網(wǎng)關(guān)也允許掛載多個Secret支持不同的證書加載,整個過程不需要網(wǎng)關(guān)Pod重啟

下文以加載一個證書為例進行說明。如果需要支持多個證書,請參照下文步驟2步驟3創(chuàng)建Secret完成自動加載。

  1. 準備服務(wù)器證書和私鑰。

    使用域名時需要備案才能正常訪問。本示例使用aliyun.com生成證書和私鑰,并保存為Secret。

    • 場景一:沒有針對aliyun.com可用的證書和私鑰

      您可以通過openssl,執(zhí)行以下步驟來生成證書和密鑰。

      1. 執(zhí)行以下命令,創(chuàng)建根證書和私鑰。

        openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -subj '/O=myexample Inc./CN=aliyun.com' -keyout aliyun.root.key -out aliyun.root.crt
      2. 執(zhí)行以下命令,為aliyun.com服務(wù)器生成證書和私鑰。

        openssl req -out aliyun.com.csr -newkey rsa:2048 -nodes -keyout aliyun.com.key -subj "/CN=aliyun.com/O=myexample organization"
        openssl x509 -req -days 365 -CA aliyun.root.crt -CAkey aliyun.root.key -set_serial 0 -in aliyun.com.csr -out aliyun.com.crt
      3. 在入口網(wǎng)關(guān)Pod所在的集群對應(yīng)的KubeConfig環(huán)境下,執(zhí)行以下命令,在istio-system命名空間中創(chuàng)建包含證書和私鑰的Secret。

        kubectl create -n istio-system secret tls myexample-credential --key=aliyun.com.key --cert=aliyun.com.crt
    • 場景二:已有針對aliyun.com可用的證書和私鑰

      1. 將證書命名為aliyun.com.crt,私鑰命名為aliyun.com.key

      2. 在入口網(wǎng)關(guān)Pod所在的集群對應(yīng)的KubeConfig環(huán)境下,執(zhí)行以下命令,在istio-system命名空間中創(chuàng)建包含證書和私鑰的Secret。

        kubectl create -n istio-system secret tls myexample-credential --key=aliyun.com.key --cert=aliyun.com.crt
  2. 創(chuàng)建Ingress資源,并指定TLS引用的Secret為步驟1創(chuàng)建的myexample-credential。

    1. 使用以下內(nèi)容,創(chuàng)建ingress-https.yaml

      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
        name: ingress
        annotations:
          kubernetes.io/ingress.class: istio
      spec:
        rules:
          - host: httpbin.aliyun.com
            http:
              paths:
                - backend:
                    service:
                      name: httpbin
                      port:
                        number: 8000
                  path: /status
                  pathType: Prefix
        tls:
          - hosts:
              - httpbin.aliyun.com
            secretName: myexample-credential
      說明

      如果通過ACK控制臺創(chuàng)建Ingress資源,只支持從Ingress所在命名空間下選擇證書對應(yīng)的Secret。例如,當創(chuàng)建的Ingress資源在default命名空間時,您只能選擇該命名空間default下的Secret。因此,您需要將步驟1創(chuàng)建的Secret myexample-credential復制到命名空間default下,以確保在ACK控制臺上可以選擇該Secret。

    2. 使用kubectl連接到ACK集群,執(zhí)行以下命令,部署Ingress資源。

      kubectl apply -f ingress-https.yaml
  3. 執(zhí)行以下命令,使用HTTPS的方式訪問httpbin服務(wù)。

    curl  -H Host:httpbin.aliyun.com --resolve httpbin.aliyun.com:443:${ASM網(wǎng)關(guān)IP} https://httpbin.aliyun.com:443/status/418 -k

    預期輸出:

        -=[ teapot ]=-
    
           _...._
         .'  _ _ `.
        | ."` ^ `". _,
        \_;`"---"`|//
          |       ;/
          \_     _/

    預期輸出表明,使用Ingress在ASM網(wǎng)關(guān)上暴露httpbin應(yīng)用成功。