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

使用cert-manager管理網關的證書

cert-manager是一個證書生命周期管理系統,支持證書的申請、部署等功能。您可以使用cert-manager頒發ASM網關的證書,從而可以使用HTTPS協議通過ASM網關訪問服務,保證數據傳輸的安全。本文介紹如何使用cert-manager管理網關的證書。

背景信息

cert-manager支持簽發自簽名證書和DNS域名證書,從而可以使用HTTPS協議通過ASM網關訪問服務。這兩種證書的區別如下:

  • 自簽名證書:自簽名證書僅具有加密功能,無身份驗證功能。您可以在命令行工具中使用HTTPS協議訪問ASM網關,但是自簽名證書不受Web瀏覽器的信任,Web瀏覽器檢查HTTPS連接會標記為潛在風險并彈出錯誤消息,即無法在Web瀏覽器中使用HTTPS協議通過ASM網關訪問服務。

  • DNS域名證書:DNS域名證書由受信任的CA機構頒發,兼具加密和身份驗證功能。相比自簽名證書,DNS域名證書具有更高的安全性,受到Web瀏覽器的信任。您可以同時在命令行工具和Web瀏覽器中使用HTTPS協議通過ASM網關訪問服務。

說明

若您在ASM數據面集群中使用cert-manager時報錯,可以加入釘群(釘群號:30421250)進行咨詢。

前提條件

在集群中安裝cert-manager

  1. 在本地安裝Helm。具體操作,請參見Helm

  2. 使用kubectl連接集群。具體操作,請參見獲取集群KubeConfig并通過kubectl工具連接集群

  3. 執行以下命令,創建cert-manager命名空間。

    kubectl create namespace cert-manager
  4. 執行以下命令,添加cert-manager Chart。

    helm repo add jetstack https://charts.jetstack.io
  5. 執行以下命令,獲取cert-manager Chart的最新信息。

    helm repo update
  6. 執行以下命令,安裝cert-manager。

    說明

    cert-manager的版本需要和Kubernetes版本保持兼容。關于cert-manager和Kubernetes版本的對應關系,請參見Supported Releases

    helm install \
      cert-manager jetstack/cert-manager \
      --namespace cert-manager \
      --version v1.14  \
      --set installCRDs=true

使用cert-manager簽發自簽名證書

步驟一:在集群中生成自簽證書

  1. 使用以下內容,創建issuer.yaml

    展開查看issuer.yaml

    apiVersion: cert-manager.io/v1
    kind: Issuer
    metadata:
      name: selfsigned
    spec:
      selfSigned: {}
    ---
    apiVersion: cert-manager.io/v1
    kind: Certificate
    metadata:
      name: istio-ingressgateway-certs
    spec:
      isCA: true
      duration: 2160h # 90d
      secretName: istio-ingressgateway-certs
      commonName: istio-ingressgateway-certs
      subject:
        organizations:
        - cluster.local
        - cert-manager
      issuerRef:
        name: selfsigned
        kind: Issuer
        group: cert-manager.io
  2. 執行以下命令,創建自簽名CA來頒發工作負載證書。

    kubectl apply -f issuer.yaml -n istio-system
  3. 執行以下命令,查看證書。

    kubectl get secret -n istio-system 

    預期輸出:

    NAME                                        TYPE                             DATA         AGE
    istio-ingressgateway-certs                  kubernetes.io/tls                3            68m

步驟二:驗證使用HTTPS協議訪問服務是否成功

  1. 部署httpbin應用。具體操作,請參見部署httpbin應用

  2. 修改httpbin應用對應的網關規則。

    您可以使用ASM的KubeConfig在命令行進行操作,或者登錄ASM控制臺,在網關規則頁面修改YAML。具體操作,請參見管理網關規則

    修改后的YAML示例如下。在443端口增加了HTTPS協議的監聽,并且使用了cert-manager創建的證書。

    apiVersion: networking.istio.io/v1beta1
    kind: Gateway
    metadata:
      name: httpbin
      namespace: default
    spec:
      selector:
        istio: ingressgateway
      servers:
        - hosts:
            - '*'
          port:
            name: test
            number: 80
            protocol: HTTP
        - hosts:
            - '*'
          port:
            name: https
            number: 443
            protocol: HTTPS
          tls:
            credentialName: istio-ingressgateway-certs
            mode: SIMPLE
  3. 執行以下命令,在集群中獲取入口網關的IP地址。

    kubectl get svc -n istio-system -l istio=ingressgateway
  4. 執行以下命令,通過HTTPS協議訪問httpbin應用。

    curl -k --resolve istio-ingressgateway-certs:443:${ASM網關IP} https://istio-ingressgateway-certs/status/418 -I

    訪問成功后,您可以看到返回了418狀態碼。此處訪問ASM網關使用的域名是istio-ingressgateway-certs,這是因為之前創建Certificate時,使用的commonNameistio-ingressgateway-certs