infra.yaml Schema Reference
ReferencePublicUpdated 2026-04-08
Overview
infra.yaml configures the underlying infrastructure layer — cloud provider settings, networking, node groups, and storage. It is generated by smoothglue configure alongside platform.yaml and lives in the same working directory.
platform.yaml controls which applications are deployed. infra.yaml controls where and on what hardware they run.
File location
./ ← your working directory
├── platform.yaml ← app selection and platform settings
└── infra.yaml ← infrastructure topology settings
Top-level structure
provider: aws | gcp | azure | kvm
version: "1"
cluster:
name: ""
region: "" # cloud providers only
kubernetes_version: ""
network: {}
node_groups: []
storage: {}
registry: {}
Fields
provider
Required. The infrastructure target.
| Value | Description |
|---|---|
aws | AWS EKS — managed Kubernetes on EC2 |
gcp | GCP GKE — partial support, see Known Gaps |
azure | Azure AKS — partial support, see Known Gaps |
kvm | On-premises KVM / k3s — air-gap capable |
cluster
| Field | Type | Default | Description |
|---|---|---|---|
name | string | required | Cluster name — used as prefix for all cloud resources |
region | string | required (cloud) | AWS region, GCP region, or Azure location |
kubernetes_version | string | "1.29" | Kubernetes version. Must match a version supported by your provider |
ha_control_plane | bool | false | Multi-AZ control plane (3 nodes). Adds ~30min to install. |
network
| Field | Type | Default | Description |
|---|---|---|---|
vpc_cidr | string | "10.0.0.0/16" | VPC CIDR block (AWS/GCP/Azure) |
pod_cidr | string | "10.244.0.0/16" | Pod network CIDR (Flannel/Cilium) |
service_cidr | string | "10.96.0.0/12" | Kubernetes service CIDR |
private_endpoints | bool | true | Route AWS API calls through VPC endpoints (no public internet) |
proxy.enabled | bool | false | Enable HTTP/HTTPS proxy for egress (air-gap environments) |
proxy.http_proxy | string | "" | HTTP proxy URL |
proxy.https_proxy | string | "" | HTTPS proxy URL |
proxy.no_proxy | string | "" | Comma-separated no-proxy list |
node_groups
Array of node group definitions. Each group maps to an EC2 Auto Scaling Group (AWS), GKE node pool, or KVM host group.
node_groups:
- name: platform
role: platform # platform | workload | edge
instance_type: m5.4xlarge
min_size: 2
max_size: 6
disk_size_gb: 200
labels:
node-role: platform
taints: []
| Field | Type | Default | Description |
|---|---|---|---|
name | string | required | Node group name |
role | enum | required | platform (runs SmoothGlue core), workload (app workloads), edge (KVM edge nodes) |
instance_type | string | required | EC2 instance type or KVM flavor |
min_size | int | 1 | Minimum node count |
max_size | int | min_size | Maximum node count (enables autoscaling if > min_size) |
disk_size_gb | int | 100 | Root EBS volume or KVM disk size in GB |
labels | map | {} | Kubernetes node labels |
taints | list | [] | Kubernetes node taints |
Minimum sizing (Run template): m5.4xlarge × 2 nodes for the platform node group.
storage
| Field | Type | Default | Description |
|---|---|---|---|
default_storage_class | string | gp3 (AWS) | Default StorageClass for PersistentVolumeClaims |
velero.enabled | bool | true | Enable Velero backup (requires S3/GCS/Azure Blob) |
velero.bucket | string | "" | Backup destination bucket name |
velero.region | string | "" | Backup bucket region |
velero.schedule | string | "0 2 * * *" | Cron schedule for automated backups |
registry
| Field | Type | Default | Description |
|---|---|---|---|
iron_bank.enabled | bool | true | Pull platform base images from Iron Bank (DoD hardened registry) |
iron_bank.registry | string | registry1.dso.mil | Iron Bank registry URL |
mirror.enabled | bool | false | Cache Iron Bank images in an on-prem mirror registry |
mirror.url | string | "" | Mirror registry URL (for air-gap) |
Complete example (AWS, Run template)
provider: aws
version: "1"
cluster:
name: my-smoothglue
region: us-east-1
kubernetes_version: "1.29"
ha_control_plane: true
network:
vpc_cidr: "10.0.0.0/16"
pod_cidr: "10.244.0.0/16"
service_cidr: "10.96.0.0/12"
private_endpoints: true
node_groups:
- name: platform
role: platform
instance_type: m5.4xlarge
min_size: 2
max_size: 6
disk_size_gb: 200
storage:
default_storage_class: gp3
velero:
enabled: true
bucket: my-smoothglue-backups
region: us-east-1
schedule: "0 2 * * *"
registry:
iron_bank:
enabled: true
registry: registry1.dso.mil
Known provider gaps
| Provider | Status | Gap |
|---|---|---|
| AWS EKS | GA | Full support |
| KVM (k3s) | GA | Full support, air-gap capable |
| GCP GKE | Partial | Networking and storage fields not fully validated |
| Azure AKS | Partial | Node group autoscaling not implemented |