首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为Kubernetes集群设置LetEncrypt HTTPS Traefik入口

为Kubernetes集群设置LetEncrypt HTTPS Traefik入口
EN

Stack Overflow用户
提问于 2018-12-20 09:17:45
回答 1查看 223关注 0票数 0

我已经将Kubernetes设置为使用Traefik Ingress来提供基于名称的路由。我在如何配置自动LetsEncrypt SSL证书方面有点迷茫。如何引用TOML文件并针对HTTPs进行配置。我正在使用下面的一个简单的容器和NGINX图像来测试这一点。

下面是我的部署/服务/入口的YAML。

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  name: web
  labels:
    app: hmweb
spec:
  ports:
    - name: http
      port: 80
      targetPort: 80
      protocol: TCP
  selector:
    app: hmweb

---

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: web-ingress
  annotations:
    kubernetes.io/ingress.class: traefik
spec:
  rules:
  - host: example.com
    http:
      paths:
      - path: /
        backend:
          serviceName: web
          servicePort: http

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: hmweb-deployment
  labels:
    app: hmweb
spec:
  replicas: 1
  selector:
    matchLabels:
      app: hmweb
  template:
    metadata:
      labels:
        app: hmweb
    spec:
      containers:
      - name: hmweb
        image: nginx:latest

        envFrom:
          - configMapRef:
              name: config
        ports:
        - containerPort: 80

我还包括了我的ingress.yaml

代码语言:javascript
复制
--
apiVersion: v1
kind: ServiceAccount
metadata:
  name: traefik-ingress-controller

---
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
---
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: LoadBalancer
EN

回答 1

Stack Overflow用户

发布于 2019-09-23 22:48:45

您可以构建自定义映像并以这种方式包含toml文件,但这不是最佳实践。下面是我是如何做到的:

1)将您的toml配置作为ConfigMap部署到kubernetes,如下所示:

代码语言:javascript
复制
apiVersion: v1
kind: ConfigMap
metadata:
  name: cfg-traefik
  labels:
    app: traefik
data:
  traefik.toml: |
    defaultEntryPoints = ["http", "https"]
    [entryPoints]
      [entryPoints.http]
      address = ":80"
        [entryPoints.http.redirect]
        entryPoint = "https"
      [entryPoints.https]
      address = ":443"
        [entryPoints.https.tls]
    [acme]
    email = "you@email.com"
    storage = "/storage/acme.json"
    entryPoint = "https"
    acmeLogging = true
    onHostRule = true
    [acme.tlsChallenge]

2)将配置连接到您的Traefik部署。下面是我的配置:

代码语言:javascript
复制
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
  name: dpl-traefik
  labels:
    k8s-app: traefik
spec:
  replicas: 1
  selector:
    matchLabels:
      k8s-app: traefik
  template:
    metadata:
      labels:
        k8s-app: traefik
        name: traefik
    spec:
      serviceAccountName: svc-traefik
      terminationGracePeriodSeconds: 60
      volumes:
      - name: config
        configMap:
          name: cfg-traefik
      - name: cert-storage
        persistentVolumeClaim:
          claimName: pvc-traefik
      containers:
      - image: traefik:alpine
        name: traefik
        volumeMounts:
        - mountPath: "/config"
          name: "config"
        - mountPath: "/storage"
          name: cert-storage
        ports:
        - name: http
          containerPort: 80
        - name: https
          containerPort: 443
        - name: admin
          containerPort: 8080
        args:
        - --api
        - --kubernetes
        - --logLevel=INFO
        - --configFile=/config/traefik.toml
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53861278

复制
相关文章

相似问题

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