@@ -145,7 +145,15 @@ func DeployMCPRegistry(ctx *pulumi.Context, cluster *providers.ProviderInfo, env
145
145
}
146
146
147
147
// 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
+
149
157
ingress , err := networkingv1 .NewIngress (ctx , "mcp-registry" , & networkingv1.IngressArgs {
150
158
Metadata : & metav1.ObjectMetaArgs {
151
159
Name : pulumi .String ("mcp-registry" ),
@@ -155,46 +163,55 @@ func DeployMCPRegistry(ctx *pulumi.Context, cluster *providers.ProviderInfo, env
155
163
"environment" : pulumi .String (environment ),
156
164
},
157
165
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" ),
159
168
},
160
169
},
161
170
Spec : & networkingv1.IngressSpecArgs {
162
171
Tls : networkingv1.IngressTLSArray {
163
172
& networkingv1.IngressTLSArgs {
164
- Hosts : pulumi.StringArray {
165
- pulumi .Sprintf (domain , environment ),
166
- },
173
+ Hosts : pulumi .ToStringArray (hosts ),
167
174
SecretName : pulumi .Sprintf ("mcp-registry-%s-tls" , environment ),
168
175
},
169
176
},
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
+ },
183
193
},
184
194
},
185
195
},
186
196
},
187
197
},
188
- },
189
- },
190
- },
198
+ })
199
+ }
200
+ return rules
201
+ }).(networkingv1.IngressRuleArrayOutput ),
191
202
},
192
203
}, pulumi .Provider (cluster .Provider ))
193
204
if err != nil {
194
205
return nil , err
195
206
}
196
207
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
+ }))
198
215
199
216
return service , nil
200
217
}
0 commit comments