在容器服务kubernetes上配置https
当前容器服务Kubernetes集群支持多种应用访问的形式,最常见形式如SLB:Port,NodeIP:NodePort和域名访问等。但是Kubernetes集群默认不支持HTTPS访问,如果用户希望能够通过HTTPS进行应用的访问,容器服务和阿里云负载均衡服务为您提供安全的HTTPS访问。本文旨在通过实际案例演示的HTTPS访问配置,帮助用户在容器服务Kubernetes中配置自己的证书。
- 在前端SLB上配置证书
- 在Ingress中配置证书
前提条件
- 您已创建一个Kubernetes集群,参见创建Kubernetes集群。
- 您已经通过SSH连接到Master节点,参见SSH访问Kubernetes集群。
- 连接到Master节点后,创建集群的服务器证书,包括公钥证书和私钥。您可通过以下命令快速创建。
$ openssl genrsa -out tls.key 2048 Generating RSA private key, 2048 bit long modulus
................................................................+++
........................................................................................+++
e is 65537 (0x10001) $ openssl req -sha256 -new -x509 -days 365 -key tls.key -out tls.crt You are about to be asked to enter information that will be incorporated
...
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:zhejiang
Locality Name (eg, city) [Default City]:hangzhou
Organization Name (eg, company) [Default Company Ltd]:alibaba
Organizational Unit Name (eg, section) []:test
Common Name (eg, your name or your server's hostname) []:foo.bar.com #注意,您需要正确配置域名
Email Address []:a@alibaba.com
方法1 在SLB上配置HTTPS证书
- 优点: 证书配置在SLB上,为应用外部访问的入口,在集群内部进行应用的访问依然用的是http访问方式。
- 缺点:需要维护较多的域名与IP地址的对应关系。
- 适用场景:应用不使用Ingress暴露访问方式,通过LoadBalancer类型的service进行应用访问的暴露。
准备工作
您已在该Kubernetes集群中创建一个Tomcat应用,该应用采用LoadBalancer类型的服务(service)对外提供访问。参见创建服务。
示例
- 登录 容器服务管理控制台。
- 单击左侧导航栏中应用 > 服务,选择所需集群和命名空间,查看预先创建的tomcat示例应用。如下图所示创建的tomcat应用名称为tomcat,服务名称为tomcat-svc。其中,服务类型为LoadBalancer,暴露的服务端口为8080。

- 单击外部端点,您可通过
IP:Port的方式访问tomcat应用。
- 登录负载均衡管理控制台。
- 默认进入实例管理页面,在服务地址栏中,找到与tomcat-svc服务外部端点对应的负载均衡实例,单击操作列中的监听配置向导。

- 开始进行负载均衡配置,首先进行配置监听协议。选择HTTPS协议,监听端口设置为443,然后单击下一步。
- 配置SSL证书。
- 首先单击新建服务器证书。

- 在弹出的创建证书页面中,选择证书来源。本例中选择上传第三方签发证书,然后单击下一步。
- 在上传第三方签发证书页面中,配置证书名称,选择证书部署区域,然后在公钥证书和私钥栏中输入前提条件中创建的服务器公钥证书和私钥,最后单击确定。

- 然后在选择服务器证书栏选择刚创建的服务器证书。
- 最后单击下一步。
- 首先单击新建服务器证书。
- 配置后端服务器,默认情况下已添加服务器,您需要配置后端服务器端口,用于监听tomcat-svc服务,最后单击下一步。
说明 您需要在容器服务Web界面找到该服务对应的NodePort,并在后端服务器端口中配置该端口。

- 配置健康检查,然后单击下一步。本例中采用默认配置。
- 进行配置审核,确认配置正确后,单击提交。
- 配置成功后,单击确定。

- 返回实例管理页面,您查看该实例,
HTTPS:443监听规则已经生成。 - 访问HTTPS的tomcat应用,在浏览器中输入
https://slb_ip并进行访问。说明 如果在证书中加入了域名验证,可以使用域名进行访问。同时我们没有删除tcp:8080,所以通过slb_ip:8080也可以访问。
方法2 在Ingress上配置证书
- 优点:无需改动SLB的配置;每一个应用都可以通过Ingress管理自己的证书,互不干扰
- 适用场景:每个应用都需要单独的证书进行访问;或者集群中存在需要证书才能访问的应用。
准备工作
您已在该Kubernetes集群中创建一个Tomcat应用,该应用的服务(Service)采用ClusterIP的方式提供访问。本例中准备使用Ingress对外提供HTTPS访问服务。
示例
- 登录到Kubernetes集群的Master节点,根据准备好的证书创建secret。
说明 在这里需要正确配置域名,否则后续通过HTTPS访问会有问题。
kubectl create secret tls secret-https --key tls.key --cert tls.crt - 登录 容器服务管理控制台。
- 单击左侧导航栏的应用 > 路由,选择所需的集群和命名空间,单击右上角创建。
- 在创建路由对话框中,配置可HTTPS访问的路由,完成后单击确定。
更多详细的路由配置信息,请参见通过 Web 界面创建路由。本例中进行如下配置。
- 名称:输入该路由的名称
- 域名:即是前面配置的正确域名,与ssl证书中配置的保持一致。
- 服务:选择tomcat应用对应的service,端口为8080。
- 开启TLS:开启TLS后,选择已创建的secret。

您也可采用yaml文件的方式创建路由(Ingress),本例对应的yaml示例文件如下:apiVersion: extensions/v1beta1 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 - 返回路由列表,查看创建的路由(Ingress),本例中域名为
foo.bar.com,并查看端点和域名,您也可进入路由详情页进行查看。说明 本例中以foo.bar.com作为测试域名,您需要在hosts文件中创建一条记录。47.110.119.203 foo.bar.com #其中IP地址即是路由的端点。
- 在浏览器中访问
https://foo.bar.com。说明 由于创建了TLS证书访问,所以要用HTTPS来进行域名访问,针对该应用,本例以foo.bar.com为示例,在本地进行解析。在具体使用场景中,请使用备案过的域名。
实例配置:
先配置nginx的services 暴露443端口, 再配置ingress路由, ssl证书事先通过aliyun ssl服务申请好。

访问效果:

在容器服务kubernetes上配置https的更多相关文章
- 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes
前言 在之前的一篇文章中,我们介绍了 如何将一个本地的 Java 应用程序直接部署到阿里云 ECS ,有不少读者反馈,如果目前已经在使用阿里云容器服务 Kubernetes 了,那该如何配合这个插件部 ...
- 容器服务kubernetes federation v2实践五:多集群流量调度
概述 在federation v2多集群环境中,通过前面几篇文章的介绍,我们可以很容易的进行服务多集群部署,考虑到业务部署和容灾需要,我们通常需要调整服务在各个集群的流量分布.本文下面简单介绍如何在阿 ...
- kubernetes API 访问控制在阿里云容器服务(ACK)上的实践
提起K8s API的访问控制,很多同学应该都会想到RBAC,这是K8s用来做权限控制的方法,但是K8s对API的访问控制却不止于此,今天我们就来简单介绍下K8s的访问控制以及ACK如何利用这套方法提供 ...
- 容器服务 TKE 上服务暴露的几种方式
预备知识 1. K8S 上 Service 类型 ClusterIP 通过集群的内部 IP 暴露服务,选择该值,服务只能够在集群内部可以访问,这也是默认的 ServiceType. NodePort ...
- 手把手教你在容器服务 TKE 上使用 LB 直通 Pod
什么是 LB 直通 Pod ? Kubernetes 官方提供了 NodePort 类型的 Service,即给所有节点开一个相同端口用于暴露这个 Service,大多云上 LoadBalancer ...
- 使用容器运行的minio配置https(TLS)访问
使用certgen生成证书 下载地址:https://github.com/minio/certgen/releases/tag/v0.0.2 下载地址:https://files.cnblogs.c ...
- Alibaba Cloud Toolkit for Eclipse & ECS、EDAS 或容器服务 Kubernetes
UserGuide_V2.1.0http://toolkit.aliyun.com/eclipse/?spm=5176.2020520130.105.3.3c3b697bOHma9f&msct ...
- .Net Core和jexus配置HTTPS服务
花了几天时间,看了好多篇博客,终于搞定了网站的HTTPS服务,借此写篇博客,来让有需要的朋友少走弯路. 一.环境介绍 1.Linux下在Docker容器中部署好了一个网站,该网站需要通过外部提供程序访 ...
- 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
摘要: 全球开源区块链领域影响最为广泛的Hyperledger Fabric日前宣布了1.1版本的正式发布,带来了一系列丰富的新功能以及在安全性.性能与扩展性等方面的显著提升.阿里云容器服务区块链解决 ...
随机推荐
- 图片上传前预览、压缩、转blob、转formData等操作
直接上代码吧: <template> <div> <div class="header">添加淘宝买号</div> <div ...
- RecyclerView的使用(2)之多Item布局的载入
原创文章,转载请注明 http://blog.csdn.net/leejizhou/article/details/50708349 李济洲的博客 上一篇介绍的了RecyclerView的基础使用ht ...
- (转)Unity原厂讲师大解密
本文转载自:http://nedwu13.blogspot.tw/2013_11_01_archive.html Asset Bundle工作流程及人物換裝實例 - 劉剛 Unity內部的資源有兩 ...
- LeetCode 292 Nim Game(Nim游戏)
翻译 你正在和你的朋友们玩以下这个Nim游戏:桌子上有一堆石头.每次你从中去掉1-3个.谁消除掉最后一个石头即为赢家.你在取出石头的第一轮. 你们中的每个人都有着聪明的头脑和绝佳的策略.写一个函数来确 ...
- create-react-app时registry的奇怪问题
用React官方给的NPM脚本 create-react-app my-app 在自动安装module的过程中,在安装registry的组件的时候莫名其妙的挂住不动了.界面显示的信息如下: fetch ...
- Hibernate: No Session found for current thread
在Struts2+Hibernate+Srping项目中经常会遇到这种问题 我知道的一种情况是: Spring的事务配置中没有配置好异常出现处的路径 <aop:advisor pointcut= ...
- 谷哥的小弟学前端(10)——JavaScript基础知识(1)
探索Android软键盘的疑难杂症 深入探讨Android异步精髓Handler 具体解释Android主流框架不可或缺的基石 站在源代码的肩膀上全解Scroller工作机制 Android多分辨率适 ...
- Tomcat的性能与最大并发配置
当一个进程有 500 个线程在跑的话,那性能已经是很低很低了.Tomcat 默认配置的最大请求数是 150,也就是说同时支持 150 个并发,当然了,也可以将其改大. 当某个应用拥有 250 个以上并 ...
- js实现双击滚屏效果
<body onDblClick="s=setInterval('scrollBy(0,2)',50)" onMousedown="clearInterval(s) ...
- Android studio 将 Module 打包成 Jar 包
整理记录 AndroidStudio 把一个 module 项目打包成 jar 包. 一.默认自动生成的 jar 包 众所周知 android studio 会在library所依赖的 app运行 或 ...