Install Kloudfuse with Multiple Zone Availability

The Kloudfuse platform supports pods deployment across multiple availability zones (multi-AZ) to ensure high availability and fault tolerance. Each zone must have at least one pod to run the supported components.

Current support for multi-AZ is limited to:

  • Ingress-NGINX

  • Redis (primary/secondary architecture)

  • Ingester

This configuration helps maintain service continuity in the event of a zone-level failure, by distributing workloads across multiple zones.

Specify these values in your custom-values.yaml file:

Configuration for Multi-AZ Cluster Setup
ingester:
  replicaCount: 1 (1)
  service:
    annotations:
      service.kubernetes.io/topology-mode: Auto

ingress-nginx:
  controller:
    service:
      annotations:
        service.kubernetes.io/topology-mode: Auto
    replicaCount: 3 (1)
    updateStrategy:
      rollingUpdate:
        maxUnavailable: 1
      type: RollingUpdate
    affinity: (2)
      podAntiAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
        - labelSelector:
            matchLabels:
              app.kubernetes.io/name: ingress-nginx
              app.kubernetes.io/component: controller
              app.kubernetes.io/instance: kfuse-pipeline (3)
          topologyKey: "kubernetes.io/zone"

redis:
  replica: (4)
    replicaCount: 1 (1)
    updateStrategy:
      rollingUpdate:
        maxUnavailable: 1
      type: RollingUpdate
    affinity:
      podAntiAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
        - labelSelector:
            matchLabels:
              app.kubernetes.io/name: kfuse-redis
              app.kubernetes.io/component: replica
              app.kubernetes.io/instance: kfuse-pipeline (3)
          topologyKey: "kubernetes.io/zone"
  sentinel:
    service:
      annotations:
        service.kubernetes.io/topology-mode: Auto
1 For multi-AZ cluster setup, replica counts must be k * (number of different zones in the cluster), where k= 1,2,3…​.
2 Must allow restarts with strict podAntiAffinity; one pod can be destroyed so a new one can be created on the same node.
3 Must be the same as the release name.
4 replicaCount: Specify the number of PostgreSQL replicas to deploy