K8S ingress
Nginx Ingress监控(已有Prometheus)Nginx Ingress 灰度/金丝雀发布。Nginx Ingress自定义错误页面。Nginx Ingress 匹配请求头。Nginx Ingress 基本认证。Nginx Ingress 黑白名单。Nginx Ingress 速率限制。
2.2.14 Ingress
Ingress为Kubernetes集群中的服务提供了入口,可以提供负载均衡、SSL终止和基于名称的虚拟主机,在生产环境中常用的Ingress有Treafik、Nginx、HAProxy、Istio等。
2.2.14.1 基本概念
在Kubernetesv 1.1版中添加的Ingress用于从集群外部到集群内部Service的HTTP和HTTPS路由,流量从Internet到Ingress再到Services最后到Pod上,通常情况下,Ingress部署在所有的Node节点上。
Ingress可以配置提供服务外部访问的URL、负载均衡、终止SSL,并提供基于域名的虚拟主机。但Ingress不会暴露任意端口或协议。
2.2.14.2 创建一个Ingress
创建一个简单的Ingress如下:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: simple-fanout-example
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: foo.bar.com
http:
paths:
- path: /foo
backend:
serviceName: service1
servicePort: 4200
- path: /bar
backend:
serviceName: service2
servicePort: 8080
上述host定义该Ingress的域名,将其解析至任意Node上即可访问。
如果访问的是foo.bar.com/foo,则被转发到service1的4200端口。
如果访问的是foo.bar.com/bar,则被转发到service2的8080端口。
1. Ingress Rules
host:可选,一般都会配置对应的域名。
path:每个路径都有一个对应的serviceName和servicePort,在流量到达服务之前,主机和路径都会与传入请求的内容匹配。
backend:描述Service和Port的组合。对Ingress匹配主机和路径的HTTP与HTTPS请求将被发送到对应的后端。
2. 默认后端
没有匹配到任何规则的流量将被发送到默认后端。默认后端通常是Ingress Controller的配置选项,并未在Ingress资源中指定。
2.2.14.3 Ingress类型
1. 单域名
单个域名匹配多个path到不同的service:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: simple-fanout-example
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: foo.bar.com
http:
paths:
- path: /foo
backend:
serviceName: service1
servicePort: 4200
- path: /bar
backend:
serviceName: service2
servicePort: 8080
此时,访问foo.bar.com/foo到service1的4200。访问foo.bar.com/bar到service2的8080。
2. 多域名
基于域名的虚拟主机支持将HTTP流量路由到同一IP地址的多个主机名:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: name-virtual-host-ingress
spec:
rules:
- host: foo.bar.com
http:
paths:
- backend:
serviceName: service1
servicePort: 80
- host: bar.foo.com
http:
paths:
- backend:
serviceName: service2
servicePort: 80
此时,访问foo.bar.com到service1,访问bar.foo.com到service2。
3. 基于TLS的Ingress
首先创建证书,生产环境的证书为公司购买的证书:
kubectl -n default create secret tls nginx-test-tls --key=tls.key --cert=tls.crt
定义Ingress(此示例为Traefik,nginx-ingress将traefik改为nginx即可):
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: nginx-https-test
namespace: default
annotations:
kubernetes.io/ingress.class: traefik
spec:
rules:
- host: traefix-test.com
http:
paths:
- backend:
serviceName: nginx-svc
servicePort: 80
tls:
- secretName: nginx-test-tls
Nginx Ingress Redirect
Nginx Ingress Rewrite
Nginx Ingress SSL
Nginx Ingress 基本认证
Nginx Ingress 黑白名单
Nginx Ingress 匹配请求头
Nginx Ingress 速率限制
Nginx Ingress 灰度/金丝雀发布
Nginx Ingress自定义错误页面
Nginx Ingress监控(已有Prometheus)
更多推荐
所有评论(0)