如何在Quarkus Kubernetes扩展中覆盖Service与Ingress规则
Quarkus Kubernetes配置问题解决方案
问题1:Ingress默认path: /无法覆盖
你在application.properties中配置了自定义Ingress路径,但生成的Ingress资源同时保留了默认的path: /和自定义路径。
原配置片段:
# Ingress quarkus.kubernetes.expose=true quarkus.kubernetes.ingress.expose=true quarkus.kubernetes.ingress.host=k8s.cch.dev quarkus.kubernetes.ingress.annotations."nginx.ingress.kubernetes.io/rewrite-target"=/$2 quarkus.kubernetes.ingress.rules.0.host=k8s.cch.dev quarkus.kubernetes.ingress.rules.0.path=/api/v1(/|$)(.*) quarkus.kubernetes.ingress.rules.0.path-type=Prefix # 其他配置...
生成的Ingress多余路径:
spec: rules: - host: k8s.cch.dev http: paths: - backend: service: name: kubernetes-with-quarkus port: name: http path: / # 需移除的默认路径 pathType: Prefix - backend: service: name: kubernetes-with-quarkus port: name: http path: /api/v1(/|$)(.*) pathType: Prefix
解决方案:
添加配置禁用默认路径的自动生成:
quarkus.kubernetes.ingress.generate-default-path=false
修改后生成的Ingress将只保留你自定义的路径,不再生成默认的path: /。
问题2:修改Service的spec.ports.port为8080
当前生成的Service中port为80,需改为8080。注意区分两个端口配置:container-port对应Pod的容器端口(即Service的targetPort),port对应Service自身的端口。
原Service片段:
spec: ports: - name: http port: 80 # 需要改为8080 protocol: TCP targetPort: 8080
解决方案:
在application.properties中添加或修改以下配置:
quarkus.kubernetes.ports.http.port=8080
修改后生成的Service中spec.ports.port会变为8080,targetPort保持为8080(由container-port配置)。
内容的提问来源于stack exchange,提问作者CHI-HONG CHEN
相关产品推荐
相关产品推荐

