diff --git a/terraform-k8s-infrastructure/main.tf b/terraform-k8s-infrastructure/main.tf index 1a624494..0020c3e3 100644 --- a/terraform-k8s-infrastructure/main.tf +++ b/terraform-k8s-infrastructure/main.tf @@ -1,4 +1,3 @@ -# Require TF version to be same as or greater than 0.12.13 terraform { backend "s3" { region = "us-east-1" @@ -8,6 +7,16 @@ terraform { } } +# import core state +data "terraform_remote_state" "core" { + backend = "s3" + config = { + bucket = local.tf_state_bucket + region = "us-east-1" + key = "core.tfstate" + } +} + data "aws_eks_cluster" "rw_api" { name = "${replace(local.project, " ", "-")}-k8s-cluster-${var.environment}" } @@ -37,6 +46,80 @@ module "k8s_data_layer" { backups_bucket = var.backups_bucket } -module "k8s_namespaces" { - source = "./modules/k8s_namespaces" -} \ No newline at end of file +module "postgresql" { + source = "./modules/postgresql" + postgresql_databases = ["resource-watch-manager"] + project = local.project + tags = local.tags + rds_dbname = data.terraform_remote_state.core.outputs.aurora_dbname + rds_host = data.terraform_remote_state.core.outputs.aurora_host + rds_port = data.terraform_remote_state.core.outputs.aurora_port + rds_username = data.terraform_remote_state.core.outputs.aurora_user_name + rds_password = var.rds_password +} + +module "resource_watch" { + source = "./modules/k8s_namespaces" + namespace = "rw" + app_secrets = { + RW_GOGGLE_API_TOKEN_SHORTENER = "" + RW_MAPBOX_API_TOKEN = "" + RW_SECRET = "" + RW_SENDGRID_API_KEY = "" + RW_SENDGRID_PASSWORD = "" + RW_SENDGRID_USERNAME = "" + RW_PREPROD_AUTH_USER = "" + RW_PREPROD_AUTH_PASSWORD = "" + RW_STAGING_AUTH_USER = "" + RW_STAGING_AUTH_PASSWORD = "" + } + db_secrets = { + REDIS_URI = "" + RESOURCE_WATCH_MANAGER_POSTGRESDB = module.postgresql.passwords["resource-watch-manager"] + + } + ms_secrets = { + CT_TOKEN = "" + CT_URL = "" + S3_ACCESS_KEY_ID = "" + S3_SECRET_ACCESS_KEY = "" + } + container_registry_server = "" + container_registry_username = "" + container_registry_password = "" +} + +module "gateway" { + source = "./modules/k8s_namespaces" + namespace = "gateway" +} + +module "core" { + source = "./modules/k8s_namespaces" + namespace = "core" +} + +module "aqueduct" { + source = "./modules/k8s_namespaces" + namespace = "aqueduct" +} + +module "gfw" { + source = "./modules/k8s_namespaces" + namespace = "gfw" +} + +module "fw" { + source = "./modules/k8s_namespaces" + namespace = "fw" +} + +module "prep" { + source = "./modules/k8s_namespaces" + namespace = "fw" +} + +module "climate-watch" { + source = "./modules/k8s_namespaces" + namespace = "fw" +} diff --git a/terraform-k8s-infrastructure/modules/k8s_namespaces/main.tf b/terraform-k8s-infrastructure/modules/k8s_namespaces/main.tf index 17cb2329..ac337206 100644 --- a/terraform-k8s-infrastructure/modules/k8s_namespaces/main.tf +++ b/terraform-k8s-infrastructure/modules/k8s_namespaces/main.tf @@ -1,7 +1,90 @@ -resource "kubernetes_namespace" "namespaces" { - count = length(var.namespaces) +resource "kubernetes_namespace" "namespace" { metadata { - name = var.namespaces[count.index] + name = var.namespace + } +} + +resource "kubernetes_secret" "ct_secrets" { + # only create secrets if db_secrets set + count = length(var.ct_secrets) > 0 ? 1 : 0 + metadata { + annotations = { + name = "ctsecrets" + namespace = var.namespace + } + } + + type = "Opaque" + data = var.db_secrets +} + +resource "kubernetes_secret" "db_secrets" { + # only create secrets if db_secrets set + count = length(var.db_secrets) > 0 ? 1 : 0 + metadata { + annotations = { + name = "dbsecrets" + namespace = var.namespace + } + } + + type = "Opaque" + data = var.db_secrets +} + +resource "kubernetes_secret" "app_secrets" { + # only create secrets if dbsecrets set + count = length(var.app_secrets) > 0 ? 1 : 0 + metadata { + annotations = { + name = "appsecrets" + namespace = var.namespace + } + } + + type = "Opaque" + data = var.app_secrets +} + +resource "kubernetes_secret" "ms_secrets" { + # only create secrets if ms_secrets set + count = length(var.ms_secrets) > 0 ? 1 : 0 + metadata { + annotations = { + name = "mssecrets" + namespace = var.namespace + } + } + + type = "Opaque" + data = var.ms_secrets +} + + +resource "kubernetes_secret" "container_registry" { + # only create secrets if container_registry_server set + count = length(var.container_registry_server) > 0 ? 1 : 0 + metadata { + annotations = { + name = "regcred" + namespace = var.namespace + } + } + + type = "kubernetes.io/dockerconfigjson" + data = { + ".dockerconfigjson" = <