Kubernetes - Ingress 类型

https://kubernetes.io/docs/concepts/services-networking/ingress/

Single Service Ingress

ingress.yaml:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test-ingress
spec:
  backend:
    serviceName: testsvc
    servicePort: 80

kubectl create -f ingress.yaml

$ kubectl get ing
NAME                RULE          BACKEND        ADDRESS
test-ingress        -             testsvc:80     107.178.254.228

其中107.178.254.228是由Ingress控制器分配以满足此Ingress的IP。 “规则”列显示,发送到IP的所有流量都被定向到在BACKEND下列出的Kubernetes服务。

Simple fanout

如前所述,kubernetes中的pod在集群网络上只能看到IP,所以我们需要一些边缘接受入口流量并将其代理到正确的端点。 该组件通常是高可用性负载平衡器。 In Ingress允许您将负载平衡器的数量降至最低,例如:

foo.bar.com -> 178.91.123.132 -> / foo    s1:80
                                 / bar    s2:80

Ingress:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test
spec:
  rules:
  - host: foo.bar.com
    http:
      paths:
      - path: /foo
        backend:
          serviceName: s1
          servicePort: 80
      - path: /bar
        backend:
          serviceName: s2
          servicePort: 80

kubectl create -f:

$ kubectl get ing
NAME      RULE          BACKEND   ADDRESS
test      -
          foo.bar.com
          /foo          s1:80
          /bar          s2:80

只要存在服务(s1,s2),Ingress控制器将提供满足Ingress的实现特定负载平衡器。 当这样做时,您将在Ingress的最后一列看到负载均衡器的地址。

Name based virtual hosting

基于名称的虚拟主机使用相同IP地址的多个主机名。

foo.bar.com --|                 |-> foo.bar.com s1:80
              | 178.91.123.132  |
bar.foo.com --|                 |-> bar.foo.com s2:80

以下Ingress告诉备份负载均衡器根据Host头发送请求。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test
spec:
  rules:
  - host: foo.bar.com
    http:
      paths:
      - backend:
          serviceName: s1
          servicePort: 80
  - host: bar.foo.com
    http:
      paths:
      - backend:
          serviceName: s2
          servicePort: 80

默认后端:没有规则的入口(如上一节所示)将所有流量发送到单个默认后端。 您可以使用相同的技术通过指定一组规则和默认后端来告诉负载均衡器找到您的网站的404页面。 如果您的Ingress中的主机与请求标头中的主机匹配,并且/或没有一个路径与请求的URL匹配,则流量将路由到您的默认后端。

TLS

您可以通过指定包含TLS私钥和证书的密钥来保护Ingress。 目前,Ingress仅支持单个TLS端口443,并假定TLS终止。 如果Ingress中的TLS配置部分指定不同的主机,则它们将根据通过SNI TLS扩展指定的主机名(提供Ingress控制器支持SNI)在多个相同端口上进行复用。 TLS秘密必须包含名为tls.crt和tls.key的密钥,其中包含用于TLS的证书和私钥,例如:

apiVersion: v1
data:
  tls.crt: base64 encoded cert
  tls.key: base64 encoded key
kind: Secret
metadata:
  name: testsecret
  namespace: default
type: Opaque

在Ingress中引用秘钥:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: no-rules-map
spec:
  tls:
    - secretName: testsecret
  backend:
    serviceName: s1
    servicePort: 80

请注意,各种Ingress控制器支持的TLS功能之间存在差距。 请参阅有关nginx,GCE或任何其他平台特定Ingress控制器的文档,以了解TLS在您的环境中的工作原理。




#更新Ingress策略见 方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值