Skip to content

Implementation Studio Modules

This directory contains reusable infrastructure and Kubernetes building blocks used by the labs and intended to be adaptable for real implementation work.

Catalog

GCP Terraform Modules

ModulePurpose
artifact-registryGoogle Artifact Registry repository for container images
firewall-rulesCommon GCP firewall patterns for restricted environments
gke-clusterGKE cluster module for standard and private deployments
vpc-privatePrivate GCP network baseline
vpc-standardStandard GCP VPC with public/private subnet patterns

AWS Terraform Modules

ModulePurpose
ecrElastic Container Registry repository
eks-clusterEKS cluster module for standard and private deployments
rdsRelational database module with production-oriented options
security-groupsSecurity group patterns for EKS and restricted egress
vpcStandard AWS VPC with public/private subnet patterns
vpc-privatePrivate AWS network baseline with endpoint-oriented design

Kubernetes Pattern Bundles

BundlePurpose
argo-workflowsStandard Argo Workflows Helm values
argo-workflows-airgapOffline-friendly Argo Workflows values, images list, and chart packaging
ingress-nginxPublic ingress-nginx values
network-policiesDeny-all, ingress, DNS egress, and namespace isolation policies
rbac-patternsNamespace admin, read-only, and deployment-only RBAC templates
resource-quotasStandard and limited quota profiles for tenant isolation

Provider Equivalents

CapabilityGCPAWSKubernetes
Kubernetes clustergke-clustereks-clusterargo-workflows deploys onto either
Standard networkvpc-standardvpcNetwork policies refine in-cluster behavior
Private networkvpc-privatevpc-privateInternal access patterns live in labs
Container registryartifact-registryecrAir-gap packaging supports offline registry use
Egress/security controlsfirewall-rulessecurity-groupsnetwork-policies
Tenant controlsProvider IAM plus cluster configProvider IAM plus cluster configrbac-patterns, resource-quotas, network-policies

Usage

Use modules from a lab or copy them into your own Terraform project.

hcl
module "vpc" {
  source = "../../modules/gcp/vpc-standard"

  project_id = var.project_id
  region     = var.region
  name       = var.network_name
}

module "cluster" {
  source = "../../modules/gcp/gke-cluster"

  project_id  = var.project_id
  region      = var.region
  network     = module.vpc.network_name
  subnetwork  = module.vpc.private_subnet_name
  cluster_name = var.cluster_name
}

For AWS, use the matching AWS module family:

hcl
module "vpc" {
  source = "../../modules/aws/vpc"

  region = var.region
  name   = var.network_name
}

module "cluster" {
  source = "../../modules/aws/eks-cluster"

  cluster_name = var.cluster_name
  subnet_ids   = module.vpc.private_subnet_ids
}

Validation

Run these checks before changing modules:

bash
terraform fmt -check -recursive
tools/validate-terraform.sh
tools/validate-modules.sh

The GitHub Actions workflow also runs Terraform format, init, validate, and tflint checks on Terraform changes.

Module Standards

Every Terraform module should include:

  • main.tf, variables.tf, outputs.tf, and versions.tf.
  • A README with purpose, usage, inputs, outputs, and provider notes.
  • Typed variables with descriptions and sensible defaults when safe.
  • Outputs that support composition by labs and downstream projects.
  • No environment-specific hardcoding unless the README explains why.

Every Kubernetes pattern bundle should include:

  • A README that explains when to use the pattern.
  • Manifests or Helm values that can be copied into labs.
  • Security and production notes where the pattern changes risk posture.

Released under the MIT License.