首页
/ Elastic Cloud on Kubernetes (ECK) 中配置 Azure 快照存储库的实践指南

Elastic Cloud on Kubernetes (ECK) 中配置 Azure 快照存储库的实践指南

2025-06-29 07:55:56作者:秋阔奎Evelyn

背景介绍

在使用 Elastic Cloud on Kubernetes (ECK) 管理 Elasticsearch 集群时,配置 Azure Blob Storage 作为快照存储库是一个常见的需求。然而,这一过程可能会遇到各种配置问题,特别是在使用 Azure Workload Identity 进行身份验证时。

常见问题分析

在 Elasticsearch 8.14 版本中,用户经常会遇到两类典型错误:

  1. 客户端配置错误:表现为"Unable to find client with name [default]"的错误信息,这通常是由于 Azure 客户端配置不完整导致的。

  2. 插件加载失败:Elasticsearch 容器启动时崩溃,日志显示"failed to load plugin class [org.elasticsearch.repositories.azure.AzureRepositoryPlugin]",这往往与身份验证凭据缺失有关。

解决方案详解

版本兼容性注意事项

首先需要明确的是,Azure Workload Identity 仅在 Elasticsearch 8.16 及以上版本中完全支持。对于 8.14 版本,需要采用传统的账户密钥认证方式。

完整配置步骤

1. 基础配置

对于 Elasticsearch 8.14,必须显式配置账户凭据:

apiVersion: elasticsearch.k8s.elastic.co/v1
kind: Elasticsearch
metadata:
  name: es-cluster
spec:
  version: 8.14.0
  secureSettings:
    - secretName: azure-account-secret

对应的 Secret 应包含:

kubectl create secret generic azure-account-secret \
  --from-literal=azure.client.default.account=<STORAGE_ACCOUNT_NAME> \
  --from-literal=azure.client.default.key=<STORAGE_ACCOUNT_KEY>

2. 使用 Workload Identity 的配置(8.16+)

对于支持 Workload Identity 的版本,配置更为简洁:

nodeSets:
  - name: master
    count: 2
    podTemplate:
      metadata:
        labels:
          azure.workload.identity/use: "true"
      spec:
        serviceAccountName: "elasticsearch-sa"
        containers:
          - name: elasticsearch
            env:
              - name: AZURE_CLIENT_ID
                valueFrom:
                  secretKeyRef:
                    name: azure-identity-secret
                    key: clientId
              - name: AZURE_TENANT_ID
                valueFrom:
                  secretKeyRef:
                    name: azure-identity-secret
                    key: tenantId
              - name: AZURE_FEDERATED_TOKEN_FILE
                value: /usr/share/elasticsearch/config/azure/tokens/azure-identity-token
            volumeMounts:
              - name: azure-identity-token
                mountPath: /usr/share/elasticsearch/config/azure/tokens

3. 关键配置要点

  1. 令牌文件位置:Azure 联合令牌必须挂载到 Elasticsearch 容器的 /usr/share/elasticsearch/config 目录下,这是 Elasticsearch 查找配置的标准路径。

  2. 环境变量:必须正确设置 AZURE_CLIENT_IDAZURE_TENANT_IDAZURE_FEDERATED_TOKEN_FILE 环境变量。

  3. 服务账户:确保 Pod 使用了正确的服务账户,并且该账户已配置 Workload Identity 联合凭证。

验证与测试

配置完成后,可以通过以下 API 验证快照存储库:

PUT _snapshot/my_azure_repo
{
  "type": "azure",
  "settings": {
    "container": "my-backup-container"
  }
}

成功的响应应返回确认信息,而非错误消息。

最佳实践建议

  1. 版本选择:尽可能使用 Elasticsearch 8.16 或更高版本,以获得对 Workload Identity 的完整支持。

  2. 权限隔离:为快照操作使用专用的存储账户和容器,遵循最小权限原则。

  3. 监控配置:定期检查快照作业状态,确保配置持续有效。

  4. 备份策略:结合 Elasticsearch 的快照生命周期管理(SLM)功能,实现自动化备份。

通过以上配置和最佳实践,可以在 ECK 上稳定地使用 Azure Blob Storage 作为 Elasticsearch 快照存储库,确保数据的安全性和可恢复性。

登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
24
9
nop-entropynop-entropy
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
9
1
leetcodeleetcode
🔥LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解
Java
64
19
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
392
3.87 K
flutter_flutterflutter_flutter
暂无简介
Dart
671
155
giteagitea
喝着茶写代码!最易用的自托管一站式代码托管平台,包含Git托管,代码审查,团队协作,软件包和CI/CD。
Go
23
0
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
JavaScript
260
322
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
661
309
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
1.19 K
653
rainbondrainbond
无需学习 Kubernetes 的容器平台,在 Kubernetes 上构建、部署、组装和管理应用,无需 K8s 专业知识,全流程图形化管理
Go
15
1