Only in step1/mimir-distributed/charts: rollout_operator
diff -c -r step0/mimir-distributed/templates/mimir-config.yaml step1/mimir-distributed/templates/mimir-config.yaml
*** step0/mimir-distributed/templates/mimir-config.yaml
--- step1/mimir-distributed/templates/mimir-config.yaml
***************
*** 89,92 ****
--- 89,95 ----
        grpc_server_max_connection_idle: 1m
      store_gateway:
        sharding_ring:
+         kvstore:
+           prefix: multi-zone/
          tokens_file_path: /data/tokens
+         zone_awareness_enabled: true
diff -c -r step0/mimir-distributed/templates/querier/querier-dep.yaml step1/mimir-distributed/templates/querier/querier-dep.yaml
*** step0/mimir-distributed/templates/querier/querier-dep.yaml
--- step1/mimir-distributed/templates/querier/querier-dep.yaml
***************
*** 47,52 ****
--- 47,54 ----
              - "-target=querier"
              - "-config.expand-env=true"
              - "-config.file=/etc/mimir/mimir.yaml"
+             - "-store-gateway.sharding-ring.prefix=collectors/"
+             - "-store-gateway.sharding-ring.zone-awareness-enabled=false"
            volumeMounts:
              - name: config
                mountPath: /etc/mimir
diff -c -r step0/mimir-distributed/templates/ruler/ruler-dep.yaml step1/mimir-distributed/templates/ruler/ruler-dep.yaml
*** step0/mimir-distributed/templates/ruler/ruler-dep.yaml
--- step1/mimir-distributed/templates/ruler/ruler-dep.yaml
***************
*** 48,53 ****
--- 48,55 ----
              - "-target=ruler"
              - "-config.expand-env=true"
              - "-config.file=/etc/mimir/mimir.yaml"
+             - "-store-gateway.sharding-ring.prefix=collectors/"
+             - "-store-gateway.sharding-ring.zone-awareness-enabled=false"
            volumeMounts:
              - name: config
                mountPath: /etc/mimir
diff -c -r step0/mimir-distributed/templates/store-gateway/store-gateway-statefulset.yaml step1/mimir-distributed/templates/store-gateway/store-gateway-statefulset.yaml
*** step0/mimir-distributed/templates/store-gateway/store-gateway-statefulset.yaml
--- step1/mimir-distributed/templates/store-gateway/store-gateway-statefulset.yaml
***************
*** 81,86 ****
--- 81,460 ----
              - "-target=store-gateway"
              - "-config.expand-env=true"
              - "-config.file=/etc/mimir/mimir.yaml"
+             - "-store-gateway.sharding-ring.prefix=collectors/"
+             - "-store-gateway.sharding-ring.zone-awareness-enabled=false"
+           volumeMounts:
+             - name: config
+               mountPath: /etc/mimir
+             - name: runtime-config
+               mountPath: /var/mimir
+             - name: storage
+               mountPath: "/data"
+           ports:
+             - name: http-metrics
+               containerPort: 8080
+               protocol: TCP
+             - name: grpc
+               containerPort: 9095
+               protocol: TCP
+             - name: memberlist
+               containerPort: 7946
+               protocol: TCP
+           livenessProbe:
+             null
+           readinessProbe:
+             httpGet:
+               path: /ready
+               port: http-metrics
+             initialDelaySeconds: 60
+           resources:
+             requests:
+               cpu: 100m
+               memory: 512Mi
+           securityContext:
+             readOnlyRootFilesystem: true
+           env:
+           envFrom:
+ ---
+ # Source: mimir-distributed/templates/store-gateway/store-gateway-statefulset.yaml
+ apiVersion: apps/v1
+ kind: StatefulSet
+ metadata:
+   name: krajo-mimir-store-gateway-zone-a
+   labels:
+     app.kubernetes.io/name: mimir
+     app.kubernetes.io/instance: krajo
+     app.kubernetes.io/component: store-gateway
+     app.kubernetes.io/part-of: memberlist
+     app.kubernetes.io/managed-by: Helm
+     name: "store-gateway-zone-a"
+     rollout-group: store-gateway
+     zone: zone-a
+   annotations:
+     rollout-max-unavailable: "50"
+   namespace: "default"
+ spec:
+   replicas: 1
+   selector:
+     matchLabels:
+       app.kubernetes.io/name: mimir
+       app.kubernetes.io/instance: krajo
+       app.kubernetes.io/component: store-gateway
+       rollout-group: store-gateway
+       zone: zone-a
+   updateStrategy:
+     type: OnDelete
+   serviceName: krajo-mimir-store-gateway-headless
+   volumeClaimTemplates:
+     - metadata:
+         name: storage
+       spec:
+         accessModes:
+           - ReadWriteOnce
+         resources:
+           requests:
+             storage: "2Gi"
+   template:
+     metadata:
+       labels:
+         app.kubernetes.io/name: mimir
+         app.kubernetes.io/instance: krajo
+         app.kubernetes.io/managed-by: Helm
+         app.kubernetes.io/component: store-gateway
+         app.kubernetes.io/part-of: memberlist
+         name: "store-gateway-zone-a"
+         rollout-group: store-gateway
+         zone: zone-a
+       annotations:
+       namespace: "default"
+     spec:
+       serviceAccountName: krajo-mimir
+       securityContext:
+         {}
+       initContainers:
+         []
+       nodeSelector:
+         {}
+       affinity:
+         {}
+       topologySpreadConstraints:
+         - maxSkew: 1
+           topologyKey: kubernetes.io/hostname
+           whenUnsatisfiable: ScheduleAnyway
+           labelSelector:
+             matchLabels:
+               app.kubernetes.io/name: mimir
+               app.kubernetes.io/instance: krajo
+               app.kubernetes.io/component: store-gateway
+       tolerations:
+         []
+       terminationGracePeriodSeconds: 240
+       volumes:
+         - name: config
+           configMap:
+             name: krajo-mimir-config
+             items:
+               - key: "mimir.yaml"
+                 path: "mimir.yaml"
+         - name: runtime-config
+           configMap:
+             name: krajo-mimir-runtime
+       containers:
+         - name: store-gateway
+           imagePullPolicy: IfNotPresent
+           args:
+             - "-target=store-gateway"
+             - "-config.expand-env=true"
+             - "-config.file=/etc/mimir/mimir.yaml"
+             - "-store-gateway.sharding-ring.instance-availability-zone=zone-a"
+           volumeMounts:
+             - name: config
+               mountPath: /etc/mimir
+             - name: runtime-config
+               mountPath: /var/mimir
+             - name: storage
+               mountPath: "/data"
+           ports:
+             - name: http-metrics
+               containerPort: 8080
+               protocol: TCP
+             - name: grpc
+               containerPort: 9095
+               protocol: TCP
+             - name: memberlist
+               containerPort: 7946
+               protocol: TCP
+           livenessProbe:
+             null
+           readinessProbe:
+             httpGet:
+               path: /ready
+               port: http-metrics
+             initialDelaySeconds: 60
+           resources:
+             requests:
+               cpu: 100m
+               memory: 512Mi
+           securityContext:
+             readOnlyRootFilesystem: true
+           env:
+           envFrom:
+ ---
+ # Source: mimir-distributed/templates/store-gateway/store-gateway-statefulset.yaml
+ apiVersion: apps/v1
+ kind: StatefulSet
+ metadata:
+   name: krajo-mimir-store-gateway-zone-b
+   labels:
+     app.kubernetes.io/name: mimir
+     app.kubernetes.io/instance: krajo
+     app.kubernetes.io/component: store-gateway
+     app.kubernetes.io/part-of: memberlist
+     app.kubernetes.io/managed-by: Helm
+     name: "store-gateway-zone-b"
+     rollout-group: store-gateway
+     zone: zone-b
+   annotations:
+     rollout-max-unavailable: "50"
+   namespace: "default"
+ spec:
+   replicas: 1
+   selector:
+     matchLabels:
+       app.kubernetes.io/name: mimir
+       app.kubernetes.io/instance: krajo
+       app.kubernetes.io/component: store-gateway
+       rollout-group: store-gateway
+       zone: zone-b
+   updateStrategy:
+     type: OnDelete
+   serviceName: krajo-mimir-store-gateway-headless
+   volumeClaimTemplates:
+     - metadata:
+         name: storage
+       spec:
+         accessModes:
+           - ReadWriteOnce
+         resources:
+           requests:
+             storage: "2Gi"
+   template:
+     metadata:
+       labels:
+         app.kubernetes.io/name: mimir
+         app.kubernetes.io/instance: krajo
+         app.kubernetes.io/managed-by: Helm
+         app.kubernetes.io/component: store-gateway
+         app.kubernetes.io/part-of: memberlist
+         name: "store-gateway-zone-b"
+         rollout-group: store-gateway
+         zone: zone-b
+       annotations:
+       namespace: "default"
+     spec:
+       serviceAccountName: krajo-mimir
+       securityContext:
+         {}
+       initContainers:
+         []
+       nodeSelector:
+         {}
+       affinity:
+         {}
+       topologySpreadConstraints:
+         - maxSkew: 1
+           topologyKey: kubernetes.io/hostname
+           whenUnsatisfiable: ScheduleAnyway
+           labelSelector:
+             matchLabels:
+               app.kubernetes.io/name: mimir
+               app.kubernetes.io/instance: krajo
+               app.kubernetes.io/component: store-gateway
+       tolerations:
+         []
+       terminationGracePeriodSeconds: 240
+       volumes:
+         - name: config
+           configMap:
+             name: krajo-mimir-config
+             items:
+               - key: "mimir.yaml"
+                 path: "mimir.yaml"
+         - name: runtime-config
+           configMap:
+             name: krajo-mimir-runtime
+       containers:
+         - name: store-gateway
+           imagePullPolicy: IfNotPresent
+           args:
+             - "-target=store-gateway"
+             - "-config.expand-env=true"
+             - "-config.file=/etc/mimir/mimir.yaml"
+             - "-store-gateway.sharding-ring.instance-availability-zone=zone-b"
+           volumeMounts:
+             - name: config
+               mountPath: /etc/mimir
+             - name: runtime-config
+               mountPath: /var/mimir
+             - name: storage
+               mountPath: "/data"
+           ports:
+             - name: http-metrics
+               containerPort: 8080
+               protocol: TCP
+             - name: grpc
+               containerPort: 9095
+               protocol: TCP
+             - name: memberlist
+               containerPort: 7946
+               protocol: TCP
+           livenessProbe:
+             null
+           readinessProbe:
+             httpGet:
+               path: /ready
+               port: http-metrics
+             initialDelaySeconds: 60
+           resources:
+             requests:
+               cpu: 100m
+               memory: 512Mi
+           securityContext:
+             readOnlyRootFilesystem: true
+           env:
+           envFrom:
+ ---
+ # Source: mimir-distributed/templates/store-gateway/store-gateway-statefulset.yaml
+ apiVersion: apps/v1
+ kind: StatefulSet
+ metadata:
+   name: krajo-mimir-store-gateway-zone-c
+   labels:
+     app.kubernetes.io/name: mimir
+     app.kubernetes.io/instance: krajo
+     app.kubernetes.io/component: store-gateway
+     app.kubernetes.io/part-of: memberlist
+     app.kubernetes.io/managed-by: Helm
+     name: "store-gateway-zone-c"
+     rollout-group: store-gateway
+     zone: zone-c
+   annotations:
+     rollout-max-unavailable: "50"
+   namespace: "default"
+ spec:
+   replicas: 1
+   selector:
+     matchLabels:
+       app.kubernetes.io/name: mimir
+       app.kubernetes.io/instance: krajo
+       app.kubernetes.io/component: store-gateway
+       rollout-group: store-gateway
+       zone: zone-c
+   updateStrategy:
+     type: OnDelete
+   serviceName: krajo-mimir-store-gateway-headless
+   volumeClaimTemplates:
+     - metadata:
+         name: storage
+       spec:
+         accessModes:
+           - ReadWriteOnce
+         resources:
+           requests:
+             storage: "2Gi"
+   template:
+     metadata:
+       labels:
+         app.kubernetes.io/name: mimir
+         app.kubernetes.io/instance: krajo
+         app.kubernetes.io/managed-by: Helm
+         app.kubernetes.io/component: store-gateway
+         app.kubernetes.io/part-of: memberlist
+         name: "store-gateway-zone-c"
+         rollout-group: store-gateway
+         zone: zone-c
+       annotations:
+       namespace: "default"
+     spec:
+       serviceAccountName: krajo-mimir
+       securityContext:
+         {}
+       initContainers:
+         []
+       nodeSelector:
+         {}
+       affinity:
+         {}
+       topologySpreadConstraints:
+         - maxSkew: 1
+           topologyKey: kubernetes.io/hostname
+           whenUnsatisfiable: ScheduleAnyway
+           labelSelector:
+             matchLabels:
+               app.kubernetes.io/name: mimir
+               app.kubernetes.io/instance: krajo
+               app.kubernetes.io/component: store-gateway
+       tolerations:
+         []
+       terminationGracePeriodSeconds: 240
+       volumes:
+         - name: config
+           configMap:
+             name: krajo-mimir-config
+             items:
+               - key: "mimir.yaml"
+                 path: "mimir.yaml"
+         - name: runtime-config
+           configMap:
+             name: krajo-mimir-runtime
+       containers:
+         - name: store-gateway
+           imagePullPolicy: IfNotPresent
+           args:
+             - "-target=store-gateway"
+             - "-config.expand-env=true"
+             - "-config.file=/etc/mimir/mimir.yaml"
+             - "-store-gateway.sharding-ring.instance-availability-zone=zone-c"
            volumeMounts:
              - name: config
                mountPath: /etc/mimir
diff -c -r step0/mimir-distributed/templates/store-gateway/store-gateway-svc.yaml step1/mimir-distributed/templates/store-gateway/store-gateway-svc.yaml
*** step0/mimir-distributed/templates/store-gateway/store-gateway-svc.yaml
--- step1/mimir-distributed/templates/store-gateway/store-gateway-svc.yaml
***************
*** 28,30 ****
--- 28,141 ----
      app.kubernetes.io/name: mimir
      app.kubernetes.io/instance: krajo
      app.kubernetes.io/component: store-gateway
+ ---
+ # Source: mimir-distributed/templates/store-gateway/store-gateway-svc.yaml
+ apiVersion: v1
+ kind: Service
+ metadata:
+   name: krajo-mimir-store-gateway-zone-a
+   labels:
+     app.kubernetes.io/name: mimir
+     app.kubernetes.io/instance: krajo
+     app.kubernetes.io/component: store-gateway
+     app.kubernetes.io/part-of: memberlist
+     app.kubernetes.io/managed-by: Helm
+     name: "store-gateway-zone-a"
+     rollout-group: store-gateway
+     zone: zone-a
+     # Prevent scraping PODs via this service during migration as the original non zone-aware service already scrapes all PODs and you get duplicate metrics.
+     prometheus.io/service-monitor: "false"
+   annotations:
+     {}
+   namespace: "default"
+ spec:
+   type: ClusterIP
+   ports:
+     - port: 8080
+       protocol: TCP
+       name: http-metrics
+       targetPort: http-metrics
+     - port: 9095
+       protocol: TCP
+       name: grpc
+       targetPort: grpc
+   selector:
+     app.kubernetes.io/name: mimir
+     app.kubernetes.io/instance: krajo
+     app.kubernetes.io/component: store-gateway
+     rollout-group: store-gateway
+     zone: zone-a
+ ---
+ # Source: mimir-distributed/templates/store-gateway/store-gateway-svc.yaml
+ apiVersion: v1
+ kind: Service
+ metadata:
+   name: krajo-mimir-store-gateway-zone-b
+   labels:
+     app.kubernetes.io/name: mimir
+     app.kubernetes.io/instance: krajo
+     app.kubernetes.io/component: store-gateway
+     app.kubernetes.io/part-of: memberlist
+     app.kubernetes.io/managed-by: Helm
+     name: "store-gateway-zone-b"
+     rollout-group: store-gateway
+     zone: zone-b
+     # Prevent scraping PODs via this service during migration as the original non zone-aware service already scrapes all PODs and you get duplicate metrics.
+     prometheus.io/service-monitor: "false"
+   annotations:
+     {}
+   namespace: "default"
+ spec:
+   type: ClusterIP
+   ports:
+     - port: 8080
+       protocol: TCP
+       name: http-metrics
+       targetPort: http-metrics
+     - port: 9095
+       protocol: TCP
+       name: grpc
+       targetPort: grpc
+   selector:
+     app.kubernetes.io/name: mimir
+     app.kubernetes.io/instance: krajo
+     app.kubernetes.io/component: store-gateway
+     rollout-group: store-gateway
+     zone: zone-b
+ ---
+ # Source: mimir-distributed/templates/store-gateway/store-gateway-svc.yaml
+ apiVersion: v1
+ kind: Service
+ metadata:
+   name: krajo-mimir-store-gateway-zone-c
+   labels:
+     app.kubernetes.io/name: mimir
+     app.kubernetes.io/instance: krajo
+     app.kubernetes.io/component: store-gateway
+     app.kubernetes.io/part-of: memberlist
+     app.kubernetes.io/managed-by: Helm
+     name: "store-gateway-zone-c"
+     rollout-group: store-gateway
+     zone: zone-c
+     # Prevent scraping PODs via this service during migration as the original non zone-aware service already scrapes all PODs and you get duplicate metrics.
+     prometheus.io/service-monitor: "false"
+   annotations:
+     {}
+   namespace: "default"
+ spec:
+   type: ClusterIP
+   ports:
+     - port: 8080
+       protocol: TCP
+       name: http-metrics
+       targetPort: http-metrics
+     - port: 9095
+       protocol: TCP
+       name: grpc
+       targetPort: grpc
+   selector:
+     app.kubernetes.io/name: mimir
+     app.kubernetes.io/instance: krajo
+     app.kubernetes.io/component: store-gateway
+     rollout-group: store-gateway
+     zone: zone-c
