当前位置: 首页 > ds >正文

k8s之ingress定义https访问方式

接上文:https://blog.csdn.net/soso678/article/details/149607069?spm=1001.2014.3001.5502

定义后端应用与service

[root@master ingress]# cat my-nginx.yml 
apiVersion: apps/v1
kind: Deployment
metadata:name: my-nginx
spec:selector:matchLabels:run: my-nginxreplicas: 2template:metadata:labels:run: my-nginxspec:containers:- name: my-nginximage: nginximagePullPolicy: IfNotPresentports:- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:name: my-nginxlabels:run: my-nginx
spec:ports:- port: 80targetPort: 80selector:run: my-nginx

定义secret

你可以通过设定包含 TLS 私钥和证书的Secret 来保护 Ingress。 Ingress 资源只支持一个 TLS 端口 443,并假定 TLS 连接终止于 Ingress 节点 (与 Service 及其 Pod 间的流量都以明文传输)。 如果 Ingress 中的 TLS 配置部分指定了不同主机,那么它们将通过 SNI TLS 扩展指定的主机名(如果 Ingress 控制器支持 SNI)在同一端口上进行复用。 TLS Secret 的数据中必须包含键名为 tls.crt 的证书和键名为 tls.key 的私钥, 才能用于 TLS 目的

先对购买的证书进行base64编码
[root@master ssl]# cat ssl.key | base64 -w 0
[root@master ssl]# cat ssl.crt | base64 -w 0将证书定义成secret
[root@master ssl]# cat ssl-secret.yml
apiVersion: v1
kind: Secret
metadata:name: secret-tls
type: kubernetes.io/tls
data:tls.crt: base64 编码的证书tls.key: base64 编码的私钥[root@master ssl]# kubectl apply -f ssl-secret.yml 
secret/secret-tls created
[root@master ssl]# kubectl get secret 
NAME                  TYPE                                  DATA   AGE
secret-tls            kubernetes.io/tls                     2      3s

定义ingress转发规则

在 Ingress 中引用此 Secret 将会告诉 Ingress 控制器使用 TLS 加密从客户端到负载均衡器的通道。 你要确保所创建的 TLS Secret 创建自包含 https-example.foo.com 的公共名称 (Common Name,CN)的证书。这里的公共名称也被称为全限定域名(Fully Qualified Domain Name,FQDN)。

说明:

注意,不能针对默认规则使用 TLS,因为这样做需要为所有可能的子域名签发证书。 因此,tls 字段中的 hosts 的取值需要与 rules 字段中的 host 完全匹配。

[root@master ssl]# cat nginx-ingress.yml 
kind: Ingress
apiVersion: networking.k8s.io/v1
metadata:name: test-https-ingress
spec:ingressClassName: nginxtls:- hosts:- www.test-nginx.comsecretName: secret-tlsrules:- host: www.test-nginx.comhttp:paths:- path: /pathType: Prefixbackend:service:name: my-nginxport:number: 80
[root@master ssl]# kubectl apply -f nginx-ingress.yml 
ingress.networking.k8s.io/test-https-ingress created
[root@master ssl]# kubectl get ingress
NAME                 CLASS   HOSTS                ADDRESS   PORTS     AGE
test-https-ingress   nginx   www.test-nginx.com             80, 443   4s

nginx-ingress-controller运行在node1,node2两个节点上。

如果网络中有dns服务器,在dns中把这两个域名映射到nginx-ingress-controller运行的任意一个节点上,如果没有dns服务器只能修改host文件了。

任意一个节点上操作:(客户端解析)

我这里有两个节点部署了控制器,ip分别为172.16.229.7,172.16.229.8 ,如果有多个,可以随便选。

在wind电脑设置本地解析

172.16.229.7 www.test-nginx.com
http://www.xdnf.cn/news/16313.html

相关文章:

  • 精通Python PDF裁剪:从入门到专业的三重境界
  • Vue工程化 ElementPlus
  • 分布式推客系统开发全解:微服务拆分、佣金结算与风控设计
  • 强制缓存与协商缓存
  • 如何衡量测试的有效性?(如缺陷发现率、逃逸率等)
  • Transformer 位置编码对比
  • pytorch-geometric包(torch_scatter、torch_sparse、torch_cluster)
  • 【性能测试】Jmeter+Grafana+InfluxDB+Prometheus Windows安装部署教程
  • 保障工业核心命脉:深度解读工业交换机QoS的“智能流量治理”之道
  • LeetCode 刷题【12. 整数转罗马数字】
  • Spring Bean生命周期七步曲:定义、实例化、初始化、使用、销毁
  • Android Studio历史版本快速下载(二次修改记录)
  • 面试150 搜索二维矩阵
  • Android集成Google Map
  • 黑马头条项目详解
  • springboot项目如何写出优雅的service?
  • AI时代,我的编程工作搭子
  • TreeMap一致性哈希环设计与实现 —— 高可用的数据分布引擎
  • The Missing Semester of Your CS Education 学习笔记以及一些拓展知识(六)
  • 解决http的web服务中与https服务交互的问题
  • RuoYi-Vue 项目 Docker 全流程部署实战教程
  • PS一键图片智能添加噪点脚本 GrainLab for Photoshop安装与使用介绍
  • 5种最佳方法将iPhone语音备忘录传输到Mac
  • esp32 挂载mpu6050实现加速度计
  • Apache POI 实战应用:企业级文档处理解决方案
  • 编写程序,打印图案,要求该图案的行数由用户输入
  • Hadoop磁盘I/O瓶颈的监控与优化:从iostat指标到JBOD vs RAID的深度解析
  • 海思平台移植 CAN 通信全攻略:从硬件到应用
  • 独家|百度副总裁尚国斌即将离职,此前统筹百度地图;行业搜索及智能体业务总经理谢天转岗IDG
  • 最新免费使用Claude Code指南(Windows macOS/Linux)