首页
/ 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 快照存储库,确保数据的安全性和可恢复性。

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

项目优选

收起
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
176
260
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
854
505
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
129
182
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
254
295
ShopXO开源商城ShopXO开源商城
🔥🔥🔥ShopXO企业级免费开源商城系统,可视化DIY拖拽装修、包含PC、H5、多端小程序(微信+支付宝+百度+头条&抖音+QQ+快手)、APP、多仓库、多商户、多门店、IM客服、进销存,遵循MIT开源协议发布、基于ThinkPHP8框架研发
JavaScript
93
15
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
331
1.08 K
HarmonyOS-ExamplesHarmonyOS-Examples
本仓将收集和展示仓颉鸿蒙应用示例代码,欢迎大家投稿,在仓颉鸿蒙社区展现你的妙趣设计!
Cangjie
397
370
note-gennote-gen
一款跨平台的 Markdown AI 笔记软件,致力于使用 AI 建立记录和写作的桥梁。
TSX
83
4
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
1.07 K
0
kernelkernel
deepin linux kernel
C
21
5