您可以为在 EDAS 容器服务 Kubernetes 集群中部署的应用添加 SSL 证书,为应用提供 HTTPS 保护,将所有 Web 流量加密以防数据遭到窃取和篡改,从而保证应用的安全性。本文将以一个示例介绍如何实现应用的数据加密传输。

前提条件

已获取由证书颁发机构 (CA)签署的 SSL 证书。推荐您使用阿里云 SSL 证书,也可以从第三方证书颁发机构获取证书。

示例场景

本示例将以一个 hello-edas 的 Web 应用为例介绍如何通过使用阿里云 SSL 域名证书实现应用的数据加密传输。

hello-edas 应用部署在 EDAS 容器服务 Kubernetes 集群中,通过负载均衡 SLB 提供服务,服务域名为 edas.site。您购买了阿里云 SSL 域名证书, 准备将该证书添加到 hello-edas 应用中,实现应用的数据传输加密,以保证应用的安全性。您需要完成以下操作步骤:

  1. 在负载均衡 SLB 中创建证书
  2. 在容器服务 Kubernetes 版中为应用创建服务(Dashboard)
  3. 在云解析 DNS 中添加域名和域名解析

在负载均衡 SLB 中创建证书

  1. 登录负载均衡管理控制台
  2. 在左侧导航栏单击证书管理
  3. 证书管理页面单击创建证书
  4. 创建证书对话框中选择阿里云签发证书,并设置相关参数,然后单击创建

    选择阿里云签发证书参数说明:

    参数 说明
    证书部署地域 选择您要实现身份验证和数据加密传输的应用所在的地域。本示例为华为 2(北京)
    所属资源组 选择默认资源组即可。
    证书列表 在下拉列表中选择您在阿里云 SSL 证书中购买并签发的证书。如果没有可在 SSL 证书中购买,详情请参见新手入门
    说明 如果您要使用第三方签发证书,创建证书的操作步骤请参见上传第三方签发证书
    创建完成后,返回证书管理页面,查看证书。证书管理
    说明 保存证书 ID,在创建服务时会用到。

在容器服务 Kubernetes 版中为应用创建服务(Dashboard)

说明 容器服务 Kubernetes 版控制台和 Dashboard 的功能有些差别,推荐您使用 Dashboard 创建服务。
  1. 登录容器服务控制台
  2. 在左侧导航栏选择集群 > 集群
  3. 集群列表找到您导入 EDAS 并创建应用的集群,在操作列单击控制台
    说明 当您选择集群后,也就选择了该集群所在的地域和 K8s Namespace。
  4. 在该集群 Dashboard 的左侧导航栏选择服务发现与负载均衡 > 服务
  5. 服务页面右上角单击创建
  6. 创建资源页面的使用文本创建页签中输入 YAML 或 JSON 格式定义的资源,部署在当前所选的 K8s Namespace 内,然后单击上传

    配置 SLB 时,需要注意以下限制:

    • 使用已有 SLB 会强制覆盖已有监听。
    • 创建服务时新建的 SLB 不能复用(会导致 SLB 被意外删除)。
    • 复用同一个 SLB 的多个服务不能设置相同的服务端口,否则会造成端口冲突。
    • 不支持跨集群复用 SLB。

    如果您想了解或使用更多通过 SLB 访问 Kubernetes 服务的参数,请参见注释

    • 已有公网 SLB,可以基于以下 YAML 示例修改配置。
      apiVersion: v1
      kind: Service
      metadata:
        annotations:
          service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: xxxxxxxxxxxxxxxxxxxxxxxxxxx # 负载均衡创建的证书ID
          service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: http:80,https:443
          service.beta.kubernetes.io/alicloud-loadbalancer-address-type: internet # 公网SLB
          service.beta.kubernetes.io/alicloud-loadbalancer-id: xxxxxx # 已有SLB的ID
          service.beta.kubernetes.io/alicloud-loadbalancer-force-override-listeners: true
        name: app-test-https # 任意命名,例如internet-{{应用名}}-{{随机字符串}}
        namespace: default
      spec:
        ports:
          - name: http-80
            port: 80
            protocol: TCP
            targetPort: 8080
          - name: https-443
            port: 443
            protocol: TCP
            targetPort: 8080
        selector:
          edas.appid: xxxxx-xxxx-xxxxx-xxxxxxxx # EDAS容器服务Kubernetes集群中部署的应用的ID
        sessionAffinity: None
        type: LoadBalancer
    • 新建 SLB 的需要在 YAML 示例中删除以下 3 个参数配置。
      service.beta.kubernetes.io/alicloud-loadbalancer-address-type: internet # 公网SLB
      service.beta.kubernetes.io/alicloud-loadbalancer-id: xxxxxx # 已有SLB的ID
      service.beta.kubernetes.io/alicloud-loadbalancer-force-override-listeners: true

    返回服务页面,等待服务创建成功。服务创建成功后,可以看到服务的外部端点显示 <SLB IP>:<配置的 port>,并且包含 HTTPS 的 443 端口信息。则说明该服务创建成功,如下图所示。

    服务发现与负载均衡-服务

在云解析 DNS 中添加域名和域名解析

您需要在云解析 DNS中添加域名和域名解析,以便您提供服务的域名可以通过 HTTPS 访问。详情请参见域名管理添加解析记录

结果验证

操作完成后,检查是否可以通过 HTTPS 安全访问服务域名。

  1. 打开浏览器,访问 https://edas.site
  2. 查看服务是否可以正常访问,且地址栏显示访问是安全的。
    HTTPS 访问服务