将 GitOps 和 Grafana Operator 与 Amazon Managed Grafana 配合使用
如何使用本指南
本可观测性最佳实践指南面向希望了解如何将 grafana-operator 作为 Kubernetes operator 部署在 Amazon EKS 集群上,以 Kubernetes 原生方式在 Amazon Managed Grafana 中创建和管理 Grafana 资源和 dashboard 生命周期的开发人员和架构师。
简介
客户使用 Grafana 作为开源分析和监控解决方案的可观测性平台。我们看到在 Amazon EKS 上运行工作负载的客户希望将注意力转向工作负载本身,并依赖 Kubernetes 原生控制器来部署和管理外部资源(如云资源)的生命周期。我们看到客户安装 AWS Controllers for Kubernetes (ACK) 来创建、部署和管理 AWS 服务。如今许多客户选择将 Prometheus 和 Grafana 实现卸载到托管服务,在 AWS 中这些服务是 Amazon Managed Service for Prometheus 和 Amazon Managed Grafana,用于监控其工作负载。
客户在使用 Grafana 时面临的一个常见挑战是,如何从 Kubernetes 集群中在外部 Grafana 实例(如 Amazon Managed Grafana)中创建和管理 Grafana 资源和 dashboard 的生命周期。客户在寻找方法来完全自动化和管理整个系统的基础设施和应用程序部署(包括在 Amazon Managed Grafana 中创建 Grafana 资源)时面临挑战,希望使用基于 Git 的工作流。在本可观测性最佳实践指南中,我们将重点关注以下主题:
- Grafana Operator 简介 - 一个从 Kubernetes 集群管理外部 Grafana 实例的 Kubernetes operator
- GitOps 简介 - 使用基于 Git 的工作流创建和管理基础设施的自动化机制
- 在 Amazon EKS 上使用 Grafana Operator 管理 Amazon Managed Grafana
- 在 Amazon EKS 上使用 GitOps 与 Flux 管理 Amazon Managed Grafana
Grafana Operator 简介
grafana-operator 是一个为帮助您在 Kubernetes 内管理 Grafana 实例而构建的 Kubernetes operator。Grafana Operator 使您能够以声明式方式在多个实例之间轻松且可扩展地管理和创建 Grafana dashboard、datasources 等。Grafana operator 现在支持管理托管在外部环境(如 Amazon Managed Grafana)上的 dashboard、datasources 等资源。这最终使我们能够使用 CNCF 项目(如 Flux)的 GitOps 机制从 Amazon EKS 集群创建和管理 Amazon Managed Grafana 中资源的生命周期。
GitOps 简介
什么是 GitOps 和 Flux
GitOps 是一种软件开发和运维方法论,使用 Git 作为部署配置的唯一事实来源。它涉及将应用程序或基础设施的期望状态保存在 Git 仓库中,并使用基于 Git 的工作流来管理和部署变更。GitOps 是一种管理应用程序和基础设施部署的方式,使整个系统在 Git 仓库中以声明式方式描述。它是一种运维模型,为您提供利用版本控制、不可变制品和自动化最佳实践来管理多个 Kubernetes 集群状态的能力。
Flux 是一个 GitOps 工具,可以自动化 Kubernetes 上应用程序的部署。它通过持续监控 Git 仓库的状态并将任何变更应用到集群来工作。Flux 与 GitHub、GitLab 和 Bitbucket 等各种 Git 提供商集成。当仓库发生变更时,Flux 会自动检测并相应地更新集群。
使用 Flux 的优势
- 自动化部署:Flux 自动化了部署过程,减少了人为错误,让开发人员可以专注于其他任务。
- 基于 Git 的工作流:Flux 利用 Git 作为事实来源,使跟踪和回滚变更更加容易。
- 声明式配置:Flux 使用 Kubernetes manifests 来定义集群的期望状态,使管理和跟踪变更更加容易。
采用 Flux 的挑战
- 有限的自定义:Flux 仅支持有限的自定义集,可能不适用于所有用例。
- 学习曲线陡峭:Flux 对新用户有较陡的学习曲线,需要对 Kubernetes 和 Git 有深入的了解。