这是一个用于学习微服务、Docker 和 Kubernetes 的 Rust workspace。
源码目录与 Kubernetes 没有直接关系。它们通过镜像连接:
services/... -> Docker image -> Deployment -> Service -> Ingress
| 变更 | Docker | Kubernetes |
|---|---|---|
| 修改现有 Rust 源码或依赖 | 不改配置,只重新构建对应镜像 | 不改配置,只重启对应 Deployment |
| 新增可运行服务或 Worker | 新增 Dockerfile,并加入 CI 的 Dockerfile matrix | 新增 Deployment,并加入最近的 kustomization.yaml |
| 新增 HTTP API | 同上 | 增加 Service;只有需要从集群外访问时才增加 Ingress 路由 |
| 移动或重命名 Dockerfile | 修改 CI 和文档中的 Dockerfile 路径 | 通常不用改 |
| 修改镜像名 | 修改构建命令中的 tag | 修改 Deployment 的 image |
| 修改监听端口 | 检查 Dockerfile 的 ENV 和 EXPOSE |
修改 Deployment 的 containerPort 和 Service 的 targetPort |
| 增加环境变量 | 可选默认值放在 Dockerfile | 修改 Deployment;秘密值还要修改 Secret 模板和本地 Secret |
| 修改 Service 名 | 不用改 | 修改调用方地址、Ingress backend 和其他相关引用 |
| 新增 Kubernetes YAML | 不用改 | 必须加入最近的 kustomization.yaml,Kustomize 不会自动扫描目录 |
| 仅本地环境需要不同配置 | 不用改 | 在 deploy/overlays/local 增加 patch,并登记到其 kustomization.yaml |
Worker 通常只需要 Deployment。需要被其他服务调用的 API 需要 Deployment 和 Service。只有需要从集群外访问的 API 才需要 Ingress。
修改源码后的本地更新流程:
docker build -f <Dockerfile> -t <image>:dev .
kubectl rollout restart deployment/<deployment>
kubectl rollout status deployment/<deployment>修改 Kubernetes 清单后,重新应用完整的本地 overlay:
kubectl apply -k deploy/overlays/local完整的本地部署步骤见 deploy/README.md。