Geschreven door Dennis Vermeulen

Met Ansible een Mirantis Container Engine cluster opzetten

DevOps3 minuten leestijd

Sinds Docker Enterprise is overgenomen door Mirantis is de naamgeving van het productportfolio compleet aangepast. Docker Enterprise heet tegenwoordig Mirantis Container Runtime, Universal Controle Plane (UCP) heeft de naam Mirantis Kubernetes Engine (MKE) gekregen en Docker Trusted Registry (DTR) heet Mirantis Secure Registry (MSR).

Een interessante omgeving

Voor een opdracht bij een klant waar de omgeving voor 95% bestaat uit Windows Server 2019 en .NET als ontwikkel taal wordt gebruikt, is Linux een vreemde eend. Wat de opdracht interessant maakt was dat .NET containers gingen landen op Windows Server 2019 Core.

Dit in combinatie met een nieuwe Linux omgeving, waar MCR\MKE en MSR op geïnstalleerd werd. Om dit voor elkaar te krijgen zijn we aan de slag gegaan met Ansible-playbooks. Binnen de organisatie had men kennis hiervan, dus het toepassen van infrastructuur als code was bekend. In deze opdracht zijn verschillende Ansible-playbooks gemaakt, waaronder het hardenen van de Linux omgeving zodat voldaan werd aan het security beleid. De betreffende playbooks werden in een repository geplaatst zodat versie beheer kon worden toegepast.

Het onderstaande voorbeeld werd o.a. gebruikt voor het het opzetten van de verschillende MKE-Clusters, d.m.v. Ansible code. Door gebuikt te  maken van de playbook kun je met 1 druk op de knop een MKE single node cluster opzetten, inclusief MSR en een Linux worker Node. Hoe we dit gedaan hebben leg ik hieronder uit.

Tutorial

Om met de tutorial aan de slag te gaan heb je een PC of laptop met minimaal 16GB geheugen nodig, Vagrant en VirtualBox dient geïnstalleerd te zijn.

Installeren van de Virtual Machines

git clone https://dennisvermeulen@bitbucket.org/dennisvermeulen/mirantis-cluster.git

cd mirantis-cluster/

mirantis-cluster % vagrant up 

 

Installatie MKE/MSR met behulp van Ansible

mirantis-cluster % vagrant ssh vm1

[vagrant@cinqmke ~]$ cd ansible-mke-msr-wor/

[vagrant@cinqmke ansible-mke-msr-wor]$ ansible-playbook -b -K -i vm_hosts site.yml

BECOME password: vagrant 

Nadat alles ingesteld is via Ansible krijg je de onderstaande output.

Nu kun je inloggen in Mirantis Kubernetes Engine (MKE) en Mirantis Secure Registry met username “admin” en password “welcome01”.

Mirantis Kubernetes Engine

https://192.168.33.70/

Mirantis Secure Registry

https://192.168.33.71/

Deploy van nginx

Ga naar MKE en kies Stacks.

Kies Create Stack. 

Kies Next en plak onderstaande code in het veld Add Application File.

version: '3.7'
services:
  nginx:
    image: nginx:latest
    ports:
      - target: 80
        published: 5000
        protocol: tcp
        mode: host

Kies Create, wacht en ga naar de volgende URL http://192.168.33.72:5000. Als het goed is zie je dan de bevestiging dat nginx draait.

Aanpassen playbooks

Door het bestand vars in de directory ansible-mke-msr-wor/group_vars/ aan te passen heb je grip over de verschillende versies. Zie hiervoor ook: https://docs.mirantis.com/containers/v3.1/dockeree-release-notes/index.html

MKE multinode cluster

Wanneer je gebruik wilt maken van een MKE multinode cluster pas je het vm_host bestand aan in de directory ansible-mke-msr-wor.

Ruim de omgeving op, ga hiervoor als volgt te werk.

[vagrant@cinqmke ansible-mke-msr-wor]$ exit
mirantis-cluster % vagrant destroy
    vm3: Are you sure you want to destroy the 'vm3' VM? [y/N] y
==> vm3: Forcing shutdown of VM...
==> vm3: Destroying VM and associated drives...
    vm2: Are you sure you want to destroy the 'vm2' VM? [y/N] y
==> vm2: Forcing shutdown of VM...
==> vm2: Destroying VM and associated drives...
    vm1: Are you sure you want to destroy the 'vm1' VM? [y/N] y
==> vm1: Forcing shutdown of VM...
==> vm1: Destroying VM and associated drives…

 Pas het bestand aan, zoals hieronder aangegeven.

 mirantis-cluster % vi ansible-mke-msr-wor/vm_hosts


### MKE
[mke_main]
cinqmke ip_addr='192.168.33.70'

[mke]
cinqmke ip_addr='192.168.33.70'
cinqmsr ip_addr='192.168.33.71'
cinqwor ip_addr='192.168.33.72'

### MSR
[msr_main]
#cinqmsr ip_addr='192.168.33.71'

[msr]
#cinqmsr ip_addr='192.168.33.71'

### WORKER
[worker]
#cinqwor ip_addr='192.168.33.72'

mirantis-cluster % vagrant up 

Opnieuw installeren m.b.v. Ansible en je krijgt een multinode cluster:

mirantis-cluster % vagrant ssh vm1
[vagrant@cinqmke ~]$ cd ansible-mke-msr-wor/
[vagrant@cinqmke ansible-mke-msr-wor]$ ansible-playbook -b -K -i vm_hosts site.yml
BECOME password: vagrant
 

Tada 🎉

Met behulp van Ansible playbooks kun je met 1 druk op de knop een volledig MKE/MSR single- of multinode cluster opstarten en dit allemaal zonder al te veel inspanning. Ik hoop dat je er met deze tutorial uit komt. Als je vragen hebt, neem gerust contact met me op via email.