本指南将帮助您完成项目的完整部署,并指导如何进行代码和配置的修改。请按照以下步骤操作。
在开始之前,请确保您已经具备以下条件:
- Google Cloud 账户:用于创建和管理 GKE 集群。
- GitHub 账户:用于访问代码仓库和配置 GitHub Actions。
- 本地开发环境:
首先,克隆项目代码仓库到本地:
git clone https://github.com/telepace/helm-charts.git
cd helm-charts
参考 docs/gcloud.md 获取详细的 GKE 快速上手指南。以下是创建 GKE 集群的基本步骤:
gcloud container clusters create your-cluster-name \
--zone your-zone \
--num-nodes=3
将 kubectl
配置为连接到新创建的 GKE 集群:
gcloud container clusters get-credentials your-cluster-name --zone your-zone
项目中使用 Helm 管理 Kubernetes 应用的部署。以下是安装和更新 Helm 图表的步骤。
确保您已经添加了所需的 Helm 仓库:
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
运行安装脚本以部署所有服务:
./scripts/install.sh
该脚本将遍历 charts
目录下的所有 Helm 图表,进行安装和配置。
如果需要单独部署某个服务,可以使用以下命令:
helm install [release-name] ./charts/[chart-name] --namespace [namespace] --create-namespace
例如,部署 web
服务:
helm install web-release ./charts/web --namespace web --create-namespace
项目使用 GitHub Actions 进行持续集成和持续部署(CI/CD)。以下是配置步骤:
-
创建 GitHub Secrets:
GCP_PROJECT_ID
:您的 Google Cloud 项目 ID。GCP_SA_KEY
:包含 GCP 服务账户密钥的 JSON 字符串。REGISTRY
:GitHub Container Registry 的地址,例如ghcr.io/your-username
.
-
配置 Argo CD:
- Argo CD 将自动监控 Git 仓库中的变更,并应用到 GKE 集群。
- 请参考 docs/design.md 中关于 Argo CD 的部分进行详细配置。
每个服务的配置信息存储在对应的 values.yaml
文件中。您可以根据需求修改这些配置。
例如,修改 web
服务的副本数量和资源限制:
# charts/web/values.yaml
replicaCount: 3
resources:
limits:
cpu: 500m
memory: 256Mi
requests:
cpu: 250m
memory: 128Mi
修改完成后,应用更新:
helm upgrade web-release ./charts/web --namespace web
如果需要添加新的服务,请按照以下步骤操作:
-
创建 Helm 图表:
helm create charts/new-service
-
配置 Chart.yaml:
编辑
charts/new-service/Chart.yaml
,填写服务名称和描述。 -
设置 Values:
修改
charts/new-service/values.yaml
以配置服务的默认值。 -
编写模板:
在
charts/new-service/templates
目录下添加 Kubernetes 资源定义模板,例如deployment.yaml
、service.yaml
等。 -
部署新服务:
helm install new-service-release ./charts/new-service --namespace new-service --create-namespace
使用 kubectl
命令查看各个服务的部署状态:
kubectl get all -n web
kubectl get all -n backend
# 针对其他命名空间执行类似命令
根据 ingress
或 service
的配置,访问相应的 URL 或 IP 地址。例如,如果 ingress
已启用:
http://your-domain.com
项目集成了 Kong 作为 API 网关和 Prometheus 进行监控,您可以通过以下方式访问日志和监控数据:
- Kong 管理界面:访问
http://kong-admin.your-domain.com
- Prometheus:访问
http://prometheus.your-domain.com
拉取最新的代码更改:
git pull origin main
如果 Helm 图表有更新,运行以下命令进行升级:
helm upgrade [release-name] ./charts/[chart-name] --namespace [namespace]
例如,升级 analysis
服务:
helm upgrade analysis-release ./charts/analysis --namespace analysis
确保 .github/workflows
目录下的工作流配置文件是最新的。若有更新,请提交并推送更改,GitHub Actions 将自动执行相应任务。
使用 kubectl
查看特定 Pod 的日志:
kubectl logs [pod-name] -n [namespace]
进入运行中的容器以进行调试:
kubectl exec -it [pod-name] -n [namespace] -- /bin/bash
确保集群资源充足,避免因资源不足导致的部署失败。
kubectl describe nodes
kubectl top pods -n [namespace]
欢迎提交 Pull Request 以贡献代码和改进配置。请遵循 CODEOWNERS 文件中的代码所有权规则。
本项目采用 Apache License 2.0 许可证。请参阅 LICENSE 文件获取详细信息。