Skip to content

Change in root kubernetes secret causes operator lockout. #2483

@alekc

Description

@alekc

I am using a following tenant config

apiVersion: minio.min.io/v2
kind: Tenant
metadata:
  annotations:
    argocd.argoproj.io/tracking-id: minio-home:minio.min.io/Tenant:minio-home/minio-home
    prometheus.io/path: /minio/v2/metrics/cluster
    prometheus.io/port: '9000'
    prometheus.io/scheme: http
    prometheus.io/scrape: 'true'
  labels:
    app: minio
  name: minio-home
  namespace: minio-home
spec:
  configuration:
    name: root-config
  features:
    bucketDNS: false
    enableSFTP: false
  image: quay.io/minio/minio:RELEASE.2025-04-22T22-12-26Z
  imagePullPolicy: IfNotPresent
  mountPath: /export
  podManagementPolicy: Parallel
  pools:
    - name: pool0      
      servers: 1
      volumeClaimTemplate:
        metadata:
          name: data
        spec:
          accessModes:
            - ReadWriteOnce
          resources:
            requests:
              storage: 100Gi
      volumesPerServer: 1
  poolsMetadata:
    annotations: {}
    labels: {}
  prometheusOperator: false
  requestAutoCert: true
  subPath: /data

Secret root-config is generated by the external-secret-operator, so far so good. Recently, the secret contents has been rotated, and this caused operator to be locked out with error of wrong auth

Expected Behavior

In case of change (i.e. rotation) of root config secret on minio it should update the root passowrd on the tenant.

Current Behavior

It doesn't, and since it didn't save last known valid value anywhere, its locked out from the tenant.

Possible Solution

Upon succesful connection, save the last known username & password somewhere, potentially in a new secret. Keep that info as fallback in case it's impossible to connect.

Once the drift is observed, old values can be used to connect to the instance and change the root password.

Steps to Reproduce (for bugs)

See above

Context

This affects both rotation and some unexpected changes (i.e. by operator) to the secret. The expectation is that operator should operate.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions