[转帖]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 ...
随机推荐
- 为什么要监控sql语句,以及如何监控,都有哪几种方式可以监控。
快速阅读 为什么要监控sql语句,以及如何监控,都有哪几种方式可以监控. 我们知道sql server 中有个工具叫sql profile ,可以实时监控sql server中 执行的sql 语句,以 ...
- TCP粘包拆包问题分析及应对方案
粘包拆包问题是处于网络比较底层的问题,在数据链路层.网络层以及传输层都有可能发生.我们日常的网络应用开发大都在传输层进行,由于UDP有消息保护边界,不会发生粘包拆包问题,因此粘包拆包问题只发生在TCP ...
- JavaWeb之基础(2) —— HTTP协议
1. 粗讲什么是HTTP协议 HTTP协议的全程是Hyper Text Transfer Protocol,超文本传输协议,见名知意,这是个用来控制传输超文本的协议.下面就来简单说说什么是HTTP协议 ...
- sem_init重复调用引发sem_wait线程无法被唤醒
问题 一段老代码,两个线程,一个线程调用sem_wait等待信号量,另外一个线程在某失败分支会调用sem_init清信号量,结果导致sem_wait线程无法被唤醒: 分析 Linux manpage ...
- Oracle通过一个字段的值将一条记录拆分为多条记录
前言 之前遇到了一次这样的需求,当时没有记录,这一次又赶上了,简单的记录一下. 本文个人拙见,若有出入,请指出--来自菜的颤抖 场景 表A中存放了集装箱的信息,一个集装箱一条记录,表B中存放了对于集装 ...
- (转)golang获取当前时间、时间戳和时间字符串及它们之间的相互转换
原文连接: https://blog.csdn.net/skh2015java/article/details/70051512 1.获取当前时间 currentTime:=time.Now() // ...
- flutter 不规则底部工具栏实现
import 'package:flutter/material.dart'; import 'each_view.dart'; class BottomAppBarDemo extends Stat ...
- python-learning-第二季-画图matplotlib
https://www.bjsxt.com/down/8468.html 绘制方法: 绘制直线: #coding:utf- import matplotlib.pyplot as plt #准备绘制的 ...
- 【Dart学习】--Dart之数字(num)相关方法总结
一,部分属性 用法一(figureA) int figureA = -93; 是否为负数 print(figureA.isNegative); figureA是否是有限的 print(figureA. ...
- 了解有后门的sshd服务是如何劫持密码的
在服务器上安装一个打了后门补丁的sshd服务,当用户连接时,直接把密码记录下来,然后使用脚本发送到邮箱中. (1).实验环境 使用CentOS6.2作为系统环境,查看sshd和gcc的版本 [root ...