Istio 升级安全指南
核心内容概述
安装内容
使用 istioctl manifest generate --set profile=default 安装 Istio 时,会部署以下资源:
- CustomResourceDefinition: 15 个
- Deployment: 2 个
- Service: 2 个
- ValidatingWebhookConfiguration: 1 个
- MutatingWebhookConfiguration: 1 个
- ConfigMap: 2 个
- ServiceAccount: 4 个
- ClusterRole/ClusterRoleBinding: 5 个
- Role/RoleBinding: 3 个
- EnvoyFilter: 6 个
- HorizontalPodAutoscaler: 2 个
- PodDisruptionBudget: 2 个
资源关联关系
Istio 资源之间的关联关系图示(原文未提供具体细节,但提及存在关联图)。
证书管理
Istio 证书管理相关内容(原文未详细展开)。
最佳实践:分离 IstioOperator
建议将 IstioOperator 部署独立于应用,以提高可管理性和升级灵活性。
升级前准备
捕获状态
- 使用
istioctl analyze --all-namespaces 分析状态
- 使用
istioctl proxy-status 检查代理状态
- 使用
istioctl x precheck 进行预检查
- 备份 Istio CR(
kubectl get istio-io --all-namespaces -oyaml)
- 收集日志:Sidecar proxy logs、Gateway logs、ConfigMaps
- 使用
istioctl bug-report 收集问题报告
- 查看 Dashboards(参考链接:https://krisztianfekete.org/upgrading-to-istio-1.11/)
升级注意事项
- 重点关注 EnvoyFilter 配置
- 注意 IstioOperator 自定义配置:
- overlays
- meshConfig
- 比较
istio-1.11.5 和 istio-1.12.6 的配置文件差异
- 检查资源注解(
kubectl get deploy -o yaml | grep 'istio.io')
升级操作
- 使用
istioctl upgrade -f istiodIstioOperator.yaml 升级 IstioOperator
- 使用
kubectl rollout restart deployment -n myns 重新部署应用
- 使用
istioctl proxy-status 检查代理状态
升级后问题处理
- 使用
istioctl analyze --all-namespaces 分析问题
- 检查日志
- 比较 proxy 配置(
istioctl proxy-config <clusters|listeners|routes|...>)
- 使用
istioctl bug-report 报告问题
- 参考:
- https://istio.io/latest/docs/ops/common-problems/
- https://istio.io/latest/docs/ops/diagnostic-tools/
- https://www.solo.io/blog/navigating-istio-config-toolkit/
版本控制(Revisions)
步骤 1
istioctl install -f istiodIstioOperator.yaml --revision 1-12-1
istioctl x revision list
步骤 2
kubectl label namespace app2 istio.io/rev=1-12-1 --overwrite
kubectl rollout restart deployment -n app2
istioctl proxy-status
步骤 3
istioctl install -y -f ingress-gateway-test.yaml --revision 1-12-1
步骤 4
(原文未详细说明)
版本标签
参考链接:https://istio.io/latest/blog/2021/revision-tags/
istioctl x revision tag list
示例输出:
TAG REVISION NAMESPACES
prod-stable 1-9-5 istioinaction
prod-canary 1-10-0 istioinaction-canary
多集群场景
单集群升级
每次只升级一个集群。
集群故障转移
- 使用
istioctl pc endpoints 检查端点状态
istioctl pc endpoints istio-ingressgateway-78b995cf66-24td6.istio-gateways --cluster \"outbound|7000||web-ui.mesh.internal\"
示例输出:
ENDPOINT STATUS OUTLIER CHECK CLUSTER
10.16.1.53:7000 HEALTHY OK outbound|7000||web-api.mesh.internal (LOCAL)
34.82.32.121:15443 HEALTHY OK outbound|7000||web-api.mesh.internal (REMOTE)
前端故障转移
同集群故障转移,使用相同命令检查端点状态。
后端故障转移
(原文未详细说明)
团队成员与公司信息
- Istio 创始成员及维护者介绍
- Solo.io 公司简介:
- 成立于 2017 年,总部位于美国剑桥
- 行业领导者,专注于应用网络、服务网格和现代 API 网关
- Open-Core 模型 + 企业订阅
- 快速增长,客户满意度高
- 融资情况:$171.5M 早期融资,估值 $1B
- 招聘信息
- Gloo Application Networking Platform 简介