Ansible Kubernetes (K8s) Inventeringskälla

Ansible Kubernetes K8s Inventeringskalla



I det här inlägget lär vi oss hur du använder Kubernetes-pluginet i Ansible-verktyget. I Ansible är det svårt att hantera ett stort antal containrar. Men att använda Kubernetes i Ansible är till hjälp när du hanterar behållarna. I den här guiden kommer vi att lära oss vad som är Kubernetes inventeringskälla och hur den fungerar i Ansible.

Google lanserade den lättillgängliga hanteringsmjukvaran Kubernetes som också är känd som K8s som används för att hantera de virtualiserade konfigurationerna över en fjärruppsättning maskiner med installationsfunktioner utan driftstopp, automatisk återgång och skalbarhet som ger Kubernetes plugin en extremt anpassningsbar arkitektur i Ansible. Genom tillgången på REST API:er för den nödvändiga funktionaliteten är Kubernetes primära mål att dölja komplexiteten som är förknippad med att kontrollera ett antal behållare.







Konfigurationen av Kubernetes är baserad på klient-server. Men som standard finns det bara en huvudserver som fungerar som en kontrollerande värd. I Kubernetes kan vi också använda multi-main controllers för konfigurationen av Kubernetes. K8s inventeringskälla är ibland nödvändig för att styra system och konfigurera tjänsterna på fjärrvärden för att styra pods. Men det finns svårigheter att få specifika instruktioner om hur man gör det. Som ett resultat implementerar vi den här handledningen om hur man gör en Ansible Playbook som extraherar poddarna i en domän och producerar en Kubernetes-inventeringskälla.



Förutsättningar för att använda Kubernetes inventeringskälla i Ansible

För att använda Kubernetes inventeringskälla i Ansible finns det stegprocessinstruktioner eller -kommandon i den här guiden. Se till att du har nödvändiga förberedelser om du vill gå vidare i det:



  • För att arbeta i ett Ansible-scenario ställer vi först upp Ansible-verktyget på servern och ser till att du har Ansible version 2.11.7 så att vi enkelt kan använda Kubernetes-pluginet.
  • För att bedöma Kubernetes-pluginen behöver vi en fjärrserverenhet med ett inbyggt Kubernetes-kluster.
  • Fjärrvärden är för närvarande konfigurerad för att köra Ansible-instruktionerna och spelböckerna, samt en inbyggd inventeringsfil. Namnet på målfjärrenheten är K8s Master Node.
  • Versionen av Python är 3.6 eller senare som måste installeras på enheten för Ansible-kontrollern. Det kan också vara i målfjärrvärdenheten.
  • Versionen av openshift-modulen i Python är 0.6 eller högre. Vi behöver också en pyYAML-modul med version 3.11 eller senare. Båda modulerna måste ställas in i fjärrserverenheten såväl som i styrenheten.

Exempel:





Här är det allra första exemplet där vi implementerar Kubernetes i Ansible. För att göra det använder vi valfri Ansible-miljö för att implementera Kubernetes-inventeringskällan. Följande listade processer utförs i följande scenario med Kubernetes Inventory Plugin:

  • Implementering av det nya namnområdet i K8s-klustret i Ansible.
  • Skapande av nginx-pod med Ansible-spelboken.
  • Skapande av nginx-distribution i Ansible.

För att göra koncepten och utförandet enkelt att förstå implementerar vi exemplet i ett antal steg.



Steg 1: Implementera det nya namnutrymmet i K8s-klustret i Ansible

I det första steget skapar vi spelboken så att vi kan skriva innehållet i formatet '.yml' i Ansible. För att skapa spelboken är följande kommandot som vi använder:

[ rot @ mästare ansible ] # nano  nginx_pod.yml

Nu skapas 'pod.yml'-spelboken och lanseras i den nya terminalen av Ansible. Vi börjar skriva manuset. I spelboken definierar vi först API-versionen som vi använder i Ansible-podden som är 'v1'. Namnutrymmet som vi definierar är 'ansible-namespace'. Sedan listar vi metadata för ansible-namespace. I metadatan använder vi nginx-programvaran och etiketten som innehåller en värdenivå i den. I specifikationen för spelboken listar vi namnet och bilden som lagras i behållaren; båda innehåller nginx.

Steg 2: Skapa manifestdokumentet i Ansible

Nu skapar vi ett annat dokument i samma katalog av Ansible som är distributionsdokumentet i formatet '.yml'. För att skapa manifestdokumentet, använd följande kommando i Ansible-terminalen:

[ rot @ mästare ansible ] # nano nginx_deployment.yml

I manifestdokumentet definierar vi först igen appversionen som är 'app/v1'. Sedan berättar vi vilken typ av fil det är, om det är en distributionsfil. Sedan definierar vi namnområdet som är ansible-namespace. För att bygga implementeringen visar två repliker inuti ansible-namespace numret på podden. Nginx-bilderna är 1.14.2 som lanseras i podden. MatchLabels-parametern tillhandahåller taggarna för poddarna och deras specifikationer under spec-parametern. Om taggarna på poddarna på något sätt matchar de som anges i konfigurationsinformationen, sker implementeringen i manifestdokumentet i Ansible.

Steg 3: Skapa Playbook för Kubernetes-implementering i Ansible

Nu vill vi skapa ytterligare en spelbok i Ansible. I den här spelboken implementerar vi funktionaliteten hos Kubernetes i den. Använd följande kommando för att skapa spelboken:

[ rot @ mästare ansible ] # nano kubernetes_main.yml

Spelboken skapas i samma katalog där den tidigare spelboken och manifestdokumentet lagras i Ansible. I spelboken definierar vi först funktionaliteten för spelboken som vi vill implementera. För att bygga upp anslutningen tillhandahåller vi de fjärrvärdar som vi vill rikta in oss på. Här riktar vi oss mot 'alla' värdar. Därefter definierar vi variabeln för att kontrollera Python-tolken i Ansible med hjälp av sökvägen där den är lagrad. Nu definierar vi uppgifterna i spelboken. Först kontrollerar vi statusen för minikube-enheten. Därefter skapar vi ett nytt Kubernetes-namnområde i spelboken. Duplicera sedan nginx_pod.yml och nginx_deployment .yml till fjärrenheten.

Genom dessa yml-dokument bygger vi podimplementeringen i fjärrenheten. Sedan kontrollerar vi om Kubernetes-podden finns eller inte på den angivna platsen i fjärrenheten.

Efter playbook-avslutningen bygger vi nu inventeringsfilen så att vi gör kopplingen mellan Ansible-kontrollern och målfjärrvärden.

Allt:
värdar:
k8s_Master_Node:
ansible_host: 192.168.3.229
ansible_user: ansible
ansible_password: ********
ansible_connection: ssh
ansible_port: 22

[ rot @ mästare ansible ] # ansible-playbook kubernates_main.yml

Här är den önskade utgången där vi ser att uppgifterna är framgångsrikt placerade på målmaskinen:

Efter att uppgiften har placerats på målmaskinen kontrollerar vi om 'ansible-namespace' finns i Kubernetes-klustret eller inte. Vi använder följande 'grep' kommando:

[ rot @ mästare ansible ] # kubectl hämta namnutrymme | grep ansible-namespace

Om du vill kontrollera den skapade podden i namnområdet för Kubernetes-klustret, skriv följande kommando för att kontrollera:

[ rot @ mästare ansible ] # kubectl hämta pods --namespace ansible-namespace

Som du ser i föregående utgång får vi poddarna som körs på enheten. Nu kontrollerar vi distributionen som vi gjorde i Kubernetes-klustret. Använd följande uttalande för att kontrollera de redan gjorda distributionerna:

[ rot @ mästare ansible ] # kubectl hämta distributioner --namespace ansible-namespace

Slutsats

Vi lärde oss vad som är Kubernetes inventeringskälla i Ansible. Vi lärde oss också hur man använder Kubernetes inventering i Ansible. Sedan implementerade vi ett exempel så att vi kommer att lära oss mer tydligt om hur Kubernetes inventeringskälla fungerar i Ansible.