You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Helm部署Ingress Controller自定义路径未添加问题求助

问题:Minikube中Helm部署Ingress Controller后/api路径未生效

操作步骤

  1. 创建Helm Chart:
helm create ingress
  1. 删除templates文件夹内所有文件,清空values.yaml,编写新的Chart.yaml:
apiVersion: v2
name: ingress
description: A Helm chart for Ingress Controller
type: application
version: 1.1.0
appVersion: 1.17.0
keywords:
  - ingress
  - nginx
  - api-gateway
maintainers:
  - name: Harry
dependencies:
  - name: nginx-ingress
    version: 0.15.1
    repository: https://helm.nginx.com/stable
  1. 更新依赖生成tgz文件:
helm dependency update
  1. 在templates目录下创建ingress.yaml模板:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: {{ .Values.ingress.name }}
  annotations:
    kubernetes.io/ingress.class: {{ .Values.ingress.annotations.class }}
spec:
  rules:
  {{- range .Values.ingress.hosts }}
    - host: {{ .host | quote }}
      http:
        paths:
        {{- range .paths }}
          - path: {{ .path }}
            pathType: Prefix
            backend:
              service:
                name: {{ .backend.serviceName }}
                port:
                  number: {{ .backend.servicePort }}
        {{- end }}
  {{- end }}
  1. 编写默认values.yaml:
ingress:
  name: ingress-service
  replicaCount: 1
  annotations: 
    class: nginx
  hosts:
    - host: chart-example.local
      paths: 
        - path: /
          backend:
            serviceName: serviceName
            servicePort: 8080
  1. 执行安装命令,使用自定义配置文件:
helm install -f ingress.yaml ingress ./ingress

自定义配置文件内容:

ingress:
  hosts:
    - host: nutrizone.k8s.com
      paths:
        - path: /api/
          backend:
            serviceName: trala-backend
            servicePort: 8080
        - path: /
          backend:
            serviceName: trala-ui
            servicePort: 8080

问题现象

执行命令查看Nginx Controller配置:

kubectl exec pod/ingress-nginx-ingress-controller-55b985bcfd-7p7hk -n default -- cat /etc/nginx/nginx.conf

发现仅存在如下配置,/api/路径未被添加:

location / {
    return 404;
  }

多次重装、升级Nginx版本,调整values.yaml和模板文件后问题仍未解决。

排查与解决方案

1. 检查Ingress资源是否正确生成

执行以下命令确认Ingress资源状态:

kubectl get ingress
kubectl describe ingress ingress-service

查看输出中是否包含nutrizone.k8s.com的host配置,以及/api/和/的路径规则,同时检查事件栏是否有报错信息。

2. 修正Helm安装命令的文件命名冲突

自定义配置文件命名为ingress.yaml会与templates目录下的模板文件重名,可能导致Helm解析错误。将自定义配置文件重命名为custom-values.yaml,重新执行安装:

helm install -f custom-values.yaml ingress ./ingress

3. 验证模板渲染结果

使用helm template命令提前查看渲染后的Ingress资源,确认配置是否正确:

helm template ./ingress -f custom-values.yaml

检查输出的Ingress YAML中,spec.rules下的host和paths是否与自定义配置一致。

4. 确认Minikube Ingress插件状态

确保Minikube已启用Ingress插件,且Controller Pod正常运行:

minikube addons enable ingress
kubectl get pods -n kube-system

等待Ingress Controller Pod状态变为Running后再验证配置。

5. 检查后端服务可用性

Ingress Controller会忽略不存在的后端服务对应的路径,确认trala-backend和trala-ui服务已创建且端口正常:

kubectl get services
kubectl describe service trala-backend
kubectl describe service trala-ui

确保服务的targetPort与Ingress配置中的servicePort一致,且后端Pod正常运行。

6. 检查Ingress Class匹配

确认Ingress Controller使用的Ingress Class与Ingress资源注解一致:

kubectl get ingressclass

如果使用的是nginx类,确保Ingress资源中的kubernetes.io/ingress.class: nginx注解正确。

内容的提问来源于stack exchange,提问作者furion2000

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 06:05:21