Kurkistus palvelujen löytämisen uuteen maailmaan
Henrik Hoegh
Henrik is a DevOps Consultant based in Aarhus. He specializes in Docker, Kubernetes and everything Atlassian. Away from the office Henrik designs loudspeakers and takes a keen interest in quantum physics and astrophotography.
Traefik on käänteinen välityspalvelin, joka on erityisen hyödyllinen kontteja käytettäessä. Tässä blogikirjoituksessa tarkastelemme, miten voimme välittää Docker-hostissa toimivan Jenkins-kontin Traefikin kautta ja ottaa käyttöön myös Artifactory-kontin samalla portilla, mutta eri aliverkkotunnuksessa.
Mitä tarvitset
Esimerkissä käytämme paikallista kannettavaasi sekä Jenkinsin ja Artifactoryn esimerkkikontteja. Ne ovat kaksi palvelua, joita asiakkaamme käyttävät usein. Käytämme paikallisia hosteja ja hostnimiä, joten emme tarvitse oikeaa DNS:ää.
Jenkins toimii porteissa 8080 ja 50000. Haluamme tuoda portissa 8080 tarjottavan palvelun saataville välityspalvelimen portin 80 kautta. Haluamme tarjota sen praqma.io-verkkotunnuksen aliverkkotunnuksessa: http://jenkins.praqma.io.
Kannettavassamme jenkins.praqma.io ei osoita omalle koneellemme, joten lisäämme sen hosts-tiedostoon.
echo "192.168.1.165 jenkins.praqma.io" >> /etc/hostsKorvaa IP-osoite kannettavasi IP-osoitteella.
Käynnistä Jenkins-kontti
Käynnistämme nyt Jenkinsin Docker-kontin. Kontille on annettava label, sillä Traefik valitsee ensimmäisen avoimen portin, ja Jenkinsin tapauksessa se valitsee automaattisesti väärän portin. Siksi Traefikille kannattaa antaa labelit, jotta oikea portti varmasti valitaan. Lisäämme labelin traefik.port=8080, jotta Traefik välittää liikenteen tämän portin kautta. Annamme kontille nimen (Jenkins). Tästä tulee aliverkkotunnus.
docker run --name jenkins --label="traefik.port=8080" -d jenkinsValmistele Traefik-konfiguraatio
Jenkins-kontti on jo käynnissä, mutta Traefikia voidaan käyttää myös jo käynnissä olevien konttien kanssa. Konfiguroidaan siis Traefik ja käynnistetään se.
Luo ja muokkaa traefik.toml-tiedostoa siten, että se kuuntelee Docker-socketia muutosten varalta. Traefik määrittää itsensä uudelleen, kun muutoksia tapahtuu, esimerkiksi kun kontti käynnistyy tai pysähtyy.
Osio [web] lisää Traefikin verkkohallintapaneelin, jossa näemme frontendit, backendit ja tilan. Hallintapaneeli tarjotaan portissa 8088.
Osiossa [docker] määritämme docker.sockin polun, käytettävän verkkotunnuksen sekä sen, tuleeko Traefikin jatkaa muutosten kuuntelua.
Haluamme tuoda kaikki kontit oletusarvoisesti saataville asetuksella exposedbydefault = true. Tämä host ei toimi Swarm-tilassa, joten asetamme swarmmode-arvoksi false.
[web] address = ":8088" [web.statistics]################################################################# Docker configuration backend################################################################[docker]endpoint = "unix:///var/run/docker.sock"domain = "praqma.io"watch = true# Expose containers by default in traefikexposedbydefault = true# Use the IP address from the bound port instead of the inner network one. For specific use-case :)usebindportip = true# Use Swarm Mode services as data providerswarmmode = falseKäynnistä Traefik-välityspalvelin
Nyt olemme valmiita käynnistämään Traefik-välityspalvelimen ja antamaan sille konfiguraatiotiedoston parametrina.
Lataa ensin Traefikin uusin binääri täältä: Traefikin lataus
wget https://github.com/containous/traefik/releases/download/v1.1.1/traefik_linux-amd64 chmod u+x traefik_linux-amd64 sudo ./traefik_linux-amd64 -c traefik.tomlSiinä se. Traefik kuuntelee Docker-socketia hostin konttien ja muutosten varalta sekä tarjoaa kontit ulkomaailman käyttöön.
Lisää pääverkkotunnus hosts-tiedostoosi
echo "192.168.1.165 praqma.io" >> /etc/hostsTestaa välityspalvelin
Siirry nyt Traefikin hallintapaneeliin osoitteessa praqma.io:8088 nähdäksesi Traefikin tiedot.
Näet, että meillä on frontend ja backend. Frontendin sääntö on: Host:jenkins.praqma.io. Backend käyttää Docker-konttiamme liikenteen vastaanottamiseen.
Kokeile nyt avata Jenkins
avaa http://jenkins.praqma.io
Tämän jälkeen näkyviin pitäisi tulla Jenkinsin aloitussivu:
Käynnistä Artifactory
Käynnistämme nyt Artifactoryn ja haluamme sen olevan käytettävissä DNS-osoitteessa artifactory.praqma.io.
docker run --name artifactory --label="traefik.port=8080" -d mattgruter/artifactoryLisää Artifactory hosts-tiedostoosi
echo "192.168.1.165 artifactory.praqma.io" >> /etc/hostsTraefikin pitäisi nyt tunnistaa Artifactory-konttimme ja alkaa välittää sitä automaattisesti osoitteessa http://artifactory.praqma.io.
Huomaat, että Artifactory on lisätty hallintapaneeliin.
Jenkinsin pysäyttäminen
Pysäytä nyt Jenkins-kontti samalla, kun tarkastelet Traefikin konsolia.
docker stop jenkinsSeuraavalla kerralla
Voimme nyt käynnistää Docker-kontteja yhdellä hostilla ja välittää ne proxyn kautta. Yhdellä hostilla toimivat kontit eivät kuitenkaan ole tulevaisuutta. Tulevaisuutta ovat orkestroijat, kuten Swarm ja Kubernetes.
Seuraavassa blogikirjoituksessa määritämme Traefikin muodostamaan yhteyden Kubernetes-klusterin api-serveriin (master) ja tekemään saman tempun siellä. Kubernetesissa hyödynnämme objektia nimeltä Ingress.
Pysy kuulolla..!
- Cloud
Subscribe to our newsletter
Related blogs