Skip to content

Commit 01a6ce5

Browse files
authored
infra: Update Ingress configuration to support prod registry domain at registry.modelcontextprotocol.io (#266)
i.e. ```diff staging.registry.modelcontextprotocol.io -> staging prod.registry.modelcontextprotocol.io -> prod + registry.modelcontextprotocol.io -> prod ```
1 parent 79fdd2d commit 01a6ce5

File tree

1 file changed

+39
-22
lines changed

1 file changed

+39
-22
lines changed

deploy/pkg/k8s/registry.go

Lines changed: 39 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,15 @@ func DeployMCPRegistry(ctx *pulumi.Context, cluster *providers.ProviderInfo, env
145145
}
146146

147147
// Create Ingress
148-
domain := "%s.registry.modelcontextprotocol.io"
148+
hosts := []string{
149+
environment + ".registry.modelcontextprotocol.io",
150+
}
151+
152+
// Add root domain for prod environment
153+
if environment == "prod" {
154+
hosts = append(hosts, "registry.modelcontextprotocol.io")
155+
}
156+
149157
ingress, err := networkingv1.NewIngress(ctx, "mcp-registry", &networkingv1.IngressArgs{
150158
Metadata: &metav1.ObjectMetaArgs{
151159
Name: pulumi.String("mcp-registry"),
@@ -155,46 +163,55 @@ func DeployMCPRegistry(ctx *pulumi.Context, cluster *providers.ProviderInfo, env
155163
"environment": pulumi.String(environment),
156164
},
157165
Annotations: pulumi.StringMap{
158-
"kubernetes.io/ingress.class": pulumi.String("nginx"),
166+
"cert-manager.io/cluster-issuer": pulumi.String("letsencrypt-prod"),
167+
"kubernetes.io/ingress.class": pulumi.String("nginx"),
159168
},
160169
},
161170
Spec: &networkingv1.IngressSpecArgs{
162171
Tls: networkingv1.IngressTLSArray{
163172
&networkingv1.IngressTLSArgs{
164-
Hosts: pulumi.StringArray{
165-
pulumi.Sprintf(domain, environment),
166-
},
173+
Hosts: pulumi.ToStringArray(hosts),
167174
SecretName: pulumi.Sprintf("mcp-registry-%s-tls", environment),
168175
},
169176
},
170-
Rules: networkingv1.IngressRuleArray{
171-
&networkingv1.IngressRuleArgs{
172-
Host: pulumi.Sprintf(domain, environment),
173-
Http: &networkingv1.HTTPIngressRuleValueArgs{
174-
Paths: networkingv1.HTTPIngressPathArray{
175-
&networkingv1.HTTPIngressPathArgs{
176-
Path: pulumi.String("/"),
177-
PathType: pulumi.String("Prefix"),
178-
Backend: &networkingv1.IngressBackendArgs{
179-
Service: &networkingv1.IngressServiceBackendArgs{
180-
Name: service.Metadata.Name().Elem(),
181-
Port: &networkingv1.ServiceBackendPortArgs{
182-
Number: pulumi.Int(80),
177+
Rules: pulumi.ToStringArray(hosts).ToStringArrayOutput().ApplyT(func(hosts []string) networkingv1.IngressRuleArray {
178+
rules := make(networkingv1.IngressRuleArray, 0, len(hosts))
179+
for _, host := range hosts {
180+
rules = append(rules, &networkingv1.IngressRuleArgs{
181+
Host: pulumi.String(host),
182+
Http: &networkingv1.HTTPIngressRuleValueArgs{
183+
Paths: networkingv1.HTTPIngressPathArray{
184+
&networkingv1.HTTPIngressPathArgs{
185+
Path: pulumi.String("/"),
186+
PathType: pulumi.String("Prefix"),
187+
Backend: &networkingv1.IngressBackendArgs{
188+
Service: &networkingv1.IngressServiceBackendArgs{
189+
Name: service.Metadata.Name().Elem(),
190+
Port: &networkingv1.ServiceBackendPortArgs{
191+
Number: pulumi.Int(80),
192+
},
183193
},
184194
},
185195
},
186196
},
187197
},
188-
},
189-
},
190-
},
198+
})
199+
}
200+
return rules
201+
}).(networkingv1.IngressRuleArrayOutput),
191202
},
192203
}, pulumi.Provider(cluster.Provider))
193204
if err != nil {
194205
return nil, err
195206
}
196207

197-
ctx.Export("ingressHost", ingress.Spec.Rules().Index(pulumi.Int(0)).Host())
208+
ctx.Export("ingressHosts", ingress.Spec.Rules().ApplyT(func(rules []networkingv1.IngressRule) []string {
209+
hosts := make([]string, 0, len(rules))
210+
for _, rule := range rules {
211+
hosts = append(hosts, *rule.Host)
212+
}
213+
return hosts
214+
}))
198215

199216
return service, nil
200217
}

0 commit comments

Comments
 (0)