В этом посте мы узнаем, как настроить Traefik V2 на ECS со встроенным СТАРСЕРГИПТ SSL.
Прежде чем начать, я хочу упомянуть, что Трафик Потрясающий обратный балансировщик прокси и нагрузки.
Шаги, которые мы будем следовать:
- Построить изображение докера для Traefik на нашей местной машине
- Нажмите его на реестра упругих контейнера Amazon (ECR)
- Используйте толкаемое изображение в определении задания для запуска службы и задачи для Traefik.
Построить изображение докера для Traefik на нашей местной машине
Dockerfile
FROM alekitto/traefik-alpine COPY traefik_ecs.yaml /etc/traefik/traefik.yaml RUN touch /etc/traefik/acme.json RUN chmod +x /etc/traefik/acme.json
Traefik_ecs.yaml.
## Static configuration
entryPoints:
web:
address: ":80"
http:
redirections:
entryPoint:
to: websecure
scheme: https
websecure:
address: ":443"
http:
tls:
certResolver: myresolver
api:
dashboard: true
providers:
ecs:
exposedByDefault: true
autoDiscoverClusters: false
clusters:
- YOUR_ECS_CLUSTER_NAME
region: YOUR_AWS_REGION
accessKeyID: "YOUR_AWS_ACCESS_KEY_ID"
secretAccessKey: "YOUR_AWS_SECRET_ACCESS_KEY"
certificatesResolvers:
myresolver:
# Enable ACME (Let's Encrypt): automatic SSL.
acme:
email: "YOUR_EMAIL"
storage: "acme.json"
# CA server to use.
# Uncomment the line to use Let's Encrypt's staging server,
# leave commented to go to prod.
#
# Optional
# Default: "https://acme-v02.api.letsencrypt.org/directory"
#
# caServer: "https://acme-staging-v02.api.letsencrypt.org/directory"
# Use a TLS-ALPN-01 ACME challenge.
#
# Optional (but recommended)
#
# tlsChallenge:
httpChallenge:
# EntryPoint to use for the HTTP-01 challenges.
#
# Required
#
entryPoint: web
Теперь следуйте этим шагам, чтобы построить изображение Docker и нажать на реестр эластичного контейнера (ECR)
* Install AWS CLI https://aws.amazon.com/cli/ to execute these steps export AWS_REGION='YOUR_AWS_REGION' export AWS_ACCOUNT_ID='YOUR_ACCOUNT_ID' export ECR_REPO_NAME='YOUR_REPO_NAME' (aws ecr create-repository --repository-name $ECR_REPO_NAME) || true eval $(aws ecr get-login --no-include-email --region eu-central-1) docker build -t $ECR_REPO_NAME:\latest . docker tag $ECR_REPO_NAME:\latest $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/$ECR_REPO_NAME:\latest docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/$ECR_REPO_NAME:\latest
Создать определение задачи для запуска задачи от изображения нажатой на ECR
Докер этикетки
traefik.http.routers.dashboard.middlewares auth traefik.http.middlewares.auth.basicauth.users anilmaurya:$apr1$1ktoln283782378923T43el/ traefik.http.routers.dashboard.rule Host(`example.com`) && (PathPrefix(`/api`) || PathPrefix(`/dashboard`)) traefik.http.routers.dashboard.service api@internal
Генерировать токен для basicauth с этого сайта https://hostingcanada.org/htpasswd-generator/
Создайте одну услугу и запустите этот Трафик Определение задания, после того, как Trafik работает, нам нужно добавить этикетки Docker в контейнеры, работающие в одном кластере
Пример этикетки Docker:
traefik.http.routers.app.rule Host(`example.com`) traefik.http.services.app.loadbalancer.server.port 3000
Вывод
GitHub: https://github.com/anilmaurya/ecs-traefik-v2.
Приложение можно получить доступ к https://example.com С сертификатом SSL от Enterprypt
Трафик Приборная панель может быть доступна на https://example.com/dashboard
** Заменить Пример с вашим DNS.
Оригинал: «https://dev.to/anilmaurya/traefik-v2-with-lets-encrypt-on-amazon-s-elastic-container-service-ecs-1h4h»