前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用traefik作为ingress controller透出集群中的https后端

使用traefik作为ingress controller透出集群中的https后端

作者头像
菲宇
发布2019-06-13 11:22:25
1.6K0
发布2019-06-13 11:22:25
举报
文章被收录于专栏:菲宇

简介

对于k8s集群中的http/https服务,一种常见的设计是集群内部走http协议,然后在ingress controller处统一管理TLS证书,并负责接受外部的https请求,以及将内部的http响应统一转换为https发回客户端,这样既能降低集群内部通信的复杂度,又能保证集群服务的安全性。

然而对于诸如kubernetes/dashoboard一类的服务,使用其默认的部署配置启动的服务提供的是https协议的服务,从集群外部访问该服务时,通常只能使用类似如下的链接间接的访问。

代码语言:javascript
复制
http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/.

将集群内部的HTTPS服务通过traefik暴露到集群外部,直接通过ingress访问。

通过ingress访问https协议后端的dashboard

开启https后端ingress

前置条件

  • kubernetes集群
  • traefik 1.6.5

可以参考这份yaml文件安装traefik,需要注意两点:

  • 该文件中的image被我修改成了k8s.gcr.io/traefik:1.6.5,指向我使用的私有仓库。如果读者想从公网拉取该镜像请将镜像名修改为traefik:1.6.5
  • 该文件并不涉及外部https相关代码,对外只开启了http,如果需要https的话请先在kube-system命名空间创建一个名为ssl的secret,里面存放TLS证书,然后使用这份yaml文件部署traefik

配置Traefik

如果使用了我的部署文件,Traefik是直接配置好的,如果是读者先前自己安装好的traefik,请将下面的代码保存为文件,或编辑自己的traefik配置,在适当的位置加入insecureSkipVerify = true。然后将配置应用到集群,并重启所有traefik容器。

代码语言:javascript
复制
kind: ConfigMap
apiVersion: v1
metadata:
 name: traefik-conf
 namespace: kube-system
data:
 traefik.toml: |
   insecureSkipVerify = true
   defaultEntryPoints = ["http"]
   [entryPoints]
     [entryPoints.http]
     address = ":80"

insecureSkipVerify = true,该项配置指定了traefik在访问https后端的时候可以忽略TLS证书验证错误,从而使得https的后端,如kubernetes dashboard,可以像http后端一样直接通过traefik透出

测试效果

这里以透出https的kubernetes dashboard为例,执行下面的yaml文件,为dashboard创建ingress

代码语言:javascript
复制
kind: Service
apiVersion: v1
metadata:
 labels:
   k8s-app: kubernetes-dashboard
 name: kubernetes-dashboard
 namespace: kube-system
spec:
 ports:
 - port: 443
   targetPort: 8443
 selector:
   k8s-app: kubernetes-dashboard
---
kind: Ingress
apiVersion: extensions/v1beta1
metadata: 
 name: dashboard
 namespace: kube-system
 annotations:
   kubernetes.io/ingress.class: traefik
spec:
 rules:
 - host: dashboard.multi.io
   http:
     paths:
     - backend:
         serviceName: kubernetes-dashboard
         servicePort: 443
       path: /

随后配置/etc/hosts文件,并访问该链接

代码语言:javascript
复制
$ cat /etc/hosts
10.130.29.80 dashboard.multi.io
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018年09月24日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 开启https后端ingress
    • 前置条件
      • 配置Traefik
        • 测试效果
        相关产品与服务
        容器服务
        腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档