Skip to content

Commit ccd8e98

Browse files
authored
refactor: switch from kubernetes-external-secrets to External Secrets Operator (#276)
1 parent e9bba66 commit ccd8e98

File tree

3 files changed

+82
-45
lines changed

3 files changed

+82
-45
lines changed

terraform/layer2-k8s/README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
| <a name="module_aws_iam_cert_manager"></a> [aws\_iam\_cert\_manager](#module\_aws\_iam\_cert\_manager) | ../modules/aws-iam-eks-trusted | n/a |
3232
| <a name="module_aws_iam_elastic_stack"></a> [aws\_iam\_elastic\_stack](#module\_aws\_iam\_elastic\_stack) | ../modules/aws-iam-user-with-policy | n/a |
3333
| <a name="module_aws_iam_external_dns"></a> [aws\_iam\_external\_dns](#module\_aws\_iam\_external\_dns) | ../modules/aws-iam-eks-trusted | n/a |
34-
| <a name="module_aws_iam_external_secrets"></a> [aws\_iam\_external\_secrets](#module\_aws\_iam\_external\_secrets) | ../modules/aws-iam-eks-trusted | n/a |
3534
| <a name="module_aws_iam_gitlab_runner"></a> [aws\_iam\_gitlab\_runner](#module\_aws\_iam\_gitlab\_runner) | ../modules/aws-iam-eks-trusted | n/a |
3635
| <a name="module_aws_iam_kube_prometheus_stack_grafana"></a> [aws\_iam\_kube\_prometheus\_stack\_grafana](#module\_aws\_iam\_kube\_prometheus\_stack\_grafana) | ../modules/aws-iam-eks-trusted | n/a |
3736
| <a name="module_aws_iam_victoria_metrics_k8s_stack_grafana"></a> [aws\_iam\_victoria\_metrics\_k8s\_stack\_grafana](#module\_aws\_iam\_victoria\_metrics\_k8s\_stack\_grafana) | ../modules/aws-iam-eks-trusted | n/a |

terraform/layer2-k8s/eks-external-secrets.tf

Lines changed: 79 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -8,23 +8,62 @@ locals {
88
namespace = local.helm_releases[index(local.helm_releases.*.id, "external-secrets")].namespace
99
}
1010
external_secrets_values = <<VALUES
11-
# Environment variables to set on deployment pod
12-
env:
13-
AWS_REGION: ${local.region}
14-
AWS_DEFAULT_REGION: ${local.region}
15-
POLLER_INTERVAL_MILLISECONDS: 30000
16-
# trace, debug, info, warn, error, fatal
17-
LOG_LEVEL: warn
18-
LOG_MESSAGE_KEY: 'msg'
19-
METRICS_PORT: 3001
11+
crds:
12+
createClusterExternalSecret: false
13+
createClusterSecretStore: true # without setting it to true, certcontroller couldn't start: {"level":"debug","ts":1651041439.6815717,"logger":"controller-runtime.healthz","msg":"healthz check failed","checker":"crd-inject","error":"resource not ready: clustersecretstores.external-secrets.io"}
2014
21-
serviceAccount:
22-
annotations:
23-
"eks.amazonaws.com/role-arn": ${local.external_secrets.enabled ? module.aws_iam_external_secrets[0].role_arn : ""}
15+
processClusterExternalSecret: false
16+
processClusterStore: false
2417
2518
securityContext:
26-
# Required for use of IRSA, see https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts-technical-overview.html
27-
fsGroup: 1000
19+
capabilities:
20+
drop:
21+
- ALL
22+
readOnlyRootFilesystem: true
23+
runAsNonRoot: true
24+
runAsUser: 1000
25+
26+
resources:
27+
requests:
28+
cpu: 100m
29+
memory: 128Mi
30+
limits:
31+
cpu: 200m
32+
memory: 128Mi
33+
34+
webhook:
35+
securityContext:
36+
capabilities:
37+
drop:
38+
- ALL
39+
readOnlyRootFilesystem: true
40+
runAsNonRoot: true
41+
runAsUser: 1000
42+
43+
resources:
44+
requests:
45+
cpu: 50m
46+
memory: 64Mi
47+
limits:
48+
cpu: 100m
49+
memory: 64Mi
50+
51+
certController:
52+
securityContext:
53+
capabilities:
54+
drop:
55+
- ALL
56+
readOnlyRootFilesystem: true
57+
runAsNonRoot: true
58+
runAsUser: 1000
59+
60+
resources:
61+
requests:
62+
cpu: 50m
63+
memory: 64Mi
64+
limits:
65+
cpu: 100m
66+
memory: 64Mi
2867
VALUES
2968
}
3069

@@ -56,6 +95,32 @@ module "external_secrets_namespace" {
5695
]
5796
}
5897
},
98+
{
99+
name = "allow-webhooks"
100+
policy_types = ["Ingress"]
101+
pod_selector = {
102+
match_expressions = {
103+
key = "app.kubernetes.io/name"
104+
operator = "In"
105+
values = ["${local.external_secrets.name}-webhook"]
106+
}
107+
}
108+
ingress = {
109+
ports = [
110+
{
111+
port = "9443"
112+
protocol = "TCP"
113+
}
114+
]
115+
from = [
116+
{
117+
ip_block = {
118+
cidr = "0.0.0.0/0"
119+
}
120+
}
121+
]
122+
}
123+
},
59124
{
60125
name = "allow-egress"
61126
policy_types = ["Egress"]
@@ -76,33 +141,6 @@ module "external_secrets_namespace" {
76141
]
77142
}
78143

79-
80-
#tfsec:ignore:aws-iam-no-policy-wildcards
81-
module "aws_iam_external_secrets" {
82-
count = local.external_secrets.enabled ? 1 : 0
83-
84-
source = "../modules/aws-iam-eks-trusted"
85-
name = "${local.name}-${local.external_secrets.name}"
86-
region = local.region
87-
oidc_provider_arn = local.eks_oidc_provider_arn
88-
policy = jsonencode({
89-
"Version" : "2012-10-17",
90-
"Statement" : [
91-
{
92-
"Effect" : "Allow",
93-
"Action" : [
94-
"ssm:GetParameter",
95-
"secretsmanager:GetResourcePolicy",
96-
"secretsmanager:GetSecretValue",
97-
"secretsmanager:DescribeSecret",
98-
"secretsmanager:ListSecretVersionIds"
99-
],
100-
"Resource" : "*"
101-
}
102-
]
103-
})
104-
}
105-
106144
resource "helm_release" "external_secrets" {
107145
count = local.external_secrets.enabled ? 1 : 0
108146

terraform/layer2-k8s/helm-releases.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,9 @@ releases:
5555
namespace: external-dns
5656
- id: external-secrets
5757
enabled: true
58-
chart: kubernetes-external-secrets
59-
repository: https://external-secrets.github.io/kubernetes-external-secrets
60-
chart_version: 8.5.5
58+
chart: external-secrets
59+
repository: https://charts.external-secrets.io
60+
chart_version: 0.5.1
6161
namespace: external-secrets
6262
- id: gitlab-runner
6363
enabled: false

0 commit comments

Comments
 (0)