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

前提条件

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

示例场景

本示例将以一个 hello-edas 的 Web 应用为例介绍如何实现应用的数据加密传输。

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

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

在负载均衡 SLB 中创建证书

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

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

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

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

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

    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 的示例,也可以新建一个 SLB。新建 SLB 需要删除以下 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 会有以下限制:

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

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

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

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

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

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

结果验证

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

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