Only in step1/mimir-distributed/charts: rollout_operator
diff -c -r step0/mimir-distributed/templates/distributor/distributor-dep.yaml step1/mimir-distributed/templates/distributor/distributor-dep.yaml
*** step0/mimir-distributed/templates/distributor/distributor-dep.yaml
--- step1/mimir-distributed/templates/distributor/distributor-dep.yaml
***************
*** 48,53 ****
--- 48,54 ----
              - "-target=distributor"
              - "-config.expand-env=true"
              - "-config.file=/etc/mimir/mimir.yaml"
+             - "-ingester.ring.zone-awareness-enabled=false"
            volumeMounts:
              - name: config
                mountPath: /etc/mimir
diff -c -r step0/mimir-distributed/templates/ingester/ingester-statefulset.yaml step1/mimir-distributed/templates/ingester/ingester-statefulset.yaml
*** step0/mimir-distributed/templates/ingester/ingester-statefulset.yaml
--- step1/mimir-distributed/templates/ingester/ingester-statefulset.yaml
***************
*** 83,88 ****
--- 83,465 ----
              - "-config.expand-env=true"
              - "-config.file=/etc/mimir/mimir.yaml"
              - "-ingester.ring.instance-availability-zone=zone-default"
+             - "-blocks-storage.tsdb.flush-blocks-on-shutdown=true"
+             - "-ingester.ring.unregister-on-shutdown=true"
+           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/ingester/ingester-statefulset.yaml
+ apiVersion: apps/v1
+ kind: StatefulSet
+ metadata:
+   name: krajo-mimir-ingester-zone-a
+   labels:
+     app.kubernetes.io/name: mimir
+     app.kubernetes.io/instance: krajo
+     app.kubernetes.io/component: ingester
+     app.kubernetes.io/part-of: memberlist
+     app.kubernetes.io/managed-by: Helm
+     name: "ingester-zone-a"
+     rollout-group: ingester
+     zone: zone-a
+   annotations:
+     rollout-max-unavailable: "50"
+   namespace: "default"
+ spec:
+   podManagementPolicy: Parallel
+   replicas: 0
+   selector:
+     matchLabels:
+       app.kubernetes.io/name: mimir
+       app.kubernetes.io/instance: krajo
+       app.kubernetes.io/component: ingester
+       rollout-group: ingester
+       zone: zone-a
+   updateStrategy:
+     type: OnDelete
+   serviceName: krajo-mimir-ingester-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: ingester
+         app.kubernetes.io/part-of: memberlist
+         name: "ingester-zone-a"
+         rollout-group: ingester
+         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: ingester
+       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: ingester
+           imagePullPolicy: IfNotPresent
+           args:
+             - "-target=ingester"
+             - "-config.expand-env=true"
+             - "-config.file=/etc/mimir/mimir.yaml"
+             - "-ingester.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/ingester/ingester-statefulset.yaml
+ apiVersion: apps/v1
+ kind: StatefulSet
+ metadata:
+   name: krajo-mimir-ingester-zone-b
+   labels:
+     app.kubernetes.io/name: mimir
+     app.kubernetes.io/instance: krajo
+     app.kubernetes.io/component: ingester
+     app.kubernetes.io/part-of: memberlist
+     app.kubernetes.io/managed-by: Helm
+     name: "ingester-zone-b"
+     rollout-group: ingester
+     zone: zone-b
+   annotations:
+     rollout-max-unavailable: "50"
+   namespace: "default"
+ spec:
+   podManagementPolicy: Parallel
+   replicas: 0
+   selector:
+     matchLabels:
+       app.kubernetes.io/name: mimir
+       app.kubernetes.io/instance: krajo
+       app.kubernetes.io/component: ingester
+       rollout-group: ingester
+       zone: zone-b
+   updateStrategy:
+     type: OnDelete
+   serviceName: krajo-mimir-ingester-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: ingester
+         app.kubernetes.io/part-of: memberlist
+         name: "ingester-zone-b"
+         rollout-group: ingester
+         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: ingester
+       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: ingester
+           imagePullPolicy: IfNotPresent
+           args:
+             - "-target=ingester"
+             - "-config.expand-env=true"
+             - "-config.file=/etc/mimir/mimir.yaml"
+             - "-ingester.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/ingester/ingester-statefulset.yaml
+ apiVersion: apps/v1
+ kind: StatefulSet
+ metadata:
+   name: krajo-mimir-ingester-zone-c
+   labels:
+     app.kubernetes.io/name: mimir
+     app.kubernetes.io/instance: krajo
+     app.kubernetes.io/component: ingester
+     app.kubernetes.io/part-of: memberlist
+     app.kubernetes.io/managed-by: Helm
+     name: "ingester-zone-c"
+     rollout-group: ingester
+     zone: zone-c
+   annotations:
+     rollout-max-unavailable: "50"
+   namespace: "default"
+ spec:
+   podManagementPolicy: Parallel
+   replicas: 0
+   selector:
+     matchLabels:
+       app.kubernetes.io/name: mimir
+       app.kubernetes.io/instance: krajo
+       app.kubernetes.io/component: ingester
+       rollout-group: ingester
+       zone: zone-c
+   updateStrategy:
+     type: OnDelete
+   serviceName: krajo-mimir-ingester-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: ingester
+         app.kubernetes.io/part-of: memberlist
+         name: "ingester-zone-c"
+         rollout-group: ingester
+         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: ingester
+       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: ingester
+           imagePullPolicy: IfNotPresent
+           args:
+             - "-target=ingester"
+             - "-config.expand-env=true"
+             - "-config.file=/etc/mimir/mimir.yaml"
+             - "-ingester.ring.instance-availability-zone=zone-c"
            volumeMounts:
              - name: config
                mountPath: /etc/mimir
diff -c -r step0/mimir-distributed/templates/ingester/ingester-svc.yaml step1/mimir-distributed/templates/ingester/ingester-svc.yaml
*** step0/mimir-distributed/templates/ingester/ingester-svc.yaml
--- step1/mimir-distributed/templates/ingester/ingester-svc.yaml
***************
*** 28,30 ****
--- 28,141 ----
      app.kubernetes.io/name: mimir
      app.kubernetes.io/instance: krajo
      app.kubernetes.io/component: ingester
+ ---
+ # Source: mimir-distributed/templates/ingester/ingester-svc.yaml
+ apiVersion: v1
+ kind: Service
+ metadata:
+   name: krajo-mimir-ingester-zone-a
+   labels:
+     app.kubernetes.io/name: mimir
+     app.kubernetes.io/instance: krajo
+     app.kubernetes.io/component: ingester
+     app.kubernetes.io/part-of: memberlist
+     app.kubernetes.io/managed-by: Helm
+     name: "ingester-zone-a"
+     rollout-group: ingester
+     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: ingester
+     rollout-group: ingester
+     zone: zone-a
+ ---
+ # Source: mimir-distributed/templates/ingester/ingester-svc.yaml
+ apiVersion: v1
+ kind: Service
+ metadata:
+   name: krajo-mimir-ingester-zone-b
+   labels:
+     app.kubernetes.io/name: mimir
+     app.kubernetes.io/instance: krajo
+     app.kubernetes.io/component: ingester
+     app.kubernetes.io/part-of: memberlist
+     app.kubernetes.io/managed-by: Helm
+     name: "ingester-zone-b"
+     rollout-group: ingester
+     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: ingester
+     rollout-group: ingester
+     zone: zone-b
+ ---
+ # Source: mimir-distributed/templates/ingester/ingester-svc.yaml
+ apiVersion: v1
+ kind: Service
+ metadata:
+   name: krajo-mimir-ingester-zone-c
+   labels:
+     app.kubernetes.io/name: mimir
+     app.kubernetes.io/instance: krajo
+     app.kubernetes.io/component: ingester
+     app.kubernetes.io/part-of: memberlist
+     app.kubernetes.io/managed-by: Helm
+     name: "ingester-zone-c"
+     rollout-group: ingester
+     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: ingester
+     rollout-group: ingester
+     zone: zone-c
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
***************
*** 53,58 ****
--- 53,59 ----
          num_tokens: 512
          tokens_file_path: /data/tokens
          unregister_on_shutdown: false
+         zone_awareness_enabled: true
      ingester_client:
        grpc_client_config:
          max_recv_msg_size: 104857600
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,53 ----
              - "-target=querier"
              - "-config.expand-env=true"
              - "-config.file=/etc/mimir/mimir.yaml"
+             - "-ingester.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,54 ----
              - "-target=ruler"
              - "-config.expand-env=true"
              - "-config.file=/etc/mimir/mimir.yaml"
+             - "-ingester.ring.zone-awareness-enabled=false"
            volumeMounts:
              - name: config
                mountPath: /etc/mimir
