Kubernetes - установить Cosnul

Thank you for reading this post, don't forget to subscribe!

Consul — это децен­тра­ли­зо­ван­ный отка­зо­устой­чи­вый discovery-сер­вис от ком­па­нии HashiCorp (кото­рая раз­ра­ба­ты­ва­ет такие про­дук­ты как Vagrant, TerraForm, Otto, Atlas и другие).

Consul явля­ет­ся децен­тра­ли­зо­ван­ным сер­ви­сом, то есть Consul agent уста­нав­ли­ва­ет­ся на каж­дый хост и явля­ет­ся пол­но­прав­ным участ­ни­ком кла­сте­ра. Таким обра­зом, сер­ви­сам не нуж­но знать адрес discovery в нашей сети, все запро­сы к discovery выпол­ня­ют­ся на локаль­ный адрес 127.0.0.1.

В этом руко­вод­стве вы раз­вер­не­те центр обра­бот­ки дан­ных Consul с офи­ци­аль­ным чар­том Helm.
Вам не нуж­но обнов­лять какие-либо зна­че­ния в чар­те Хел­ма для базо­вой установки.
Одна­ко вы може­те создать файл зна­че­ний с пара­мет­ра­ми, что­бы раз­ре­шить доступ к поль­зо­ва­тель­ско­му интер­фей­су Consul.
Пре­ду­пре­жде­ние о без­опас­но­сти. Это руко­вод­ство не для про­из­вод­ствен­но­го исполь­зо­ва­ния. По умол­ча­нию на диа­грам­ме будет уста­нов­ле­на небез­опас­ная кон­фи­гу­ра­ция Consul. Пожа­луй­ста, обра­ти­тесь к доку­мен­та­ции Kubernetes, что­бы опре­де­лить, как вы може­те обес­пе­чить без­опас­ность Consul на Kubernetes в про­из­вод­стве. Кро­ме того, насто­я­тель­но реко­мен­ду­ет­ся исполь­зо­вать пра­виль­но защи­щен­ный кла­стер Kubernetes или убе­дить­ся, что вы пони­ма­е­те и вклю­ча­е­те реко­мен­ду­е­мые функ­ции безопасности.
Для успеш­но­го выпол­не­ния это­го руко­вод­ства у вас дол­жен быть суще­ству­ю­щий кла­стер Kubernetes и локаль­но настро­ен­ные Helm и kubectl.

Разворачиваем Consul

Вы може­те раз­вер­нуть пол­ный центр обра­бот­ки дан­ных Consul, исполь­зуя офи­ци­аль­ный чарт Helm.

По умол­ча­нию в чар­те будут уста­нов­ле­ны три сер­ве­ра Consul и кли­ент на всех узлах Kubernetes.

Вы може­те про­смот­реть зна­че­ния чар­та, что­бы узнать боль­ше о настрой­ках по умолчанию.

Скачать Helm чарт

Во-пер­вых, вам нуж­но будет кло­ни­ро­вать офи­ци­аль­ный Helm чарт из репо­зи­то­рия Gashub от HashiCorp.
$ git clone https://github.com/hashicorp/consul-helm.git
Вам не нуж­но обнов­лять чарт Helm перед раз­вер­ты­ва­ни­ем Кон­су­ла, т.к. он име­ет разум­ные зна­че­ния по умолчанию.
Озна­комь­тесь с доку­мен­та­ци­ей по чар­там Helm, что­бы узнать боль­ше информации.

Установка Consul через Helm

Что­бы раз­вер­нуть Consul, вы долж­ны быть в том же ката­ло­ге, что и чарт.

$ cd consul-helm

Теперь вы може­те раз­вер­нуть Кон­сул с помо­щью уста­нов­ки helm.
Это поз­во­лит раз­вер­нуть три сер­ве­ра и аген­та на всех узлах Kubernetes.
Про­цесс дол­жен быть быст­рым, менее 5 минут.
Вывод, показ­щан­ный выше был умень­шен для удоб­ства чтения.
Одна­ко вы може­те видеть, что в этом кла­сте­ре Kubernetes с тре­мя узла­ми есть три сер­ве­ра Consul и три кли­ен­та Consul.

Доступ к Consul UI

Что­бы полу­чить доступ к поль­зо­ва­тель­ско­му интер­фей­су, вам необ­хо­ди­мо обно­вить зна­че­ния поль­зо­ва­тель­ско­го интер­фей­са в чарте .

В каче­стве аль­тер­на­ти­вы, если вы не хоти­те обнов­лять свой кла­стер, вы може­те настро­ить пере­ад­ре­са­цию пор­тов с помо­щью kubectl.

Создайте файл значений

Сна­ча­ла создай­те файл зна­че­ний, кото­рый мож­но пере­дать в команд­ной стро­ке при обновлении.

Этот файл пере­име­но­вы­ва­ет ваш центр обра­бот­ки дан­ных, вклю­ча­ет син­хро­ни­за­цию ката­ло­га, настра­и­ва­ет служ­бу балан­си­ров­ки нагруз­ки для поль­зо­ва­тель­ско­го интер­фей­са и раз­ре­ша­ет при­вяз­ку, что­бы раз­ре­шить толь­ко одну поду Consul на узел Kubernetes.
Пара­мет­ры син­хро­ни­за­ции ката­ло­га поз­во­лят вам уви­деть сер­ви­сы Kubernetes в поль­зо­ва­тель­ском интер­фей­се Consul.

Инициируйте обновление

Нако­нец, ини­ци­и­руй­те обнов­ле­ние с помо­щью helm upgrade и фла­га -f, кото­рый пере­да­ет­ся в ваш новый файл значений.

Этот про­цесс так­же дол­жен быть быст­рым, менее минуты.

Теперь вы може­те исполь­зо­вать kubectl get services для опре­де­ле­ния внеш­не­го IP-адре­са ваше­го поль­зо­ва­тель­ско­го интер­фей­са Consul.
Кро­ме того, вы може­те исполь­зо­вать kubectl get pods для про­смот­ра ново­го про­цес­са синхронизации.
Про­цесс син­хро­ни­за­ции ката­ло­га по умол­ча­нию син­хро­ни­зи­ру­ет служ­бы Consul и Kubernetes в обо­их направлениях.
Служ­ба долж­на была доба­вить­cя по име­ни раз­вер­ты­ва­ния consul-ui.
Обра­ти­те вни­ма­ние, вам не нуж­но ука­зы­вать порт при досту­пе к пане­ли мониторинга.

Доступ к Consul

Поми­мо досту­па к Consul с помо­щью поль­зо­ва­тель­ско­го интер­фей­са, вы може­те управ­лять Consul с помо­щью HTTP API или напря­мую под­клю­ча­ясь к поду с помо­щью kubectl.

Kubectl

Для досту­па к ката­ло­гу pod и data вы може­те запу­стить kodectl в pod для запус­ка сеан­са оболочки.
$ kubectl exec -it mollified-robin-consul-server-0 /bin/sh
Это поз­во­лит вам пере­ме­щать­ся по фай­ло­вой систе­ме и запус­кать кон­соль­ные коман­ды CLI на поде.
Напри­мер, вы може­те про­смот­реть Consul members.

Consul HTTP API

Вы може­те исполь­зо­вать Consul HTTP API , свя­зав­шись с локаль­ным аген­том, рабо­та­ю­щим на узле Kubernetes.
Вы може­те про­чи­тать доку­мен­та­цию, если хоти­те узнать боль­ше об исполь­зо­ва­нии Consul HTTP API с Kubernetes.