Skip to content

Unable to configure SGObjectStorage for azure

I want to enable Backup to Azure Storage account using azureBlob

Implementation plan

Create a SGObjectStorage :

apiVersion: stackgres.io/v1beta1
kind: SGObjectStorage
metadata:
  name: azure-backup
  namespace: stackgres

spec:
  azureBlob:
    azureCredentials:
      secretKeySelectors:
        accessKey:
          key: azure-sa-backup
          name: accesskey
        storageAccount:
          key: azure-sa-backup
          name: name
    bucket: sg-backups
  type: azureBlob

I have a secret called azure-sa-backup with 2 entry:

  • accesskey
  • name

The operator still reports me an issue:

2025-10-22 09:47:51,157 ERROR [io.st.op.conciliation] (SGCluster-ReconciliationLoop) Reconciliation of SGCluster stackgres.tsdb-pg17 failed: java.lang.IllegalArgumentException: Secret accesskey not found for SGObjectStorage azure-backup
	at io.stackgres.operator.conciliation.cluster.context.ClusterObjectStorageContextAppender.lambda$appendContext$2(ClusterObjectStorageContextAppender.java:80)
	at java.base@21.0.7/java.util.Optional.orElseThrow(Optional.java:403)
	at io.stackgres.operator.conciliation.cluster.context.ClusterObjectStorageContextAppender.lambda$appendContext$3(ClusterObjectStorageContextAppender.java:77)
	at java.base@21.0.7/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
	at java.base@21.0.7/java.util.HashMap$EntrySpliterator.forEachRemaining(HashMap.java:1858)
	at java.base@21.0.7/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
	at java.base@21.0.7/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
	at java.base@21.0.7/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
	at java.base@21.0.7/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base@21.0.7/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
	at io.stackgres.operator.conciliation.cluster.context.ClusterObjectStorageContextAppender.appendContext(ClusterObjectStorageContextAppender.java:94)
	at io.stackgres.operator.conciliation.cluster.context.ClusterObjectStorageContextAppender.appendContext(ClusterObjectStorageContextAppender.java:29)
	at io.stackgres.operator.conciliation.cluster.context.ClusterObjectStorageContextAppender_ClientProxy.appendContext(Unknown Source)
	at io.stackgres.operator.conciliation.ContextPipeline.lambda$appendContext$0(ContextPipeline.java:30)
	at java.base@21.0.7/java.lang.Iterable.forEach(Iterable.java:75)
	at io.stackgres.operator.conciliation.ContextPipeline.appendContext(ContextPipeline.java:29)
	at io.stackgres.operator.conciliation.cluster.context.ClusterContextPipeline_ClientProxy.appendContext(Unknown Source)
	at io.stackgres.operator.conciliation.cluster.ClusterRequiredResourcesGenerator.getRequiredResources(ClusterRequiredResourcesGenerator.java:43)
	at io.stackgres.operator.conciliation.cluster.ClusterRequiredResourcesGenerator.getRequiredResources(ClusterRequiredResourcesGenerator.java:20)
	at io.stackgres.operator.conciliation.cluster.ClusterRequiredResourcesGenerator_ClientProxy.getRequiredResources(Unknown Source)
	at io.stackgres.operator.conciliation.AbstractConciliator.evalReconciliationState(AbstractConciliator.java:65)
	at io.stackgres.operator.conciliation.cluster.ClusterConciliator_ClientProxy.evalReconciliationState(Unknown Source)
	at io.stackgres.operator.conciliation.AbstractReconciliator.reconciliationCycle(AbstractReconciliator.java:260)
	at io.stackgres.operator.conciliation.cluster.ClusterReconciliator.reconciliationCycle(ClusterReconciliator.java:91)
	at io.stackgres.operator.conciliation.cluster.ClusterReconciliator.reconciliationCycle(ClusterReconciliator.java:40)
	at io.stackgres.operator.conciliation.AbstractReconciliator.lambda$reconciliationsCycle$7(AbstractReconciliator.java:204)
	at io.stackgres.operator.conciliation.ReconciliatorWorkerThreadPool.scheduleReconciliation(ReconciliatorWorkerThreadPool.java:120)
	at io.stackgres.operator.conciliation.AbstractReconciliator.lambda$reconciliationsCycle$8(AbstractReconciliator.java:203)
	at java.base@21.0.7/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
	at java.base@21.0.7/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
	at java.base@21.0.7/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)

Acceptance Criteria