gpt4 book ai didi

jenkins - 如何在Jelastic托管的kubernetes中配置服务入口?

转载 作者:行者123 更新时间:2023-12-02 11:56:11 26 4
gpt4 key购买 nike

就是这个我在jelastic帐户上安装了kubernetes集群,如下所示:

enter image description here

然后,我想向集群外部提供服务。 HelloWorld正在群集上开箱即用,因此我认为我可以轻松地将其转换为我的需求。安装群集后,浏览

my-helloworld-test.my-jelastic-provider.com

可以正常工作,即,我看到带有样式的hello world html页面。

现在,在 future 的用例中,我将希望通过以下方式访问我的服务
my-helloworld-test.my-jelastic-provider.com/hello

要么
hello.my-helloworld-test.my-jelastic-provider.com

即我想为我的服务或子域设置路径。我聚集了我需要定义一个Ingress来实现这一目标。我已经将 hello-kubernetes服务配置更改为此:
kind: Service
apiVersion: v1
metadata:
name: hello-kubernetes
namespace: default
spec:
ports:
- protocol: TCP
port: 80
targetPort: 8080
selector:
app: hello-kubernetes
type: ClusterIP
sessionAffinity: None
externalTrafficPolicy: Cluster

服务途径

我尝试了以下入口配置来定义我的服务的路径:
kind: Ingress
apiVersion: extensions/v1beta1
metadata:
name: helloworld
namespace: default
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /
nginx.ingress.kubernetes.io/ssl-redirect: 'false'
spec:
rules:
- http:
paths:
- path: /hello
backend:
serviceName: hello-kubernetes
servicePort: 80

目标是浏览
my-helloworld-test.my-jelastic-provider.com/hello

显示预部署的helloworld应用程序,而不是
my-helloworld-test.my-jelastic-provider.com

我可以将helloworld应用程序的基本URL设置为 /hello,但是我从几个博客中学到,可以通过kubernetes注释来实现这一点。特别是,似乎 nginx.ingress.kubernetes.io/rewrite-target注释会有所帮助,但我无法使其完全实现。确实,当我浏览 /hello路径时,上面的配置向我展示了helloworld应用程序,但是没有样式:

enter image description here

如何使样式发生?

服务子域

该服务的另一个性感可能性是在浏览时显示
hello.my-helloworld-test.my-jelastic-provider.com

即作为我的 flex 环境的子域。我尝试了这种配置,但没有成功:
kind: Ingress
apiVersion: extensions/v1beta1
metadata:
name: jenkins
namespace: default
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/ssl-redirect: 'false'
spec:
rules:
- http:
paths:
- host: hello.my-helloworld-test.my-jelastic-provider.com
path: /
backend:
serviceName: hello-kubernetes
servicePort: 80

我需要对我的 flex 环境做些什么,以便上面的主机可浏览并展示helloworld应用程序?

Kubernetes配置
Client Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.6", GitCommit:"7015f71e75f670eb9e7ebd4b5749639d42e20079", GitTreeState:"archive", BuildDate:"2019-11-19T09:00:01Z", GoVersion:"go1.12.12", Co
mpiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.6", GitCommit:"7015f71e75f670eb9e7ebd4b5749639d42e20079", GitTreeState:"archive", BuildDate:"2019-11-19T08:45:41Z", GoVersion:"go1.12.12", Co
mpiler:"gc", Platform:"linux/amd64"}

在jelastic v.5.7。

最佳答案

看起来atm有2个独立的问题

  • 您确定该域
    hello.my-helloworld-test.my-jelastic-provider.com正在关注
    正确的IP?可以将自定义子域添加到
    环境,然后将它们用于入口规则,但该选项
    (自定义子域)现在仅通过API可用
  • nginx.ingress.kubernetes.io/rewrite-target的注释参数不正确,如果您使用nginx入口 Controller ,请尝试此


  • kind: Ingress
    apiVersion: extensions/v1beta1
    metadata:
    name: helloworld
    namespace: default
    annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /$2
    nginx.ingress.kubernetes.io/ssl-redirect: 'false'
    spec:
    rules:
    - http:
    paths:
    - path: /hello(/|$)(.*)
    backend:
    serviceName: hello-kubernetes
    servicePort: 80


    UPD:
    我们还与Laurent Michel一起检查了该问题,发现该问题是由应用程序中的绝对URI引起的,因此重写未应用于CSS /图像。最简单的解决方案-应用两个带有不同注释的入口规则(一个带有重写,另一个不带有注释)。更先进,更正确的方法-将此类应用程序转移到单独的子域,以便URI可以保持不变。

    关于jenkins - 如何在Jelastic托管的kubernetes中配置服务入口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59555839/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com