Elastic Cloud on Kubernetes (ECK) 开发环境搭建指南
cloud-on-k8s Elastic Cloud on Kubernetes 项目地址: https://gitcode.com/gh_mirrors/cl/cloud-on-k8s
前言
Elastic Cloud on Kubernetes (ECK) 是一个在 Kubernetes 上运行 Elasticsearch、Kibana、APM Server 等 Elastic Stack 组件的官方解决方案。本文将详细介绍如何搭建 ECK 项目的开发环境,帮助开发者快速上手项目开发工作。
开发环境要求
在开始之前,请确保您的系统满足以下基本要求:
基础工具
- Go 语言环境:版本不低于 1.17,用于编译和运行项目代码
- golangci-lint:Go 语言的静态代码分析工具,用于代码质量检查
- kubectl:Kubernetes 命令行工具,版本不低于 1.14
- kubebuilder:Kubernetes Operator SDK,版本不低于 2.0.0
- Docker:容器运行时环境,版本不低于 19.0.0,建议安装 buildx 扩展以支持多架构构建
- Helm:Kubernetes 包管理工具,版本不低于 3.2.0,推荐使用 3.9.x 版本
- helm-unittest:Helm 图表单元测试插件(仅在开发 Helm 图表时需要)
Kubernetes 环境
您可以选择以下任意一种 Kubernetes 环境:
- 本地开发集群(Minikube 或 Kind)
- 云服务商托管的 Kubernetes 集群(如 GKE、AKS 等)
获取项目源码
通过以下命令获取 ECK 项目源码:
git clone <项目仓库地址>
cd cloud-on-k8s
环境检查
运行以下命令检查所有依赖是否已正确安装:
make check-requisites
开发环境配置
1. 安装项目依赖
make dependencies
该命令会下载项目编译所需的 Go 库依赖。
2. 配置 Kubernetes 集群
根据您的需求选择以下任意一种方式配置开发集群:
使用 Minikube
make bootstrap-minikube
使用 Kind
make switch-kind bootstrap-cloud
使用云服务商集群
-
GKE(Google Kubernetes Engine):
make switch-gke bootstrap-cloud
-
AKS(Azure Kubernetes Service):
make switch-aks bootstrap-cloud
3. 配置 Docker 镜像仓库
默认使用 Elastic 官方镜像仓库 docker.elastic.co
和 eck-dev
命名空间。您需要执行 docker login
进行认证后才能推送镜像。
如需使用其他镜像仓库,可创建 .registry.env
文件进行配置。例如,使用 Google Container Registry:
REGISTRY = eu.gcr.io
REGISTRY_NAMESPACE = my-gcloud-project
E2E_REGISTRY_NAMESPACE = my-gcloud-project
部署 Operator
本地运行 Operator
make run
部署到 Kubernetes 集群
make deploy
应用示例资源
make samples
测试运行
单元测试和集成测试
make unit integration
E2E 测试
E2E 测试将在 e2e-mercury
和 e2e-venus
命名空间中运行。首先启动 Operator:
make run
然后在另一个终端中运行:
make e2e-local
APM 追踪配置
ECK 集成了 Elastic APM 追踪功能。要启用 APM 追踪,请运行:
ENABLE_TRACING=true \
ELASTIC_APM_SERVER_URL=https://<apm-server-url> \
ELASTIC_APM_SECRET_TOKEN=<token> \
ELASTIC_APM_VERIFY_SERVER_CERT=false \
make run
开发模式
使用 --development
标志启动 Operator 可启用开发模式,该模式下提供以下额外功能:
| 标志 | 描述 | | ---- | ---- | | auto-port-forward
| 允许 Operator 在本地运行(Kubernetes 集群外部),通过端口转发连接到远程集群 | | debug-http-listen
| 调试服务器监听地址,提供 pprof 端点访问,默认为 localhost:6060
|
学习资源
为了更好理解 ECK 的工作原理,建议阅读以下 Kubernetes 核心概念:
- 资源(Resources):理解 Kubernetes 中的自定义资源定义(CRD)
- 控制器(Controllers):了解 Kubernetes 控制器的基本工作原理
- 控制器管理器(Controller Managers):掌握控制器管理器的角色和功能
结语
通过本文的指导,您应该已经成功搭建了 ECK 的开发环境,并了解了基本的开发流程。接下来可以开始探索 ECK 的源代码,参与功能开发或问题修复。建议从简单的示例开始,逐步深入理解 ECK 的架构设计和工作原理。
cloud-on-k8s Elastic Cloud on Kubernetes 项目地址: https://gitcode.com/gh_mirrors/cl/cloud-on-k8s
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考