在容器服务kubernetes上配置https

简介: 当前容器服务kubernetes支持多种应用访问的形式,最常见的如SLB:Port,NodeIP:NodePort,域名访问等;但是如果用户希望能够通过https进行应用的访问,容器服务kubernetes默认是不支持的,本文旨在通过实际案例演示https的访问配置,帮助用户在容器服务kubernetes中配置自己的证书。

当前容器服务kubernetes支持多种应用访问的形式,最常见的如SLB:Port,NodeIP:NodePort,域名访问等;但是如果用户希望能够通过https进行应用的访问,容器服务kubernetes默认是不支持的,本文旨在通过实际案例演示https的访问配置,帮助用户在容器服务kubernetes中配置自己的证书。

根据访问的方式不同,当前可以分为两种配置证书的方式,分别为在前端SLB上配置证书和在ingress中配置证书。下面我们对两种方式进行详细介绍。

方式一 在前端SLB上配置证书

前提

应用采用LoadBalancer类型的service进行访问暴露。

优点

       证书配置在SLB上,为应用外部访问的入口,在集群内部进行应用的访问依然用的是http访问方式。

缺点

       需要维护较多的域名与IP地址的对应关系。

适用场景

       应用不使用Ingress暴露访问方式,通过LoadBalancer类型的service进行应用访问的暴露。

示例

我们以tomcat为例进行演示。

第一步,创建一个tomcat应用及服务,在这里我们使用控制台进行应用的创建。如下图所示创建的tomcat应用名称为tomcat-https-test,服务名称为tomcat-https-test-svc。其中,service为LoadBalancer类型,暴露的服务端口为8080。

755448efa983f58e94bd75e75b7b11aca47cf75f

       第二步,访问tomcat应用,采用SLB地址进行访问。如下图所示,可以通过IP:Port的方式进行访问。

745f349833166b01061d643bb205b41769d4ae4a

 

第三步,查看service对应的SLB信息。如下图所示可以看到,当前SLB开通的是TCP:8080。如果采用https的访问方式,我们需要将协议和端口改为https:443。

 f3f14f96892ad2865e24d93fade276ad7dc3bd26

 

第四步,在SLB界面添加https的监听。

1、         配置为选择https协议,端口为443;

2、         填入ssl证书,证书生成可以参考生成CA证书

3、         后端服务器端口服务界面找到该服务对应的NodePort;

712c512580f007d7269d7385d2c50ed84bc3f5e5

4、         点击完成创建,创建完成后如下所示。

c75dfd7b2d5a0280d36f91c5ccb2f58dc9f7c5e3

       第五步,访问https的tomcat应用,https://slb_ip。如果在证书中加入了域名验证,可以使用域名进行访问。同时我们没有删除tcp:8080,所以通过slb_ip:8080也可以访问。

bfadf4398e4a249d8c55a82f92a51cc1c0dbfbaf

方式二 在ingress上配置证书

前提

通过ingress暴露应用的访问方式,并且证书在ingress上进行配置。

优点

1、         无需改动SLB的配置

2、         每一个应用都可以通过Ingress管理自己的证书,互不干扰

适用场景

       每个应用都需要单独的证书进行访问;或者集群中存在需要证书才能访问的应用。

示例

同样以tomcat为例进行应用的创建;创建tomcat应用及其服务参考方式一中的步骤。

在这里以tomcat应用及服务创建好为前提。

方法一 通过控制台进行Ingress及其证书配置

第一步,根据准备好的证书创建secret,命令如下:(在后台master节点)

       kubectl create secret tls foo.bar --key tls.key --cert tls.crt

       注意:在这里需要正确配置域名,否则后续通过https访问会有问题。

322f8e863cd388c4cc2735d9a9ebabb96351a371

 

       第二步,登录控制台,找到【应用】->【路由】,点击【创建】进行路由的创建;创建需要填入的参数如下图所示:

7051931ad7eaa5ac3e0eaab2ec96a9be1452258a

      

       第三步,在路由界面找到刚创建的路由test-https,点击详情查看具体信息。

       dc8548cd6a21098f35a027b6a415556d83096d8f

 

       第四步,在详情页面查看具体信息,找到域名;

       4d4fe7de1e5ca61118d7675cbf0dcdb954ba828d

 

       第五步,使用域名进行访问,由于我们创建了TLS证书访问,说以要用https来进行域名的访问,针对该应用,域名访问如下,其中test123.com为示例,需要自己解析。

1b0e6afde6ae9d4fc2430d4f6baee5ba047bdd15

方法二 通过yaml文件进行证书的配置

第一步,根据准备好的证书创建secret,命令如下:(在后台master节点)

       kubectl create secret tls foo.bar --key tls.key --cert tls.crt

       注意:在这里需要正确配置域名,否则后续通过https访问会有问题。

322f8e863cd388c4cc2735d9a9ebabb96351a371

 

       第二步,使用以下yaml文件进行ingress的创建,注意tls的引用;创建命令为kubectl create -f ingress-https.yaml;

               apiVersion: extensions/v1beta1

kind: Ingress

metadata:

   name: test-https

spec:

  tls:

  - hosts:

    - test-https.test123.com

    secretName: test-https

  rules:

  - host: test-https.test123.com

    http:

      paths:

      - path: /

        backend:

          serviceName: tomcat-https-test-svc

          servicePort: 8080

       第三步,在浏览器中访问test-https.test123.com。

       1b0e6afde6ae9d4fc2430d4f6baee5ba047bdd15

 

总结

       建议通过配置Ingress的方式进行证书的配置。

相关实践学习
使用ACS算力快速搭建生成式会话应用
阿里云容器计算服务 ACS(Container Compute Service)以Kubernetes为使用界面,采用Serverless形态提供弹性的算力资源,使您轻松高效运行容器应用。本文将指导您如何通过ACS控制台及ACS集群证书在ACS集群中快速部署并公开一个容器化生成式AI会话应用,并监控应用的运行情况。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
存储 缓存 文件存储
如何保证分布式文件系统的数据一致性
分布式文件系统需要向上层应用提供透明的客户端缓存,从而缓解网络延时现象,更好地支持客户端性能水平扩展,同时也降低对文件服务器的访问压力。当考虑客户端缓存的时候,由于在客户端上引入了多个本地数据副本(Replica),就相应地需要提供客户端对数据访问的全局数据一致性。
33076 80
如何保证分布式文件系统的数据一致性
|
前端开发 容器
HTML5+CSS3前端入门教程---从0开始通过一个商城实例手把手教你学习PC端和移动端页面开发第8章FlexBox布局(上)
HTML5+CSS3前端入门教程---从0开始通过一个商城实例手把手教你学习PC端和移动端页面开发第8章FlexBox布局
17818 24
|
设计模式 存储 监控
设计模式(C++版)
看懂UML类图和时序图30分钟学会UML类图设计原则单一职责原则定义:单一职责原则,所谓职责是指类变化的原因。如果一个类有多于一个的动机被改变,那么这个类就具有多于一个的职责。而单一职责原则就是指一个类或者模块应该有且只有一个改变的原因。bad case:IPhone类承担了协议管理(Dial、HangUp)、数据传送(Chat)。good case:里式替换原则定义:里氏代换原则(Liskov 
36801 22
设计模式(C++版)
|
存储 编译器 C语言
抽丝剥茧C语言(初阶 下)(下)
抽丝剥茧C语言(初阶 下)
|
机器学习/深度学习 人工智能 自然语言处理
带你简单了解Chatgpt背后的秘密:大语言模型所需要条件(数据算法算力)以及其当前阶段的缺点局限性
带你简单了解Chatgpt背后的秘密:大语言模型所需要条件(数据算法算力)以及其当前阶段的缺点局限性
24873 15
|
机器学习/深度学习 弹性计算 监控
重生之---我测阿里云U1实例(通用算力型)
阿里云产品全线降价的一力作,2023年4月阿里云推出新款通用算力型ECS云服务器Universal实例,该款服务器的真实表现如何?让我先测为敬!
36786 15
重生之---我测阿里云U1实例(通用算力型)
|
SQL 存储 弹性计算
Redis性能高30%,阿里云倚天ECS性能摸底和迁移实践
Redis在倚天ECS环境下与同规格的基于 x86 的 ECS 实例相比,Redis 部署在基于 Yitian 710 的 ECS 上可获得高达 30% 的吞吐量优势。成本方面基于倚天710的G8y实例售价比G7实例低23%,总性价比提高50%;按照相同算法,相对G8a,性价比为1.4倍左右。
|
存储 算法 Java
【分布式技术专题】「分布式技术架构」手把手教你如何开发一个属于自己的限流器RateLimiter功能服务
随着互联网的快速发展,越来越多的应用程序需要处理大量的请求。如果没有限制,这些请求可能会导致应用程序崩溃或变得不可用。因此,限流器是一种非常重要的技术,可以帮助应用程序控制请求的数量和速率,以保持稳定和可靠的运行。
29925 52

相关产品

  • 容器计算服务
  • 容器服务Kubernetes版