k8s的ingress使用

ingress

  可以配置一个入口来提供k8s上service从外部来访问的url、负载平衡流量、终止SSL和提供基于名称的虚拟主机。

配置ingress的yaml

  要求域名解析无误

  要求service对应的pod正常

一、test1.domain.com   -->  service1:8080

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test-ingress
  namespace: test
spec:
  rules:
  - host: test1.domain.com
    http:
      paths:
      - backend:
          serviceName: service1
          servicePort: 8080
        path: /

二、test1.domain.com   -->   /aaa   -->   service2:8080

-->   /bbb   -->   service3:8080

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test-ingress
  namespace: test
spec:
  rules:
  - host: test1.domain.com
    http:
      paths:
      - backend:
          serviceName: service1
          servicePort: 8080
        path: /aaa
      - backend:
          serviceName: service2
          servicePort: 8080
        path: /bbb

三、test1.domain.com   -->  service1:8080

  test2.domain.com   -->  service4:8080

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test-ingress
  namespace: test
spec:
  rules:
  - host: test1.domain.com
    http:
      paths:
      - backend:
          serviceName: service1
          servicePort: 8080
  - host: test2.domain.com
    http:
      paths:
      - backend:
          serviceName: service4
          servicePort: 8080

四、test1.domain.com   -->  service1:8080

  没在request中定义主机名(即没有显示请求头)的请求   -->   service5:8080

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test-ingress
  namespace: test
spec:
  rules:
  - host: test1.domain.com
    http:
      paths:
      - backend:
          serviceName: service1
          servicePort: 8080
  - http:
      paths:
      - backend:
          serviceName: service5
          servicePort: 8080

五、https://test1.domain.com   -->  service1:8080

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test-ingress
  namespace: test
spec:
  rules:
  - host: test1.domain.com
    http:
      paths:
      - backend:
          serviceName: service1
          servicePort: 8080
  tls:
  - hosts:
    - test1.domain.com
    secretName: domain-tls  #证书见下

  证书yaml

apiVersion: v1
data:
  tls.crt: cert(base64)  #转码见下
  tls.key: key(base64)
kind: Secret
metadata:
  name: domain-tls
  namespace: test
type: kubernetes.io/tls

  base64转码

cat fullchain.pem | base64 | tr ‘\n‘ ‘ ‘ | sed s/[[:space:]]//g   #中间去掉换行和空格
cat privkey.pem | base64 | tr ‘\n‘ ‘ ‘ | sed s/[[:space:]]//g

六、nginx中的设置,在ingress是通过annotations来配置的

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test-ingress
  namespace: test
  annotations:
    nginx.ingress.kubernetes.io/proxy-connect-timeout: "600s"
    nginx.ingress.kubernetes.io/proxy-read-timeout: "600s"
    nginx.ingress.kubernetes.io/proxy-send-timeout: "600s"
spec:
  rules:
  - host: test1.domain.com
    http:
      paths:
      - backend:
          serviceName: service1
          servicePort: 8080
        path: /

详细ingress链接https://kubernetes.io/docs/concepts/services-networking/ingress/

ingress中annotations的配置选项https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/nginx-configuration/annotations.md

原文地址:https://www.cnblogs.com/chy-op/p/10566657.html

时间: 2024-10-10 20:38:31

k8s的ingress使用的相关文章

k8s部署ingress及http、https-实战篇

一.简介ingress:ingress-nginx #用于实现反代https://kubernetes.github.io/ingress-nginx/deploy/#generic-deployment kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/mandatory.yamlhttps://kubernetes.github.io/ingress-nginx/

(转)详解k8s组件Ingress边缘路由器并落地到微服务 - kubernetes

转:https://www.cnblogs.com/justmine/p/8991379.html 写在前面 Ingress 英文翻译 进入;进入权;进食,更准确的讲就是入口,即外部流量进入k8s集群必经之口.这到大门到底有什么作用?我们如何使用Ingress?k8s又是如何进行服务发现的呢?先看一张图: 备注:此图来源我转载的一篇博客NodePort,LoadBalancer还是Ingress?我该如何选择 - kubernetes,特此说明. 原理 虽然k8s集群内部署的pod.server

k8s之ingress方向代理pod

Ingress controller Nginx -->后来改造 Traefik -->也是用于微服务 Envoy  -->微服务 Ingress资源 目前使用0.17.1版本ingress-nginx ingress定义  后端pod发生变化,service就变化,service变化ingress就发生变化,ingress再把变化注入到ingress-nginx-controller主容器的nginx的backend反向代理配置且重载配置文件使之能够动态改变反向代理配置 kubectl

k8s StatefulSet ingress 例子

k8s StatefulSet例子 apiVersion: v1 kind: Service metadata: name: nginx labels: app: nginx spec: ports: - port: 80 name: web clusterIP: None selector: app: nginx --- apiVersion: apps/v1 kind: StatefulSet metadata: name: web spec: selector: matchLabels:

K8s Nginx Ingress 介绍

作者:漠然,原文发布于2017年3月4日,原文链接 一.Ingress 介绍 Kubernetes 暴露服务的方式目前只有三种:LoadBlancer Service.NodePort Service.Ingress:前两种估计都应该很熟悉,具体的可以参考下这篇文章:下面详细的唠一下这个 Ingress . 1.1.Ingress 是个什么玩意 可能从大致印象上 Ingress 就是能利用 Nginx.Haproxy 啥的负载均衡器暴露集群内服务的工具:那么问题来了,集群内服务想要暴露出去面临着

k8s nginx ingress配置TLS

在没有配置任何nginx下,k8s的nginx默认只支持TLS1.2,不支持TLS1.0和TLS1.1 默认的 nginx-config(部分可能叫 nginx-configuration)的配置如下: apiVersion: v1 data: allow-backend-server-header: 'true' enable-underscores-in-headers: 'true' generate-request-id: 'true' http-redirect-code: '301'

K8S traffic ingress rewrite 规则

需求如下: 域名 servicewww.baidu.com/authorize saas-jcpt-saas-uc-authorize-core-tomcat-online 分析: 1.要到ingress,所以前面不能去掉authorize 2.需要在ingress上配置rewrite 配置 www.baidu.com和saas-jcpt-saas-uc-authorize-core-tomcat-online这两个在不同的命名空间,所以需要在saas-jcpt-tomcat-online下创建

[系统集成] 用 Kubernetes Nginx Ingress 实现 HTTP 服务发布与负载均衡

用户在 Kubernetes 上部署的服务一般运行于私有网络,Pod和Service 提供了 hostPort,NodePort等参数用于暴露这些服务端口到K8S节点上,供使用者访问.这样的方法有明显缺点: 1)容易占用过多的主机端口: 2)服务端口暴露到多台主机会增加防火墙和安全配置的难度 3)默认的hostPort,NodePort方式没有负载均衡的作用 K8S的 Ingress 资源提供了另一种服务暴露的方法,它可以获取各个服务的状态,传递给nginx等工具进行配置修改.重新加载等工作,实

使用nginx的ngx_upstream_jdomain模块实现k8s容器的负载均衡

使用背景最近一直在准备k8s上线事宜,目前已经在测试环境中全面部署并通过压力测试环境检验.离正式上线基本只剩下时间问题.我们目前测试环境中的容器负载均衡大量使用到了nginx,就是借助了ngx_upstream_jdomain模块,从而放弃了k8s官方的ingress. 在这里简单说下k8s的ingress.k8s官方的ingress controller其实也是通过nginx来实现的,但是Ingress本身依赖于service,它通过查询service的映射,来找到service后端的pod的