【发布时间】:2018-10-17 05:51:24
【问题描述】:
我有一个本地 Kubernetes 集群。根据 traefik 给出的示例,我在集群中运行了 traefik。它绑定到一个节点,这将是我的负载均衡器。我可以通过使用路由点击节点端口来访问正在运行的服务(通过入口)。例如http://build.mydomain.com:NODEPORT 会将我路由到我的 Jenkins。
但我希望能够通过简单地输入 http://build.mydomain.com 来攻击我的 Jenkins
这可能吗,还是我必须在集群外部运行 traefik?
基本上,我只希望负载均衡器上的所有内容都达到 80 以访问 traefik 入口控制器,该控制器应该根据入口来路由请求。
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: traefik-ingress-controller
namespace: kube-system
---
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
name: traefik-ingress-controller
namespace: kube-system
labels:
k8s-app: traefik-ingress-lb
spec:
replicas: 1
selector:
matchLabels:
k8s-app: traefik-ingress-lb
template:
metadata:
labels:
k8s-app: traefik-ingress-lb
name: traefik-ingress-lb
spec:
serviceAccountName: traefik-ingress-controller
terminationGracePeriodSeconds: 60
containers:
- image: traefik
name: traefik-ingress-lb
ports:
- name: http
containerPort: 80
- name: admin
containerPort: 8080
args:
- --api
- --kubernetes
- --logLevel=INFO
nodeSelector:
node-role.kubernetes.io/worker: loadbalancer
---
kind: Service
apiVersion: v1
metadata:
name: traefik-ingress-service
namespace: kube-system
spec:
selector:
k8s-app: traefik-ingress-lb
ports:
- protocol: TCP
port: 80
name: web
- protocol: TCP
port: 8080
name: admin
type: NodePort
【问题讨论】:
-
基本上我最终在集群之外运行了 traefik,并让它指向主节点上的 kubernetes api-server。然后它会拾取入口并路由到正确的服务。