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视图有某种方法覆盖其基本路径,否则它不会工作。