前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >istio-in-action - 04 使用 istio Gateway 允许外部访问

istio-in-action - 04 使用 istio Gateway 允许外部访问

作者头像
老麦
发布2022-12-24 10:19:45
5040
发布2022-12-24 10:19:45
举报
文章被收录于专栏:Go与云原生

聪明的人找的到项目和代码: https://github.com/tangx/istio-in-action

仅仅是简单的创建了 VirtualService 是不能实现集群外部的访问的。

在 Istio 中, 还有一个 Gateway 的概念。顾名思义, Gateway 就是大门保安, 只允许具有特定特征的流量通过。

1.1. 创建 Gateway

先来创建一个 Gateway

代码语言:javascript
复制
---
# https://istio.io/latest/docs/reference/config/networking/gateway/

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: istio-tangx-in
  namespace: myistio
spec:
  selector:
    istio: ingressgateway # 选择 ingressgateway, 省略则兼容所有
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
      # - myistio/istio.tangx.in # 只针对特定的 namespace myistio 有效
      - istio.tangx.in # 所有 ns 都有效

上述 gateway 注意以下几点。

  1. 使用 .spec.selector 选择了绑定的 ingressgateway。如果 省略 则绑定到所有的 ingressgateway。
代码语言:javascript
复制
kgall deployment -l istio=ingressgateway

    NAMESPACE      NAME                   READY   UP-TO-DATE   AVAILABLE   AGE
    istio-system   istio-ingressgateway   1/1     1            1           3d23h
  1. .spec.servers.port 指定了 gateway 允许的 端口 和 协议。
    • 截止 istio v1.11.4 只支持 HTTP|HTTPS|GRPC|HTTP2|MONGO|TCP|TLS 7中。
  2. .sepc.servers.hosts 指定了允许通过的 域名。
    • 如果使用 ns_name/istio.tangx.in namespace 字段, 则表示只有 特定 的namespace 中生效。
    • istio.tangx.in 如果没有 ns 字段, 则表示所有 ns 中生效。

1.2. VirutalService 定义

随后, 更新 VirtualService 配置

代码语言:javascript
复制
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: vs-prod
  namespace: myistio
spec:
  gateways: # 选择 gateway
    - istio-tangx-in  # 这里的名字要与 gateway 的名字匹配
  hosts:
    - svc-prod
    - istio.tangx.in  # 使用的外部地址 FQDN。这里的域名是 gateway hosts 中定义的
  http:
  - route:
    - destination:
        host: svc-prod

需要注意

  1. .spec.gateways 的列表值必须是存在的 gateway 名称
  2. .spec.hosts 的值, 必须是上述选中的 gateway 中定义的。

2. 测试

运行如下命令创建相关环境

代码语言:javascript
复制
kubectl apply -f istio-samples/04/

使用 04.http 的 GET 请求进行测试

注意: 使用访问的外部域名 istio.tangx.in 一定要进行 dns 解析。或使用 /etc/resolv.conf 进行绑定。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 熊猫云原生Go 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.1. 创建 Gateway
  • 1.2. VirutalService 定义
  • 2. 测试
相关产品与服务
服务网格
服务网格(Tencent Cloud Mesh, TCM),一致、可靠、透明的云原生应用通信网络管控基础平台。全面兼容 Istio,集成腾讯云基础设施,提供全托管服务化的支撑能力保障网格生命周期管理。IaaS 组网与监控组件开箱即用,跨集群、异构应用一致发现管理加速云原生迁移。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档