使用Argo CD自动化部署和管理Solo.io Gloo Gateway

使用Argo CD自动化部署和管理Solo.io Gloo Gateway

gloo The Feature-rich, Kubernetes-native, Next-Generation API Gateway Built on Envoy gloo 项目地址: https://gitcode.com/gh_mirrors/glo/gloo

前言

在现代云原生架构中,持续交付(Continuous Delivery)和GitOps实践已成为不可或缺的部分。本文将详细介绍如何利用Argo CD这一强大的Kubernetes原生持续部署工具,来自动化部署和管理Solo.io的Gloo Gateway。

准备工作

在开始之前,请确保您已具备以下条件:

  1. 已安装kubectl命令行工具,版本应与您的Kubernetes集群版本兼容(相差不超过一个次要版本)
  2. 已安装argocd命令行工具
  3. 拥有一个可用的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清理

  1. 访问Argo CD UI
  2. 找到对应应用并删除
  3. 选择"Foreground"删除选项
  4. 验证gloo-system命名空间已清空

通过CLI清理

argocd app delete gloo-gateway-oss-helm --cascade --server localhost:9999 --insecure

最佳实践建议

  1. 版本控制:将Argo CD应用定义存储在版本控制系统中,实现真正的GitOps工作流
  2. 安全加固:在生产环境中使用更复杂的密码和RBAC配置
  3. 监控集成:配置Argo CD与监控系统的集成,及时获知同步状态
  4. 多环境管理:利用Argo CD的Project功能管理不同环境的Gloo Gateway部署

通过本文的指导,您已经成功实现了使用Argo CD自动化部署和管理Solo.io Gloo Gateway的全过程。这种集成方式不仅提高了部署效率,还增强了系统的可靠性和可审计性。

gloo The Feature-rich, Kubernetes-native, Next-Generation API Gateway Built on Envoy gloo 项目地址: https://gitcode.com/gh_mirrors/glo/gloo

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柏滢凝Wayne

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值