Treafik Давайте зашифруем самый простой пример на GKE - PullRequest
0 голосов
/ 12 апреля 2020

Я пытаюсь работать на простейшем возможном примере реализации давайте зашифруем с помощью Traefik на GKE, используя эту статью . Я внес некоторые изменения в соответствии со своими требованиями, но не могу получить сертификат ACME.

Что я сделал до сих пор

  • Выполните следующую команду и создайте все объекты ресурсов. кроме ingress-route
$ kubectl apply -f 00-resource-crd-definition.yml,05-traefik-rbac.yml,10-service-account.yaml,15-traefik-deployment.yaml,20-traefik-service.yaml,25-whoami-deployment.yaml,30-whoami-service.yaml
customresourcedefinition.apiextensions.k8s.io/ingressroutes.traefik.containo.us created
customresourcedefinition.apiextensions.k8s.io/middlewares.traefik.containo.us created
customresourcedefinition.apiextensions.k8s.io/ingressroutetcps.traefik.containo.us created
customresourcedefinition.apiextensions.k8s.io/tlsoptions.traefik.containo.us created
customresourcedefinition.apiextensions.k8s.io/traefikservices.traefik.containo.us created
clusterrole.rbac.authorization.k8s.io/traefik-ingress-controller created
clusterrolebinding.rbac.authorization.k8s.io/traefik-ingress-controller created
serviceaccount/traefik-ingress-controller created
deployment.apps/traefik created
service/traefik created
deployment.apps/whoami created
service/whoami created
  • Получить IP-адрес службы Traefik, выставленной как балансировщик нагрузки
$ kubectl get service
NAME         TYPE           CLUSTER-IP      EXTERNAL-IP    PORT(S)                                     AGE
kubernetes   ClusterIP      10.109.0.1      <none>         443/TCP                                     6h16m
traefik      LoadBalancer   10.109.15.230   34.69.16.102   80:32318/TCP,443:32634/TCP,8080:32741/TCP   70s
whoami       ClusterIP      10.109.14.91    <none>         80/TCP                                      70s
  • Создать запись DNS для этот IP
$ nslookup k8sacmetest.gotdns.ch
Server:         192.168.1.1
Address:        192.168.1.1#53

Non-authoritative answer:
Name:   k8sacmetest.gotdns.ch
Address: 34.69.16.102
  • Создать ресурсный маршрут
$ kubectl apply -f 35-ingress-route.yaml
ingressroute.traefik.containo.us/simpleingressroute created
ingressroute.traefik.containo.us/ingressroutetls created
  • Журналы трафиков
time="2020-04-25T20:10:31Z" level=info msg="Configuration loaded from flags."
time="2020-04-25T20:10:32Z" level=error msg="subset not found for default/whoami" providerName=kubernetescrd ingress=simpleingressroute namespace=default
time="2020-04-25T20:10:32Z" level=error msg="subset not found for default/whoami" providerName=kubernetescrd ingress=ingressroutetls namespace=default
time="2020-04-25T20:10:52Z" level=error msg="Unable to obtain ACME certificate for domains \"k8sacmetest.gotdns.ch\": unable to generate a certificate for the domains [k8sacmetest.gotdns.ch]: acme: Error -> One or more domains had a problem:\n[k8sacmetest.gotdns.ch] acme: error: 400 :: urn:ietf:params:acme:error:connection :: Timeout during connect (likely firewall problem), url: \n" routerName=default-ingressroutetls-08dd2bb9eecaa72a6606@kubernetescrd rule="Host(`k8sacmetest.gotdns.ch`) && PathPrefix(`/tls`)" providerName=default.acme

Что я достиг

  • Панель инструментов Traefik

ссылка

  • Вау с нотл

ссылка

НЕ МОЖЕТ ПОЛУЧИТЬ СЕРТИФИКАТ ACME С ИСПОЛЬЗОВАНИЕМ TLS WHOAMI

my-pain

Подробности INFRA

  • Я использую Google Kubernetes Cluster (тот, о котором говорят здесь - cloud.google.com/kubernetes-engine, нажмите Go, чтобы Консоль).
  • Версия Traefik - 2.2.
  • И я использую «CloudShell» для доступа к кластеру ».

ASK:

1) Где я ошибаюсь, чтобы получить сертификат TLS?

2) Если проблема с брандмауэром, как решить?

3) Если у вас есть какой-либо другой лучший пример для Treafik Let's encrypt simplest example on GKE, пожалуйста, дайте мне знать

1 Ответ

1 голос
/ 13 апреля 2020

Просто запустите sudo перед командой kubectl port-forward. Вы пытаетесь привязать к привилегированным портам, поэтому вам нужно больше разрешений.

Это не самый простой пример для GKE, потому что вы можете использовать GKE LoadBalnacer вместо kubectl port-forward.

Попробуйте с this:

apiVersion: v1
kind: Service
metadata:
  name: traefik
spec:
  ports:
    - protocol: TCP
      name: web
      port: 80
      targetPort: web
    - protocol: TCP
      name: websecure
      port: 443
      targetPort: websecure
  selector:
    app: traefik
  type: LoadBalancer

Затем вы можете найти свой новый IP-адрес с kubectl get svc в столбце EXTERNAL-IP, добавить правильную запись DNS для вашего домена, и все будет в порядке.

...