Ansible Kubernetes (K8s) Inventarisbron

Ansible Kubernetes K8s Inventarisbron



In dit bericht leren we hoe we de Kubernetes-plug-in in de Ansible-tool kunnen gebruiken. In Ansible is het lastig om grote aantallen containers te beheren. Maar het gebruik van Kubernetes in Ansible is handig bij het beheren van de containers. In deze gids leren we wat de Kubernetes-inventarisbron is en hoe deze werkt in Ansible.

Google lanceerde de gemakkelijk toegankelijke beheersoftware genaamd Kubernetes, ook bekend als K8s, die wordt gebruikt om de gevirtualiseerde configuraties te beheren via een externe set machines met installatiefuncties zonder downtime, geautomatiseerde omkering en schaalbaarheid die de Kubernetes-plug-in een uiterst aanpasbare functionaliteit biedt. architectuur in Ansible. Door de beschikbaarheid van REST API's voor de benodigde functionaliteit, is het primaire doel van Kubernetes om de complexiteit te verbergen die gepaard gaat met het besturen van een aantal containers.







De configuratie van Kubernetes is gebaseerd op client-server. Er is echter standaard maar één hoofdserver die als controlerende host fungeert. In Kubernetes kunnen we ook multi-main controllers gebruiken voor de configuratie van Kubernetes. De K8s-inventarisbron is af en toe nodig voor besturingssystemen en het configureren van de services op de externe host om pods te besturen. Maar er zijn moeilijkheden om specifieke instructies te krijgen over hoe dit te doen. Daarom implementeren we deze tutorial over het maken van een Ansible Playbook dat de pods in een domein extraheert en een Kubernetes-inventarisbron produceert.



Vereisten voor het gebruik van de Kubernetes-inventarisbron in Ansible

Om de Kubernetes-inventarisbron in Ansible te gebruiken, zijn er in deze handleiding faseprocesinstructies of -opdrachten. Zorg ervoor dat je de nodige voorbereiding hebt als je hierin verder wilt:



  • Om in een Ansible-scenario te werken, stellen we eerst de Ansible-tool op de server in en zorgen we ervoor dat je de Ansible-versie 2.11.7 hebt, zodat we de Kubernetes-plug-in gemakkelijk kunnen gebruiken.
  • Om de Kubernetes-plug-in te beoordelen, hebben we een extern serverapparaat nodig met een ingebouwde Kubernetes-cluster.
  • De externe host is momenteel geconfigureerd om de Ansible-instructies en draaiboeken uit te voeren, evenals een ingebouwd inventarisbestand. De naam van het externe doelapparaat is K8s Master Node.
  • De versie van Python is 3.6 of hoger die op het apparaat van de Ansible-controller moet worden geïnstalleerd. Het kan zich ook in het doelapparaat op afstand bevinden.
  • De versie van de openshift-module van Python is 0.6 of hoger. We hebben ook een pyYAML-module van versie 3.11 of hoger nodig. Beide modules moeten zowel in het externe serverapparaat als in het controllerapparaat worden ingesteld.

Voorbeeld:





Hier is het allereerste voorbeeld waarin we de Kubernetes in Ansible implementeren. Om dit te doen, gebruiken we elke Ansible-omgeving om de Kubernetes-inventarisbron te implementeren. De volgende vermelde processen worden uitgevoerd in het volgende scenario met behulp van de Kubernetes Inventory-plug-in:

  • Implementatie van de nieuwe naamruimte in het K8s-cluster in Ansible.
  • Creatie van nginx pod met behulp van het Ansible-playbook.
  • Creatie van nginx-implementatie in Ansible.

Om de concepten en uitvoering begrijpelijk te maken, implementeren we het voorbeeld in een aantal stappen.



Stap 1: Implementeer de nieuwe naamruimte in het K8s-cluster in Ansible

In de eerste stap maken we het draaiboek zodat we de inhoud in het '.yml'-formaat in Ansible kunnen schrijven. Om het draaiboek te maken, gebruiken we het volgende commando:

[ wortel @ meester weerwort ] # nano  nginx_pod.yml

Nu wordt het 'pod.yml' -playbook gemaakt en gelanceerd in de nieuwe terminal van Ansible. We beginnen met het schrijven van het script. In het draaiboek definiëren we eerst de API-versie die we gebruiken in de Ansible-pod, namelijk 'v1'. De naamruimte die we definiëren is 'ansible-namespace'. Vervolgens vermelden we de metadata van de ansible-namespace. In de metadata gebruiken we de nginx-software en het label dat een tier of value frontend bevat. In de specificatie van het draaiboek vermelden we de naam en de afbeelding die in de container is opgeslagen; beide bevatten de nginx erin.

Stap 2: maak het manifestdocument in Ansible

Nu maken we een ander document in dezelfde map van Ansible, het implementatiedocument in het '.yml' -formaat. Gebruik de volgende opdracht in de Ansible-terminal om het manifestdocument te maken:

[ wortel @ meester weerwort ] # nano nginx_deployment.yml

In het manifestdocument definiëren we eerst opnieuw de app-versie die 'app/v1' is. Vervolgens vertellen we wat voor soort bestand het is, of het een implementatiebestand is. Vervolgens definiëren we de naamruimte die ansible-naamruimte is. Om de implementatie te bouwen, tonen twee replica's in de ansible-namespace het nummer van de pod. De nginx-afbeeldingen zijn 1.14.2 die in de pod worden gelanceerd. De parameter matchLabels biedt de tags voor de pods en hun specificaties onder de parameter spec. Als de tags op de pods op de een of andere manier overeenkomen met de tags die zijn gespecificeerd in de configuratie-informatie, vindt de implementatie plaats in het manifestdocument in Ansible.

Stap 3: Maak het Playbook voor Kubernetes-implementatie in Ansible

Nu willen we nog een draaiboek maken in Ansible. In dit draaiboek implementeren we de functionaliteit van Kubernetes erin. Gebruik de volgende opdracht om het draaiboek te maken:

[ wortel @ meester weerwort ] # nano kubernetes_main.yml

Het draaiboek wordt gemaakt in dezelfde map waar het vorige draaiboek en het manifestdocument zijn opgeslagen in Ansible. In het draaiboek definiëren we eerst de functionaliteit van het draaiboek die we willen implementeren. Om de verbinding tot stand te brengen, bieden we de externe hosts die we willen targeten. Hier richten we ons op 'alle' hosts. Vervolgens definiëren we de variabele om de Python-interpreter in Ansible te controleren met behulp van het pad waar deze is opgeslagen. Nu definiëren we de taken in het draaiboek. Eerst controleren we de status van het minikube-apparaat. Vervolgens maken we een nieuwe Kubernetes-naamruimte in het draaiboek. Dupliceer vervolgens de nginx_pod.yml en nginx_deployment .yml naar het externe apparaat.

Via deze yml-documenten bouwen we de pod-implementatie in het externe apparaat. Vervolgens controleren we of de Kubernetes-pod al dan niet aanwezig is op de opgegeven locatie op het externe apparaat.

Na de beëindiging van het playbook bouwen we nu het inventarisbestand zodat we de verbinding maken tussen de Ansible-controller en de externe doelhost.

Alle:
gastheren:
k8s_Master_Node:
ansible_host: 192.168.3.229
ansible_user: weerbaar
ansible_password: ********
ansible_connection: ssh
ansible_port: 22

[ wortel @ meester weerwort ] # ansible-playbook kubernates_main.yml

Hier is de gewenste uitvoer waar we zien dat de taken met succes op de doelmachine zijn geplaatst:

Nadat de taak op de doelmachine is geplaatst, controleren we of de 'ansible-namespace' zich in het Kubernetes-cluster bevindt of niet. We gebruiken de volgende 'grep' -opdracht:

[ wortel @ meester weerwort ] # kubectl krijg naamruimte | grep ansible-naamruimte

Als u de gemaakte pod in de naamruimte van het Kubernetes-cluster wilt controleren, schrijft u de volgende opdracht om te controleren:

[ wortel @ meester weerwort ] # kubectl get pods --namespace ansible-namespace

Zoals u in de vorige uitvoer ziet, krijgen we de pods die op het apparaat worden uitgevoerd. Nu controleren we de implementatie die we in het Kubernetes-cluster hebben gemaakt. Gebruik de volgende verklaring om de reeds uitgevoerde implementaties te controleren:

[ wortel @ meester weerwort ] # kubectl get deployments --namespace ansible-namespace

Conclusie

We hebben geleerd wat de Kubernetes-voorraadbron in Ansible is. We hebben ook geleerd hoe we de Kubernetes-inventaris in Ansible kunnen gebruiken. Vervolgens hebben we een voorbeeld geïmplementeerd zodat we duidelijker leren over de werking van de Kubernetes-inventarisbron in Ansible.