Увод
Предуслови
Деплоимент
Инсталирајте Алпине Линук 3.9.0 на сервере
Конфигурација сервера након инсталације
Инсталирајте Доцкер на своје сервере
Иницијализујте Доцкер рој са једним чвором менаџера и једним чвором радника
Примените Портаинер са ССЛ-ом да бисте управљали својим Доцкер ројем
Увод
Овај водич ће вам показати како да креирате и конфигуришете Доцкер рој користећи више Алпине Линук 3.9.0 сервера и Портаинер-а. Имајте на уму да Вултр нуди Доцкер апликацију једним кликом која тренутно подржава и ЦентОС 7 к64 и Убунту 16.04 к64.
Предуслови
За почетак ће вам требати најмање два ВЦ2 сервера који користе Алпине Линук 3.9.0. У оквиру вашег Доцкер роја, један од ових сервера ће деловати као manager node
- повезивање са спољним мрежама и делегирање послова на радне чворове. Други сервер ће тада деловати као worker node
- извршавајући послове које му делегира менаџерски чвор.
Имајте на уму да можете покренути више од два сервера ако ваша апликација захтева редундантност и/или више рачунарске снаге, а кораци наведени у овом водичу ће и даље важити.
Деплоимент
Посетите интерфејс за примену Вултр сервера .
Уверите се да је Vultr Cloud (VC2)
картица изабрана на врху странице.
Можете изабрати било коју локацију из Server Location
одељка, међутим сви сервери морају бити на истој локацији , иначе неће бити могуће применити Доцкер рој на њих.
Изаберите ISO Library
картицу Server Type
одељка и изаберите Alpine Linux 3.9.0 x86_64
слику.
Изаберите одговарајућу опцију из Server Size
одељка. Овај водич ће користити величину ССД сервера од 25 ГБ, али то може бити недовољно да испуни захтеве за ресурсе ваше апликације. Иако Вултр олакшава надоградњу величине сервера након што је већ покренут, ипак треба пажљиво размотрити која величина сервера је потребна да би ваша апликација радила оптимално.
У Additional Features
одељку морате да изаберете Enable Private Networking
опцију. Иако друге опције нису потребне за праћење овог водича, требало би да размотрите да ли свака има смисла у контексту ваше апликације.
Ако сте претходно омогућили Multiple Private Networks
опцију на свом налогу, тада ћете морати да изаберете постојећу или да креирате нову приватну мрежу за своје сервере. Ако га нисте омогућили, можете занемарити овај одељак. За информације о ручном конфигурисању приватних мрежа, погледајте овај водич .
Firewall Group
За сада прескочите одељак. Само серверу који делује као менаџерски чвор у Доцкер роју биће потребни отворени портови, а ово би требало да се конфигурише након постављања сервера.
На самом дну странице морате унети а Server Qty
од најмање два. Као што је раније поменуто, можда ће вам требати више од два сервера, али два су довољна да пратите овај водич.
На крају, у Server Hostname & Label
одељку унесите смислена и незаборавна имена хостова и ознаке за сваки сервер. За потребе овог водича, име хоста и ознака првог сервера биће docker-manager
и Docker Manager
, односно - и docker-worker
и Docker Worker
за други, респективно.
Након двоструке провере свих ваших конфигурација, можете кликнути на Deploy Now
дугме на дну странице да бисте покренули своје сервере.
Инсталирајте Алпине Линук 3.9.0 на сервере
Пошто сте изабрали ОС из Вултрове ИСО библиотеке, мораћете ручно да инсталирате и конфигуришете Алпине Линук 3.9.0 на сваком серверу.
Након што дате Вултру минут или два да додели вашим серверима, кликните на икону са троструком тачком more options
за Docker Manager
сервер на интерфејсу за управљање сервером , а затим изаберите View Console
опцију.
Требало би да будете преусмерени на конзолу са упитом за пријаву. Ако не, сачекајте још минут да Вултр заврши са постављањем ваших сервера.
У том упиту за пријаву унесите root
корисничко име. Верзија Алпине Линук-а 3.9.0 уживо (на којој тренутно раде ваши сервери) не захтева од суперкорисника да унесе лозинку приликом пријављивања.
Када се успешно пријавите на основни налог, видећете поруку добродошлице праћену промптом љуске која изгледа овако:
localhost:~#
Да бисте покренули Алпине Линук инсталатер, унесите следећу команду:
# setup-alpine
Прво изаберите одговарајући распоред тастатуре. Овај водич ће користити us
изглед и варијанту.
Када постављате име хоста, изаберите исто име хоста које сте подесили за овај сервер током постављања. Ако сте тачно пратили овај водич, име хоста би требало да буде docker-manager
.
Требало би да буду доступна два мрежна интерфејса: eth0
и eth1
. Ако видите само eth0
, то значи да нисте правилно конфигурисали приватну мрежу својих сервера. Иницијализујте eth0
помоћу dhcp
, и иницијализујте eth1
користећи приватну ИП адресу, мрежну маску и мрежни пролаз који је овом серверу додељен током постављања. Овим детаљима можете приступити из интерфејса подешавања вашег сервера. Када се то од вас затражи, немојте вршити ручну конфигурацију мреже.
Унесите нову лозинку за основни налог, а затим изаберите временску зону прикладну за локацију на којој сте изабрали да примените ове сервере.
Ако намеравате да користите ХТТП/ФТП прокси, унесите његову УРЛ адресу, у супротном немојте постављати УРЛ проксија.
Изаберите НТП клијент за управљање синхронизацијом системског сата. Овај водич ће користити busybox
.
Када се од вас затражи да се користи огледало спремишта пакета, изаберите га експлицитно уносом његовог броја; аутоматски детектовати и изабрати најбржи уносом f
; или ручно уредите конфигурациону датотеку спремишта уносом e
, што се не препоручује осим ако нисте упознати са Алпине Линуком. Овај водич ће користити прво огледало.
Ако планирате да користите ССХ за приступ вашим серверима или за хостовање система датотека заснованог на ССХ-у, изаберите ССХ сервер који ћете користити. Овај водич ће користити openssh
.
Када се од вас затражи да користите диск, изаберите диск vda
као sys
тип.
Алпине Линук 3.9.0 сада треба да буде инсталиран на вашем серверу. Поновите овај процес за све друге сервере које сте раније поставили, осигуравајући да замените исправне вредности за име хоста и eth1
мрежни интерфејс.
Конфигурација сервера након инсталације
У овом тренутку, ваши сервери и даље користе живу ИСО верзију Алпине Линук 3.9.0. Да бисте се покренули са ССД инсталације, посетите интерфејс за подешавања вашег сервера, идите до Custom ISO
уноса бочног менија и кликните на Remove ISO
дугме. Ово би требало да поново покрене сервер. Ако није, онда ручно поново покрените.
Када се сервер заврши са поновним покретањем, вратите се на веб конзолу за сервер Docker Manager
.
Пријавите се на роот налог користећи лозинку коју сте раније поставили током процеса инсталације.
Омогућите спремиште пакета заједнице уклањањем коментара треће линије /etc/apk/repositories
коришћења vi
. Можете да омогућите спремишта за ивицу и тестирање на сличан начин, али они нису обавезни да прате овај водич.
Синхронизујте серверов локални индекс пакета са удаљеним спремиштем које сте раније изабрали уношењем следеће команде љуске:
# apk update
Затим надоградите застареле пакете:
# apk upgrade
Као и раније, поновите овај процес конфигурације за сваки сервер који сте раније применили.
Инсталирајте Доцкер на своје сервере
Пре инсталирања самог Доцкер пакета, можда ћете желети да креирате посебног docker
корисника. То можете учинити помоћу следеће команде:
# adduser docker
Напомена: Овај нови корисник и сви корисници додати у нову docker
групу имаће роот привилегије када се Доцкер пакет инсталира. Погледајте следећи проблем из Моби Гитхуб спремишта:
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.
Ако желите да дате судо дозволу docker
кориснику, прво инсталирајте sudo
пакет:
# apk add sudo
Затим направите sudo
групу:
# addgroup sudo
На крају, додајте docker
корисника у sudo
групу:
# adduser docker sudo
Сада можете да пратите корак 4 овог водича да бисте завршили конфигурисање судо-а.
У овом тренутку, спремни сте да инсталирате Доцкер пакет. Имајте на уму да није стриктно неопходно имати засебног docker
корисника који може да инсталира и конфигурише Доцкер, али овај водич прати ту конвенцију.
Инсталирајте Доцкер пакет следећом командом:
# apk add docker
Затим омогућите Доцкер инит скрипту:
# rc-update add docker
Коначно, покрените Доцкер демон:
# rc-service docker start
Можете да проверите да ли Доцкер ради са овом командом:
# docker info
Као и прошли пут, поновите овај процес инсталације Доцкер-а за сваки сервер који сте поставили на почетку.
Иницијализујте Доцкер рој са једним менаџерским чвором и једним радничким чвором
Са свим тим подешавањем, коначно сте спремни да креирате Доцкер рој.
Направите рој и додајте чвор менаџера
Вратите се на веб конзолу вашег Docker Manager
сервера. Конфигурисаћете овај сервер као менаџерски чвор у вашем роју. Ако сте изабрали да креирате docker
корисника раније, пријавите се користећи тај налог, а не суперкорисник.
Унесите следећу команду, али замените 192.0.2.1
приватном, (не јавном), ИП адресом која Docker Manager
је додељена вашем серверу:
$ docker swarm init --advertise-addr 192.0.2.1
Доцкер ће приказати команду коју можете да извршите на другим серверима у приватној мрежи да бисте их додали као радне чворове овом новом роју. Сачувајте ову команду.
Додајте радни чвор
Сада идите до веб конзоле вашег Docker Worker
сервера и пријавите се са docker
корисником ако сте га креирали.
Да бисте додали овај сервер као радни чвор роју који сте управо креирали, извршите команду коју сте сачували из излаза команде за креирање роја. Изгледаће слично следећем:
$ docker swarm join --token SWMTKN-1-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXX 192.0.2.1:2377
Доцкер ће приказати да ли је чвор могао да се придружи роју. Ако наиђете на проблеме са додавањем радних чворова у рој, двапут проверите конфигурацију приватне мреже и погледајте овај водич за решавање проблема.
Ако сте на почетку распоредили више од два сервера, можете додати остале као радне чворове свом роју користећи горњу команду, повећавајући количину ресурса доступних вашој апликацији. Алтернативно, можете додати додатне менаџерске чворове, али то је ван оквира овог водича.
Примените Портаинер са ССЛ-ом да бисте управљали својим Доцкер ројем
У овом тренутку ваш Доцкер рој је спреман за употребу. Међутим, можете опционо да покренете Портаинер стек на менаџерском чвору у вашем роју. Портаинер нуди згодан веб интерфејс за управљање вашим ројем и чворовима у њему.
Сада је време да направите групу заштитног зида за ваш рој. Осим ако ваша апликација то изричито не захтева, изложите портове само на вашим менаџерским чворовима . Излагање портова на вашим радничким чворовима без пажљивог разматрања може довести до рањивости.
Идите до интерфејса за управљање заштитним зидом и креирајте нову групу заштитног зида. Ваша апликација треба да диктира које портове да изложите, али морате, у најмању руку, открити порт 9000
за Портаинер. Примените ову групу заштитног зида на Docker Manager
сервер.
Иако то није потребно, топло се препоручује да обезбедите Портаинер помоћу ССЛ-а. Зарад овог водича, користићете само самопотписани ОпенССЛ сертификат, али би требало да размислите о коришћењу Лет'с Енцрипт у производњи.
Идите до веб конзоле Docker Manager
сервера, пријавите се помоћу docker
корисника и користите следеће команде да бисте генерисали самопотписани ОпенССЛ сертификат:
$ mkdir ~/certs
$ openssl genrsa -out ~/certs/portainer.key 2048
$ openssl req -new -x509 -sha256 -key ~/certs/portainer.key -out ~/certs/portainer.pem -days 3650
Направите нову датотеку ~/portainer-agent-stack.yml
, са следећим садржајем:
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:
Након што модификујете ову конфигурациону датотеку Доцкер стека да би била у складу са вашим захтевима, можете да је примените:
$ docker stack deploy --compose-file ~/portainer-agent-stack.yml portainer
Да бисте проверили да ли Портаинер ради, извршите следећу команду након што сте дали Доцкер-у минут или два да примени стек:
$ docker ps
Видећете два контејнера са сликама portainer/portainer:latest
и portainer/agent:latest
, потврђујући да је Портаинер исправно покренут.
Сада можете да конфигуришете и управљате својим Доцкер ројем тако што ћете посетити јавну ИП адресу вашег Docker Manager
сервера на порту 9000
користећи ХТТПС.