(01)Install External Secrets Operator
1helm repo add external-secrets https://charts.external-secrets.io2helm repo update3helm install external-secrets external-secrets/external-secrets -n external-secrets --create-namespaceSync secrets from AWS/GCP/Vault into Kubernetes automatically
If you're on Kubernetes 1.27 or older
If you're on Kubernetes 1.28
✓ Team golden path — Secrets management
Sync cloud/Vault secrets into K8s Secrets
What is this?
External Secrets Operator pulls secrets from AWS/GCP/Vault into Kubernetes Secret objects automatically.
Where to create or edit the main configuration — paths below match the setup steps.
secret-store.yamlLocation: Kubernetes namespace
Connects cluster to AWS/Vault/GCP secret backends
Step 01
1helm repo add external-secrets https://charts.external-secrets.io2helm repo update3helm install external-secrets external-secrets/external-secrets -n external-secrets --create-namespaceStep 02
1cat > secret-store.yaml << 'EOF'2apiVersion: external-secrets.io/v1beta13kind: SecretStore4metadata:5 name: aws-secrets6 namespace: default7spec:8 provider:9 aws:10 service: SecretsManager11 region: us-east-112EOF13kubectl apply -f secret-store.yamlStep 03
1kubectl get pods -n external-secrets2kubectl get secretstore,externalsecret -AStep 04
1kubectl describe externalsecret -n default2kubectl logs -n external-secrets -l app.kubernetes.io/name=external-secrets3kubectl get secretstore -A1# Use IRSA — annotate SA with role ARN2kubectl annotate sa default eks.amazonaws.com/role-arn=arn:aws:iam::ACCOUNT:role/eso-role2 YAML templates for External Secrets Operator. Copy and deploy after setup.
2 ready-to-copy templates. Expand one, copy the YAML, then run the deploy commands.
ConfigMap.yml
1apiVersion: v12kind: ConfigMap3metadata:4 name: node-demo-config5data:6 NORMAL_ENV_VALUE: "hello-from-configmap"Secrets.yml
1apiVersion: v12kind: Secret3metadata:4 name: mysecret5type: Opaque6stringData:7 SECRET_ENV_VALUE: "super-secret-value"Deployment.yml
Deployment referencing ConfigMap and Secret via env valueFrom
1apiVersion: apps/v12kind: Deployment3metadata:4 name: api-deploy-demo-secrets-config5 labels:6 app: api-deploy-demo-secrets-config7spec:8 replicas: 19 selector:10 matchLabels:11 app: api-deploy-demo-secrets-config12 template:13 metadata:14 labels:15 app: api-deploy-demo-secrets-config16 spec:17 containers:18 - name: api-demo-cms19 image: api-demo-cms:local20 imagePullPolicy: IfNotPresent21 ports:22 - containerPort: 300023 env:24 - name: SECRET_ENV_VALUE25 valueFrom:26 secretKeyRef:27 name: mysecret28 key: SECRET_ENV_VALUE29 - name: NORMAL_ENV_VALUE30 valueFrom:31 configMapKeyRef:32 name: node-demo-config33 key: NORMAL_ENV_VALUE34 resources:35 limits:36 memory: "512Mi"37 cpu: "500m"38 requests:39 memory: "256Mi"40 cpu: "250m"Services.yml
1apiVersion: v12kind: Service3metadata:4 name: api-demo-service5spec:6 type: NodePort7 selector:8 app: api-deploy-demo-secrets-config9 ports:10 - port: 300011 targetPort: 300012 nodePort: 32001Step 01
1kubectl apply -f ConfigMap.yml2kubectl apply -f Secrets.yml3kubectl apply -f Deployment.yml4kubectl apply -f Services.yml5kubectl get configmap,secret,pods1kubectl exec -it deploy/api-deploy-demo-secrets-config -- env | grep ENV_VALUE