K8S集群Ingress https实践 精选 原创 ylw6006 2018-05-24 11:32:11 博主文章分类:Kubernetes ©著作权 文章标签 k8s ingress https tls sni 文章分类 运维 ©著作权归作者所有:来自51CTO博客作者ylw6006的原创作品,请联系作者获取转载授权,否则将追究法律责任 前文介绍使用ingress结合traefik实现了入口的动静分离,本文将在前文基础上实现ingress的https配置。 为了简单且高效,建议应用容器化部署之后,https卸载在ingress这一级实现。通俗一点来说就是用户到ingress的连接走https协议,ingress到后端服务的连接走http协议。 我们对https的配置要求也比较简单,主要如下: 1、http自动重定向到https 2、https支持虚拟主机(TLS SNI) 一、初始环境准备 1、这里为了方便测试,把前文配置的网站动态部分路由规则都拿掉,仅保留静态部分 2、配置hosts解析记录 3、http访问测试 二、准备证书文件和配置文件 1、这里将两个站点的四个证书文件统一放到一个secret里面去维护 # kubectl create secret generic traefik-cert --from-file=star_59iedu_com.key \ --from-file=star_59iedu_com.pem \ --from-file=star_yingjigl_com.key \ --from-file=star_yingjigl_com.pem -n kube-system 2、配置http重定向到https,同时支持多个https虚拟主机(TLS SNI) # cat traefik.toml defaultEntryPoints = ["http","https"] [entryPoints] [entryPoints.http] address = ":80" [entryPoints.http.redirect] entryPoint = "https" [entryPoints.https] address = ":443" [entryPoints.https.tls] [[entryPoints.https.tls.certificates]] CertFile = "/ssl/star_59iedu_com.pem" KeyFile = "/ssl/star_59iedu_com.key" [[entryPoints.https.tls.certificates]] certFile = "/ssl/star_yingjigl_com.pem" keyFile = "/ssl/star_yingjigl_com.key" # kubectl create configmap traefik-conf --from-file=traefik.toml -n kube-system 三、修改traefik配置文件 主要需要添加config和ssl volumes,其他的配置(例如:rabc、service、ingress等)保持不变,具体配置可参考前文,前文传送门:ylw6006/2073718 # cat traefik-deployment.yaml apiVersion: v1 kind: ServiceAccount metadata: name: traefik-ingress-controller namespace: kube-system --- kind: Deployment apiVersion: extensions/v1beta1 metadata: name: traefik-ingress-controller namespace: kube-system labels: k8s-app: traefik-ingress-lb spec: replicas: 2 selector: matchLabels: k8s-app: traefik-ingress-lb template: metadata: labels: k8s-app: traefik-ingress-lb name: traefik-ingress-lb spec: serviceAccountName: traefik-ingress-controller hostNetwork: true nodeSelector: traefik: proxy terminationGracePeriodSeconds: 60 volumes: - name: ssl secret: secretName: traefik-cert - name: config configMap: name: traefik-conf containers: - image: traefik name: traefik-ingress-lb volumeMounts: - mountPath: "/ssl" name: "ssl" - mountPath: "/config" name: "config" ports: - name: web containerPort: 80 hostPort: 80 - name: admin containerPort: 8081 args: - --cOnfigfile=/config/traefik.toml - --web - --web.address=:8081 - --kubernetes # kubectl apply -f traefik-deployment.yaml 四、访问测试与验证 参考文档: 其他的需求,例如gzip压缩,tls版本和加密算法,rewrite重定向等配置也可以参考此文档 https://docs.traefik.io/configuration/entrypoints/#basic 五、其他需求 1、 使用一个统一的入口地址。 2、 默认同时支持http和https方式访问。 3、 根据实际的情况和要求来配置http访问请求重定向到https。 4、 兼容后端https服务(这里以dashboard为例) # cat traefik.toml insecureSkipVerify = true defaultEntryPoints = ["http","https"] [entryPoints] [entryPoints.http] address = ":80" [entryPoints.http.redirect] regex = "^http://k8s.59iedu.com/(.*)" replacement = "https://k8s.59iedu.com/$1" [entryPoints.https] address = ":443" [entryPoints.https.tls] [[entryPoints.https.tls.certificates]] CertFile = "/ssl/star_59iedu_com.pem" KeyFile = "/ssl/star_59iedu_com.key" [[entryPoints.https.tls.certificates]] certFile = "/ssl/star_yingjigl_com.pem" keyFile = "/ssl/star_yingjigl_com.key" [[entryPoints.https.tls.certificates]] certFile = "/ssl/star_huilearning_com.pem" keyFile = "/ssl/star_huilearning_com.key" # cat dashboard-ingress.yaml apiVersion: extensions/v1beta1 kind: Ingress metadata: name: kubernetes-dashboard namespace: kube-system annotations: ingress.kubernetes.io/ssl-passthrough: "true" spec: rules: - host: k8s.59iedu.com http: paths: - path: / backend: serviceName: kubernetes-dashboard servicePort: 443 赞 收藏 评论 分享 举报 上一篇:K8S集群使用Ingress实现网站入口动静分离实践 下一篇:K8S集群中使用Helm管理应用分发 提问和评论都可以,用心的回复会被更多人看到 评论 发布评论 全部评论 () 最热 最新 相关文章 Ingress企业实战:部署多个Ingress控制器篇 背景在大规模集群场景中,部分服务需要通过公网Ingress对外提供服务访问,但是有部分服务只对内提供服务,不允许使用公网访问,仅支持内部服务间调用,此时可以通过部署两套独立的Ingress来实现,一套支持公网访问,一套仅支持内网访问。接下来,我们通过最佳实践进行实现喽!架构图最佳实践说明:在Kubernetes集群中,部署两个Ingress控制器分别为int-ingress-nginx nginx ide Nginx Kubernetes 网络之 Ingress 介绍 一、ingress在Kubernetes集群中,Ingress作为集群内服务对外暴露的访问接入点,几乎承载着集群内服务访问的所有流量。Ingress是Kubernetes中的一个资源对象,用来管理集群外部访问集群内部服务的方式。可以通过Ingress资源来配置不同的转发规则,从而实现根据不同的规则设置访问集群内不同的Service所对应的后端Pod。下面是 Ingress 的一个简单示例,可将所有 ingress-nginx 深入理解 Kubernetes Ingress 1. Ingress 是什么?在 Kubernetes 中,Ingress 是一种资源对象,用于定义集群中外部流量的路由规则。它充当了连接集群内服务和外部网络的入口,允许对流量进行灵活的控制和路由。2. 安装 Kubernetes Ingress 控制器安装 Kubernetes Ingress 控制器是连接外部流量和集群内服务的关键步骤。以下是一些常见 Ingress 控制器的安装方法。Ngin Ingress k8s 云原生 Kubernetes Ingress配置https Ingress是kubernetes的一个资源对象,用于将不同URL的访问请求转发到后端不同的Service,以实现HTTP层的业务路由机制。 nginx 服务器 上传 traefik Ingress https配置 traefik Ingress https配置 traefik https k8s ingress https 在Kubernetes(K8S)中,Ingress是一种用于管理外部访问Kubernetes集群内服务的API对象。通过Ingress对象,可以实现对服务的负载均衡、SSL终止、HTTP路由等功能。在这篇文章中,我们将重点介绍如何在Kubernetes集群中配置Ingress以实现HTTPS访问。整体流程如下所示:| 步骤 | 操作 ||----- HTTPS nginx github ingress-nginx设置https证书 创建自签署证书注意证书中的CN=tls.echo.example改成自己的域名地址。echo "生成自签署的 ca 证书"openssl req -x509 -sha256 -newkey rsa:4096 -keyout ca.key -out ca.crt -days 3560 -nodes -subj '/CN=My Cert Authority'echo "生成用上述 c... linux linux教程 nginx tomcat ingress-nginx 添加https证书 1.配了一个证书,发现报错: kubectl logs ingress-nginx-controller-96fnv -n ingress-nginx unexpected error validating SSL certificate gscommon/https-secret for host bc nginx html Kubernetes Ingress:HTTPS 为你的应用提供https服务 Ingress:HTTPS(配置https)配置HTTPS步骤:1、准备域名证书文件(来自:openssl/c建... kubernetes json linux nginx nginx与ingress配置HTTPS双向认证 https双向认证 https双向认证ingress HTTPS服务的Kubernetes ingress配置实践 在公有云被广泛接纳的今天,数据传输安全问题日益凸显,因为在公有云提供商的经典网络(二层互通)中,即便是内部网络通信也要考虑网络嗅探等hack手段,这也是公有云主推所谓“专用网络(二层隔离)”的原因之一。从应用的角度,我们应该尽量通过技术手段保证数据通信的安全性。而目前最常用的方式就是基于SSL/TLS的安全通信方式了,在七层,对应的就是https了。 这样,下面的仅在负载均衡/反向代理入口 nginx 负载均衡 通信模型 反向代理 公有云 Kubernetes 使用 ingress 配置 https 集群(十五) 一、背景1.1需求我们有这样的一个需求,就是把Pod集群升级为https,目前的办法就是要么每个容器配置https,然后前端通过Service进行调度,但是这样配置起来会比较麻烦,以及每个容器的建立都通过https,也增加了建立连接的负担。我们需要一种这样的改造,就是客户端连接到Service是通过https,而Service向后端Pod的调度通过http,这样可以极大的优化我们的集群,这里我们就 kubernetes ingress https Kubernetes之Ingress自动化https 目录1、前置条件2、部署cert-manager2.1、创建一个namespace2.2、安装cert-manager2.3、测试3、创建clusterissuer4、为域名创建certificate5、在ingress中引用对应的secret6、自动化颁发证书cert-manager 是一个云原生证书管理开源项目,用于在 Kubernetes 集群中提供 HTTPS 证书并自动续期,支持 Let Kubernetes Ingress kubernetes配置traefik ingress https访问接口 【创建证书】kubectl create secret generic traefik-cert --from-file=1592339__gogen.cn.pem --from-file=1592339__gogen.cn.key -n kube-system【创建配置文件】traefik.tomldefaultEn traefik ingress kubernetes https k8s ingress-nginx 和https service端口通信 Backend Protocol¶Using backend-protocol annotations is possible to indicate how NGINX should communicate with the backend service. Valid Values: HTTP, HTTPS, GRPC, GRPCS and AJPBy defau nginx K8S ingress多域名HTTPS 环境说明: K8S 1.23.1 ingress: 1.3.1 命名空间采用默认的default目前环境中有www.a.com、www.a.cn访问的后端服务都是www-svc(默认已创建好)申请了www.a.com的域名证书为www.a.com.key,www.a.com.cer申请了www.b.com的域名证书为www. nginx ingress ssl https 实验配置Ingress使用https协议访问应用系统 实验配置Ingress使用https协议访问应用系统 kuberenetes ingress k8s Nginx-ingress配置https 官网:https://kubernetes.github.io/ingress-nginx/examples/auth/client-certs/ 创建证书:说明:测试发现指定namespace和默认default都行,和namespace没有关系,证书放在当前目录下即可。kubectl create secret tls test-cc --key=test.sit.51zhaoyou Nginx-ingress配置https nginx-ingress 使用 Let's Encrypt 实现 Kubernetes Ingress 自动化 HTTPS 我们知道HTTPS的服务非常安全,Google现在对非HTTPS的服务默认是拒绝的,而且还能避免国内各种乱七八糟的劫持,所以启用HTTPS服务是真的非常有必要的。一些正规机构颁发的CA证书费用又特别高,不过比较幸运的是也有免费的午餐-Let'sEncrypt,虽然只有90天的证书有效期,但是我们完全可以在证书失效之前,重新生成证书替换掉。在Kubernetes集群中就更方便了,我们可以通过 JAVA 使用cert-manager实现Ingress https 什么是https 超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供 nginx 传输协议 自定义 超文本 证书管理