ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Loki Operator 快速上手指南:一条命令在 kind 上部署 LokiStack 完整开发环境

Loki Operator 快速上手指南:一条命令在 kind 上部署 LokiStack 完整开发环境 Loki Operator 快速上手指南一条命令在 kind 上部署 LokiStack 完整开发环境【免费下载链接】lokiLike Prometheus, but for logs.项目地址: https://gitcode.com/GitHub_Trending/lok/loki导读本文是 Loki Operator 与 LokiStack 的快速上手Quick Start指南对应仓库文档 operator/docs/prologue/quickstart.md。你将掌握如何用make quickstart在本地 kind 集群上一键拉起一套完整的 Loki Operator 演示环境含 Traefik 网关、Hydra OIDC、日志生成器等并学会如何用自定义镜像仓库REGISTRY_BASE测试自己 fork 的代码。读完本文你能独立完成 Loki Operator 的本地部署、验证与清理并理解整个启动链路背后的 Makefile 与quickstart.sh实现细节。前置要求把 kind 作为起点官方推荐的最简上手方式是使用 Kubernetes 的 kindKubernetes in Docker。kind 用 Docker 容器充当集群节点专门用于本地开发、测试与 CI无需真实的多节点集群即可模拟完整的控制面体验。除了 kind 本身你还需要kubectl或 OpenShift CLI用于与集群通信后续所有验证命令都依赖它一个本地可用的容器运行时podman或docker因为集群节点与镜像构建都依赖容器若要用自定义镜像测试代码改动还需要一个你能推送镜像的容器注册表如 quay.io。一、最简部署make quickstart在仓库的operator目录下执行一条命令即可完成全部部署make quickstart这是面向演示目的demo purposes最简单的方式它会自动创建一个本地 kind 集群然后依次部署 Loki Operator、LokiStack 以及配套的演示组件。1.1make quickstart背后做了什么从源码看quickstart是 operator/Makefile 中定义的伪目标它依赖$(KIND)并直接转交执行脚本.PHONY: quickstart quickstart: $(KIND) ## Quickstart full dev environment on local kind cluster ./quickstart.sh $(filter-out $,$(MAKECMDGOALS))也就是说make quickstart的真正执行主体是 operator/quickstart.sh。该脚本在未指定子命令时按以下顺序完成全部步骤见脚本末尾的case默认分支阶段脚本函数实际动作1. 创建集群setupkind create cluster --confighack/kind_config.yaml2. 签发证书certificates部署 cert-manager 并创建本地 CA 证书与 CA bundle3. 依赖组件deps部署 Traefik Ingress、Hydra OIDC Provider、OIDC Token Refresher4. 部署 Operatoroperatormake deploy后等待controller-manager与minio就绪5. 创建 LokiStacklokistack应用hack/lokistack_gateway_dev.yaml并等待lokistack-devReady6. 日志生成器logger部署hack/addons_logger.yaml产生持续日志流量脚本开头执行set -eou pipefail任何一步失败都会立即中止保证环境不会停留在半部署状态。1.2 kind 集群与端口映射setup阶段使用的集群配置是 operator/hack/kind_config.yaml它通过kubeadmConfigPatches为控制面节点打上ingress-readytrue标签并映射两个宿主机端口extraPortMappings: - containerPort: 8081 hostPort: 8081 # Traefik Web Port - containerPort: 8082 hostPort: 8082 # Traefik Admin Port这两个端口映射是后续验证命令如logcli --addr http://localhost:8081/...能够访问集群内服务的关键如果端口被占用环境将无法按预期工作。1.3 部署与验证链路deps阶段依次完成三件依赖部署每一步都带有明确的就绪等待Traefik Ingress Controller应用 operator/hack/addons_traefik.yamlkubectl -n traefik rollout status deployment traefik等待就绪Hydra OIDC Provider应用 operator/hack/addons_hydra.yaml除等待 deployment 外还kubectl wait --timeout180s --forconditioncomplete job/usercreator等待用户初始化任务完成OIDC Token Refresher应用 operator/hack/addons_token_refresher.yaml等待token-refresherdeployment 就绪。operator阶段执行make deploy该目标见 operator/Makefile会先用 kustomize 把IMG写入config/manager再构建config/overlays/developmentoverlay 并kubectl applydeploy: manifests $(KUSTOMIZE) ## Deploy controller in the configured Kubernetes cluster in ~/.kube/config cd config/manager $(KUSTOMIZE) edit set image controller${IMG} $(KUSTOMIZE) build config/overlays/development | kubectl apply -f -随后quickstart.sh依次等待controller-manager与minio两个 deployment 完成 rolloutminio 作为对象存储服务于 LokiStack 的存储后端。lokistack阶段应用 operator/hack/lokistack_gateway_dev.yaml这是一个loki.grafana.com/v1的LokiStack自定义资源规格要点包括size: 1x.demo使用最小的单副本演示规格storage.schemasschema v13生效日期2023-10-15存储类型为s3secret 名为testtenants.mode: static静态租户配置租户test-oidc通过 HydraissuerURL: http://hydra.hydra.svc:4444/做 OIDC 认证并授权read-write角色含read/write权限与logs资源。创建后脚本执行kubectl wait --forconditionReady --timeout5m lokistack/lokistack-dev最长等待 5 分钟直到 LokiStack 就绪。二、验证部署确认整套环境可用quickstart.sh还内置了一个验证子命令可在部署完成后执行./quickstart.sh check其内部实现是使用logcli通过 OIDC Token Refresher 网关查询标签logcli --addr http://localhost:8081/token-refresher/api/logs/v1/test-oidc labels这条命令借助第 1.2 节映射的 8081 端口经 Traefik 进入 Token Refresher再以租户test-oidc的身份向 LokiStack 发起查询。如果环境正确它会返回当前日志流的标签集合。你也可以用常规的 kubectl 方式检查各组件状态kubectl get deploy -A kubectl get lokistack kubectl get pods -n loki-operator三、使用自己的镜像fork 仓库后的本地开发默认情况下make quickstart使用社区发布镜像。如果你想测试自己 fork 仓库中的代码改动需要提供你拥有权限的镜像仓库组织其镜像仓库名必须为loki-operator例如quay.io/my-company-org/loki-operator然后执行make oci-build oci-push quickstart REGISTRY_BASEquay.io/my-company-org3.1REGISTRY_BASE如何决定镜像地址REGISTRY_BASE在 operator/Makefile 中定义它决定了 operator、bundle、计算器等所有镜像的完整名称REGISTRY_BASE_COMMUNITY docker.io/grafana REGISTRY_BASE_OPENSHIFT quay.io/openshift-logging REGISTRY_BASE ? $(REGISTRY_BASE_COMMUNITY) # Image URL to use all building/pushing image targets IMG ? $(REGISTRY_BASE)/loki-operator:$(VERSION)默认REGISTRY_BASE为docker.io/grafana社区版当VARIANTopenshift且未显式指定REGISTRY_BASE时会自动切换到quay.io/openshift-logging见 operator/Makefile同时版本、channel、命名空间也会相应切换覆盖REGISTRY_BASE后IMG会随之变为quay.io/my-company-org/loki-operator:VERSION。3.2oci-build与oci-push的作用这两个目标分别负责构建与推送 operator 镜像见 operator/Makefile 附近的定义.PHONY: oci-build oci-build: ## Build the image $(OCI_RUNTIME) build -t ${IMG} . .PHONY: oci-push oci-push: ## Push the image $(OCI_RUNTIME) push ${IMG}注意OCI_RUNTIME定义为which podman || which dockeroperator/Makefile即优先使用 podman、否则使用 docker 作为容器运行时。执行顺序是先oci-build把当前代码构建成镜像并打上REGISTRY_BASE标签再oci-push推送到你的注册表最后quickstart脚本里的make deploy会把 kustomize overlay 中的controller镜像替换为这个自定义镜像因为IMG已经指向你的仓库。VERSION变量默认值为0.11.0operator/Makefile需要时可用VERSIONlatest之类的方式覆盖参考 hack 指南中的用法make oci-build oci-push deploy REGISTRY_BASE$YOUR_REPO_ORG VERSIONlatest。四、清理环境快速上手环境的清理同样是一条命令make quickstart-cleanup对应的 Makefile 目标operator/Makefile非常简单——直接删除整个 kind 集群.PHONY: quickstart-cleanup quickstart-cleanup: $(KIND) ## Cleanup for quickstart set up $(KIND) delete cluster删除集群即意味着所有 deployment、LokiStack、证书与配置全部随之清除本地环境回到初始状态。五、进阶开发两条深入路径当make quickstart的演示环境跑通之后若想深入参与 Loki Operator 的开发官方提供了两条不同的 hack 路径可按需选择基于镜像注册表的方式Hack using an image registry见 operator/docs/operator/hack_loki_operator.md。适用于希望以构建镜像 → 推送 → 部署的完整流程验证改动行为与生产发布最接近。其核心命令为make oci-build oci-push deploy REGISTRY_BASE$YOUR_REPO_ORG VERSIONlatestoperator 会部署到你 kubeconfig 指定的活跃集群的default命名空间可用kubectl get crd lokistacks.loki.grafana.com等命令验证 CRD 与运行状态。基于make run的方式Hack using make run见 operator/docs/operator/hack_operator_make_run.md。适用于频繁修改 operator 代码、不想每次改动都重新构建镜像的场景。核心命令是make install # 安装 CRDlokistacks.loki.grafana.com make run # 在本地直接运行 operatorgo run ./cmd/loki-operator/main.go其中make run目标operator/Makefile会先执行generate manifests再go run ./cmd/loki-operator/main.go让 operator 以本地进程方式连接集群省去镜像构建与推送的开销。六、从源码理解整套环境关键文件索引文件作用operator/Makefile定义quickstart、quickstart-cleanup、deploy、oci-build、oci-push等全部目标及REGISTRY_BASE、IMG、VERSION变量operator/quickstart.shmake quickstart的实际执行脚本串联 setup/certificates/deps/operator/lokistack/logger 各阶段operator/hack/kind_config.yamlkind 集群配置ingress-ready 标签与 8081/8082 端口映射operator/hack/lokistack_gateway_dev.yaml演示用的 LokiStack CR1x.demo 规格、S3 存储、静态租户 OIDCoperator/hack/addons_traefik.yamlTraefik Ingress Controller 部署清单operator/hack/addons_hydra.yamlHydra OIDC Provider 部署清单operator/hack/addons_token_refresher.yamlOIDC Token Refresher 部署清单operator/hack/addons_logger.yaml日志生成器为 LokiStack 持续制造日志流量operator/hack/addons_cert_manager.yamlcert-manager 与本地 CA 证书签发总结Loki Operator 的快速上手路径非常清晰make quickstart一条命令即可在 kind 上获得包含 Loki Operator、LokiStack、Traefik、Hydra OIDC 与日志生成器的完整演示环境./quickstart.sh check或logcli命令可验证数据通路make oci-build oci-push quickstart REGISTRY_BASE你的仓库则把流程无缝切换到自定义镜像支撑 fork 场景下的本地迭代最后用make quickstart-cleanup一键回收。理解 operator/quickstart.sh 与 operator/Makefile 的实现后你既可以把它当作演示工具也可以作为深入 Loki Operator 开发镜像注册表方式或make run方式的起点。【免费下载链接】lokiLike Prometheus, but for logs.项目地址: https://gitcode.com/GitHub_Trending/lok/loki创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表