Istio做为ServiceMesh的事实标准, 越来越被广泛地使用, 特别是work on Kubernetes之后, 再加持Istio来做更加细度地诸如流量管理、访问控制、灰度发布等方面的事情,不要更爽.
Download
Istio的部署还是非常简单的, 先下载istioctl二进制文件进行安装, 参考这里
1 | curl -L https://istio.io/downloadIstio | sh - |
默认Profile安装
istio内置几种默认的Profile, 某种Profile下有默认的manifest文件, 定义了需要安装的组件, 在安装的时候可以指定Profile进行安装, 各Profile如下, 详细的信息可查看这里
default | demo | minimal | sds | remote | |
---|---|---|---|---|---|
Core components | |||||
istio-citadel |
X | X | X | X | |
istio-egressgateway |
X | ||||
istio-galley |
X | X | X | ||
istio-ingressgateway |
X | X | X | ||
istio-nodeagent |
X | ||||
istio-pilot |
X | X | X | X | |
istio-policy |
X | X | X | ||
istio-sidecar-injector |
X | X | X | X | |
istio-telemetry |
X | X | X | ||
Addons | |||||
grafana |
X | ||||
istio-tracing |
X | ||||
kiali |
X | ||||
prometheus |
X | X | X |
注: 显示X的为在该Profile模式下需要安装的组件.
每种Profile说明如下:
- default:根据
IstioControlPlane
API的默认设置启用组件 (建议用于生产部署)。您可以通过运行命令显示默认设置istioctl profile dump
- demo:旨在展示Istio功能且资源需求适中的配置。适合运行Bookinfo应用程序和相关任务。这是随快速入门说明一起安装的配置,但是 如果您想探索更高级的任务,则可以稍后自定义配置以启用其他功能此配置文件可实现高级别的跟踪和访问日志记录,因此不适合进行性能测试。
- minimal:使用Istio的流量管理功能所需的最少组件集。
- sds:类似于默认配置文件,但也启用了Istio的SDS(秘密发现服务)。此配置文件具有默认情况下启用的其他身份验证功能(严格双向TLS)。
- 远程:用于配置的远程簇 的多组啮合与 共享控制平面配置。
因为demo涉及到的组件最符合目前的需求, 使用以下命令生成manifest文件并按该manifest部署.
1 | istioctl manifest apply --set profile=demo |
在Kubernetes中查看生成的CRD的对象
kubectl get CustomResourceDefinition
生成的pod信息如下
kubectl get pod -n istio-system
以上pod的功能:
- grafana-* //监控数据可视化工具
- istio-citadel-* //证书管理
- istio-egressgateway-* //出口流量网关
- istio-galley-* //配置检查
- istio-ingressgateway-* //入口流量网关
- istio-pilot-* //Envoy 服务发现,外部化配置
- istio-policy-* //Mixer 混合器策略检查
- istio-sidecar-injector-* //边车注入
- istio-telemetry-* //Mixer混合器指标收集
- Istio-tracing-* // 全链路跟踪工具
- kiali-* //Service Mesh可视化工具
- prometheus-* //监控报警
自定义安装
当默认的Profile无法满足业务需求的时候, 比如,目前系统中存在了Prometheus
, 不想在istio再次安装,同时又需要Tracing
跟kiali
那上面的所有profile都无法满足, istio也提供了可自定义安装,使用--set
开关
比如可使用以下命令实现以下的需求
istioctl manifest apply --set profile=demo --set telemetry.prometheus.enabled=false --set telemetry.prometheusOperator.enabled=false
这样就从demo中把原本会安装的Prometheus修改为不安装
组件的对应关系如下:
Feature | Components |
---|---|
base |
CRDs |
trafficManagement |
pilot |
policy |
policy |
telemetry |
telemetry |
security |
citadel , nodeAgent , certManager |
configManagement |
galley |
gateways |
ingressGateway , egressGateway |
autoInjection |
injector |
coreDNS |
coreDNS |
thirdParty |
cni |
Feature | Components |
---|---|
telemetry |
prometheus , prometheusOperator , grafana , kiali , tracing |
至此, Istio已经在Kubernetes中安装完成.