您可以为在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. 创建证书面板中选择阿里云签发证书,并设置相关参数,然后单击创建

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

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

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

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

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

    • 使用已有SLB会强制覆盖已有监听。
    • 创建服务时新建的SLB不能复用(会导致SLB被意外删除)。
    • 复用同一个SLB的多个服务不能设置相同的服务端口,否则会造成端口冲突。
    • 不支持跨集群复用SLB。
    配置SLB,有两种情况:
    • 已有公网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访问Kubernetes服务的参数,请参见注释

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

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

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

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

结果验证

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

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