Ievads
Priekšnoteikumi
Izvietošana
Instalējiet Alpine Linux 3.9.0 serveros
Servera konfigurācija pēc instalēšanas
Instalējiet Docker savos serveros
Inicializējiet Docker baru ar vienu pārvaldnieka mezglu un vienu darbinieka mezglu
Izvietojiet Portainer ar SSL, lai pārvaldītu savu Docker baru
Ievads
Šajā rokasgrāmatā ir parādīts, kā izveidot un konfigurēt Docker spietu, izmantojot vairākus Alpine Linux 3.9.0 serverus un Portainer. Lūdzu, ņemiet vērā, ka Vultr piedāvā One-Click Docker lietotni, kas pašlaik atbalsta gan CentOS 7 x64, gan Ubuntu 16.04 x64.
Priekšnoteikumi
Lai sāktu, jums būs nepieciešami vismaz divi VC2 serveri, kuros darbojas Alpine Linux 3.9.0. Jūsu Docker barā viens no šiem serveriem darbosies kā manager nodesaskarne ar ārējiem tīkliem un deleģēs darbus darbinieku mezgliem. Pēc tam otrs serveris darbosies kā worker node- izpildes uzdevumus, ko tam deleģējis pārvaldnieka mezgls.
Ņemiet vērā, ka varat palaist vairāk nekā divus serverus, ja jūsu lietojumprogrammai ir nepieciešama dublēšana un/vai lielāka skaitļošanas jauda, un šajā rokasgrāmatā norādītās darbības joprojām būs spēkā.
Izvietošana
Apmeklējiet Vultr servera izvietošanas saskarni .
Pārliecinieties, vai lapas Vultr Cloud (VC2)augšdaļā ir atlasīta cilne.
Server LocationSadaļā varat atlasīt jebkuru atrašanās vietu , taču visiem serveriem ir jāatrodas vienā vietā , pretējā gadījumā tiem nebūs iespējams izvietot Docker spietu.
Atlasiet ISO Librarysadaļas cilni Server Typeun izvēlieties Alpine Linux 3.9.0 x86_64attēlu.
Sadaļā atlasiet atbilstošo opciju Server Size. Šajā rokasgrāmatā tiks izmantots 25 GB SSD servera izmērs, taču ar to var nepietikt, lai atbilstu jūsu lietojumprogrammas resursu prasībām. Lai gan Vultr atvieglo servera lieluma jaunināšanu pēc tam, kad tas jau ir palaists, jums joprojām rūpīgi jāapsver, kāds servera lielums jūsu lietojumprogrammai ir nepieciešams optimālai darbībai.
Sadaļā Additional Featuresir jāizvēlas Enable Private Networkingopcija. Lai gan šīs rokasgrāmatas izpildei nav nepieciešamas citas iespējas, jums vajadzētu apsvērt, vai katrai no tām ir jēga jūsu pieteikuma kontekstā.
Ja iepriekš esat iespējojis šo Multiple Private Networksopciju savā kontā, jums būs jāatlasa esošs vai jāizveido jauns privātais tīkls saviem serveriem. Ja neesat to iespējojis, varat ignorēt šo sadaļu. Informāciju par privāto tīklu manuālu konfigurēšanu skatiet šajā rokasgrāmatā .
Firewall GroupPagaidām izlaidiet sadaļu. Tikai serverim, kas darbojas kā pārvaldnieka mezgls Docker barā, būs nepieciešami atklāti porti, un tas ir jākonfigurē pēc servera izvietošanas.
Pašā lapas apakšā ir jāievada Server Qtyvismaz divi. Kā minēts iepriekš, jums var būt nepieciešami vairāk nekā divi serveri, taču pietiek ar diviem, lai ievērotu šo rokasgrāmatu.
Visbeidzot, Server Hostname & Labelsadaļā ievadiet jēgpilnus un neaizmirstamus resursdatora nosaukumus un etiķetes katram serverim. Šajā rokasgrāmatā nolūkos resursdatora un etiķete pirmā servera būs docker-managerun Docker Manager, respectively- un docker-workerun Docker Workerpar otro, attiecīgi.
Pēc visu konfigurāciju dubultas pārbaudes varat noklikšķināt uz Deploy Nowpogas lapas apakšā, lai palaistu savus serverus.
Instalējiet Alpine Linux 3.9.0 serveros
Tā kā jūs izvēlējāties OS no Vultr ISO bibliotēkas, jums būs manuāli jāinstalē un jākonfigurē Alpine Linux 3.9.0 katrā serverī.
Pēc tam, kad Vultr ir dota minūti vai divas, lai piešķirtu jūsu serverus, noklikšķiniet more optionsuz Docker Managerservera trīspunktu ikonas servera pārvaldības saskarnē un pēc tam izvēlieties View Consoleopciju.
Jums vajadzētu tikt novirzītam uz konsoli ar pieteikšanās uzvedni. Ja nē, lūdzu, uzgaidiet vēl vienu minūti, līdz Vultr pabeigs jūsu serveru izvietošanu.
Šajā pieteikšanās uzvednē ievadiet rootkā lietotājvārdu. Alpine Linux 3.9.0 tiešraidē (tāds pašlaik darbojas jūsu serveri) nav nepieciešams, lai superlietotājs, piesakoties, ievadītu paroli.
Kad esat veiksmīgi pieteicies saknes kontā, jūs redzēsit sveiciena ziņojumu, kam sekos čaulas uzvedne, kas izskatās šādi:
localhost:~#
Lai palaistu Alpine Linux instalēšanas programmu, ievadiet šādu komandu:
# setup-alpine
Vispirms izvēlieties piemērotu tastatūras izkārtojumu. Šajā rokasgrāmatā tiks izmantots usizkārtojums un variants.
Iestatot resursdatora nosaukumu, izvēlieties to pašu resursdatora nosaukumu, ko iestatījāt šim serverim izvietošanas laikā. Ja esat precīzi ievērojis šo rokasgrāmatu, saimniekdatora nosaukumam ir jābūt docker-manager.
Ir jābūt pieejamām divām tīkla saskarnēm: eth0un eth1. Ja redzat tikai eth0, tas nozīmē, ka neesat pareizi konfigurējis savu serveru privāto tīklu. Inicializējiet, eth0izmantojot dhcp, un inicializējiet, eth1izmantojot privāto IP adresi, tīkla masku un vārteju, kas šim serverim tika piešķirta izvietošanas laikā. Šai informācijai varat piekļūt no sava servera iestatījumu saskarnes. Kad tiek prasīts, neveiciet manuālu tīkla konfigurēšanu.
Ievadiet jaunu saknes konta paroli un pēc tam atlasiet laika joslu, kas atbilst vietai, kurā izvēlējāties izvietot šos serverus.
Ja plānojat izmantot HTTP/FTP starpniekserveri, ievadiet tā URL, pretējā gadījumā neiestatiet starpniekservera URL.
Izvēlieties NTP klientu, lai pārvaldītu sistēmas pulksteņa sinhronizāciju. Šajā rokasgrāmatā tiks izmantots busybox.
Kad tiek prasīts izmantot pakotnes repozitorija spoguli, vai nu izvēlieties to tieši, ievadot tā numuru; automātiski noteikt un atlasīt ātrāko, ievadot f; vai manuāli rediģējiet repozitorija konfigurācijas failu, ievadot e, kas nav ieteicams, ja vien neesat pazīstams ar Alpine Linux. Šajā rokasgrāmatā tiks izmantots pirmais spogulis.
Ja plānojat izmantot SSH, lai piekļūtu saviem serveriem vai mitinātu uz SSH balstītu failu sistēmu, atlasiet izmantojamo SSH serveri. Šajā rokasgrāmatā tiks izmantots openssh.
Kad tiek prasīts, lai disku izmantot, izvēlēties disku vdakā sysveidu.
Tagad jūsu serverī ir jāinstalē Alpine Linux 3.9.0. Atkārtojiet šo procesu visiem citiem serveriem, kurus izvietojāt iepriekš, nodrošinot, ka resursdatora nosaukumam un eth1tīkla interfeisam tiek aizstātas pareizās vērtības .
Servera konfigurācija pēc instalēšanas
Šobrīd jūsu serveros joprojām darbojas Alpine Linux 3.9.0 tiešā ISO versija. Lai palaistu no SSD instalācijas, apmeklējiet sava servera iestatījumu saskarni, pārejiet uz Custom ISOsānu izvēlnes ierakstu un noklikšķiniet uz Remove ISOpogas. Tam vajadzētu restartēt serveri. Ja tā nenotiek, atsāknējiet manuāli.
Kad serveris ir pabeidzis restartēšanu, dodieties atpakaļ uz servera tīmekļa konsoli Docker Manager.
Piesakieties saknes kontā, izmantojot paroli, kuru iestatījāt iepriekš instalēšanas procesa laikā.
Iespējojiet kopienas paketes krātuvi ar uncommenting trešo līniju /etc/apk/repositories, izmantojot vi. Jūs varat iespējot malu un testēšanas repozitorijus līdzīgā veidā, taču tiem nav jāievēro šī rokasgrāmata.
Sinhronizējiet servera lokālo pakotņu indeksu ar iepriekš atlasīto attālo repozitoriju, ievadot šādu čaulas komandu:
# apk update
Pēc tam jauniniet novecojušās pakotnes:
# apk upgrade
Tāpat kā iepriekš, atkārtojiet šo konfigurācijas procesu katram serverim, kuru izvietojāt iepriekš.
Instalējiet Docker savos serveros
Pirms pašas Docker pakotnes instalēšanas, iespējams, vēlēsities izveidot atsevišķu dockerlietotāju. To var izdarīt, izmantojot šādu komandu:
# adduser docker
Piezīme. Šim jaunajam lietotājam un visiem jaunajai dockergrupai pievienotajiem lietotājiem būs root tiesības, tiklīdz būs instalēta Docker pakotne. Skatiet šo problēmu no Moby Github krātuves:
Due to the --privileged in docker, anyone added to the 'docker' group is root equivalent. Anyone in the docker group has a back door around all privilege escalation policy and auditing on the system.
This is different from someone being able to run running sudo to root, where they have policy, and audit applied to them.
Ja vēlaties lietotājam piešķirt sudo atļauju docker, vispirms instalējiet sudopakotni:
# apk add sudo
Pēc tam izveidojiet sudogrupu:
# addgroup sudo
Visbeidzot pievienojiet dockerlietotāju sudogrupai:
# adduser docker sudo
Tagad varat izpildīt šīs rokasgrāmatas 4. darbību, lai pabeigtu sudo konfigurēšanu.
Šajā brīdī esat gatavs instalēt Docker pakotni. Ņemiet vērā, ka, dockerlai instalētu un konfigurētu Docker, nav noteikti nepieciešams atsevišķs, sudo spējīgs lietotājs, taču šajā rokasgrāmatā ir ievērota šī konvencija.
Instalējiet Docker pakotni ar šādu komandu:
# apk add docker
Pēc tam iespējojiet Docker sākuma skriptu:
# rc-update add docker
Visbeidzot, palaidiet Docker dēmonu:
# rc-service docker start
Varat pārbaudīt, vai Docker darbojas, izmantojot šo komandu:
# docker info
Tāpat kā iepriekšējo reizi, atkārtojiet šo Docker instalēšanas procesu katram serverim, kuru izvietojāt sākumā.
Inicializējiet Docker baru ar vienu pārvaldnieka mezglu un vienu darbinieka mezglu
Ar visu šo iestatīšanu jūs beidzot esat gatavs izveidot Docker spietu.
Izveidojiet spietu un pievienojiet pārvaldnieka mezglu
Dodieties atpakaļ uz sava Docker Managerservera tīmekļa konsoli . Jūs konfigurēsit šo serveri kā pārvaldnieka mezglu savā barā. Ja izvēlējāties izveidot dockerlietotāju agrāk, piesakieties, izmantojot šo kontu, nevis superlietotāju.
Ievadiet šo komandu, bet aizstājiet 192.0.2.1ar privāto (nevis publisko) IP adresi, kas Docker Managertika piešķirta jūsu serverim:
$ docker swarm init --advertise-addr 192.0.2.1
Docker parādīs komandu, ko varat izpildīt citos privātā tīkla serveros, lai pievienotu tos kā darbinieku mezglus šim jaunajam baram. Saglabājiet šo komandu.
Pievienojiet darbinieka mezglu
Tagad pārejiet uz sava Docker Workerservera tīmekļa konsoli , pierakstoties ar dockerlietotāju, ja to izveidojāt.
Lai pievienotu šo serveri kā darbinieka mezglu tikko izveidotajam spietam, izpildiet komandu, kuru saglabājāt no spieta izveides komandas izvades. Tas izskatīsies līdzīgi tālāk norādītajam.
$ docker swarm join --token SWMTKN-1-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXX 192.0.2.1:2377
Docker izvadīs, vai mezgls varēja pievienoties spietam. Ja rodas problēmas, pievienojot strādnieku mezglus spietam, vēlreiz pārbaudiet privātā tīkla konfigurāciju un skatiet šo problēmu novēršanas rokasgrāmatu .
Ja sākumā izvietojāt vairāk nekā divus serverus, pārējos varat pievienot savam baram kā darbinieku mezglus, izmantojot iepriekš minēto komandu, palielinot lietojumprogrammai pieejamo resursu apjomu. Varat arī pievienot papildu pārvaldnieka mezglus, taču tas ir ārpus šīs rokasgrāmatas darbības jomas.
Izvietojiet Portainer ar SSL, lai pārvaldītu savu Docker baru
Šajā brīdī jūsu Docker bars ir gatavs lietošanai. Tomēr pēc izvēles varat palaist Portainer kaudzīti sava bara pārvaldnieka mezglā. Portainer piedāvā ērtu tīmekļa saskarni, lai pārvaldītu jūsu spietu un tajā esošos mezglus.
Tagad ir pienācis laiks izveidot ugunsmūra grupu savam baram. Ja vien jūsu lietojumprogramma to īpaši neprasa, atveriet tikai pārziņa mezglu portus . Darbinieku mezglu portu atklāšana bez rūpīgas apsvēršanas var radīt ievainojamības.
Pārejiet uz ugunsmūra pārvaldības saskarni un izveidojiet jaunu ugunsmūra grupu. Lietojumprogrammai ir jānorāda, kuri porti ir jāatklāj, bet jums ir vismaz jāatklāj 9000Portainer ports. Lietojiet šo ugunsmūra grupu Docker Managerserverim.
Lai gan tas nav nepieciešams, ir ļoti ieteicams nodrošināt Portainer ar SSL. Šīs rokasgrāmatas nolūkos jūs izmantosit tikai pašparakstītu OpenSSL sertifikātu, taču apsveriet iespēju izmantot Let's Encrypt ražošanā.
Pārejiet uz Docker Managerservera tīmekļa konsoli , piesakieties, izmantojot dockerlietotāju, un izmantojiet šādas komandas, lai ģenerētu pašparakstītu OpenSSL sertifikātu:
$ mkdir ~/certs
$ openssl genrsa -out ~/certs/portainer.key 2048
$ openssl req -new -x509 -sha256 -key ~/certs/portainer.key -out ~/certs/portainer.pem -days 3650
Izveidojiet jaunu failu ~/portainer-agent-stack.yml, ar šādu saturu:
version: '3.2'
services:
agent:
image: portainer/agent
environment:
AGENT_CLUSTER_ADDR: tasks.agent
CAP_HOST_MANAGEMENT: 1
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /var/lib/docker/volumes:/var/lib/docker/volumes
- /:/host
networks:
- agent_network
deploy:
mode: global
portainer:
image: portainer/portainer
command: -H tcp://tasks.agent:9001 --tlsskipverify --ssl --sslcert /certs/portainer.pem --sslkey /certs/portainer.key
ports:
- target: 9000
published: 9000
protocol: tcp
mode: host
volumes:
- portainer_data:/data
- /home/docker/certs:/certs
networks:
- agent_network
deploy:
mode: replicated
replicas: 1
placement:
constraints: [node.role == manager]
networks:
agent_network:
driver: overlay
attachable: true
volumes:
portainer_data:
Pēc šī Docker steka konfigurācijas faila modificēšanas, lai tas atbilstu jūsu prasībām, varat to izvietot:
$ docker stack deploy --compose-file ~/portainer-agent-stack.yml portainer
Lai pārbaudītu, vai Portainer darbojas, izpildiet šo komandu pēc tam, kad Docker ir dota minūti vai divas, lai izvietotu steku:
$ docker ps
Jūs redzēsit divus konteinerus ar attēliem portainer/portainer:latestun portainer/agent:latest, pārbaudot, vai Portaineer startēja pareizi.
Tagad varat konfigurēt un pārvaldīt savu Docker spietu, apmeklējot sava Docker Managerservera publisko IP adresi portā, 9000izmantojot HTTPS.