全部產品
Search
文件中心

Alibaba Cloud Service Mesh:使用ASM網關實現HTTPS訪問Knative服務

更新時間:Aug 06, 2024

ASM網關支援HTTPS協議和動態載入認證功能。當您需要安全地訪問和管理Knative構建的微服務時,可以使用ASM網關來實現HTTPS訪問,通過對服務端點進行加密傳輸配置保護服務間的通訊,提高整體架構的安全性和可靠性。

前提條件

建立認證與私密金鑰

網域名稱使用前,需要備案才能正常訪問。本樣本中使用網域名稱aliyun.com產生認證和密鑰,並儲存為Secret。

說明

如果您已有針對aliyun.com可用的認證和私密金鑰,請將認證命名為aliyun.com.crt,私密金鑰命名為aliyun.com.key

如果您沒有針對aliyun.com可用的認證和私密金鑰,您可以使用OpenSSL,執行以下步驟產生認證和私密金鑰。

  1. 執行以下命令,建立根憑證和私密金鑰。

    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. 執行以下命令,為aliyun.com伺服器產生認證和私密金鑰。

    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

認證和私密金鑰準備完成後,請在入口網關Pod所在的叢集對應的KubeConfig環境下,執行以下命令,在istio-system命名空間中建立包含認證和私密金鑰的Secret,並儲存Secret名稱。

kubectl create -n istio-system secret tls myexample-credential --key=aliyun.com.key --cert=aliyun.com.crt

開啟HTTPS訪問

  1. 將以下內容儲存為default.yaml。

    apiVersion: istio.alibabacloud.com/v1beta1
    kind: ASMKnativeConfig
    metadata:
      name: default
    spec:
      enabled: true
      useExisting: true
      tag: 1.4.0
      domainConfig:
        domainName: aliyun.com # 替換為您使用的網域名稱。
        credentialName: myexample-credential # 替換為您的Secret名稱。
  2. 使用kubectl串連到Service Mesh,在命令列執行以下命令。

    kubectl apply -f default.yaml

使用HTTPS訪問服務

  1. 更新Hosts檔案,在Hosts檔案中添加新網域名稱的綁定資訊。

    綁定程式碼範例如下。

    說明

    請將xx.xx.xxx.xx替換為您實際的訪問網關地址。關於如何擷取訪問網關地址的具體操作,請參見擷取訪問網關地址

    xx.xx.xxx.xx helloworld-go.default.aliyun.com
  2. 訪問HTTPS服務。

    • 命令列訪問

      在命令列執行以下命令,通過認證訪問HTTPS服務。

      curl -k --cert aliyun.com.crt --key aliyun.com.key https://helloworld-go.default.aliyun.com
      
      # 預期輸出
      Hello Knative!
    • 連結訪問

      在瀏覽器中直接存取https://helloworld-go.default.aliyun.com

      說明

      由於使用了自我簽署憑證,訪問該服務時瀏覽器可能會提示該地址不安全,請勿擔心。

相關操作

  • Knative on ASM提供基於流量的灰階發布能力。建立Knative服務時,Knative會為服務自動建立第一個修訂版本Revision。後續每當Knative服務的配置發生變化時,Knative都會建立一個新修訂版本,通過修改流量發往不同修訂版本的分配比例來實現灰階發布功能。具體操作,請參見在Knative on ASM中基於流量灰階發布服務

  • Knative Serving為每個Pod注入QUEUE代理容器(queue-proxy)。該容器負責向Autoscaler報告業務容器的並髮指標。接收到這些指標之後,Autoscaler會根據並發請求數及縮放演算法,調整Deployment的Pod數量,從而實現自動擴縮容。具體操作,請參見基於流量請求數實現服務自動擴縮容