容器服务ACK集群支持多种应用访问的形式,最常见形式如<SLB-Instance-IP>:<Port>
、<NodeIP>:<NodePort>
和域名访问等。ACK集群默认不支持HTTPS访问,如果您希望能够通过HTTPS进行应用的访问,容器服务ACK和阿里云负载均衡服务为您提供安全的HTTPS访问。本文通过实际案例演示的HTTPS访问配置,帮助您在容器服务ACK中配置自己的证书。
前提条件
- 创建Kubernetes托管版集群。
- 创建集群的服务器证书,包括公钥证书和私钥。
- 您可以通过执行以下命令并填写证书信息,快速创建集群的服务器证书。
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 []:test@alibaba.com
创建的证书以及私钥文件会保存在当前目录下的tls.crt和tls.key文件中。
- 您也可以选择购买阿里云签发证书。具体操作,请参见选择阿里云签发证书。
- 您可以通过执行以下命令并填写证书信息,快速创建集群的服务器证书。
背景信息
根据访问的方式不同,当前可以分为两种配置证书的方式:
- 在前端SLB上配置证书。
- 在Ingress中配置证书。
在SLB上配置HTTPS证书
该方式有如下特点:
- 优点:证书配置在SLB上,为应用外部访问的入口,在集群内部进行应用的访问依然用的是HTTP访问方式。
- 缺点:需要维护较多的域名与IP地址的对应关系。
- 适用场景:应用不使用Ingress暴露访问方式,通过LoadBalancer类型的Service进行应用访问的暴露。
准备工作:
您已在该ACK集群中创建一个Nginx应用,该应用采用LoadBalancer类型的服务(Service)对外提供访问。更多信息,请参见创建无状态工作负载Deployment。
示例:
在Ingress上配置证书
该方法有以下特点:
- 优点:无需改动SLB的配置。每一个应用都可以通过Ingress管理自己的证书,互不干扰。
- 适用场景:每个应用都需要单独的证书进行访问,或者集群中存在需要证书才能访问的应用。
准备工作:
您已在该Kubernetes集群中创建一个Tomcat应用,该应用的服务(Service)采用ClusterIP的方式提供访问。本例中准备使用Ingress对外提供HTTPS访问服务。更多信息,请参见创建无状态工作负载Deployment。
示例: