Docker 入口路由不适用于使用头盔部署的服务

Docker 入口路由不适用于使用头盔部署的服务,docker,kubernetes,kubernetes-ingress,nginx-ingress,Docker,Kubernetes,Kubernetes Ingress,Nginx Ingress,我部署了一个头盔图表(helm install--name=my release stable/kube ops view),它创建了一个带有clusterIP的svc,我试图通过traefik入口创建一条到它的路由,但它不起作用 我已经能够使用类似的入口配置路由其他应用程序(nginx) apiVersion: extensions/v1beta1 kind: Ingress metadata: name: demo-ingress namespace: kube-ops-view #

我部署了一个头盔图表(
helm install--name=my release stable/kube ops view
),它创建了一个带有clusterIP的svc,我试图通过traefik入口创建一条到它的路由,但它不起作用

我已经能够使用类似的入口配置路由其他应用程序(nginx)

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: demo-ingress
  namespace: kube-ops-view #svc is created in this namespace
spec:
  rules:
  - host:
    http:
      paths:
      - path: /kube
        backend:
          serviceName: kube-ops-view
          servicePort: 80

Ingress应该已经工作了

我能够使它在GKE集群上工作。 创建群集后:

1) 安装舵

2) 已安装的NGINX入口控制器]()

接下来。。 您应该与nginx.ingres.kubernetes.io/rewrite target一起使用

从版本0.22.0开始,使用注释输入定义 nginx.ingres.kubernetes.io/rewrite-target不向后 与以前的版本兼容。在版本0.22.0及更高版本中,任何 请求URI中需要传递给 重写路径必须在捕获组中明确定义

你应该看起来像

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /$2
  name: kubeops-kube-ops-view
  namespace: default
spec:
  rules:
  - http:
      paths:
      - backend:
          serviceName: kubeops-kube-ops-view
          servicePort: 80
        path: /kube(/?|$)(.*)
还有另一个选项:您可以在头盔图表中启用入口,而无需写入入口yaml

我的方式:

helm fetch stable/kube-ops-view --untar
编辑值.yaml

ingress:
  enabled: true
  path: /kube(/|$)(.*)
# hostname: kube-ops-view.local
  annotations: {
    kubernetes.io/ingress.class: nginx,
    nginx.ingress.kubernetes.io/rewrite-target: /$2
  }
  tls: []
  ## Secrets must be manually created in the namespace
  #   - secretName: kube-ops-view.local-tls
  #     hosts:
  #       - kube-ops-view.local
编辑模板/ingres.yaml

{{- if .Values.ingress.enabled -}}
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: {{ template "kube-ops-view.fullname" . }}
  labels:
    app: {{ template "kube-ops-view.fullname" . }}
    chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
    release: "{{ .Release.Name }}"
    heritage: "{{ .Release.Service }}"
{{- if .Values.ingress.annotations }}
  annotations:
{{ toYaml .Values.ingress.annotations | indent 4 }}
{{- end }}
spec:
  rules:
    - host:
      http:
        paths:
          - path: {{ .Values.ingress.path }}
            backend:
              serviceName: {{ template "kube-ops-view.fullname" . }}
              servicePort: {{ .Values.service.externalPort }}
{{- if .Values.ingress.tls }}
  tls:
{{ toYaml .Values.ingress.tls | indent 4 }}
{{- end -}}
{{- end -}}
验证并安装: helm安装--服务器干运行--调试kube ops视图 舵安装kube ops视图--名称kubeops

检查结果:

curl -iLk http://Ingress-external-ip/kube/
HTTP/1.1 308 Permanent Redirect
Server: openresty/1.15.8.1
Date: Thu, 22 Aug 2019 09:21:21 GMT
Content-Type: text/html
Content-Length: 177
Connection: keep-alive
Location: https://Ingress-external-ip/kube/

HTTP/2 200 
server: openresty/1.15.8.1
date: Thu, 22 Aug 2019 09:21:21 GMT
content-type: text/html; charset=utf-8
content-length: 1276
vary: Accept-Encoding
strict-transport-security: max-age=15724800; includeSubDomains

<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>Kubernetes Operational View 0.11</title>
        <link rel="shortcut icon" href="static/favicon.ico">
<style>* {padding: 0; margin: 0} body { color: #aaaaff; background: #000; }</style>
<style>
/* latin */
@font-face {
  font-family: 'ShareTechMono';
  font-style: normal;
  font-weight: 400;
  /* ShareTechMono-Regular.ttf: Copyright (c) 2012, Carrois Type Design, Ralph du Carrois (www.carrois.com post@carrois.com), with Reserved Font Name 'Share'
     License: SIL Open Font License, 1.1 */
  src: local('Share Tech Mono'), local('ShareTechMono-Regular'), url(static/sharetechmono.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000;
}
</style>
    </head>
    <body>
        <!-- make sure the font is loaded -->
        <div id="loading" style="font-family: ShareTechMono">Loading..</div>
        <script src="static/build/app-ee71ac795470b05e7f76.js"></script>
        <script>document.getElementById('loading').style.display = 'none'; const app = new App(); app.run()</script>
    </body>
</html>
curl-iLkhttp://Ingress-external-ip/kube/
HTTP/1.1 308永久重定向
服务器:openresty/1.15.8.1
日期:2019年8月22日星期四09:21:21 GMT
内容类型:text/html
内容长度:177
连接:保持活力
地点:https://Ingress-external-ip/kube/
HTTP/2200
服务器:openresty/1.15.8.1
日期:2019年8月22日星期四09:21:21 GMT
内容类型:text/html;字符集=utf-8
内容长度:1276
改变:接受编码
严格的交通安全:最大年龄=15724800;包含子域
Kubernetes操作视图0.11
*{填充:0;边距:0}正文{颜色:#aaaaff;背景:#000;}
/*拉丁语*/
@字体{
字体系列:“ShareTechMono”;
字体风格:普通;
字体大小:400;
/*ShareTechMono-Regular.ttf:版权所有(c)2012,Carrois类型设计,Ralph du Carrois(www.Carrois.compost@carrois.com),保留字体名称为“共享”
许可证:SIL开放式字体许可证,1.1*/
src:local('Share Tech Mono')、local('ShareTechMono-Regular')、url(static/ShareTechMono.woff2)格式('woff2');
unicode范围:U+0000-00FF、U+0131、U+0152-0153、U+02C6、U+02DA、U+02DC、U+2000-206F、U+2074、U+20AC、U+2212、U+2215、U+E0FF、U+EFFD、U+F000;
}
加载。。
document.getElementById('loading').style.display='none';const app=新app();app.run()

收到的响应:404未找到在服务器上未找到请求的URL。如果您手动输入URL,请检查拼写并重试。

如果您将此处列出的入口路径值更改为
/kube
I don;除非kube ops视图有某种方法覆盖其基本路径,否则它不会工作。