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

在Kubernetes中實現(xiàn)HTTPS安全訪問

容器服務ACK集群支持多種應用訪問的形式,最常見的形式如<SLB-Instance-IP>:<Port><NodeIP>:<NodePort>和域名訪問等。ACK集群默認不支持HTTPS訪問,如果您希望能夠通過HTTPS進行應用的訪問,容器服務ACK和阿里云負載均衡服務為您提供安全的HTTPS訪問。本文通過實際案例演示的HTTPS訪問配置,幫助您在容器服務ACK中配置自己的證書。

前提條件

  • 創(chuàng)建Kubernetes托管版集群

  • 創(chuàng)建集群的服務器證書,包括公鑰證書和私鑰。

    • 您可以通過執(zhí)行以下命令填寫證書信息,快速創(chuàng)建集群的服務器證書。

      openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt

      輸出:

      Generating a 2048 bit RSA private key
      .......+++
      .......+++
      writing new private key to 'tls.key'
      -----
      You are about to be asked to enter information that will be incorporated
      into your certificate request.
      What you are about to enter is what is called a Distinguished Name or a DN.
      There are quite a few fields but you can leave some blank
      For some fields there will be a default value,
      If you enter '.', the field will be left blank.
      -----
      Country Name (2 letter code) []:CN
      State or Province Name (full name) []:zhejiang
      Locality Name (eg, city) []:hangzhou
      Organization Name (eg, company) []:alibaba
      Organizational Unit Name (eg, section) []:test
      Common Name (eg, fully qualified host name) []:foo.bar.com # 注意,您需要正確配置域名
      Email Address []:te**@alibaba.com

      創(chuàng)建的證書以及私鑰文件會保存在當前目錄下的tls.crttls.key文件中。

    • 您也可以選擇購買阿里云簽發(fā)證書。具體操作,請參見選擇阿里云簽發(fā)證書

背景信息

根據訪問的方式不同,當前可以分為兩種配置證書的方式:

  • 在前端SLB上配置證書。

  • 在Ingress中配置證書。

在SLB上配置HTTPS證書

該方式具有如下特點:

  • 優(yōu)點:證書配置在SLB上,為應用外部訪問的入口,在集群內部進行應用的訪問仍依然使HTTP訪問方式。

  • 缺點:需要維護較多的域名與IP地址的對應關系。

  • 適用場景:應用不使用Ingress暴露訪問方式,通過LoadBalancer類型的Service進行應用訪問的暴露。

準備工作:

您已在該ACK集群中創(chuàng)建一個Nginx應用,該應用采用LoadBalancer類型的服務(Service)對外提供訪問。更多信息,請參見創(chuàng)建無狀態(tài)工作負載Deployment

示例:

  1. 登錄容器服務管理控制臺

  2. 在控制臺左側導航欄,單擊集群

  3. 集群列表頁面,單擊目標集群名稱或者目標集群右側操作列下的詳情

  4. 在集群管理頁左側導航欄,選擇網絡 > 服務

  5. 選擇集群的命名空間和服務,單擊外部端點,您可通過<SLB IP>:<Port>的方式訪問該應用。

    nginx

  6. 登錄負載均衡管理控制臺

  7. 配置SSL證書

    • 如果您是通過命令方式創(chuàng)建集群的服務器證書,您需要使用前提條件中創(chuàng)建的公鑰證書和私鑰上傳非阿里云簽發(fā)證書。具體操作,請參見上傳非阿里云簽發(fā)證書

    • 如果您是通過購買方式獲取阿里云簽發(fā)證書,請?zhí)^此步驟。關于創(chuàng)建阿里云簽發(fā)證書的操作,請參見選擇阿里云簽發(fā)證書

    在證書列表中,找到目標證書名稱下面的證書ID。

  8. 在容器服務管理控制臺的服務列表中,找到之前創(chuàng)建的服務,單擊右側操作列下的更新

  9. 更新服務對話框中的注解區(qū)域,添加以下兩個注解內容。

    注解

    注解

    名稱

    注解一

    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port

    https:443

    注解二

    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id

    ${YOUR_CERT_ID}

    說明

    將${YOUR_CERT_ID}替換成步驟7配置SSL證書生成的證書ID。

    您還可以使用YAML方式添加注解內容,完整YAML示例如下:

    apiVersion:v1
    kind:Service
    metadata:
      annotations:
        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port:"https:443"
        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id:"${YOUR_CERT_ID}"
      name:nginx
      namespace:default
    spec:
      ports:
      - name:https
        port:443
        protocol:TCP
        targetPort:80
      - name:http
        port:80
        protocol:TCP
        targetPort:80
      selector:
        run:nginx
      type:LoadBalancer
    說明

    HTTPS的443端口對應的targetPort端口需要配置成HTTP的端口80。

  10. 訪問HTTPS的Nginx應用,在瀏覽器中輸入https://<slb-instance-ip>并進行訪問。

    https

在Ingress上配置證書

該方法具有以下特點:

  • 優(yōu)點:無需改動SLB的配置。每一個應用都可以通過Ingress管理自己的證書,互不干擾。

  • 適用場景:每個應用都需要單獨的證書進行訪問,或者集群中存在需要證書才能訪問的應用。

準備工作:

您已在該Kubernetes集群中創(chuàng)建一個Tomcat應用,該應用的服務(Service)采用ClusterIP的方式提供訪問。本例中準備使用Ingress對外提供HTTPS訪問服務。更多信息,請參見創(chuàng)建無狀態(tài)工作負載Deployment

示例:

  1. 根據前提條件中準備好的證書執(zhí)行以下命令創(chuàng)建Secret。

    說明

    在這里需要正確配置域名,否則后續(xù)通過HTTPS訪問會有問題。

    kubectl create secret tls secret-https --key tls.key --cert tls.crt      
  2. 登錄容器服務管理控制臺

  3. 在控制臺左側導航欄,單擊集群

  4. 集群列表頁面,單擊目標集群名稱或者目標集群右側操作列下的詳情

  5. 在集群管理頁左側導航欄,選擇網絡 > 路由

  6. 路由頁面,單擊頁面右上角的創(chuàng)建Ingress

  7. 創(chuàng)建路由對話框中,配置可HTTPS訪問的路由,完成后單擊確定

    更多詳細的路由配置信息,請參見創(chuàng)建路由(Ingress)。本例中進行如下配置。

    • 名稱:輸入該路由的名稱。

    • 域名:即是前面配置的正確域名,與SSL證書中配置的保持一致。

    • 服務名稱:選擇Tomcat應用對應的Service,端口為8080。

    • TLS配置:開啟TLS后,選擇已創(chuàng)建的保密字典

    您也可采用YAML文件的方式創(chuàng)建路由(Ingress),本例對應的YAML示例文件如下。

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
       name: tomcat-https
    spec:
      tls:
      - hosts:
        - foo.bar.com
        secretName: secret-https
      rules:
      - host: foo.bar.com
        http:
          paths:
          - path: /
            backend:
              serviceName: tomcat-svc
              servicePort: 8080
  8. 返回路由列表,查看創(chuàng)建的路由(Ingress),本例中域名為foo.bar.com,并查看端點和域名,您也可進入路由詳情頁進行查看。

    說明

    本例中以foo.bar.com作為測試域名,您需要在hosts文件中創(chuàng)建一條記錄。

    47.110.119.203  foo.bar.com                   #其中IP地址即是路由的端點。

    路由

  9. 在瀏覽器中訪問https://foo.bar.com

    說明

    由于創(chuàng)建了TLS證書訪問,所以要用HTTPS來進行域名訪問,針對該應用,本例以foo.bar.com為示例,在本地進行解析。在具體使用場景中,請使用備案過的域名。

    路由訪問