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.