博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
idou老师教你学Istio 09: 如何用Istio实现K8S Ingress流量管理
阅读量:6587 次
发布时间:2019-06-24

本文共 2014 字,大约阅读时间需要 6 分钟。

前言

在 Istio 的世界里,如果想把外部的请求流量引入网格,你需要认识并会学会配置 Istio Ingress Gateway

什么是 Ingress Gateway

由于 Kubernetes Ingress API 只能支持最基本的 HTTP 路由,使用 Kubernetes Ingress资源来配置外部流量的方式不能满足需求。因此 Istio v1alpha3 routing API 引入新的 Istio Ingress Gateway 取代 Kubernetes Ingress。

Gateway 为 HTTP/TCP 流量配置了一个负载均衡,用于承载网格边缘的进入和发出连接。在同一个网格中可以有多个不同的 gateway 存在。这一规范中描述了一系列开放端口,以及这些端口所使用的协议、负载均衡的 SNI 配置等内容。用户可以利用标准的 Istio 路由规则控制 HTTP 和 TCP 请求进入网格。

从下图可以看到 Istio gateway 在整个网格中的使用情况:

如何配置 Gateway 控制 Ingress 流量

如果你已经安装好了 bookinfo 的应用,为了能在外部访问 bookinfo 中的 productpage 服务,只需要配置 Gateway 和相关的 VirtualService。

apiVersion: networking.istio.io/v1alpha3kind: Gatewaymetadata:  name: bookinfo-gatewayspec:  selector:    istio: ingressgateway  servers:  - hosts:    - bookinfo.com    port:      number: 80      name: http      protocol: HTTP 复制代码

为了配置相应的路由,需要为相同的 host 定义一 个VirtualService 并且用配置中 gateways 的字段绑定到刚才创建的 Gateway:

apiVersion: networking.istio.io/v1alpha3kind: VirtualServicemetadata:  name: bookinfospec:  hosts:  - bookinfo.com  gateways:  - bookinfo-gateway # <---- 绑定gateway  - mesh # <----对内部通信进行流量控制  http:  - match:    - uri:        exact: /productpage    route:    - destination:        host: productpage        port:          number: 9080复制代码

这样就达到了在外网开放 productpage 服务的目的。

如何用 HTTPS 加密 Gateway?

我们也可以为服务启用 TLS 保护,以 HTTPS 的形式对网格外提供服务。

首先需要使用工具生成客户端和服务器端的证书和密钥。然后使用密钥和证书作为输入,创建一个 Secret。

$ kubectl create -n istio-system secret tls istio-ingressgateway-certs --key key.pem --cert cert.pem复制代码

接下来修改 Gateway 对象,为 Ingress gateway 开放一个 443 端口,用于提供 HTTPS 服务:

apiVersion: networking.istio.io/v1alpha3kind: Gatewaymetadata:  name: bookinfo-gatewayspec:  selector:    istio: ingressgateway  servers:  - hosts:    - bookinfo.com    port:      number: 80      name: http      protocol: HTTP   - hosts:    - "*"    port:      number: 443      name: https      protocol: HTTPS    tls:      mode: SIMPLE      serverCertificate: /etc/istio/ingressgateway-certs/tls.crt      privateKey: /etc/istio/ingressgateway-certs/tls.key复制代码

这样简单的配置就可以通过 HTTPS 协议访问 了。

转载地址:http://irhno.baihongyu.com/

你可能感兴趣的文章
如何才能快速匹配到大号?
查看>>
Python实现计算器功能
查看>>
Socket编程实践(3) --Socket API
查看>>
曲线学习PyQt5方案一
查看>>
Hyper-V Server 存储分层
查看>>
通过案例学习调优之--Oracle ASH
查看>>
前端学习 -- Css -- 属性选择器
查看>>
Android自定义控件及自定义属性
查看>>
死磕Spring AOP系列2:剖析Bean处理器之BeanNameAutoProxyCreator
查看>>
如何获得查询的执行计划?(一)
查看>>
这些符号你会打吗?
查看>>
INDEX建立方式对SQL的影响
查看>>
云场景实践研究第13期:新浪微博DCP系统
查看>>
Vbs程序批量修改防火墙路由
查看>>
Asp.net报错汇总:回发或回调参数无效
查看>>
LINUX DNS服务的配置(一)
查看>>
linux抓包工具:tcpdump 工具用法
查看>>
WordPress优化:为原创文章和转载文章分别添加不同的版权申明
查看>>
python第三库安装方法记录
查看>>
利用事件对象同步线程
查看>>