安装

在非 kubernetes 环境中使用 Istio 主要包含以下关键任务:

  1. 使用 Istio API 服务搭建和设置 Istio 控制面板
  2. 添加 Istio sidecar到每个服务的实例中
  3. 确保请求是通过 sidecar 路由的

安装控制平面

Istio 控制面板由四个主要服务组成: Pilot, Mixer, CA, 以及 API 服务.

API 服务器

Istio 的 API 服务器(基于 Kubernetes 的 API 服务器)提供了配置管理以及 RBAC(基于角色的访问控制)等关键的功能。API 服务器需要一个 etcd 集群作为持久化存储。搭建 API 服务器的详细说明在这里可以找到。Kubernetes API 服务器的配置选项文档在这里

本地安装

为了进行概念验证(proof of concept ),可以使用以下 Docker Compose 文件安装简单的单容器 API 服务器:

  1. version: '2'
  2. services:
  3. etcd:
  4. image: quay.io/coreos/etcd:latest
  5. networks:
  6. default:
  7. aliases:
  8. - etcd
  9. ports:
  10. - "4001:4001"
  11. - "2380:2380"
  12. - "2379:2379"
  13. environment:
  14. - SERVICE_IGNORE=1
  15. command: [
  16. "/usr/local/bin/etcd",
  17. "-advertise-client-urls=http://0.0.0.0:2379",
  18. "-listen-client-urls=http://0.0.0.0:2379"
  19. ]
  20. istio-apiserver:
  21. image: gcr.io/google_containers/kube-apiserver-amd64:v1.7.3
  22. networks:
  23. default:
  24. aliases:
  25. - apiserver
  26. ports:
  27. - "8080:8080"
  28. privileged: true
  29. environment:
  30. - SERVICE_IGNORE=1
  31. command: [
  32. "kube-apiserver", "--etcd-servers", "http://etcd:2379",
  33. "--service-cluster-ip-range", "10.99.0.0/16",
  34. "--insecure-port", "8080",
  35. "-v", "2",
  36. "--insecure-bind-address", "0.0.0.0"
  37. ]

其它 Istio 组件

Istio 的 Pilot,Mixer 和 CA 的 Debian 系统的软件包可通过 Istio 发行版获得。或者,这些组件也可以通过 Docker 容器运行(docker.io/istio/pilot,docker.io/istio/mixer,docker.io/istio/istio-ca)。注意,这些组件是无状态的,所以可以水平伸缩。 每个组件都依赖于 Istio API 服务器,而 Istio API 服务器又依赖于 etcd 集群来实现持久化。

向服务实例中添加 Sidecar

应用程序中的每个服务实例必须伴随着 Istio 的 sidecar。 根据你的安装单元(Docker 容器,虚拟机,裸机节点),Istio sidecar 需要同时安装到这些组件中。 例如,如果你的基础架构使用虚拟机,则必须在每个需要成为 service mesh 一部分的虚拟机上运行 Istio sidecar 程序进程。

通过 Istio Sidecar 路由流量

sidecar 安装应该包括设置适当 iptable 规则,将应用程序的网络流量透明路由到 Istio sidecar。 可以在这里可以找到设置这种转发的 iptables 脚本。

注意:这个脚本必须在启动应用程序或sidecar进程之前执行。

注意:这个脚本必须在启动应用程序或 sidecar 进程之前执行。