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

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

2025-06-29 03:08:09作者:秋阔奎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
22
6
docsdocs
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
139
1.91 K
nop-entropynop-entropy
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
8
0
金融AI编程实战金融AI编程实战
为非计算机科班出身 (例如财经类高校金融学院) 同学量身定制,新手友好,让学生以亲身实践开源开发的方式,学会使用计算机自动化自己的科研/创新工作。案例以量化投资为主线,涉及 Bash、Python、SQL、BI、AI 等全技术栈,培养面向未来的数智化人才 (如数据工程师、数据分析师、数据科学家、数据决策者、量化投资人)。
Jupyter Notebook
73
63
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
344
1.3 K
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
922
551
PaddleOCRPaddleOCR
飞桨多语言OCR工具包(实用超轻量OCR系统,支持80+种语言识别,提供数据标注与合成工具,支持服务器、移动端、嵌入式及IoT设备端的训练与部署) Awesome multilingual OCR toolkits based on PaddlePaddle (practical ultra lightweight OCR system, support 80+ languages recognition, provide data annotation and synthesis tools, support training and deployment among server, mobile, embedded and IoT devices)
Python
47
1
easy-eseasy-es
Elasticsearch 国内Top1 elasticsearch搜索引擎框架es ORM框架,索引全自动智能托管,如丝般顺滑,与Mybatis-plus一致的API,屏蔽语言差异,开发者只需要会MySQL语法即可完成对Es的相关操作,零额外学习成本.底层采用RestHighLevelClient,兼具低码,易用,易拓展等特性,支持es独有的高亮,权重,分词,Geo,嵌套,父子类型等功能...
Java
36
8
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
192
273
leetcodeleetcode
🔥LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解
Java
59
16