LabHub
学习 学习路径 课程

Istio 심화 — 왜 그렇게 흐르는가 · 네 리소스의 역할 · 实验

배포하기 전에 틀린 것을 찾는다

在 LabHub 中继续学习

目标

Istio 配置即使语法正确,大多数时候也可能无法工作。由于其结构由名称相互引用,
只要一侧的名称发生变化,连接就会悄无声息地中断。

本实验将在没有集群的情况下,部署之前找出这类问题。

两种工具的区别

| | 检查内容 | 能发现的问题 |
|---|---|---|
| istioctl validate | 单个文件的语法 | 拼写错误、未知字段 |
| istioctl analyze | 资源之间的引用 | 不存在的 subset、网关以及主机冲突 |

Kubernetes 无法发现这两类问题。 CRD schema 会悄悄丢弃未知字段,
所以 kubectl apply 会成功,只有流量无法通过。

使用方法

istioctl validate -f vs.yamlistioctl analyze --use-kube=false vs.yaml dr.yamlecho $?          # 0 이면 깨끗, 79 면 문제 있음

--use-kube=false 表示不查看集群,只检查文件。

步骤

1. 拼写错误 → 01-validate.txt
2. 引用断裂 → 02-analyze.txt
3. 修复并通过 → vs.yamldr.yaml
4. 主机冲突 → 04-conflict.txt
5. 不存在的网关 → 05-gateway.txt
6. Sidecar 注入 → 06-inject.txt
7. analyze 无法发现的问题 → 07-blind.txt
8. 总结 → 08-notes.md

参考

第 7 步中,不出现任何问题才是正确结果。本步骤的目的就是亲自观察静态分析的局限。

8个步骤

  1. 发现拼写错误
  2. Schema 正确但行为错误
  3. 修复并使其通过
  4. 两个资源占用同一个主机时
  5. 引用不存在的网关时
  6. Sidecar 实际会变成什么样
  7. analyze 无法发现的问题
  8. 总结三个要点