Skip to main content
  • Deployment model: On-premises
  • Configuration reference: The external-secrets.io/v1 API.
  • Live validation: ESO 0.16.2 on GKE, using an existing Workload Identity store and an isolated cloud marker Secret.
Use this page to create the qodo-secrets store consumed by the shared Qodo Secret examples. Qodo application Pods continue to read Kubernetes Secrets. For more information, see Manage Qodo secrets with External Secrets Operator.

Before you begin

Complete the common ESO controller, webhook, CRD, namespace, and permission checks first. For more information, see Before you begin. Prepare:
  • A GKE cluster with Workload Identity enabled and the metadata server available to ESO.
  • Secret Manager API enabled in the source project, with an enabled source Secret version.
  • The project containing your source secrets, and the project, name, and location of the GKE cluster.
  • A Google service account approved to read the required source secrets.
  • ESO permission to request tokens for the referenced Kubernetes service account.
  • Network access from ESO to Secret Manager and the identity services required by Workload Identity.
For a Standard cluster, verify the node pool running ESO also uses the GKE metadata server. Enabling Workload Identity on the cluster does not by itself configure an existing node pool. For more information, see Authenticate to Google Cloud APIs from GKE workloads. This example links a Kubernetes service account to a Google service account. If you already have an approved store, reuse it and update the shared ExternalSecret’s secretStoreRef instead of creating another identity. For more information, see Google Cloud Secret Manager authentication.

1. Prepare the source Secret and permissions

Using your approved secret-management process, create qodo-database in Secret Manager. Its JSON value must contain POSTGRES_PASSWORD with the existing database password. Keep the value out of Git, Helm values, shell arguments, and chat. Configure these IAM bindings through your cloud administration process: Replace the cluster project ID in the IAM member. The cluster project and secret project can differ; the store identifies them separately. Scope source access to the required secrets. For more information, see Authenticate to Google Cloud APIs from GKE workloads.

2. Configure the service account and store

Replace every REPLACE_WITH_* value. clusterLocation is the Region for a regional cluster or the zone for a zonal cluster. The annotation must name the Google service account configured in the IAM bindings above.
google-cloud-secret-store.yaml
The example uses a namespaced store. If your existing configuration uses a ClusterSecretStore, its service account reference also needs the account’s namespace. Keep the store’s approved name and access scope.

3. Reconcile and verify

Select the target context explicitly. These examples use namespace qodo:
Apply the shared database ExternalSecret. It reads the JSON property from qodo-database and writes the fixed qodo-db-admin.POSTGRES_PASSWORD target. For more information, see Manage Qodo secrets with External Secrets Operator. Verify the ready condition, refresh timestamp, target name, and key names. After adding a new source version, confirm the target updates before rolling out the affected consumer. Check that the provider accepts the credential and the relevant Qodo flow still works. Live validation exercised cloud source-version refresh, JSON property extraction, missing-property failure/recovery, and target retention through an existing store. A newly configured service account still needs its own identity and application acceptance checks.

Troubleshoot Google Cloud access

Next steps