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 配置跳坑指南的更多相关文章

  1. kubernetes nginx ingress controller部署

    Kubernetes nginx ingress controller部署 1.下载kubernetes nginx的yaml文件 Wget https://raw.githubusercontent ...

  2. 两百条微信小程序跳坑指南(不定时更新)

    微信小程序联盟出品 跳坑textarea<二百二十三>不显示文本及textarea相关问题集合跳坑<二百一十三> background-image无法获取本地资源图片....跳 ...

  3. CGAL代码阅读跳坑指南

    CGAL代码阅读跳坑指南 整体框架介绍 CGAL中的算法和数据结构由它们使用的对象类型和操作参数化.它们可以处理满足特定语法和语义需求的任何具体模板参数.为了避免长参数列表,参数类型被收集到一个单独的 ...

  4. JavaScript 跳坑指南

    JavaScript 跳坑指南 坑0-String replace string的replace方法我们经常用,替换string中的某些字符,语法像这样子 string.replace(subStr/ ...

  5. kubernetes nginx ingress 使用记录

    前言 ingress是一种可以暴露k8s集群内部service的方式,用户编辑配置文件定义一个ingress资源即可实现外部网络访问内网service. ingress controller是来管理所 ...

  6. kubernetes Traefik ingress配置详解

    理解Ingress 简单的说,ingress就是从kubernetes集群外访问集群的入口,将用户的URL请求转发到不同的service上.Ingress相当于nginx.apache等负载均衡方向代 ...

  7. Kubernetes 使用 ingress 配置 https 集群(十五)

    目录 一.背景 1.1 需求 1.2 Ingress 1.3 环境介绍 二.安装部署 2.1.创建后端 Pod 应用 2.2 创建后端 Pod Service 2.3.创建 ingress 资源 2. ...

  8. [经验交流] Kubernetes Nginx Ingress 安装与使用

    Ingress 介绍 Kubernetes 上部署的微服务运行在它的私有网络中, 通过Pod实例的hostPort或Service实例的NodePort可以暴露到主机端口上,便于用户访问.但这样的方法 ...

  9. Xamarin安装和跳坑指南

    安装Checklist 注意:本文只描述安装过程,由于组件的版本更新很快,为保证文章时效性,不提供下载链接,也尽可能不指明具体版本. 安装Visual Studio 2015进行默认安装,除非已经FQ ...

随机推荐

  1. 两个对象key相同但是value不同,将value不同的键值对以对象形式输出

    let obj={ name:'jack', age:18, sex:'girl' } let obj2={ name:'rose', age:18, sex:'boy' } var str={} f ...

  2. mac使用crawlab

    这里采用docker-compose的 第一步拉镜像 docker pull tikazyq/crawlab:latest 第二步修改compose文件 docker-compose.yml文件 ve ...

  3. Spring Bean相关配置

    Bean相关配置 1.名称与标识 id 使用了约束中的唯一约束.里面不能出现特殊字符的 name 没有使用约束中的唯一约束.里面可以出现特殊字符. 设置对象的生命周期方法 init-method Be ...

  4. 进入tomcat6的控制台

      在tomcat文件夹找到conf文件夹中的tomcat-user.xml文件, 用记事本打开,在最下面可以看到tomcat默认把用户注释掉了,也就是说打开tomcat主页是进不去管理页面的. 方法 ...

  5. Oracle Audit 功能的使用和说明

    http://blog.itpub.net/9399028/viewspace-712457/审计(Audit) 用于监视用户所执行的数据库操作,审计记录可存在数据字典表(称为审计记录:存储在syst ...

  6. python 画园和椭圆

    from matplotlib.patches import Ellipse, Circle import matplotlib.pyplot as plt fig = plt.figure() ax ...

  7. 高通平台打开 dynamic debug方法【学习笔记】

    一.首先在内核的配置文件添加如下的配置: CONFIG_DEBUG_FS=y CONFIG_DYNAMIC_DEBUG=y 二.找到自己平台对应的 device/qcom/xxxx/init.targ ...

  8. Spring Boot TImer Schedule Quartz

    Spring Boot 2.X(十二):定时任务-云栖社区-阿里云https://yq.aliyun.com/articles/723876?spm=a2c4e.11155472.0.0.2f8b3a ...

  9. Xamarin图表开发基础教程(1)

    Xamarin图表开发基础教程(1) 在Xamarin图表开发中,最常用的框架是OxyPlot和Microcharts.其中,OxyOPlot提供多种多样的图表类型和丰富的图表功能,可以实现各种复杂的 ...

  10. typescript接口扩展

    /* typeScript中的接口 接口扩展 */ /* 接口的作用:在面向对象的编程中,接口是一种规范的定义,它定义了行为和动作的规范,在程序设计里面,接口起到一种限制和规范的作用.接口定义了某一批 ...