[转帖]Kubernetes - nginx-ingress 配置跳坑指南
Kubernetes - nginx-ingress 配置跳坑指南
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/qingyafan/article/details/82692509 主要是有转发相关的东西.
Ingress是Kubernetes集群对外暴露服务的一种方式,Ingress作为一个抽象对象,定义了进入集群的流量的导向,可以视为router,真正处理流量,作为ingress和集群中微服务中介的称之为Ingress Controller
,有许多种Controller可供选择,有Kubernetes官方维护的Nginx Ingress Controller
,比较常用的还有Traefik Ingress Controller
、Kong Ingress Controller
,这里我们使用的是Nginx Ingress Controller
。
简单配置
Ingress有一个规则配置文件,nginx的反向代理的配置文件就是通过Ingress配置的规则生成的,格式像下面这样(test.yaml):
apiVersion: extensions/v1beta1 kind: Ingress metadata: name: example-ingress spec: rules: - host: example.com http: paths: - path: /service/ backend: serviceName: app1 servicePort:
执行kubectl apply -f test.yaml
,通过example.com/app1/
就可以访问到app1的/service/
目录,这里需要注意,app1中需要定义/service/
路由,否则会出现错误,以上的配置文件最终的nginx规则是:
example.com/service/ --> app1:8080/
Attention !!!
host可以不指定
host指定域名,如果指定,那么只能通过域名访问,如果不指定,则通过域名或者其他方式(只要可以转发到集群的node节点的80端口),都可以访问。
path只能转到应用的根目录
例如上面的path定义生成的规则是: host.example.com/service/ ⇒ app1:8080/。如果app1中服务路由并不是定义在根目录(/),假设我们的实际情况是: host.example.com/service/ ⇒ app1:8080/s1/,那么则需要做一个rewrite:
apiVersion: extensions/v1beta1 kind: Ingress metadata: name: example-ingress annotations: nginx.ingress.kubernetes.io/configuration-snippet: | rewrite /service/(.*) /s1/$ break; spec: rules: - host: example.com http: paths: - path: /service/ backend: serviceName: app1 servicePort:
路径中支持正则表达式
高级配置
Ingress背后是Nginx,所以Nginx能实现的Ingress同样可以实现,但是实现方式不太一样,基本都是通过annotations
实现的,各种配置可以参考文档: https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/nginx-configuration/annotations.md 。
配置HTTPS
首先创建一个secret资源,来存储秘钥和证书。如果你的证书是.pem的,也是一样的,将下面的your_cert.crt改为your_cert.pem即可。
kubectl create secret tls tls_secret_name --key your_key.key --cert your_cert.crt
或者:
apiVersion: v1 kind: Secret metadata: name: tls_secret_name namespace: default data: tls.crt: your-k8s-ing.crt tls.key: your-k8s-ing.key type: kubernetes.io/tls
然后在Ingress的配置文件中配置使用tls: kubectl apply -f ingress.yaml
,即可。
apiVersion: extensions/v1beta1 kind: Ingress metadata: name: example-ingress annotations: nginx.ingress.kubernetes.io/configuration-snippet: | rewrite /service/(.*) /v1/$ break; spec: tls: - hosts: - example.com secretName: tls_secret_name rules: - host: example.com http: paths: - path: /v1/ backend: serviceName: app1 servicePort:
总结
本文主要介绍了nginx版本的Ingress的配置。
[转帖]Kubernetes - nginx-ingress 配置跳坑指南的更多相关文章
- kubernetes nginx ingress controller部署
Kubernetes nginx ingress controller部署 1.下载kubernetes nginx的yaml文件 Wget https://raw.githubusercontent ...
- 两百条微信小程序跳坑指南(不定时更新)
微信小程序联盟出品 跳坑textarea<二百二十三>不显示文本及textarea相关问题集合跳坑<二百一十三> background-image无法获取本地资源图片....跳 ...
- CGAL代码阅读跳坑指南
CGAL代码阅读跳坑指南 整体框架介绍 CGAL中的算法和数据结构由它们使用的对象类型和操作参数化.它们可以处理满足特定语法和语义需求的任何具体模板参数.为了避免长参数列表,参数类型被收集到一个单独的 ...
- JavaScript 跳坑指南
JavaScript 跳坑指南 坑0-String replace string的replace方法我们经常用,替换string中的某些字符,语法像这样子 string.replace(subStr/ ...
- kubernetes nginx ingress 使用记录
前言 ingress是一种可以暴露k8s集群内部service的方式,用户编辑配置文件定义一个ingress资源即可实现外部网络访问内网service. ingress controller是来管理所 ...
- kubernetes Traefik ingress配置详解
理解Ingress 简单的说,ingress就是从kubernetes集群外访问集群的入口,将用户的URL请求转发到不同的service上.Ingress相当于nginx.apache等负载均衡方向代 ...
- Kubernetes 使用 ingress 配置 https 集群(十五)
目录 一.背景 1.1 需求 1.2 Ingress 1.3 环境介绍 二.安装部署 2.1.创建后端 Pod 应用 2.2 创建后端 Pod Service 2.3.创建 ingress 资源 2. ...
- [经验交流] Kubernetes Nginx Ingress 安装与使用
Ingress 介绍 Kubernetes 上部署的微服务运行在它的私有网络中, 通过Pod实例的hostPort或Service实例的NodePort可以暴露到主机端口上,便于用户访问.但这样的方法 ...
- Xamarin安装和跳坑指南
安装Checklist 注意:本文只描述安装过程,由于组件的版本更新很快,为保证文章时效性,不提供下载链接,也尽可能不指明具体版本. 安装Visual Studio 2015进行默认安装,除非已经FQ ...
随机推荐
- LoadRunner学习目录
已更新: 未更新: 1.loadrunner 11破解版及破解包 2.如何录制一个LR脚本 3.自定义loadrunner脚本
- 性能测试学习第十天-----性能案例分析之CPU消耗过高&响应时间较长
一.现象 /pinter/case/cpu?type=1 使用google的gjson.tojson性能较差 type=2 使用性能好的阿里巴巴的fastjson库 压测过程中,发现应用服 ...
- Java ArrayList几种遍历方法
import java.util.ArrayList; import java.util.Iterator; public class StringSampleDemo { public static ...
- java.io.FileNotFoundException: D:\e (拒绝访问。)
这是因为访问的文件地址是文件夹而不是,具体的文件,把路径改为具体的文件就可以了. 参考文章:https://blog.csdn.net/w405722907/article/details/78610 ...
- css,js 学习记录
记录一些自己曾经阅读,值得收藏的网址 --(css3新特性) https://segmentfault.com/a/1190000010780991#articleHeader41 --CSS3 3D ...
- Mysql 查看所有线程,被锁的表
查看所有MySQl相关的线程 show full processlist; 杀死线程id为2的线程 kill 2 查看服务器状态 show status like '%lock%'; 查看服务器配置参 ...
- H5注意点(1)
H1标签在企业开发中,每一个页面至多只能有一个H1标签,被H1标签包裹的是整个页面最重要的信息. img标签,格式:<img src=" ">,当中src就是用来告诉i ...
- Thingsboard 重新启动docker-compose容器基础数据存在的问题
在重启了thingsboard的容器后,想再次重新启动容器,发现已经出现了错误 查看posttres中,持久化的地址是tb-node/postgres中 再查看相应的文件夹 删除以上log和postg ...
- .net Core 中DateTime在Linux Docker中与Windows时间不一致
最近写了一个.net core项目,部署到CentOS并在docker上运行的时候,发现DateTime.Now获取的时间与Windows不一致(定时执行的任务,晚了8个小时),在Windows中可以 ...
- MQTT 客户端应用及常见问题(C#)
https://blog.csdn.net/dengyaan/article/details/51752327 最近因为工作需要,需要使用C# 语言编写一个通过MQTT协议 ,上传数据到云端的工具.因 ...