This includes infra setup for metrics collection and visualisation ## Motivation and Context It is important to have basic observability setup, so that common issues can be identified quickly ## How Has This Been Tested? - Tested on local - Tested on one of the production setup ## Breaking Changes No ## Types of changes <!-- What types of changes does your code introduce? Put an `x` in all the boxes that apply: --> - [ ] Bug fix (non-breaking change which fixes an issue) - [X] New feature (non-breaking change which adds functionality) - [ ] Breaking change (fix or feature that would cause existing functionality to change) - [ ] Documentation update ## Checklist <!-- Go over all the following points, and put an `x` in all the boxes that apply. --> - [X] I have read the [MCP Documentation](https://modelcontextprotocol.io) - [X] My code follows the repository's style guidelines - [X] New and existing tests pass locally - [X] I have added appropriate error handling - [ ] I have added or updated documentation as needed ## Additional context - This includes set up of following components: - Victoriametrics single node cluster for storing metrics data with persistent storage configuration for local and production env. - Vmagent with target discovery for mcp-registry pods with scrape interval of 30s. - Grafana for visualising metrics and setting alerts. - Datasource of victoriametrics is pre-configured as config map - Persistent volume for basic configuration - Sqlite for local and Postgres for production setup for storing dashboard, alerts etc details ## Metrics in action <img width="1422" height="666" alt="Screenshot 2025-08-31 at 4 35 28 AM" src="https://github.com/user-attachments/assets/e54ce846-653c-4fa3-aa7a-fe277f0810e6" /> --------- Co-authored-by: Adam Jones <adamj@anthropic.com> Co-authored-by: adam jones <adamj+git@anthropic.com>
49 lines
1.3 KiB
Go
49 lines
1.3 KiB
Go
package k8s
|
|
|
|
import (
|
|
corev1 "github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes/core/v1"
|
|
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
|
|
|
|
"github.com/modelcontextprotocol/registry/deploy/infra/pkg/providers"
|
|
)
|
|
|
|
// DeployAll orchestrates the complete deployment of the MCP Registry to Kubernetes
|
|
func DeployAll(ctx *pulumi.Context, cluster *providers.ProviderInfo, backupStorage *providers.BackupStorageInfo, environment string) (service *corev1.Service, err error) {
|
|
// Setup cert-manager
|
|
err = SetupCertManager(ctx, cluster)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
// Setup ingress controller
|
|
ingressNginx, err := SetupIngressController(ctx, cluster, environment)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
// Deploy PostgreSQL databases
|
|
pgCluster, err := DeployPostgresDatabases(ctx, cluster, environment)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
// Deploy k8up backup operator
|
|
err = DeployK8up(ctx, cluster, environment, backupStorage)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
// Deploy MCP Registry
|
|
service, err = DeployMCPRegistry(ctx, cluster, environment, ingressNginx, pgCluster)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
// Deploy monitoring stack
|
|
err = DeployMonitoringStack(ctx, cluster, environment, ingressNginx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return service, nil
|
|
}
|