7.6.2 使用 GitHub Actions 自动化 Kubernetes 清单验证
GitHub Actions 是我们用来实现 Catalog Service 部署流水线提交阶段的工作流引擎。让我们扩展它以包含 Kubernetes 清单验证步骤,如图 7.15 所示。
转到您的 Catalog Service 项目(catalog-service),打开 .github/workflows 文件夹中的 commit-stage.yml 文件。要实现验证步骤,我们将依赖由 Stefan Prodan 构建的 action。他是 FluxCD 的维护者,FluxCD 是一个 CNCF 孵化项目,提供基于 GitOps 原则在 Kubernetes 上的持续部署解决方案。该 action 允许您安装特定版本的有用的 Kubernetes 相关工具。我们将配置该 action 安装 kubectl 和 Kubeval。
# 代码清单 7.7 验证 Catalog Service 的 Kubernetes 清单
name: Commit Stage
on: push
...
jobs:
build:
name: Build and Test
...
steps:
...
- name: Validate Kubernetes manifests # 验证 Kubernetes 清单
uses: stefanprodan/kube-tools@v1 # 能够安装有用 Kubernetes 工具的 action
with:
kubectl: 1.24.3 # 在安装中包含 Kubernetes CLI
kubeval: 0.16.1 # 在安装中包含 Kubeval
command: |
kubeval --strict -d k8s # 使用 Kubeval 验证 k8s 文件夹中的 Kubernetes 清单
...
使用额外的验证步骤更新 commit-stage.yml 文件后,您可以提交并推送更改到 GitHub 上的 catalog-service 仓库,并验证提交阶段工作流成功完成,这意味着您包含在清单中的内容符合 Kubernetes API。
Polar Labs
请随意将本章学到的知识应用到 Config Service,并为部署准备应用程序。
- 为应用程序配置优雅关闭和宽限期。
- 编写 Deployment 和 Service 清单,用于将 Config Service 部署到 Kubernetes 集群。
- 更新 Config Service 部署流水线的提交阶段,以验证 Kubernetes 清单。
- 通过
SPRING_CLOUD_CONFIG_URI环境变量配置 Catalog Service Deployment 使用 Config Service URL,依赖 Kubernetes 原生服务发现功能。 - 配置 Tilt 以自动化 Config Service 到使用 minikube 引导的本地 Kubernetes 集群的部署。
完成后,尝试部署我们迄今为止构建的 Polar Bookshop 系统的所有组件,并在 Octant 中检查它们的状态。您可以参考本书代码仓库中的 Chapter07/07-end 文件夹来检查最终结果(https://github.com/ThomasVitale/cloud-native-spring-in-action)。
恭喜!