<small id='YOs6wKV5v3'></small> <noframes id='qyKFzIhl'>

  • <tfoot id='KErJ'></tfoot>

      <legend id='AZopFI5S'><style id='MpXoBaFYxr'><dir id='gCNqy69S'><q id='9P0ChgTV'></q></dir></style></legend>
      <i id='iIkUAL7h'><tr id='bHB5iKcE'><dt id='SE6ci'><q id='Hjy6LoVxvd'><span id='YTlIh'><b id='cgiHN'><form id='HkRSF'><ins id='SLQu4lVMDy'></ins><ul id='WvyhTG'></ul><sub id='tkXJoaHLA'></sub></form><legend id='QuvN'></legend><bdo id='q0sIZoYOwy'><pre id='1npdWZFCmi'><center id='KFb9'></center></pre></bdo></b><th id='ap0OuiJGQ'></th></span></q></dt></tr></i><div id='MHi5m'><tfoot id='YbT9'></tfoot><dl id='LxuW5rqjPi'><fieldset id='m1FKb6O5sE'></fieldset></dl></div>

          <bdo id='dLTk'></bdo><ul id='0Qzebg9Hn'></ul>

          1. <li id='I6AQ9NfZn'></li>
            登陆

            一号站平台登录地址-Traefik 2.0 完成自动化 HTTPS

            admin 2019-12-24 221人围观 ,发现0个评论

            上一篇文章咱们完成了 Traefik 2.0 露出 Redis(TCP) 服务,咱们了解到 Traefik 中运用 TCP 路由装备需求 SNI,而 SNI 又是依靠 TLS 的,所以需求装备证书才干正常拜访 TCP 服务,其实 Traefik 除了支撑咱们手动装备 TLS 证书之外,还支撑主动生成 TLS 证书,本文就来为咱们介绍如安在 Traefik 2.0 中装备主动化 HTTPS 服务。

            相同的,前提条件仍是需求提早在 Kubernetes 集群中装置好 Traefik 2.0 服务,能够参阅之前咱们供给的装置资源清单 https://github.com/cnych/kubeapp。里边包括4个文件:IngressRoute.yaml、crd.yaml、rbac.yaml、traefik.yaml,部分文件咱们需求做一些改变。

            咱们这儿就以 Traefik 的 WebUI 为例,之前咱们敞开了 KubernetesCRD 这个 Provider,经过创立一个 IngressRoute 目标来敞开对 WebUI 的拜访,资源清单如下所示:(IngressRoute.yaml)

            apiVersion: traefik.containo.us/v1alpha1
            kind: IngressRoute
            metadata:
            name: traefik-webui
            namespace: kube-system
            spec:
            entryPoints:
            - web
            routes:
            - match: Host(`traefik.qikqiak.com一号站平台登录地址-Traefik 2.0 完成自动化 HTTPS`)
            kind: Rule
            services:
            - name: traefik
            port: 8080

            要运一号站平台登录地址-Traefik 2.0 完成自动化 HTTPS用 Let’s Encrypt 来进行主动化 HTTPS,就需求首要敞开 ACME,敞开 ACME 需求经过静态装备的方法,也就是说能够经过环境变量、发动参数等方法来供给,咱们这儿仍是直接运用发动参数的方法来敞开,在 Traefik 的布置文件中增加如下命令行参数:

            args:
            - --entrypoints.web.Address=:80
            - --entrypoints.websecure.Address=:443
            - --api.insecure=true # 敞开 webui 需求该参数
            - --providers.kubernetescrd
            - --api
            - --api.dashboard=true
            - --accesslog
            # 运用 tls 验证这种方法
            - --certificatesresolvers.default.acme.tlsChallenge=true
            # 邮箱装备
            - --certificatesResolvers.default.a一号站平台登录地址-Traefik 2.0 完成自动化 HTTPScme.email="ych_1024@163.com"
            # 保存 ACME 证书的方位
            - --certificatesResolvers.default.acme.storage="acme.jso一号站平台登录地址-Traefik 2.0 完成自动化 HTTPSn"
            # 下面是用于测验的ca服务,假如https证书生成成功了,则移除下面参数
            - --certificatesresolvers.default.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory

            这儿咱们运用的是 tlsChallenge 这种 ACME 验证方法,需求留意的是当运用这种验证时,Let’s Encrypt 到 Traefik 443 端口有必要是可达的,除了这种验证方法外,还有 httpChallenge 和 dnsChallenge 两种验证方法,更常用的是 http 这种验证方法,关于这几种验证方法的运用能够检查文档:https://www.qikqiak.com/traefik-book/https/acme/ 了解他们之间的差异。

            上面咱们相当于指定了一个名为 default 的证书解析器,创新然后要留意的是,必定要将这儿的 WebUI 的域名traefik.qikqiak.com 解析到 Traefik 的地点节点,解析完成后,重新布置 Traefik:

            $ kubectl apply -f traefik.yaml

            布置一号站平台登录地址-Traefik 2.0 完成自动化 HTTPS完成后,咱们需求让 WebUI 的域名去监听 443 端口,由于咱们这儿运用的是 tlsChallenge 这种验证方法,在上面的 IngressRoute.yaml 文件中新建一个目标,用来监听 443 端口,如下所示:

            apiVersion: traefik.containo.us/v1alpha1
            kind: IngressRoute
            metadata:
            name: traefik-webui-tls
            namespace: kube-system
            spec:
            entryPoints:
            - websecure # 留意这儿是websecure这个entryPoint,监控443端口
            routes:
            - match: Host(`traefik.youdianzhishi.com`)
            kind: Rule
            services:
            - name: traefik
            port: 8080
            tls:
            certResolver: default # 运用咱们装备的 default 这个解析器

            然后更新目标:

            $ kubectl apply -f IngressRoute.yaml
            # 现在有两个 IngressRoute 目标
            $ kubectl get ingressroutes -n kube-system
            NAME AGE
            traefik-webui 28d
            traefik-webui-tls 5h15m

            这个时分假如一切正常的话咱们现已能够经过 HTTPS 去拜访咱们的服务了:

            traefik2 webui https

            Traefik 会主动盯梢其生成的 ACME 证书的到期日期。假如证书过期之前还不到 30 天了,Traefik 会测验进行主动续订。

            相同的,咱们经过 HTTP 协议也是能够拜访到的,可是假如需求将 HTTP 恳求强制跳转到 HTTPS 的话,就需求凭借 Traefik 2.0 的供给的中间件来完成了。

            traefik2 中间件

            相同,在上面的 IngressRoute.yaml 文件中增加一个 Middleware 的 CRD 目标,内容一号站平台登录地址-Traefik 2.0 完成自动化 HTTPS如下所示:

            apiVersion: traefik.containo.us/v1alpha1
            kind: Middleware
            metadata:
            name: redirect-https
            namespace: kube-system
            spec:
            redirectScheme:
            scheme: https

            这儿咱们就声明晰一个名为 redirectSchemea 的中间件,该中间件能够将咱们的恳求跳转到别的的 scheme 恳求,然后将该中间件装备到 HTTP 恳求的服务上面:

            apiVersion: traefik.containo.us/v1alpha1
            kind: IngressRoute
            metadata:
            name: traefik-webui
            namespace: kube-system
            spec:
            entryPoints:
            - web
            routes:
            - match: Host(`traefik.youdianzhishi.com`)
            kind: Rule
            services:
            - name: traefik
            port: 8080
            middlewares: # 运用上面新建的中间件
            - name: redirect-https

            然后更新目标:

            $ kubectl apply -f IngressRoute.yaml

            这样当咱们经过 HTTP 去拜访 WebUI 服务时,也会主动跳转到 HTTPS 上面去,相同能够检查 中间件文件 了解更多关于中间件的信息。

            本文中用到的资源清单文件能够从这儿获取:https://github.com/cnych/kubeapp/tree/master/traefik2/https。

            关于 Traefik 2.0 的更多运用,能够重视 https://www.qikqiak.com/traefik-book 文档。

            请关注微信公众号
            微信二维码
            不容错过
            Powered By Z-BlogPHP