使用Argo CD自动化部署和管理Solo.io Gloo Gateway
前言
在现代云原生架构中,持续交付(Continuous Delivery)和GitOps实践已成为不可或缺的部分。本文将详细介绍如何利用Argo CD这一强大的Kubernetes原生持续部署工具,来自动化部署和管理Solo.io的Gloo Gateway。
准备工作
在开始之前,请确保您已具备以下条件:
- 已安装
kubectl
命令行工具,版本应与您的Kubernetes集群版本兼容(相差不超过一个次要版本) - 已安装
argocd
命令行工具 - 拥有一个可用的Kubernetes集群环境
Argo CD基础配置
安装Argo CD
首先我们需要在Kubernetes集群中部署Argo CD:
kubectl create namespace argocd
until kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/v2.12.3/manifests/install.yaml > /dev/null 2>&1; do sleep 2; done
等待所有部署组件就绪:
kubectl -n argocd rollout status deploy/argocd-applicationset-controller
kubectl -n argocd rollout status deploy/argocd-dex-server
kubectl -n argocd rollout status deploy/argocd-notifications-controller
kubectl -n argocd rollout status deploy/argocd-redis
kubectl -n argocd rollout status deploy/argocd-repo-server
kubectl -n argocd rollout status deploy/argocd-server
安全配置
出于安全考虑,建议修改默认管理员密码:
# 使用bcrypt加密的密码"solo.io"
kubectl -n argocd patch secret argocd-secret \
-p '{"stringData": {
"admin.password": "$2a$10$79yaoOg9dL5MO8pn8hGqtO4xQDejSEVNWAGQR268JHLdrCw6UCYmy",
"admin.passwordMtime": "'$(date +%FT%T%Z)'"
}}'
访问Argo CD UI
通过端口转发访问Argo CD Web界面:
kubectl port-forward svc/argocd-server -n argocd 9999:443
然后使用用户名admin
和密码solo.io
登录。
部署Gloo Gateway
创建Argo CD应用
我们将通过Argo CD应用来部署Gloo Gateway的Helm chart:
kubectl apply -f- <<EOF
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: gloo-gateway-oss-helm
namespace: argocd
spec:
destination:
namespace: gloo-system
server: https://kubernetes.default.svc
project: default
source:
chart: gloo
helm:
skipCrds: false
values: |
kubeGateway:
enabled: false
repoURL: https://storage.googleapis.com/solo-public-helm
targetRevision: {{< readfile file="static/content/version_geoss_latest.md" markdown="true">}}
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
EOF
这个配置有几个关键点:
- 自动创建
gloo-system
命名空间 - 启用自动同步和自愈功能
- 配置了Helm chart的特定参数
验证部署
检查Gloo控制平面组件是否正常运行:
kubectl get pods -n gloo-system
预期输出应显示所有关键组件处于Running状态:
NAME READY STATUS RESTARTS AGE
discovery-76768ff46-db4cb 1/1 Running 0 76s
gateway-proxy-7d6b9db55b-6flwm 1/1 Running 0 76s
gloo-7b5c894cd7-lp7rr 1/1 Running 0 76s
...
验证GatewayClass资源:
kubectl get gatewayclass gloo-gateway
清理资源(可选)
当不再需要此环境时,可以通过以下方式清理:
通过UI清理
- 访问Argo CD UI
- 找到对应应用并删除
- 选择"Foreground"删除选项
- 验证
gloo-system
命名空间已清空
通过CLI清理
argocd app delete gloo-gateway-oss-helm --cascade --server localhost:9999 --insecure
最佳实践建议
- 版本控制:将Argo CD应用定义存储在版本控制系统中,实现真正的GitOps工作流
- 安全加固:在生产环境中使用更复杂的密码和RBAC配置
- 监控集成:配置Argo CD与监控系统的集成,及时获知同步状态
- 多环境管理:利用Argo CD的Project功能管理不同环境的Gloo Gateway部署
通过本文的指导,您已经成功实现了使用Argo CD自动化部署和管理Solo.io Gloo Gateway的全过程。这种集成方式不仅提高了部署效率,还增强了系统的可靠性和可审计性。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考