1.1 部署Istio控制平面
- 部署方法
- istioctl
- istio的专用管理工具,支持定制控制平面和数据平面
- 通过命令行的选项支持完整的IstioOperator API
- 命令行各选项可用于单独设置,以及接收包含IstioOperator自定义资源(CR)的yaml文件
- Istio Operator
- Istio相关的自定义资源的专用控制器,负责自动维护由CR定义的资源对象
- 管理员根据需要定义相应的CR文件,提交至K8S的API Server后,可由Opweator完成相应的操作
- helm
- 基于特定的Chart,亦可由Helm安装配置Istio
- 截至目前,该功能处于alpha阶段
- istioctl
1.2 Istio内置的部署profile
-
istio提供了内置配置文件(profille)用于快速部署
- default: 默认的配置,适用于生产环境;
- demo:会部署较多的组件,旨在演示istio的功能
- minimal:类似于default profile,但仅部署控制平面组件;
- remote:用于配置共享control plan的多集群环境;
- empty: 不部署任何组件,通常帮助用户在自定义profile时生成基础配置信息;
- perview: 包含预览性的profile,用于探索istio新功能,但不保证稳定性和安全性。
-
配置档案
- 各配置档案,事实上是IstioOperator API内置的CR格式的配置文件
-
了解内置的配置档案
-
istioctl profile list
-
istioctl profile dump [PROFILE]# 例如,打印default档案的资源配置信息 istioctl profile dump default# --config-path 选项可用于仅打印指定的配置段
-
istioctl profile diff PROFILE1 PROFILE2
-
-
内置的各profile默认启用的组件会有所不同
1.3 Istio Operator配置说明
-
IstioOperator API主要包括以下几个配置段
- components:组件配置参数
- hub:获取各组件镜像仓库,默认为"docker.io/istio"
- meshConfig: 网格(数据平面)相关的配置参数
- values:传递给各chart的值
-
IstioOperator API 中定义的组件
- base
- pilot
- ingressGateway
- egressGatewway
- cni
- istioRemote
-
以上配置段中的各参数,均可在istioctl命令行中使用–set选项进行独立设置;例如,部署default配置档案启用debbug日志功能,使用如下命令:
istioctl install --set-profile=default --set values.global.logging.level=debug
2.2.4 使用istioctl 快速部署Istio 1.17
-
前提:准备好kubernetes集群
-
下载程序
参考官网:https://istio.io/latest/docs/setup/getting-started/
-
下载istioctl及相关的安装文件和示例文件
# cd /usr/local # curl -L https://istio.io/downloadIstio | sh - # ln -sv istio-1.17.1 istio
-
istio安装目录结构介绍
bin/ #二进制程序文件 manifests/profiles/ #内置的配置档案 samples/addons/ # 部署各扩展组件的示例清单 samples/bbookinfo/ #示例微服务项目ookinfo tools/
-
将istioctl二进制文件放置在系统PATH环境变量
cp bin/istioctl /usr/local/bin/
-
-
部署Istio系统
-
基于demo profile进行部署测试
# istioctl install --set profile=demo -y## 生成部署时使用的资源清单 # istioctl manifest generate --set profile=demo > /tmp/demo-manifest.yaml## istioctl 还支持使用--set选项定制要使用的功能特性,例如: # istioctl install --set meshConfig.enableTracing=true
-
验证相关Pod和Service已经成功部署
# kubectl get pods -n istio-system # kubectl get svc -n istio-system
-
校验部署结果
istioctl vverify-install -f $HOME/demo-manifest.yaml
-
-
启用Sidercar自动注入功能
-
在网格应用运行的kubernetes namespace上,为namespace添加标签,激活Sidercar自动注入
kubectl label namespace default istio-injection=enabled
-
-
按需部署Addons
kubectl apply -f samples/addons/[MANIFEST_FILLE]
1.4 定制Istio部署环境
-
定制配置
-
IstioOperator API中的个配置参数,均可在istioctl命令行中使用–set进行独立设置;例如
-
部署时,为default配置档案启用debug日志功能,可使用如下命令:
istioctl install --set profile=default --set values.global.logging.level=debug
-
部署时,为default配置档案启用egressgateway组件
istioctl install --set profile=default --set components.egressGateways.enabled=true
-
-
-
定制kubernetes设置
- IstioOperator API支持以一致性的方式定义每一个组件kubernetes设置,每个组件都有一个kubernetesResourceSpec
- 它支持修改许多配置参数:包括Resources、Readiness probes、Replica count、HPA、PDB、Pod annotations、Service annotations、ImagePullPolicy、Node selector、Service、Toleration、Strategy、Env及Pod security context等.
1.5 卸载Istio
-
使用istioctl 命令卸载Istio
istioctl experimental uninstall
-
卸载方法
-
卸载指定的控制平面
-
卸载指定文件中定义的控制平面
istioctl x uninstall -f <FILE>
-
卸载指定的Revision
istioctl x uninstall --revision <NAME>
-
基于安装时的选项生成配置信息后kubelet删除
istioctl manifest generate <your original installation options> | kubectl delete -f -
-
-
清除集群上部署的所有控制平面
istioctl x uninstall --purge
-
-
提示:控制平面的名称空间默认不会删除,如果确认不在需要,自行删除。