Skip to content

Commit 6c53b4c

Browse files
committed
infra: first stab at postgres stuff
1 parent 6b3a951 commit 6c53b4c

File tree

6 files changed

+70
-166
lines changed

6 files changed

+70
-166
lines changed

deploy/README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ Pre-requisites:
103103
│ ├── cert_manager.go # SSL certificate management
104104
│ ├── deploy.go # Deployment orchestration
105105
│ ├── ingress.go # Ingress controller setup
106-
│ ├── mongodb.go # MongoDB deployment
106+
│ ├── postgres.go # PostgreSQL database deployment
107107
│ └── registry.go # MCP Registry deployment
108108
└── providers/ # Kubernetes cluster providers
109109
├── types.go # Provider interface definitions
@@ -122,7 +122,7 @@ Pre-requisites:
122122
5. `k8s.DeployAll()` orchestrates complete deployment:
123123
- Certificate manager for SSL/TLS
124124
- Ingress controller for external access
125-
- MongoDB for data persistence
125+
- Database for data persistence
126126
- MCP Registry application
127127
128128
## Configuration
@@ -152,5 +152,5 @@ kubectl get svc -n ingress-nginx
152152
153153
```bash
154154
kubectl logs -l app=mcp-registry
155-
kubectl logs -l app=mongodb
155+
kubectl logs -l app=postgres
156156
```

deploy/pkg/k8s/deploy.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,14 @@ func DeployAll(ctx *pulumi.Context, cluster *providers.ProviderInfo, environment
2121
return nil, err
2222
}
2323

24-
// Deploy MongoDB
25-
err = DeployMongoDB(ctx, cluster, environment)
24+
// Deploy PostgreSQL databases
25+
pgCluster, err := DeployPostgresDatabases(ctx, cluster, environment)
2626
if err != nil {
2727
return nil, err
2828
}
2929

3030
// Deploy MCP Registry
31-
service, err = DeployMCPRegistry(ctx, cluster, environment)
31+
service, err = DeployMCPRegistry(ctx, cluster, environment, pgCluster)
3232
if err != nil {
3333
return nil, err
3434
}

deploy/pkg/k8s/mongodb.go

Lines changed: 0 additions & 141 deletions
This file was deleted.

deploy/pkg/k8s/postgres.go

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package k8s
2+
3+
import (
4+
"github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes/apiextensions"
5+
"github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes/helm/v3"
6+
metav1 "github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes/meta/v1"
7+
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
8+
9+
"github.com/modelcontextprotocol/registry/deploy/infra/pkg/providers"
10+
)
11+
12+
// DeployPostgresDatabases deploys the CloudNative PostgreSQL operator and PostgreSQL cluster
13+
func DeployPostgresDatabases(ctx *pulumi.Context, cluster *providers.ProviderInfo, environment string) (*apiextensions.CustomResource, error) {
14+
// Install cloudnative-pg Helm chart
15+
cloudNativePG, err := helm.NewChart(ctx, "cloudnative-pg", helm.ChartArgs{
16+
Chart: pulumi.String("cloudnative-pg"),
17+
Version: pulumi.String("v0.26.0"),
18+
FetchArgs: helm.FetchArgs{
19+
Repo: pulumi.String("https://cloudnative-pg.github.io/charts"),
20+
},
21+
Namespace: pulumi.String("cnpg-system"),
22+
}, pulumi.Provider(cluster.Provider))
23+
if err != nil {
24+
return nil, err
25+
}
26+
27+
// Create PostgreSQL cluster
28+
pgCluster, err := apiextensions.NewCustomResource(ctx, "registry-pg", &apiextensions.CustomResourceArgs{
29+
ApiVersion: pulumi.String("postgresql.cnpg.io/v1"),
30+
Kind: pulumi.String("Cluster"),
31+
Metadata: &metav1.ObjectMetaArgs{
32+
Name: pulumi.String("registry-pg"),
33+
Namespace: pulumi.String("default"),
34+
Labels: pulumi.StringMap{
35+
"app": pulumi.String("registry-pg"),
36+
"environment": pulumi.String(environment),
37+
},
38+
},
39+
OtherFields: map[string]interface{}{
40+
"spec": map[string]interface{}{
41+
"instances": 1,
42+
"storage": map[string]interface{}{
43+
"size": "50Gi",
44+
},
45+
},
46+
},
47+
}, pulumi.Provider(cluster.Provider), pulumi.DependsOn([]pulumi.Resource{cloudNativePG}))
48+
if err != nil {
49+
return nil, err
50+
}
51+
52+
return pgCluster, nil
53+
}

deploy/pkg/k8s/registry.go

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"strings"
66

77
v1 "github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes/apps/v1"
8+
"github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes/apiextensions"
89
corev1 "github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes/core/v1"
910
metav1 "github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes/meta/v1"
1011
networkingv1 "github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes/networking/v1"
@@ -26,7 +27,7 @@ func getGitCommitHash() string {
2627
}
2728

2829
// DeployMCPRegistry deploys the MCP Registry to the Kubernetes cluster
29-
func DeployMCPRegistry(ctx *pulumi.Context, cluster *providers.ProviderInfo, environment string) (*corev1.Service, error) {
30+
func DeployMCPRegistry(ctx *pulumi.Context, cluster *providers.ProviderInfo, environment string, pgCluster *apiextensions.CustomResource) (*corev1.Service, error) {
3031
conf := config.New(ctx, "mcp-registry")
3132
githubClientId := conf.Require("githubClientId")
3233

@@ -91,8 +92,15 @@ func DeployMCPRegistry(ctx *pulumi.Context, cluster *providers.ProviderInfo, env
9192
},
9293
Env: corev1.EnvVarArray{
9394
&corev1.EnvVarArgs{
94-
Name: pulumi.String("MCP_REGISTRY_DATABASE_URL"),
95-
Value: pulumi.String("mongodb://mongodb.default.svc.cluster.local:27017"),
95+
Name: pulumi.String("MCP_REGISTRY_DATABASE_URL"),
96+
ValueFrom: &corev1.EnvVarSourceArgs{
97+
SecretKeyRef: &corev1.SecretKeySelectorArgs{
98+
Name: pgCluster.Metadata.Name().ApplyT(func(name string) string {
99+
return name + "-app"
100+
}).(pulumi.StringOutput),
101+
Key: pulumi.String("uri"),
102+
},
103+
},
96104
},
97105
&corev1.EnvVarArgs{
98106
Name: pulumi.String("MCP_REGISTRY_GITHUB_CLIENT_ID"),

internal/database/migrations/001_initial_schema.sql

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -56,19 +56,3 @@ CREATE TRIGGER update_servers_updated_at
5656
BEFORE UPDATE ON servers
5757
FOR EACH ROW
5858
EXECUTE FUNCTION update_updated_at_column();
59-
60-
-- View for listing servers (similar to current MongoDB List behavior)
61-
CREATE VIEW server_list AS
62-
SELECT
63-
id,
64-
name,
65-
description,
66-
status,
67-
repository,
68-
jsonb_build_object(
69-
'version', version,
70-
'release_date', release_date,
71-
'is_latest', is_latest
72-
) as version_detail
73-
FROM servers
74-
WHERE is_latest = true;

0 commit comments

Comments
 (0)