Traefik Ters Proxy ile Docker Konteynerlerine Trafik Nasıl Yönlendirilir Linux Komut Satırından Dizin Boyutu Nasıl Kontrol Edilir Ayrı Git Şubelerinin Güncellenmesi ve Bakımı Nasıl Yapılır Docker’ın TCP Soketinin TLS ile Güvenliği Nasıl Sağlanır UUID’ler Nedir ve Neden Yararlıdır? GitLab CI Pipeline’da Docker Görüntüleri Nasıl Oluşturulur Docker ile Ghost Blog Nasıl Dağıtılır

0
36

Traefik logosu

Traefik, bulutta yerel işlemler ve kapsayıcılı iş yükleri için önde gelen bir ters proxy ve yük dengeleyicidir. Hizmetlerinizi internette yayınlayan bir uç yönlendirici işlevi görür.

Traefik, etki alanı, URL ve bağlantı noktası gibi istek özniteliklerini eşleştirerek istekleri kapsayıcılarınıza yönlendirir. Proxy, Traefik hizmetini yeniden başlatmadan gerçek zamanlı olarak yeni kapsayıcılar ekleyebilmeniz için otomatik hizmet bulma özelliğine sahiptir.

Bu kılavuzda, birden çok Docker kapsayıcısını yayınlayacak basit bir Traefik v2 dağıtımını bir araya getireceğiz. Bu, bir web uygulaması, API ve yönetim paneli gibi aynı bağlantı noktası üzerinden çeşitli hizmetler sağlamak için bir Docker yüklemesini kullanmanıza olanak tanır.

Başlarken

Traefik’i kendi Docker görüntüsünü kullanarak dağıtmak en kolay yoldur. Bu kılavuzun geri kalanında Traefik’i Docker ile çalıştırdığınızı varsayacağız. Traefik’in Docker kurulumunuzun dışında oturmasını tercih ederseniz, alternatif bir seçenek olarak tek dosya ikili dosyaları mevcuttur.

Traefik’i kullanmaya başlamadan önce bir yapılandırma dosyası oluşturmalısınız. Aşağıdaki içeriği bir traefik.toml file – aşağıda ne yaptığını açıklayacağız:

[entryPoints]
  [entryPoints.http]
      address = ":80"
      [entryPoints.http.http.redirections.entryPoint]
          to = "https"
          scheme = "https"
  [entryPoints.https]
      address = ":443"
 
[providers]
  [providers.docker]
    network = "traefik"
Reklamcılık

Bu yapılandırma dosyası, Traefik’i iki “giriş noktası” ile yapılandırır. Giriş noktaları, isteklerin Traefik hizmetine nasıl ulaştığını açıklar. HTTP ve HTTPS giriş noktaları, sırasıyla 80 ve 443 numaralı bağlantı noktalarını dinlemek için oluşturulur. Bir HTTP isteği olması durumunda, onu ilgili adrese iletmek için bir yeniden yönlendirme kuralı kullanılır. https yerine giriş noktası. Düz HTTP üzerinden içerik sunabilmek istiyorsanız yeniden yönlendirme bölümünü kaldırın.

“Sağlayıcılar” bölümü, ağ rotalarınızı tanımlayan kaynakları yapılandırır. Sağlayıcılar, Traefik’e yönlendirme talimatları verebilen altyapı bileşenleridir. İsterseniz, rotalarınızı tanımlamak için özel bir HTTP API uç noktası yazabilirsiniz.

Bu örnekte, bunu basit tutuyoruz ve docker Sağlayıcı. Bu, ana makinenizde çalışan Docker kapsayıcılarını izler. Traefik’e özgü etiketlere sahip yeni bir kapsayıcı göründüğünde, bu değerler, kapsayıcıya bir rota oluşturmak için kullanılacaktır. Konteynerlerin ağa bağlanması gerekecek. traefik Bunun için Docker ağı, yapılandırma dosyasında belirtilen ağ olarak çalışır. Ağı şimdi oluşturun:

docker network create traefik

Traefik’i başlatmak

Artık Traefik’i başlatmaya hazırsınız! Traefik görüntüsüyle yeni bir kapsayıcı dağıtın. 80 ve 443 numaralı bağlantı noktalarını ana makinenize bağlayarak Traefik’in gelen istekleri dinlemesine izin verin. Ayrıca konteynere katılmalısınız. traefik Daha önce oluşturulan ağ.

Ana makinenizin Docker soketini aşağıdakilerle Traefik konteynerine monte edin. -v bayrak. Bu, Traefik’e ana makinenizde çalışan diğer kapsayıcılara erişme yeteneği vererek, rotaların otomatik olarak algılanmasını sağlar. docker sağlayıcı yapılandırma dosyanızda ayarlayın. Yapılandırma dosyasının kendisi /traefik.toml Traefik konteynerinin içinde.

docker run -d 
  -p 80:80 
  -p 443:443 
  -v $PWD/traefik.toml:/traefik.toml 
  -v /var/run/docker.sock:/var/run/docker.sock 
  --name traefik 
  --network traefik 
  traefik:2.6

Ardından, Traefik’in çalıştığını test etmek için birkaç kapsayıcı başlatın:

docker run -d 
  --label traefik.http.routers.apache.rule=Host(`apache.example.com`) 
  --name apache 
  --network traefik 
  httpd:latest

docker run -d 
  --label traefik.http.routers.nginx.rule=Host(`nginx.example.com`) 
  --name nginx 
  --network traefik 
  nginx:latest
Reklamcılık

için DNS kayıtları eklediğinizden emin olun. apache.example.com ve nginx.example.com Bu haritayı Traefik sunucunuza yönlendirin. Sırasıyla varsayılan Apache ve NGINX açılış sayfalarını görmek için tarayıcınızda bu alanları ziyaret edebilmelisiniz. İki konteyner Traefik ağına katıldı; onların traefik.http.routers etiketler, gelen istekleri değerlerine göre eşleştiren temel yolları ayarlar. Host başlık.

Yönlendirme Trafiği

Traefik, trafiğinizi yönlendirmek için birkaç farklı “eşleştiriciyi” destekler. Yukarıda Ana Bilgisayar eşleştiricisini kullandık ancak HTTP yöntemi, başlıklar, URI, IP adresi ve sorgu dizesi parametrelerine göre de yönlendirme yapabilirsiniz. Daha karmaşık yönlendirme kuralları oluşturmak için kapsayıcılarınıza birden çok eşleştirici ekleyin.

Traefik, isteği hizmetlerinize ulaşmadan önce değiştirmenize izin veren ara katman yazılımlarını da destekler. Ön ek eklemek, üstbilgileri ayarlamak veya proxy düzeyinde Temel Kimlik Doğrulamayı uygulamak isteyebilirsiniz. İşte kullanmanın bir örneği Headers ekstra eklemek için ara katman yazılımı X-Proxied-By istek başlığı:

docker run -d 
  --label traefik.http.routers.nginx.rule=Host(`nginx.example.com`) 
  --label traefik.http.middlewares.demo.headers.customrequestheaders.X-Proxied-By=traefik
  --name nginx 
  --network traefik 
  nginx:latest

Traefik, trafiği konteynerlerinizin açıkta kalan limanlarına yönlendirir. ayarlayarak farklı bir bağlantı noktası belirtebilirsiniz. traefik.http.services.<demo-service>.loadbalancer.server.port=8080 etiket.

SSL ekleme

Ardından, trafiğinizin tamamen korunmasını sağlamak için SSL eklemelisiniz. Traefik, Let’s Encrypt entegrasyonunu içerir, bu nedenle şimdi sertifika oluşturmayı otomatikleştirmek için kullanacağız.

Aşağıdaki bölümü ekleyin traefik.toml dosya:

[certificatesResolvers.lets-encrypt.acme]
  email = "you@example.com"
  storage = "/acme.json"
  [certificatesResolvers.lets-encrypt.acme.tlsChallenge]

Bu, Traefik’i sertifika isteklerini çözerken Let’s Encrypt ACME sağlayıcısını kullanacak şekilde yapılandırır. Let’s Encrypt tarafından gönderilen sertifika sona erme hatırlatıcılarını almak için e-posta adresini kendi adresinizle değiştirdiğinizden emin olun. bu tlsChallenge bölüm, sertifika doğrulamasının nasıl gerçekleştiğini tanımlar; boş bırakmak, Let’s Encrypt’in sertifika verilmesi sırasında talep edeceği ve doğrulayacağı benzersiz bir dosya sunmanın varsayılan akışını kullanır.

Reklamcılık

Yeni yapılandırmayı uygulamak için Traefik kapsayıcınızı yeniden başlatın veya değiştirin. Ayrıca yeni bir dosya bağlamanız gerekir. /acme.json kapsayıcının içinde – Traefik bunu sertifikaları depolamak için kullanacaktır.

docker run -d 
  -p 80:80 
  -p 443:443 
  -v $PWD/acme.json:/acme.json 
  -v $PWD/traefik.toml:/traefik.toml 
  -v /var/run/docker.sock:/var/run/docker.sock 
  --name traefik 
  --network traefik 
  traefik:2.6

Gösterge Tablosunu Kullanma

Traefik, dağıtımınızda etkin olan uç noktaların, sağlayıcıların ve hizmetlerin (kapsayıcıların) grafiksel bir görünümünü sunan bir web kullanıcı arayüzü içerir. Kullanıcı arabirimini, yapılandırma dosyanızda bunun için bir rota ayarlayarak açığa çıkarabilirsiniz.

İlk önce mevcut olanı değiştirin traefik.toml aşağıdaki bölüm ile:

[api]
  dashboard = true
 
[providers.file]
  filename = "/traefik_dashboard.toml"

Sonraki oluştur traefik_dashboard.toml aşağıdaki içerikle:

[http.middleware.dashboard_auth.basicAuth]
  users = [
    "admin:$123..."
  ]
 
[http.routers.api]
  rule = "Host(`traefik.example.com`)"
  entrypoints = ["https"]
  middlewares = ["dashboard_auth"]
  service = "api@internal"
  [http.routers.api.tls]
    certResolver = "lets-encrypt"

Ana dosyanızdaki “statik” değerlerin yanı sıra “dinamik” yapılandırmayı (hizmetler ve yönlendiriciler) desteklemediği için yeni dosya Traefik olarak gereklidir. traefik.toml. Pano yapılandırma dosyası, eşlenen bir rotayı manuel olarak tanımlar. traefik.example.com dahili web UI hizmetine. bu providers.file satır eklendi traefik.toml ile yeni rota tanımını kaydeder file Sağlayıcı.

Kullanmak htpasswd bir dizi HTTP Temel Yetkilendirme kimlik bilgisi oluşturmak için. Oluşturulan dizeyi users dizideki dashboard_auth ara katman yazılımı. Kontrol paneline erişmek için bu kullanıcı adını ve şifreyi kullanmanız gerekecek.

sudo apt install apache2-utils
htpasswd -nb admin your_password

# Outputs admin:$123...

Şimdi güncellenmiş konfigürasyonunuzla Traefik’i yeniden başlatın, yenisini takmayı unutmayın. traefik_dashboard.toml dosya da:

docker run -d 
  -p 80:80 
  -p 443:443 
  -v $PWD/acme.json:/acme.json 
  -v $PWD/traefik.toml:/traefik.toml 
  -v $PWD/traefik_dashboard.toml:/traefik_dashboard.toml 
  -v /var/run/docker.sock:/var/run/docker.sock 
  --name traefik 
  --network traefik 
  traefik:2.6

Şuraya giderek kontrol paneline erişebilmelisiniz. traefik.example.com tarayıcınızda. Web kullanıcı arayüzünü bir rota olarak göstermek istemiyorsanız ve ona her zaman yerel makinenizden erişecekseniz, bağlantı noktası yayınlayabilirsiniz. 8080 bunun yerine Traefik konteynerinizde. değiştir traefik.toml aşağıdaki bölüme sahip dosya:

[api]
  dashboard = true
  insecure = true
docker run -d 
  -p 8080:8080 
  -p 80:80 
  -p 443:443 
  -v $PWD/acme.json:/acme.json 
  -v $PWD/traefik.toml:/traefik.toml 
  -v /var/run/docker.sock:/var/run/docker.sock 
  --name traefik 
  --network traefik 
  traefik:2.6
Reklamcılık

Bu, kontrol paneline şu şekilde erişmenizi sağlar: http://localhost:8080. Bu yaklaşım, güvenli üretim ortamlarında kullanılmamalıdır, ancak yerel deneylerin daha hızlı kurulmasını sağlar.

Çözüm

Traefik, konteynerleriniz için çok yönlü bir ters proxy çözümüdür. Bu makalede, yeteneklerinin yalnızca en temel özelliklerini ele aldık. Docker ile temel kullanımın ötesinde Traefik, Kubernetes, Docker Swarm ve Mesos dahil olmak üzere önde gelen konteyner düzenleme çözümleriyle de çalışır.

Traefik, Prometheus, InfluxDB, Datadog ve Statsd tarafından anlaşılan formatlarda metriklerin yanı sıra bir REST API sağlar. Bu yetenekler, yığınınızdaki diğer altyapı bileşenlerinin yanı sıra Traefik dağıtımlarını otomatikleştirmenize ve denetlemenize olanak tanır. Tam bir düzenleme çözümü kullanmadan kapsayıcılı iş yüklerini dünyaya yayınlamanın ideal bir yoludur.

LEAVE A REPLY

Please enter your comment!
Please enter your name here