Kubernetes专用cockroachdb节点 - 通过traefik ingress控制器访问admin ui失败 - 页面未正确重定向
我有一个运行cockroachdb的专用kubernetes节点。 pod已安排好,一切都已设置完毕。我想从子域访问管理UI,如下所示:cockroachdb.hostname.com。我用traefik仪表板和ceph仪表板完成了这个,所以我知道我的入口设置正在运行。我甚至让cert-manager运行以启用https。我从浏览器收到错误,该页面未正确重定向。
我是否必须在特殊地方指定主机名?
我试过添加它没有成功: - http-host cockroachdb.hostname.com
此专用节点具有自己的公共IP,但未映射到hostname.com。我想我需要更改cockroachdb中的设置,但我不知道是哪个因为我是新手。
有谁知道如何通过入口发布管理UI?
EDIT01:添加了入口和服务配置文件
入口:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: cockroachdb-public
annotations:
kubernetes.io/ingress.class: traefik
traefik.frontend.rule.type: PathPrefixStrip
certmanager.k8s.io/issuer: "letsencrypt-prod"
certmanager.k8s.io/acme-challenge-type: http01
ingress.kubernetes.io/ssl-redirect: "true"
ingress.kubernetes.io/ssl-temporary-redirect: "true"
ingress.kubernetes.io/ssl-host: "cockroachdb.hostname.com"
traefik.frontend.rule: "Host:cockroachdb.hostname.com,www.cockroachdb.hostname.com"
traefik.frontend.redirect.regex: "^https://www.cockroachdb.hostname.com(.*)"
traefik.frontend.redirect.replacement: "https://cockroachdb.hostname.com/$1"
spec:
rules:
- host: cockroachdb.hostname.com
http:
paths:
- path: /
backend:
serviceName: cockroachdb-public
servicePort: http
- host: www.cockroachdb.hostname.com
http:
paths:
- path: /
backend:
serviceName: cockroachdb-public
servicePort: http
tls:
- hosts:
- cockroachdb.hostname.com
- www.cockroachdb.hostname.com
secretName: cockroachdb-secret
血清:
apiVersion: v1
kind: Service
metadata:
# This service is meant to be used by clients of the database. It exposes a ClusterIP that will
# automatically load balance connections to the different database pods.
name: cockroachdb-public
labels:
app: cockroachdb
spec:
ports:
# The main port, served by gRPC, serves Postgres-flavor SQL, internode
# traffic and the cli.
- port: 26257
targetPort: 26257
name: grpc
# The secondary port serves the UI as well as health and debug endpoints.
- port: 8080
targetPort: 8080
name: http
selector:
app: cockroachdb
EDIT02:
我现在可以访问Admin UI页面,但只能通过端口8080查看服务器的外部IP地址。我想我需要告诉我的服务器它的ip地址是否映射到正确的子域?
EDIT03
在两个预定的traefik-ingress pod上,创建了以下日志:time="2019-04-29T04:31:42Z" level=error msg="Service not found for default/cockroachdb-public"
您的引用在入口端看起来很好。你正在使用相当多的重定向,除非你真的知道每个重定向是什么,不要使用它们,你可能最终会进入无限循环的重定向。
您可以查看以下日志和调试方法:
运行kubectl logs <traefik pod>
并查看最后一批日志。
运行kubectl get service
,从我听到的,这可能是你的主要问题。确保您的服务存在于默认命名空间中。
运行kubectl port-forward svc/cockroachdb-public 8080:8080
并尝试通过localhost:8080
连接到它,并查看终端是否有潜在的错误消息。
运行kubectl describe ingress cockroachdb-public
并查看事件,这应该给你一些工作。
尝试从运行ping cockroachdb-public.default.svc.cluster.local
的另一个pod访问该服务,看看它是否解析了IP地址。
看看您的clusterrolebindings和serviceaccount,它可能是有限的,没有权限列出默认名称空间中的服务:kubectl create clusterrolebinding default-admin --clusterrole cluster-admin --serviceaccount=default:default