当前容器服务Kubernetes集群支持多种应用访问的形式,最常见形式如SLB:PortNodeIP:NodePort和域名访问等。但是Kubernetes集群默认不支持HTTPS访问,如果用户希望能够通过HTTPS进行应用的访问,容器服务和阿里云负载均衡服务为您提供安全的HTTPS访问。本文旨在通过实际案例演示的HTTPS访问配置,帮助用户在容器服务Kubernetes中配置自己的证书。

根据访问的方式不同,当前可以分为两种配置证书的方式:

  • 在前端SLB上配置证书
  • 在Ingress中配置证书

前提条件

  • 您已创建一个Kubernetes集群,参见创建Kubernetes集群。
  • 您已经通过SSH连接到Master节点,参见SSH访问Kubernetes集群。
  • 连接到Master节点后,创建集群的服务器证书,包括公钥证书和私钥。您可通过以下命令快速创建。
    $  openssl genrsa -out tls.key 2048Generating RSA private key, 2048 bit long modulus
    ................................................................+++
    ........................................................................................+++
    e is 65537 (0x10001)$  openssl req -sha256 -new -x509 -days 365 -key tls.key -out tls.crtYou 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)对外提供访问。参见创建服务。

示例

  1. 登录 容器服务管理控制台。
  2. 单击左侧导航栏中应用 > 服务,选择所需集群和命名空间,查看预先创建的tomcat示例应用。如下图所示创建的tomcat应用名称为tomcat,服务名称为tomcat-svc。其中,服务类型为LoadBalancer,暴露的服务端口为8080。
  3. 单击外部端点,您可通过IP:Port的方式访问tomcat应用。
  4. 登录负载均衡管理控制台。
  5. 默认进入实例管理页面,在服务地址栏中,找到与tomcat-svc服务外部端点对应的负载均衡实例,单击操作列中的监听配置向导。
  6. 开始进行负载均衡配置,首先进行配置监听协议。选择HTTPS协议,监听端口设置为443,然后单击下一步。
  7. 配置SSL证书。
    1. 首先单击新建服务器证书。
    2. 在弹出的创建证书页面中,选择证书来源。本例中选择上传第三方签发证书,然后单击下一步。
    3. 在上传第三方签发证书页面中,配置证书名称,选择证书部署区域,然后在公钥证书和私钥栏中输入前提条件中创建的服务器公钥证书和私钥,最后单击确定。
    4. 然后在选择服务器证书栏选择刚创建的服务器证书。
    5. 最后单击下一步。
  8. 配置后端服务器,默认情况下已添加服务器,您需要配置后端服务器端口,用于监听tomcat-svc服务,最后单击下一步。
    说明 您需要在容器服务Web界面找到该服务对应的NodePort,并在后端服务器端口中配置该端口。

  9. 配置健康检查,然后单击下一步。本例中采用默认配置。
  10. 进行配置审核,确认配置正确后,单击提交。
  11. 配置成功后,单击确定。
  12. 返回实例管理页面,您查看该实例,HTTPS:443监听规则已经生成。
  13. 访问HTTPS的tomcat应用,在浏览器中输入https://slb_ip并进行访问。
    说明 如果在证书中加入了域名验证,可以使用域名进行访问。同时我们没有删除 tcp:8080,所以通过 slb_ip:8080也可以访问。

方法2 在Ingress上配置证书

该方法有如下特点:

  • 优点:无需改动SLB的配置;每一个应用都可以通过Ingress管理自己的证书,互不干扰
  • 适用场景:每个应用都需要单独的证书进行访问;或者集群中存在需要证书才能访问的应用。

准备工作

您已在该Kubernetes集群中创建一个Tomcat应用,该应用的服务(Service)采用ClusterIP的方式提供访问。本例中准备使用Ingress对外提供HTTPS访问服务。

示例

  1. 登录到Kubernetes集群的Master节点,根据准备好的证书创建secret。

    说明 在这里需要正确配置域名,否则后续通过HTTPS访问会有问题。
    kubectl create secret tls secret-https --key tls.key --cert tls.crt      
  2. 登录 容器服务管理控制台。
  3. 单击左侧导航栏的应用 > 路由,选择所需的集群和命名空间,单击右上角创建。
  4. 在创建路由对话框中,配置可HTTPS访问的路由,完成后单击确定。
    更多详细的路由配置信息,请参见通过 Web 界面创建路由。本例中进行如下配置。

    • 名称:输入该路由的名称
    • 域名:即是前面配置的正确域名,与ssl证书中配置的保持一致。
    • 服务:选择tomcat应用对应的service,端口为8080。
    • 开启TLS:开启TLS后,选择已创建的secret。


    您也可采用yaml文件的方式创建路由(Ingress),本例对应的yaml示例文件如下:

    apiVersion: extensions/v1beta1kind: Ingressmetadata:name: tomcat-httpsspec:tls:- hosts:- foo.bar.comsecretName: secret-httpsrules:- host: foo.bar.comhttp:paths:- path: /backend:serviceName: tomcat-svcservicePort: 8080
  5. 返回路由列表,查看创建的路由(Ingress),本例中域名为foo.bar.com,并查看端点和域名,您也可进入路由详情页进行查看。
    说明 本例中以 foo.bar.com作为测试域名,您需要在hosts文件中创建一条记录。

    47.110.119.203  foo.bar.com                   #其中IP地址即是路由的端点。

  6. 在浏览器中访问https://foo.bar.com
    说明 由于创建了TLS证书访问,所以要用HTTPS来进行域名访问,针对该应用,本例以 foo.bar.com为示例,在本地进行解析。在具体使用场景中,请使用备案过的域名。

实例配置:

先配置nginx的services 暴露443端口,  再配置ingress路由, ssl证书事先通过aliyun ssl服务申请好。

访问效果:

转载于:https://www.cnblogs.com/weifeng1463/p/10222468.html

在容器服务kubernetes上配置https相关推荐

  1. 一小时快速搭建基于阿里云容器服务-Kubernetes的Web应用

    本文面向的读者 如果您是一个Kubernetes的初学者,本文可以帮助你快速在云上搭建一个可实际使用的集群环境,并发布自己的第一个应用.你无须提前准备任何的硬件资源或者下载任何的软件包.  如果您已经 ...

  2. 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes

    前言 在之前的一篇文章中,我们介绍了 如何将一个本地的 Java 应用程序直接部署到阿里云 ECS ,有不少读者反馈,如果目前已经在使用阿里云容器服务 Kubernetes 了,那该如何配合这个插件部 ...

  3. 如何在 Kubernetes 上配置 Jenkins?

    作者 | Sudip Sengupta 译者 | 火火酱,责编 | Carol 封图 | CSDN 下载自视觉中国 在本文中,我们将一起完成在Kubernetes上配置Jenkins的工作.作为一款被 ...

  4. 容器服务kubernetes弹性伸缩高级用法

    前言 近期,阿里云容器服务kubernetes发布了cluster-autoscaler的支持,开发者可以通过页面简单快捷的配置节点的弹性伸缩,支持普通实例.GPU实例以及竞价实例帮助开发者实现架构弹 ...

  5. tomact配置好ssl证书后访问不到tomact_服务器上配置HTTPS的操作方法!

    数据信息安全得到更多人的重视,尤其在网站传输敏感数据时,更应该保证信息的安全性.而如今保护数据最有效的方式之一,就是启用HTTPS.这种新型加密模式的安全度高,黑客很难从中拦截到数据. 服务器上配置H ...

  6. CICD联动阿里云容器服务Kubernetes实践之Bamboo篇

    本文档以构建一个 Java 软件项目并部署到 阿里云容器服务的Kubernetes集群 为例说明如何使用 Bamboo在阿里云Kubernetes服务上运行Remote Agents并在agents上 ...

  7. 【阿里云-容器】阿里云容器服务Kubernetes版快速入门

    一.部署并公开 本步骤指导您如何在ACK集群中快速部署一个无状态应用(Deployment),即魔方游戏,并将该应用向公网公开.关于创建Deployment的详细参数描述,请参见创建无状态工作负载De ...

  8. 使用阿里云容器服务Kubernetes实现蓝绿发布功能

    背景 在发布应用时,经常需要先上线一个新版本,用较小的流量去测试一下该新版本的可用性.但是Kubernetes的ingress resource 并没有实现流量控制与切分的功能,导致针对同一个域名下的 ...

  9. 手把手教你创建容器服务Kubernetes集群

    Kubernetes作为目前最流行的容器编排工具,被越来越多的用户所接受,目前也有越来越多的用户开始考虑使用Kubernetes集群来部署生产应用.那么,此时用户可能面临一个问题,如何规划和创建合适的 ...

  10. 容器服务Kubernetes或jenkins 414问题

    访问414是因为请求头参数过长的错误,解决办法为加大client_header_buffer_size 和large_client_header_buffers的配置,需要修改nginx配置项 我这里 ...

最新文章

  1. 面试小结之Elasticsearch篇
  2. Log4net 用法 本地日志
  3. python模拟鼠标拖动滑块_如何通过拖动滑块来控制Kivy滚动视图?
  4. hihoCoder 1513: 小Hi的烦恼(五维偏序+bitset)
  5. android html模板下载地址,Android HTML模板
  6. oracle数据库问答汇总
  7. Facebook的图片搜索技术揭秘
  8. numpy array
  9. 南京超过广州,4 月程序员工资统计出炉,平均14596元
  10. nyoj461 Fibonacci数列(4)解通项公式
  11. 人人网 校内- 日志分享
  12. 2020中兴捧月算法大赛迪杰斯特拉赛道初赛题解
  13. 盯盯拍CEO 罗勇现身云栖大会 畅谈车联网生态并发布全新产品mini3
  14. 手机照片局部放大镜_想让旅行照与众不同?堪比PS的手机修图神器了解一下!...
  15. 反向链接-反向解释和扩展
  16. 24安装失败 spss win10_win10的电脑安装spss22的时候一直出现这个问题,是怎么回事?...
  17. 易推流为什么显示连接服务器失败,live-pusher 推流总是失败?
  18. win ce车载系统_【新器械】雅培在美国推出治疗慢性神经系统疼痛的IonicRF射频消融发生器...
  19. android开发课表app,模仿大神的一个android课程表
  20. 达内看软件工程师的职业规划

热门文章

  1. python实现池化操作
  2. oracle 批量插入 mysql 区别,Mysql与Oracle中批量插入和更新区别
  3. Caffe学习:使用pycaffe绘制网络结构
  4. draw_net.py绘制caffe net结构
  5. 项目合作需求、数据集合作需求
  6. oracle查询显示小写,oracle查询区分大小写
  7. 以太坊 solidity 教程
  8. C++ 循环for 引用 for(string : )
  9. 【Django 2021年最新版教程11】数据库删除操作
  10. php连接mysql的方式_php连接mysql的三种方式