快速安装 Istio 1.22.3 简记

本文记录用 demo 配置 + DaoCloud 镜像 + 阿里云 SLB 一键安装 Istio 1.22.3,并部署示例应用与插件。

1. 下载 Istio

参考官方文档下载对应版本的安装文件。我这里下载的是1.22.3版本。

blaze@MACBOOK ~ % istioctl version
client version: 1.22.3
control plane version: 1.22.3
data plane version: 1.22.3 (4 proxies)

2. 安装 Istio

一键安装(demo profile + DaoCloud 镜像 + 指定 SLB)

# 安装 Istio
istioctl install \
--set hub=docker.m.daocloud.io/istio \
--set tag=1.22.3 \
--set profile=demo \
--set values.gateways.istio-ingressgateway.serviceAnnotations.'service\.beta\.kubernetes\.io/alibaba-cloud-loadbalancer-id'="lb-xxxxxxxxxxxxxxxxxxxxx" \
--set values.gateways.istio-ingressgateway.serviceAnnotations.'service\.beta\.kubernetes\.io/alibaba-cloud-loadbalancer-force-override-listeners'="true" \
--set values.gateways.istio-ingressgateway.serviceAnnotations.'service\.beta\.kubernetes\.io/alibaba-cloud-loadbalancer-address-type'="intranet" \
--set values.gateways.istio-ingressgateway.serviceAnnotations.'service\.beta\.kubernetes\.io/alibaba-cloud-loadbalancer-ip-version'="ipv4" \
-y

# 可选:安装 Kubernetes Gateway API CRD
kubectl get crd gateways.gateway.networking.k8s.io &> /dev/null || \
{ kubectl kustomize "github.com/kubernetes-sigs/gateway-api/config/crd?ref=v0.6.0" | kubectl apply -f -; }

3. 部署示例应用

参考官方文档部署一个简单的服务。

# 部署一个简单的服务
blaze@MACBOOK ~ % k get po -n blazehu
NAME READY STATUS RESTARTS AGE
rollout-demo1-64bdbc558c-flvtf 1/1 Running 0 29s
rollout-demo1-64bdbc558c-gt26s 1/1 Running 0 29s
rollout-demo1-64bdbc558c-kd7n4 1/1 Running 0 29s

# 给命名空间添加标签,指示 Istio 在部署应用的时候,自动注入 Envoy Sidecar 代理
blaze@MACBOOK ~ % kubectl label namespace blazehu istio-injection=enabled
namespace/blazehu labeled

# 查看 Envoy Sidecar 注入完毕
blaze@MACBOOK ~ % k get po -n blazehu
NAME READY STATUS RESTARTS AGE
rollout-demo1-64bdbc558c-5789g 2/2 Running 0 3m46s
rollout-demo1-64bdbc558c-8vp8s 2/2 Running 0 3m46s
rollout-demo1-64bdbc558c-ncwzl 2/2 Running 0 3m46s

4. 安装插件

安装Kiali 和其他插件

# 可选:安装全部插件
kubectl apply -f samples/addons

# 安装 kiali 插件,并访问 Kiali 仪表板
kubectl apply -f samples/addons/kiali.yaml
kubectl apply -f samples/addons/prometheus.yaml
istioctl dashboard kiali

5. 卸载 Istio

卸载 Istio(防止 webhook/CRD 残留)

# 删除所有插件
kubectl delete -f samples/addons

# 删除 Istio 控制平面 + CRD + 所有资源
istioctl uninstall --purge -y

# 可选:删除命名空间
kubectl delete namespace istio-system

# 可选:清理可能残留的 webhook(保险动作)
kubectl delete mutatingwebhookconfiguration istio-revision-tag-default --ignore-not-found
kubectl delete validatingwebhookconfiguration istiod-istio-system --ignore-not-found