Skip to content

Commit 2db841d

Browse files
authored
Merge pull request #216 from PermanentOrg/per-10376_fix_deploys_when_pods_are_missing
Per 10376 fix deploys when pods are missing
2 parents d97b0ab + 908e257 commit 2db841d

File tree

9 files changed

+62
-53
lines changed

9 files changed

+62
-53
lines changed

archivematica/prod_cluster/archivematica_deployment.tf

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
data "kubernetes_resource" "archivematica_prod" {
2+
count = local.need_images ? 1 : 0
23
kind = "Deployment"
34
api_version = "apps/v1"
45
metadata { name = "archivematica-prod" }
@@ -563,6 +564,7 @@ resource "kubernetes_deployment" "archivematica_prod" {
563564
}
564565

565566
data "kubernetes_resource" "mcp_client_prod" {
567+
count = local.need_images ? 1 : 0
566568
kind = "Deployment"
567569
api_version = "apps/v1"
568570
metadata { name = "archivematica-mcp-client-prod" }

archivematica/prod_cluster/eks-cluster.tf

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,15 +73,15 @@ module "eks" {
7373
}
7474

7575
module "ebs_csi_irsa" {
76-
source = "terraform-aws-modules/iam/aws//modules/iam-role-for-service-accounts-eks"
76+
source = "terraform-aws-modules/iam/aws//modules/iam-role-for-service-accounts-eks"
7777
version = "5.60.0"
7878

79-
role_name_prefix = "${local.cluster_name}-ebs-csi-"
79+
role_name_prefix = "${local.cluster_name}-ebs-csi-"
8080
attach_ebs_csi_policy = true
8181

8282
oidc_providers = {
8383
main = {
84-
provider_arn = module.eks.oidc_provider_arn
84+
provider_arn = module.eks.oidc_provider_arn
8585
namespace_service_accounts = ["kube-system:ebs-csi-controller-sa"]
8686
}
8787
}
Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
locals {
2+
required_images = [
3+
"archivematica-storage-service-prod",
4+
"archivematica-dashboard-prod",
5+
"archivematica-mcp-server-prod",
6+
"archivematica-mcp-client-prod",
7+
]
8+
9+
need_images = length(setsubtract(local.required_images, keys(var.image_overrides))) > 0
210
current_archivematica_prod_deploy = data.kubernetes_resource.archivematica_prod.object
311
current_mcp_client_prod_deploy = data.kubernetes_resource.mcp_client_prod.object
412

5-
current_containers = concat(
6-
try(local.current_archivematica_prod_deploy.spec.template.spec.containers),
7-
try(local.current_mcp_client_prod_deploy.spec.template.spec.containers)
13+
current_images = merge(
14+
try(for container in data.kubernetes_resource.archivematica_prod[0].object.spec.template.spec.containers : container.name => container.image }, {}),
15+
try(for container in data.kubernetes_resource.mcp_client_prod[0].object.spec.template.spec.containers : container.name => container.image }, {}),
816
)
917

10-
current_images = { for container in local.current_containers : container.name => container.image }
11-
12-
desired_images = {
13-
for name, image in local.current_images :
14-
name => (contains(keys(var.image_overrides), name)
15-
? var.image_overrides[name]
16-
: local.current_images[name]
17-
)
18-
}
18+
desired_images = merge(local.current_images, var.image_overrides)
1919
}

archivematica/test_cluster/dev_archivematica_deployment.tf

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
data "kubernetes_resource" "archivematica_dev" {
2+
count = local.need_dev_images ? 1 : 0
23
kind = "Deployment"
34
api_version = "apps/v1"
45
metadata { name = "archivematica-dev" }
@@ -88,7 +89,7 @@ resource "kubernetes_deployment" "archivematica_dev" {
8889
value = "dev.archivematica.permanent.org"
8990
}
9091
env {
91-
name = "DJANGO_SECRET_KEY"
92+
name = "DJANGO_SECRET_KEY"
9293
value_from {
9394
secret_key_ref {
9495
name = "dev-archivematica-secrets"
@@ -243,7 +244,7 @@ resource "kubernetes_deployment" "archivematica_dev" {
243244
image = local.desired_images["archivematica-mcp-server-dev"]
244245
name = "archivematica-mcp-server-dev"
245246
env {
246-
name = "DJANGO_SECRET_KEY"
247+
name = "DJANGO_SECRET_KEY"
247248
value_from {
248249
secret_key_ref {
249250
name = "dev-archivematica-secrets"
@@ -364,7 +365,7 @@ resource "kubernetes_deployment" "archivematica_dev" {
364365
}
365366
}
366367
init_container {
367-
image = local.desired_images["archivematica-storage-service-dev"]
368+
image = local.desired_images["archivematica-storage-service-dev"]
368369
name = "archivematica-storage-service-create-user"
369370
env {
370371
name = "DJANGO_SETTINGS_MODULE"
@@ -563,6 +564,7 @@ resource "kubernetes_deployment" "archivematica_dev" {
563564
}
564565

565566
data "kubernetes_resource" "mcp_client_dev" {
567+
count = local.need_dev_images ? 1 : 0
566568
kind = "Deployment"
567569
api_version = "apps/v1"
568570
metadata { name = "archivematica-mcp-client-dev" }

archivematica/test_cluster/eks-cluster.tf

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ module "eks" {
22
source = "terraform-aws-modules/eks/aws"
33
version = "21.2.0"
44

5-
name = local.cluster_name
5+
name = local.cluster_name
66
kubernetes_version = "1.32"
77

8-
vpc_id = var.vpc_id
9-
subnet_ids = var.subnet_ids
8+
vpc_id = var.vpc_id
9+
subnet_ids = var.subnet_ids
1010
endpoint_public_access = true
1111
security_group_id = var.dev_security_group_id
1212
access_entries = {
@@ -47,7 +47,7 @@ module "eks" {
4747

4848
eks_managed_node_groups = {
4949
one = {
50-
name = "node-group-1"
50+
name = "node-group-1"
5151
ami_type = "AL2023_x86_64_STANDARD"
5252

5353
vpc_security_group_ids = [var.dev_security_group_id, var.staging_security_group_id]
@@ -74,15 +74,15 @@ module "eks" {
7474
}
7575

7676
module "ebs_csi_irsa" {
77-
source = "terraform-aws-modules/iam/aws//modules/iam-role-for-service-accounts-eks"
77+
source = "terraform-aws-modules/iam/aws//modules/iam-role-for-service-accounts-eks"
7878
version = "5.60.0"
7979

80-
role_name_prefix = "${local.cluster_name}-ebs-csi-"
80+
role_name_prefix = "${local.cluster_name}-ebs-csi-"
8181
attach_ebs_csi_policy = true
8282

8383
oidc_providers = {
8484
main = {
85-
provider_arn = module.eks.oidc_provider_arn
85+
provider_arn = module.eks.oidc_provider_arn
8686
namespace_service_accounts = ["kube-system:ebs-csi-controller-sa"]
8787
}
8888
}
@@ -96,8 +96,8 @@ resource "kubernetes_storage_class" "gp3" {
9696
parameters = {
9797
type = "gp3"
9898
}
99-
reclaim_policy = "Delete"
100-
volume_binding_mode = "WaitForFirstConsumer"
99+
reclaim_policy = "Delete"
100+
volume_binding_mode = "WaitForFirstConsumer"
101101
allow_volume_expansion = true
102102
}
103103

archivematica/test_cluster/load_balancer.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
module "lb_role" {
2-
source = "terraform-aws-modules/iam/aws//modules/iam-role-for-service-accounts-eks"
2+
source = "terraform-aws-modules/iam/aws//modules/iam-role-for-service-accounts-eks"
33
version = "5.60.0"
44

55
role_name = "dev_archivematica_lb"
Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,27 @@
11
locals {
2-
current_archivematica_dev_deploy = data.kubernetes_resource.archivematica_dev.object
3-
current_mcp_client_dev_deploy = data.kubernetes_resource.mcp_client_dev.object
2+
required_dev_images = [
3+
"archivematica-storage-service-dev",
4+
"archivematica-dashboard-dev",
5+
"archivematica-mcp-server-dev",
6+
"archivematica-mcp-client-dev",
7+
]
48

5-
current_archivematica_staging_deploy = data.kubernetes_resource.archivematica_staging.object
6-
current_mcp_client_staging_deploy = data.kubernetes_resource.mcp_client_staging.object
9+
required_staging_images = [
10+
"archivematica-storage-service-staging",
11+
"archivematica-dashboard-staging",
12+
"archivematica-mcp-server-staging",
13+
"archivematica-mcp-client-staging",
14+
]
715

8-
current_containers = concat(
9-
try(local.current_archivematica_dev_deploy.spec.template.spec.containers),
10-
try(local.current_mcp_client_dev_deploy.spec.template.spec.containers),
11-
try(local.current_archivematica_staging_deploy.spec.template.spec.containers),
12-
try(local.current_mcp_client_staging_deploy.spec.template.spec.containers)
13-
)
16+
need_dev_images = length(setsubtract(local.required_dev_images, keys(var.image_overrides))) > 0
17+
need_staging_images = length(setsubtract(local.required_staging_images, keys(var.image_overrides))) > 0
1418

15-
current_images = { for container in local.current_containers : container.name => container.image }
19+
current_images = merge(
20+
try({ for container in data.kubernetes_resource.archivematica_dev[0].object.spec.template.spec.containers : container.name => container.image }, {}),
21+
try({ for container in data.kubernetes_resource.mcp_client_dev[0].object.spec.template.spec.containers : container.name => container.image }, {}),
22+
try({ for container in data.kubernetes_resource.archivematica_staging[0].object.spec.template.spec.containers : container.name => container.image }, {}),
23+
try({ for container in data.kubernetes_resource.mcp_client_staging[0].object.spec.template.spec.containers : container.name => container.image }, {}),
24+
)
1625

17-
desired_images = {
18-
for name, image in local.current_images :
19-
name => (contains(keys(var.image_overrides), name)
20-
? var.image_overrides[name]
21-
: local.current_images[name]
22-
)
23-
}
26+
desired_images = merge(local.current_images, var.image_overrides)
2427
}

archivematica/test_cluster/staging_archivematica_deployment.tf

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
data "kubernetes_resource" "archivematica_staging" {
2+
count = local.need_staging_images ? 1 : 0
23
kind = "Deployment"
34
api_version = "apps/v1"
45
metadata { name = "archivematica-staging" }
@@ -88,7 +89,7 @@ resource "kubernetes_deployment" "archivematica_staging" {
8889
value = "staging.archivematica.permanent.org"
8990
}
9091
env {
91-
name = "DJANGO_SECRET_KEY"
92+
name = "DJANGO_SECRET_KEY"
9293
value_from {
9394
secret_key_ref {
9495
name = "staging-archivematica-secrets"
@@ -243,7 +244,7 @@ resource "kubernetes_deployment" "archivematica_staging" {
243244
image = local.desired_images["archivematica-mcp-server-staging"]
244245
name = "archivematica-mcp-server-staging"
245246
env {
246-
name = "DJANGO_SECRET_KEY"
247+
name = "DJANGO_SECRET_KEY"
247248
value_from {
248249
secret_key_ref {
249250
name = "staging-archivematica-secrets"
@@ -324,7 +325,7 @@ resource "kubernetes_deployment" "archivematica_staging" {
324325
}
325326
}
326327
init_container {
327-
image = local.desired_images["archivematica-storage-service-staging"]
328+
image = local.desired_images["archivematica-storage-service-staging"]
328329
name = "archivematica-storage-service-migrations"
329330
command = ["sh"]
330331
args = ["-c", "python manage.py migrate --noinput"]
@@ -432,7 +433,7 @@ resource "kubernetes_deployment" "archivematica_staging" {
432433
args = ["-c", "python manage.py create_user --username=$(AM_SS_USERNAME) --password='$(AM_SS_PASSWORD)' --email=$(AM_SS_EMAIL) --api-key='$(AM_SS_API_KEY)' --superuser"]
433434
}
434435
init_container {
435-
image = local.desired_images["archivematica-dashboard-staging"]
436+
image = local.desired_images["archivematica-dashboard-staging"]
436437
name = "archivematica-dashboard-migration"
437438
command = ["sh"]
438439
args = ["-c", "python /src/src/dashboard/src/manage.py migrate --noinput"]
@@ -494,7 +495,7 @@ resource "kubernetes_deployment" "archivematica_staging" {
494495
}
495496
}
496497
init_container {
497-
image = local.desired_images["archivematica-storage-service-staging"]
498+
image = local.desired_images["archivematica-storage-service-staging"]
498499
name = "archivematica-rclone-configuration"
499500
command = ["sh"]
500501
args = ["-c", "rclone config create permanentb2 b2 account $(BACKBLAZE_KEY_ID) key $(BACKBLAZE_APPLICATION_KEY) --obscure"]
@@ -563,6 +564,7 @@ resource "kubernetes_deployment" "archivematica_staging" {
563564
}
564565

565566
data "kubernetes_resource" "mcp_client_staging" {
567+
count = local.need_staging_images ? 1 : 0
566568
kind = "Deployment"
567569
api_version = "apps/v1"
568570
metadata { name = "archivematica-mcp-client-staging" }

archivematica/test_cluster/variables.tf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,6 @@ variable "whitelisted_cidrs" {
126126

127127
variable "image_overrides" {
128128
description = "A map of docker images to be updated"
129-
type = map(string)
130-
default = {}
129+
type = map(string)
130+
default = {}
131131
}

0 commit comments

Comments
 (0)