diff --git a/deploy/README.md b/deploy/README.md index 12a54c2..15d924b 100644 --- a/deploy/README.md +++ b/deploy/README.md @@ -63,53 +63,29 @@ Pre-requisites: 11. Access the repository via the ingress load balancer. You can find its external IP with: `kubectl get svc ingress-nginx-controller -n ingress-nginx`. Then run `curl -H "Host: prod.registry.modelcontextprotocol.io" -k https:///v0/ping` to check that the service is up. - ## Structure ``` -├── main.go # Pulumi program entry point -├── Pulumi.yaml # Project configuration -├── Pulumi.local.yaml # Local stack configuration -├── Pulumi.prod.yaml # Production stack configuration (Azure) -├── Pulumi.gcp.yaml # Production stack configuration (GCP) -├── Makefile # Build and deployment targets -├── go.mod # Go module dependencies -├── go.sum # Go module checksums -└── pkg/ # Infrastructure packages - ├── k8s/ # Kubernetes deployment components +├── main.go # Pulumi program entry point +├── Pulumi.yaml # Project configuration +├── Pulumi.local.yaml # Local stack configuration +├── Pulumi.gcpProd.yaml # GCP production stack configuration +├── Pulumi.gcpStaging.yaml # GCP staging stack configuration +├── Makefile # Build and deployment targets +├── go.mod # Go module dependencies +├── go.sum # Go module checksums +└── pkg/ # Infrastructure packages + ├── k8s/ # Kubernetes deployment components │ ├── backup.go # Database backup configuration │ ├── cert_manager.go # SSL certificate management │ ├── deploy.go # Deployment orchestration │ ├── ingress.go # Ingress controller setup + │ ├── monitoring.go # Metrics and monitoring setup │ ├── postgres.go # PostgreSQL database deployment │ └── registry.go # MCP Registry deployment - └── providers/ # Kubernetes cluster providers + └── providers/ # Kubernetes cluster providers ├── types.go # Provider interface definitions - ├── aks/ # Azure Kubernetes Service provider ├── gcp/ # Google Kubernetes Engine provider └── local/ # Local kubeconfig provider ``` @@ -119,21 +95,22 @@ Pre-requisites: #### Deployment Flow 1. Pulumi program starts in `main.go` 2. Configuration is loaded from Pulumi config files -3. Provider factory creates appropriate cluster provider (AKS or local) +3. Provider factory creates appropriate cluster provider (GCP or local) 4. Cluster provider sets up Kubernetes access 5. `k8s.DeployAll()` orchestrates complete deployment: - Certificate manager for SSL/TLS - Ingress controller for external access - Database for data persistence - Backup infrastructure for database + - Monitoring and metrics collection - MCP Registry application ## Configuration | Parameter | Description | Required | |-----------|-------------|----------| -| `environment` | Deployment environment (dev/prod) | Yes | -| `provider` | Kubernetes provider (local/aks/gcp) | No (default: local) | +| `environment` | Deployment environment (local/staging/prod) | Yes | +| `provider` | Kubernetes provider (local/gcp) | No (default: local) | | `githubClientId` | GitHub OAuth Client ID | Yes | | `githubClientSecret` | GitHub OAuth Client Secret | Yes | | `gcpProjectId` | GCP Project ID (required when provider=gcp) | No | diff --git a/deploy/pkg/k8s/ingress.go b/deploy/pkg/k8s/ingress.go index abfe79f..fd9cdd2 100644 --- a/deploy/pkg/k8s/ingress.go +++ b/deploy/pkg/k8s/ingress.go @@ -52,10 +52,7 @@ func SetupIngressController(ctx *pulumi.Context, cluster *providers.ProviderInfo "controller": pulumi.Map{ "service": pulumi.Map{ "type": serviceType, - "annotations": pulumi.Map{ - // Add Azure Load Balancer health probe annotation as otherwise it defaults to / which fails - "service.beta.kubernetes.io/azure-load-balancer-health-probe-request-path": pulumi.String("/healthz"), - }, + "annotations": pulumi.Map{}, }, "config": pulumi.Map{ // Disable strict path validation, to work around a bug in ingress-nginx