如何配置 Bitnami Redis Helm Chart 以在单独的 Pod 中部署每个 Redis 实例和 Sentinel

问题描述 投票:0回答:1

我正在使用 terraform,它使用 Bitnami Redis Helm 图表在 Kubernetes 上部署 Redis,并且需要对其进行配置,以便每个 Redis 实例和 Sentinel 在自己单独的 pod 中运行。目前,我有一个设置,其中 Redis 主服务器和从服务器以及 Sentinel 位于同一个 Pod 中。

这是我的 main.tf 文件的片段:

resource "helm_release" "redis" {
  name       = "redis"
  namespace  = "redis"
  chart      = "redis"
  repository = "oci://registry-1.docker.io/bitnamicharts"
  version    = "20.0.5"
  create_namespace = true
  values = [
    <<-EOF

    persistence:
      enabled: true
      existingClaim: ${kubernetes_persistent_volume_claim.longhorn_pvc.metadata[0].name}

    master:
      persistence:
        enabled: false

    replica:
      persistence:
        enabled: false
      replicaCount: 2

    sentinel:
      enabled: true
    
    auth:
      password: ${var.redis_password}

    ingress:
      enabled: true
      annotations: {}
      hosts:
        - host: ${var.redis_host}
          paths:
            - /
      tls: []

    EOF
  ]

  depends_on = [rke_cluster.k8s, local_file.kubeconfig]
}

但是,使用此配置进行部署会导致 Redis 主服务器和从服务器与 Sentinel 容器位于同一 pod 中。运行 terraform apply 命令后,k8s 集群包含这些带有 redis 命名空间的 pod:

root@m:~/tf-infra$ kubectl get pods -n redis
NAME           READY   STATUS    RESTARTS   AGE
redis-node-0   2/2     Running   0          122m
redis-node-1   2/2     Running   0          122m

我想实现以下pod配置:

  • redis-node-0:仅包含 Redis master
  • redis-node-1:仅包含 Redis 从站
  • sentinel-node-1:仅包含一个Sentinel实例,端口:26379
  • sentinel-node-2:仅包含一个Sentinel实例,端口:26380
  • sentinel-node-3:仅包含一个Sentinel实例,端口:26381

如何修改values.yaml或Helm图表以确保每个实例(主实例、副本实例和Sentinel实例)都部署在单独的Pod中?

现在我正在一台linux服务器上测试它。 下一步将使用 terraform 将每个节点部署到不同的 Linux 服务器。

auth:
  enabled: true
  password: ${var.redis_password}

master:
  persistence:
    enabled: false
  replicaCount: 1

replica:
  replicaCount: 1
  persistence:
    enabled: false

sentinel:
  enabled: true
  replicaCount: 3

我预计此配置会创建 5 个独立的 pod:

  • Redis master 的一个 pod
  • Redis 副本的一个 pod
  • 用于 Sentinel 实例的三个 Pod

但是,应用此配置后,我只看到两个 pod:redis-node-0 和 redis-node-1。每个 Pod 都包含两个容器:一个用于 Redis(主或副本),一个用于 Sentinel。

redis terraform kubernetes-helm redis-sentinel
1个回答
0
投票

查看 Redis Sentinel Gateway — 它有助于管理 Redis 故障转移,而无需在应用程序代码中实现 Sentinel 支持。非常适合需要高可用性的遗留应用程序!

© www.soinside.com 2019 - 2024. All rights reserved.