REGION_CORD="ap-northeast-2"
CLUSTER_NAME="wsc-prod-cluster"
cat >secret-policy.json <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"secretsmanager:GetResourcePolicy",
"secretsmanager:GetSecretValue",
"secretsmanager:DescribeSecret",
"secretsmanager:ListSecretVersionIds"
],
"Resource": ["*"]
},
{
"Effect": "Allow",
"Action": ["kms:Decrypt"],
"Resource": ["*"]
}
]
}
EOF
POLICY_ARN=$(aws --region "$REGION_CORD" --query Policy.Arn --output text iam create-policy --policy-name secretsmanager-policy --policy-document file://secret-policy.json)
eksctl create iamserviceaccount \\
--name external-secrets-cert-controller \\
--region="$REGION_CORD" \\
--cluster "$CLUSTER_NAME" \\
--namespace=wsc-prod \\
--attach-policy-arn "$POLICY_ARN" \\
--override-existing-serviceaccounts \\
--approve
helm repo add external-secrets <https://charts.external-secrets.io>
kubectl annotate serviceaccount external-secrets-cert-controller \\
meta.helm.sh/release-name=external-secrets \\
meta.helm.sh/release-namespace=wsc-prod \\
-n wsc-prod \\
--overwrite
kubectl label serviceaccount external-secrets-cert-controller \\
app.kubernetes.io/managed-by=Helm \\
-n wsc-prod \\
--overwrite
cat > values.yaml <<EOF
{
"installCRDs": true,
"nodeSelector": {
"app": "prod"
},
"webhook": {
"nodeSelector": {
"app": "prod"
}
},
"certController": {
"nodeSelector": {
"app": "prod"
}
}
}
EOF
helm install external-secrets \\
external-secrets/external-secrets \\
-n kube-system \\
-f values.yaml \\
--create-namespace \\
--set serviceAccount.create=false
apiVersion: external-secrets.io/v1beta1
kind: SecretStore
metadata:
name: aws-secrets
namespace: wsc-prod
spec:
provider:
aws:
service: SecretsManager
region: ap-northeast-2
auth:
jwt:
serviceAccountRef:
name: external-secrets-cert-controller