Skip to content

Commit baf4a90

Browse files
authored
Maintenance and fixes (#163)
* Initial maintenance and fixes Bump version of nginx ingress controller, cluster autoscaler, cert manager Change helm repo of cluster autoscaler, cert manager Move db-ops file into templates/scripts/ because we need to hook into the actual steps of the apply * Moved execution of db scripts into templated makefile, some small fixes * Fixes to annotations and config for upgraded charts * Update metrics-server to new chart
1 parent 6a088d2 commit baf4a90

12 files changed

Lines changed: 72 additions & 85 deletions

File tree

Makefile

Lines changed: 3 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,12 @@
11
SHELL := /bin/bash
2-
CREATE_DB_USERS := $(shell kubectl -n ${PROJECT_NAME} get secrets ${PROJECT_NAME} > /dev/null 2>&1; echo $$?)
32

4-
run: make-apply create-application-user create-auth-user
3+
.EXPORT_ALL_VARIABLES:
4+
5+
run: make-apply
56

67
make-apply:
78
cd $(PROJECT_DIR) && AUTO_APPROVE="-auto-approve" make
89

9-
create-application-user:
10-
[[ "${CREATE_DB_USERS}" != "0" ]] && \
11-
REGION=${region} \
12-
SEED=${randomSeed} \
13-
PROJECT_NAME=${PROJECT_NAME} \
14-
ENVIRONMENT=${ENVIRONMENT} \
15-
NAMESPACE=${PROJECT_NAME} \
16-
DATABASE_TYPE=${database} \
17-
DATABASE_NAME=${PROJECT_NAME} \
18-
USER_NAME=${PROJECT_NAME} \
19-
CREATE_SECRET=secret-application.yml.tpl \
20-
sh ./db-ops/create-db-user.sh || echo
21-
22-
create-auth-user:
23-
[[ "${CREATE_DB_USERS}" != "0" && "${userAuth}" == "yes" ]] && \
24-
REGION=${region} \
25-
SEED=${randomSeed} \
26-
PROJECT_NAME=${PROJECT_NAME} \
27-
ENVIRONMENT=${ENVIRONMENT} \
28-
NAMESPACE=user-auth \
29-
DATABASE_TYPE=${database} \
30-
DATABASE_NAME=user_auth \
31-
USER_NAME=kratos \
32-
CREATE_SECRET=secret-user-auth.yml.tpl \
33-
sh ./db-ops/create-db-user.sh || echo
34-
3510
summary:
3611
@echo "zero-aws-eks-stack:"
3712
@echo "- Repository URL: ${REPOSITORY}"

templates/kubernetes/terraform/modules/kubernetes/cert_manager.tf

Lines changed: 18 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
locals {
2-
cert_manager_version = "0.14.2"
2+
cert_manager_version = "1.0.4"
33
cluster_issuer_name = var.cert_manager_use_production_acme_environment ? "clusterissuer-letsencrypt-production" : "clusterissuer-letsencrypt-staging"
44
cert_manager_acme_server = var.cert_manager_use_production_acme_environment ? "https://acme-v02.api.letsencrypt.org/directory" : "https://acme-staging-v02.api.letsencrypt.org/directory"
55
}
@@ -15,25 +15,27 @@ data "aws_route53_zone" "public" {
1515
name = var.external_dns_zone
1616
}
1717

18-
# Cert-manager CRD manifest
19-
# https://github.com/jetstack/cert-manager/releases/download/v0.14.2/cert-manager.crds.yaml
20-
data "local_file" "cert_manager" {
21-
filename = "${path.module}/files/cert-manager.crds.yaml"
22-
}
18+
resource "helm_release" "cert_manager" {
19+
name = "cert-manager"
20+
repository = "https://charts.jetstack.io"
21+
chart = "cert-manager"
22+
version = local.cert_manager_version
23+
namespace = kubernetes_namespace.cert_manager.metadata[0].name
2324

24-
# Install the cert manager Custom Resource Definitions (this can't be done via helm/terraform)
25-
resource "null_resource" "cert_manager" {
26-
triggers = {
27-
manifest_sha1 = sha1(data.local_file.cert_manager.content)
25+
set {
26+
name = "serviceAccount.annotations.eks\\.amazonaws\\.com/role-arn"
27+
value = module.iam_assumable_role_cert_manager.this_iam_role_arn
2828
}
29-
# local exec call requires kubeconfig to be updated
30-
provisioner "local-exec" {
31-
command = "kubectl apply --validate=false -f ${path.module}/files/cert-manager.crds.yaml"
29+
set {
30+
name = "securityContext.fsGroup"
31+
value = "1001"
32+
}
33+
set {
34+
name = "installCRDs"
35+
value = true
3236
}
33-
depends_on = [kubernetes_namespace.cert_manager]
3437
}
3538

36-
3739
# Cert-manager issuer manifest
3840
data "template_file" "cert_manager_issuer" {
3941
template = file("${path.module}/files/cert_manager_issuer.yaml.tpl")
@@ -57,33 +59,9 @@ resource "null_resource" "cert_manager_issuer" {
5759
provisioner "local-exec" {
5860
command = "kubectl apply -f - <<EOF\n${data.template_file.cert_manager_issuer.rendered}\nEOF"
5961
}
60-
depends_on = [null_resource.cert_manager]
61-
}
62-
63-
resource "helm_release" "cert_manager" {
64-
name = "cert-manager"
65-
repository = "https://charts.jetstack.io"
66-
chart = "cert-manager"
67-
version = local.cert_manager_version
68-
namespace = kubernetes_namespace.cert_manager.metadata[0].name
69-
70-
set {
71-
type = "string"
72-
name = "serviceAccount.annotations.eks\\.amazonaws\\.com/role-arn"
73-
value = module.iam_assumable_role_cert_manager.this_iam_role_arn
74-
}
75-
set {
76-
type = "string"
77-
name = "podAnnotations.eks\\.amazonaws\\.com/role-arn"
78-
value = module.iam_assumable_role_cert_manager.this_iam_role_arn
79-
}
80-
set {
81-
name = "securityContext.fsGroup"
82-
value = "1001"
83-
}
62+
depends_on = [helm_release.cert_manager]
8463
}
8564

86-
8765
# Create a role using oidc to map service accounts
8866
module "iam_assumable_role_cert_manager" {
8967
source = "terraform-aws-modules/iam/aws//modules/iam-assumable-role-with-oidc"

templates/kubernetes/terraform/modules/kubernetes/cluster_autoscaler.tf

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,9 @@ locals {
55

66
resource "helm_release" "cluster_autoscaler" {
77
name = "cluster-autoscaler"
8-
repository = "https://kubernetes-charts.storage.googleapis.com"
9-
chart = "cluster-autoscaler"
8+
repository = "https://kubernetes.github.io/autoscaler"
9+
chart = "cluster-autoscaler-chart"
10+
version = "1.1.1"
1011
namespace = local.cluster_autoscaler_namespace
1112

1213
set {
@@ -19,7 +20,7 @@ resource "helm_release" "cluster_autoscaler" {
1920
}
2021
set {
2122
type = "string"
22-
name = "rbac.serviceAccountAnnotations.eks\\.amazonaws\\.com/role-arn"
23+
name = "rbac.serviceAccount.annotations.eks\\.amazonaws\\.com/role-arn"
2324
value = module.iam_assumable_role_cluster_autoscaler.this_iam_role_arn
2425
}
2526
set {
@@ -41,7 +42,7 @@ module "iam_assumable_role_cluster_autoscaler" {
4142
role_name = "${var.project}-k8s-${var.environment}-cluster-autoscaler"
4243
provider_url = replace(data.aws_eks_cluster.cluster.identity.0.oidc.0.issuer, "https://", "")
4344
role_policy_arns = [aws_iam_policy.cluster_autoscaler.arn]
44-
oidc_fully_qualified_subjects = ["system:serviceaccount:${local.cluster_autoscaler_namespace}:cluster-autoscaler-aws-cluster-autoscaler"]
45+
oidc_fully_qualified_subjects = ["system:serviceaccount:${local.cluster_autoscaler_namespace}:cluster-autoscaler-aws-cluster-autoscaler-chart"]
4546
}
4647

4748
resource "aws_iam_policy" "cluster_autoscaler" {

templates/kubernetes/terraform/modules/kubernetes/ingress/main.tf

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
locals {
2-
log_format = <<EOF
2+
log_format = <<EOF
33
{
44
"timestamp": "$time_iso8601",
55
"remote_addr": "$remote_addr",
@@ -20,7 +20,8 @@ locals {
2020
"http_x_forwarded_for": "$proxy_add_x_forwarded_for"
2121
}
2222
EOF
23-
23+
controller_image = "k8s.gcr.io/ingress-nginx/controller"
24+
controller_tag = "v0.41.2"
2425
}
2526

2627
resource "kubernetes_namespace" "ingress_nginx" {
@@ -232,7 +233,7 @@ resource "kubernetes_deployment" "nginx_ingress_controller" {
232233
spec {
233234
container {
234235
name = "nginx-ingress-controller"
235-
image = "quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.30.0"
236+
image = "${local.controller_image}:${local.controller_tag}"
236237
args = [
237238
"/nginx-ingress-controller",
238239
"--configmap=$(POD_NAMESPACE)/nginx-configuration",

templates/kubernetes/terraform/modules/kubernetes/metrics_server.tf

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,16 @@ locals {
55

66
resource "helm_release" "metrics_server" {
77
name = "metrics-server"
8-
repository = "https://kubernetes-charts.storage.googleapis.com"
8+
# @TODO : The central chart repo was deprecated but as of late 2020 this chart didn't have an official home.
9+
# Switch away from this bitnami one when possible. https://github.com/kubernetes-sigs/metrics-server/issues/572
10+
repository = "https://charts.bitnami.com/bitnami"
911
chart = "metrics-server"
12+
version = "5.0.2"
1013
namespace = local.metrics_server_namespace
1114

1215
set {
13-
name = "args"
14-
value = "{--kubelet-preferred-address-types=InternalIP}"
15-
}
16-
set {
17-
name = "image.tag"
18-
value = "v0.3.6"
16+
name = "apiService.create"
17+
value = true
1918
}
2019
}
2120

File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)