首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在kubernetes上通过traefik入口控制器公开我的traefik管理ui?

如何在kubernetes上通过traefik入口控制器公开我的traefik管理ui?
EN

Stack Overflow用户
提问于 2019-04-30 19:50:02
回答 1查看 412关注 0票数 0

Kubernetes专用的properly节点-通过traefik入口控制器访问管理ui失败-页面未正确重定向

我有一个专用的kubernetes节点运行running。pods被安排好了,一切都准备好了。我想从一个子域访问管理用户界面,如: cockroachdb.hostname.com。我已经用traefik仪表板和ceph仪表板做到了这一点,所以我知道我的入口设置是有效的。我甚至运行cert-manager来启用https。我从浏览器得到页面没有正确重定向的错误。

我必须在某个特殊的地方指定主机名吗?

我尝试添加以下内容,但没有成功:--http-host cockroachdb.hostname.com

此专用节点具有自己的公网ip,该公网ip未映射到hostname.com。我想我需要更改because中的设置,但我不知道是哪一个,因为我是新手。

有人知道如何通过入口发布管理用户界面吗?

EDIT01:添加入口和服务配置文件

入口:

代码语言:javascript
复制
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

服务:

代码语言:javascript
复制
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上都创建了以下日志:time="2019-04-29T04:31:42Z" level=error msg="Service not found for default/cockroachdb-public"

EN

回答 1

Stack Overflow用户

发布于 2019-04-30 23:22:11

你的参考资料在入口处看起来很好。你使用了相当多的重定向,除非你真的知道每个重定向在做什么,否则不要使用它们,你可能会陷入重定向的无限循环中。

您可以查看以下日志和调试方法:

运行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地址。

看看您的集群角色绑定和服务帐户,它可能是有限的,并且没有权限列出默认名称空间中的服务:kubectl create clusterrolebinding default-admin --clusterrole cluster-admin --serviceaccount=default:default

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55920329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档