Create Infrastructure
Generate Harness Infrastructure Definition YAML and push via MCP.
Instructions
- Identify infrastructure type - KubernetesDirect, KubernetesGcp (GKE), KubernetesAzure (AKS), ECS, or ServerlessAwsLambda
- Ensure prerequisites exist - The environment and cloud/cluster connector must be created first
- Generate YAML using the templates below, referencing the correct connector and environment
- Create via MCP using
harness_createwith resource_typeinfrastructure
Infrastructure Types
KubernetesDirect
infrastructureDefinition:
name: K8s Production
identifier: k8s_prod
orgIdentifier: default
projectIdentifier: my_project
environmentRef: prod
deploymentType: Kubernetes
type: KubernetesDirect
spec:
connectorRef: k8s_connector
namespace: my-app-prod
releaseName: release-<+INFRA_KEY_SHORT_ID>
allowSimultaneousDeployments: false
KubernetesGcp (GKE)
infrastructureDefinition:
name: GKE Cluster
identifier: gke_prod
environmentRef: prod
deploymentType: Kubernetes
type: KubernetesGcp
spec:
connectorRef: gcp_connector
cluster: my-gke-cluster
namespace: my-app
releaseName: release-<+INFRA_KEY_SHORT_ID>
KubernetesAzure (AKS)
infrastructureDefinition:
name: AKS Cluster
identifier: aks_prod
environmentRef: prod
deploymentType: Kubernetes
type: KubernetesAzure
spec:
connectorRef: azure_connector
subscriptionId: <subscription_id>
resourceGroup: my-rg
cluster: my-aks-cluster
namespace: my-app
releaseName: release-<+INFRA_KEY_SHORT_ID>
ECS
infrastructureDefinition:
name: ECS Fargate
identifier: ecs_prod
environmentRef: prod
deploymentType: ECS
type: ECS
spec:
connectorRef: aws_connector
region: us-east-1
cluster: my-ecs-cluster
ServerlessAwsLambda
infrastructureDefinition:
name: Lambda
identifier: lambda_prod
environmentRef: prod
deploymentType: ServerlessAwsLambda
type: ServerlessAwsLambda
spec:
connectorRef: aws_connector
region: us-east-1
stage: prod
AzureWebApp
infrastructureDefinition:
name: Azure Web App
identifier: azure_webapp_prod
environmentRef: prod
deploymentType: AzureWebApp
type: AzureWebApp
spec:
connectorRef: azure_connector
subscriptionId: <subscription_id>
resourceGroup: my-rg
Asg (Auto Scaling Group)
infrastructureDefinition:
name: ASG Production
identifier: asg_prod
environmentRef: prod
deploymentType: Asg
type: Asg
spec:
connectorRef: aws_connector
region: us-east-1
GoogleCloudFunctions
infrastructureDefinition:
name: Cloud Functions
identifier: gcf_prod
environmentRef: prod
deploymentType: GoogleCloudFunctions
type: GoogleCloudFunctions
spec:
connectorRef: gcp_connector
region: us-central1
project: my-gcp-project
Pdc (Physical Data Center)
infrastructureDefinition:
name: On-Prem Servers
identifier: pdc_prod
environmentRef: prod
deploymentType: Ssh
type: Pdc
spec:
connectorRef: pdc_connector
hosts:
- host1.example.com
- host2.example.com
Creating via MCP
Call MCP tool: harness_create
Parameters:
resource_type: "infrastructure"
org_id: "<organization>"
project_id: "<project>"
body: <infrastructure YAML>
Examples
- "Create a K8s infrastructure for prod" - KubernetesDirect with prod namespace
- "Set up GKE infrastructure" - KubernetesGcp with GCP connector
- "Create ECS Fargate infrastructure" - ECS type with AWS connector
- "Create Azure Web App infrastructure" - AzureWebApp type with subscription and resource group
- "Set up on-prem infrastructure" - Pdc type with host list for SSH deployments
Performance Notes
- Verify the referenced connector and environment exist before creating the infrastructure definition.
- Ensure namespace and cluster names are accurate — typos will cause deployment failures.
- Use
<+INFRA_KEY_SHORT_ID>in releaseName to guarantee uniqueness across deployments.
Troubleshooting
CONNECTOR_NOT_FOUND- Create the cloud/K8s connector firstENVIRONMENT_NOT_FOUND- Create the environment firstreleaseNamemust be unique per deployment; use<+INFRA_KEY_SHORT_ID>deploymentTypemust match the service definition's type (e.g., Kubernetes service needs KubernetesDirect infra)allowSimultaneousDeployments: falseis the default; set totrueonly if concurrent deploys are safe