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

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