如何在 Pulumi 上使用带入口的路径?
How to use paths with ingress on Pulumi?
在 this pulumi walkthrough 之后,我需要通过 nginx 入口控制器公开 2 个服务:kuard
和 rstudiogp
。 kuard 应用程序只是为了证明 kubernetes 已启动,rstudio 应用程序是我想添加到集群中的东西。
我想在 apps.example.com
访问 kuard 服务,在 apps.example.com/rstudio
访问 rstudio 服务。但是,我只能通过将其中一台主机更改为 apps.example.rstudio.com
来同时在线,所以我有 2 台主机而不是一台。
是否可以使用入口路径来公开两个使用相同入口规则的服务?如何使用相同的主机名访问具有不同路径的两个服务,例如apps.example.com/kuard
和 apps.example.com/rstudio
?
curl -Lv -H 'Host: apps.example.com' <PUBLIC-IP>
.
当前 Kuard 入口:
// Create the kuard Ingress
const ingress = new k8s.extensions.v1beta1.Ingress(namekuard,
{
metadata: {
labels: labels,
namespace: namespaceName,
annotations: {"kubernetes.io/ingress.class": "nginx"},
},
spec: {
rules: [
{
host: "apps.example.com",
http: {
paths: [
{
path: "/",
backend: {
serviceName: serviceName,
servicePort: "http",
}
},
],
},
}
]
}
},
{provider: clusterProvider}
);
当前的 RStudio 入口(请参阅我尝试但未成功的注释行):
const ingress_rs = new k8s.extensions.v1beta1.Ingress(rsname,
{
metadata: {
labels: labels_rs,
namespace: namespaceName,
annotations: {"kubernetes.io/ingress.class": "nginx"},
},
spec: {
rules: [
{
host: "apps.example.rstudio.com",
http: {
paths: [
{
path: "/",
backend: {
serviceName: serviceName_rs,
servicePort: "http",
}
},
// {
// path: "/rstudio",
// pathType: "Prefix",
// backend: {
// serviceName: serviceName_rs,
// servicePort: "http",
// }
// },
],
},
}
]
}
},
{provider: clusterProvider}
);
发现问题出在我的应用程序期望从根 url 提供服务。
在 this pulumi walkthrough 之后,我需要通过 nginx 入口控制器公开 2 个服务:kuard
和 rstudiogp
。 kuard 应用程序只是为了证明 kubernetes 已启动,rstudio 应用程序是我想添加到集群中的东西。
我想在 apps.example.com
访问 kuard 服务,在 apps.example.com/rstudio
访问 rstudio 服务。但是,我只能通过将其中一台主机更改为 apps.example.rstudio.com
来同时在线,所以我有 2 台主机而不是一台。
是否可以使用入口路径来公开两个使用相同入口规则的服务?如何使用相同的主机名访问具有不同路径的两个服务,例如apps.example.com/kuard
和 apps.example.com/rstudio
?
curl -Lv -H 'Host: apps.example.com' <PUBLIC-IP>
.
当前 Kuard 入口:
// Create the kuard Ingress
const ingress = new k8s.extensions.v1beta1.Ingress(namekuard,
{
metadata: {
labels: labels,
namespace: namespaceName,
annotations: {"kubernetes.io/ingress.class": "nginx"},
},
spec: {
rules: [
{
host: "apps.example.com",
http: {
paths: [
{
path: "/",
backend: {
serviceName: serviceName,
servicePort: "http",
}
},
],
},
}
]
}
},
{provider: clusterProvider}
);
当前的 RStudio 入口(请参阅我尝试但未成功的注释行):
const ingress_rs = new k8s.extensions.v1beta1.Ingress(rsname,
{
metadata: {
labels: labels_rs,
namespace: namespaceName,
annotations: {"kubernetes.io/ingress.class": "nginx"},
},
spec: {
rules: [
{
host: "apps.example.rstudio.com",
http: {
paths: [
{
path: "/",
backend: {
serviceName: serviceName_rs,
servicePort: "http",
}
},
// {
// path: "/rstudio",
// pathType: "Prefix",
// backend: {
// serviceName: serviceName_rs,
// servicePort: "http",
// }
// },
],
},
}
]
}
},
{provider: clusterProvider}
);
发现问题出在我的应用程序期望从根 url 提供服务。