Traefik 2.0 暴露 Redis(TCP) 服务
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Traefik 2.0 暴露 Redis(TCP) 服务,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2771字,纯文字阅读大概需要4分钟。
内容图文
![Traefik 2.0 暴露 Redis(TCP) 服务](/upload/InfoBanner/zyjiaocheng/867/6e6582ed76184ba1867f513c4601094b.jpg)
前面我们已经提到了 Traefik2.0 已经正式发布了,Traefik2.0 已经支持了 TCP 服务的,但是 Traefik 的官方文档实在是有点混乱,特别是在 Kubernetes 下面的使用更不详细,我在业余时间已经在尝试对官方文档进行翻译,地址:https://www.qikqiak.com/traefik-book,去掉了一些多余的文档,增加一些在 Kubernetes 下面的使用案例。
本文是来演示如何在 Kubernetes 下面通过 Traefik 暴露一个 TCP 服务的,这里我们以 Redis 为例。首先需要保证 Traefik 2.0 已经安装到了 Kubernetes 集群之中,可以参考之前我们提供的安装资源清单 https://github.com/cnych/kubeapp。
部署 Redis
为了演示方便,我们这里只部署单节点的 Redis,对于 Redis 集群模式并不是我们这里的重点,下面是我们部署使用的资源清单文件:(redis.yaml)
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: redis
spec:
template:
metadata:
labels:
app: redis
spec:
containers:
- name: redis
image: redis:3.2.11
ports:- containerPort: 6379
protocol: TCP
- containerPort: 6379
apiVersion: v1
kind: Service
metadata:
name: redis
spec:
ports:
- port: 6379
targetPort: 6379
selector:
app: redis
直接创建即可:
$ kubectl apply -f redis.yaml
暴露 TCP 服务
由于 Traefik 中使用 TCP 路由配置需要 SNI,而 SNI 又是依赖 TLS 的,所以我们需要配置证书才行,但是如果没有证书的话,我们可以使用通配符 * 进行配置,我们这里创建一个 Ingre***outeTCP 类型的 CRD 对象(前面我们就已经安装了对应的 CRD 资源):(ingre***oute-redis.yaml)
apiVersion: traefik.containo.us/v1alpha1
kind: Ingre***outeTCP
metadata:
name: redis
spec:
entryPoints:
- redis
routes:- match: HostSNI(
*
)
services:
- match: HostSNI(
- name: redis
port: 6379
要注意的是这里的entryPoints部分,是根据我们启动的 Traefik 的静态配置中的 entryPoints 来决定的,比如我们可以自己添加一个用于 Redis 的专门的入口点:
containers:
- image: traefik:v2.0
name: traefik-ingress-lb
ports:- name: web
containerPort: 80
hostPort: 80 - name: websecure
containerPort: 443
hostPort: 443 - name: redis
containerPort: 6379
hostPort: 6379 - name: admin
containerPort: 8080
args: - --entrypoints.web.Address=:80
- --entrypoints.websecure.Address=:443
- --entrypoints.redis.Address=:6379
- --api.insecure=true
- --providers.kubernetescrd
- --api
- --api.dashboard=true
- --accesslog
- name: web
这里给入口点添加 hostPort 是为了能够通过节点的端口访问到服务,关于 entryPoints 入口点的更多信息,可以查看文档 https://www.qikqiak.com/traefik-book/routing/entrypoints/然后直接创建上面的 Ingre***outeTCP 对象:
$ kubectl apply -f ingre***oute-redis.yaml
创建完成后,同样我们可以去 Traefik 的 Dashboard 页面上查看是否生效:
traefik redis service
然后我们配置一个域名解析到 Traefik 所在的节点,然后通过 6379 端口来连接 Redis 服务:
$ redis-cli -h redis.youdianzhishi.com -p 6379
redis.youdianzhishi.com:6379> ping
PONG
redis.youdianzhishi.com:6379> set hello world
OK
redis.youdianzhishi.com:6379> get hello
"world"
redis.youdianzhishi.com:6379>
到这里我们就完成了将 Redis(TCP)服务暴露给外部用户了。
关于 Traefik 2.0 的更多使用,可以关注 https://www.qikqiak.com/traefik-book 文档。
内容总结
以上是互联网集市为您收集整理的Traefik 2.0 暴露 Redis(TCP) 服务全部内容,希望文章能够帮你解决Traefik 2.0 暴露 Redis(TCP) 服务所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。