@@ -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