前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Istio 开门七件事

Istio 开门七件事

作者头像
崔秀龙
发布2019-07-23 11:19:26
5580
发布2019-07-23 11:19:26
举报
文章被收录于专栏:伪架构师

Service Mesh 越来越热,虽说尚未决出最终赢家,但是这一生态的存在和发展确已经成了定势。Istio 目前最新是 0.7.1 版本,其中非常重要的路由规则仅仅是 alpha3 版本,因此对其可靠性是没有承诺的。但不管是哪个阶段,因为业务需求不同,对 Istio 的需求也不会完全一致,只有经历 Staging 甚至是 Production 一级的试用,我们才能确切的认识到这样一个系统能否满足我们自身业务的需求。

下面以一个应用中的部分服务进行 Istio 试用的场景,来讲讲开始尝试 Istio 丰富Bug功能之前,需要做点什么准备工作。

应用准备

一般来说我们不会选择一个应用中的所有业务进行改造,而是选择其中部分的微服务作为金丝雀来进行试错。选定部署目标之后,需要对待测试服务的依赖项目进行一下分类:

  • 相对部署位置:集群外、Kubernetes集群、Istio 集群。
  • 通信协议:HTTP/TCP

这里需要根据结果,集群外的服务创建 egress 资源,防止试点服务无法完成对依赖服务的访问;

  • 同一 Kubernetes/Istio 集群内的服务是可以按需互访的。
  • Kubernetes 集群外的服务需要使用 egress 资源来定义访问规则。

另外应用的 Deployment、Service 等资源的标签需要按照 Istio 要求进行检查。

切换准备

试用之前,应该在负载均衡/反向代理等边缘网络上,对试点服务进行切换准备,保证从 Service Mesh 内外可以自由切换。

K8S 集群准备

对 Kubernetes 集群版本的要求:最低版本 1.7.3,并需要激活 RBAC,如果使用自动注入,需要 1.9 以上版本的 Kubernetes 集群。当然 Kubectl 也需要合适的 1.7.3 以上的版本。

RBAC 方面,需要提供 cluster-admin 账号进行安装。

Istioctl 需要和 Kube Config 配置文件协作,因此合适的配置文件也是必须的。

Istio 的安装

  • 查找当前 Istio 中需要使用的镜像列表。

例如使用下列命令,查找所有 yaml 中涉及到的镜像: grep -r image: *| grep -v "helm" | egrep -o "\S+?$" | sort | uniq

  • 拉取镜像并上传到私库。
  • 修改 istio 以及几个监控 yaml 中的镜像地址。
  • 复制 bin 目录中的 istioctl 到本地。
  • kubectl apply -f 所需的 yaml。

外部访问

访问外部服务有两种方式

Egress

如果外部服务会同时被多个 Mesh 内访问,或者需要像 Mesh 内服务一样对外部服务进行一些控制,就可以设置为 Egress 方式。例如打开对 httpbin.org 的访问:

代码语言:javascript
复制
apiVersion: config.istio.io/v1alpha2
kind: RouteRule
metadata:
 name: httpbin-timeout-rule
spec:
 destination:
   service: httpbin.org
 http_req_timeout:
   simple_timeout:
     timeout: 3s

注意 v1alpha3 版本的 Egress 似乎还无法使用。

单应用放行

可以在注入时,为应用指定一个 IP 地址范围,超出这一范围的所有地址都会被 Envoy 直接放行。

这种方式适用于性能敏感或者无需控制的情况,例如数据库。

应用部署

使用 --includeIPRanges--hub 两个参数,对注入进行调整;更复杂的还可以直接使用 --injectConfigMapName 对注入配置进行自定义。

基础路由

为每个部署的应用,做好优先级为 0 的基础路由,将服务导入缺省版本的实例之中。

官方建议尽量使用 v1alpha3 版本。

开始

上述步骤完成后,应该首先进行一轮冒烟测试以及压力测试,确认基本功能不受影响,达到使用要求,并且可以正确获得监控结果之后,才可以进一步的设置 Istio 的功能。

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

本文分享自 伪架构师 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 应用准备
  • 切换准备
  • K8S 集群准备
  • Istio 的安装
  • 外部访问
    • Egress
      • 单应用放行
      • 应用部署
      • 基础路由
      • 开始
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档