Pinagmulan ng Imbentaryo ng Ansible Kubernetes (K8s).

Pinagmulan Ng Imbentaryo Ng Ansible Kubernetes K8s



Sa post na ito, natutunan namin kung paano gamitin ang Kubernetes plugin sa Ansible tool. Sa Ansible, mahirap pamahalaan ang malaking bilang ng mga lalagyan. Ngunit ang paggamit ng Kubernetes sa Ansible ay nakakatulong habang pinamamahalaan ang mga lalagyan. Sa gabay na ito, malalaman natin kung ano ang pinagmulan ng imbentaryo ng Kubernetes at kung paano ito gumagana sa Ansible.

Inilunsad ng Google ang madaling ma-access na software ng pamamahala na tinatawag na Kubernetes na kilala rin bilang K8s na ginagamit upang pamahalaan ang mga virtualized na configuration sa isang malayuang hanay ng mga machine na may zero-downtime na mga feature sa pag-install, automated na pagbabalik, at scalability na nagbibigay sa Kubernetes plugin ng napakadaling iakma. arkitektura sa Ansible. Sa pamamagitan ng pagkakaroon ng mga REST API para sa kinakailangang functionality, ang pangunahing layunin ng Kubernetes ay itago ang mga kumplikadong nauugnay sa pagkontrol sa ilang container.







Nakabatay ang configuration ng Kubernetes sa client-server. Gayunpaman, bilang default, isa lang ang pangunahing server na nagsisilbing kumokontrol na host. Sa Kubernetes, maaari rin kaming gumamit ng mga multi-main controller para sa configuration ng Kubernetes. Ang pinagmulan ng imbentaryo ng K8 ay paminsan-minsan ay kinakailangan para sa mga control system at i-configure ang mga serbisyo sa remote host para makontrol ang mga pod. Ngunit may mga kahirapan sa pagkuha ng mga tiyak na tagubilin kung paano ito gagawin. Bilang resulta, ipinatutupad namin ang tutorial na ito kung paano gumawa ng Ansible Playbook na kumukuha ng mga pod sa isang domain at gumagawa ng source ng imbentaryo ng Kubernetes.



Mga Kinakailangan sa Paggamit ng Kubernetes Inventory Source sa Ansible

Upang magamit ang pinagmulan ng imbentaryo ng Kubernetes sa Ansible, mayroong mga tagubilin o utos sa proseso ng yugto sa buong gabay na ito. Tiyaking mayroon kang kinakailangang paghahanda kung gusto mong sumulong dito:



  • Upang gumana sa isang sitwasyong Ansible, ise-set up muna namin ang tool na Ansible sa server at tiyaking mayroon kang Ansible na bersyon 2.11.7 para madali naming magamit ang Kubernetes plugin.
  • Upang masuri ang plugin ng Kubernetes, kailangan namin ng isang malayuang server device na may naka-built in na cluster ng Kubernetes.
  • Kasalukuyang naka-configure ang remote na host para isagawa ang mga Ansible na tagubilin at playbook, pati na rin ang built inventory file. Ang pangalan ng target na remote device ay K8s Master Node.
  • Ang bersyon ng Python ay 3.6 o mas mataas na dapat na mai-install sa device ng Ansible controller. Maaari rin itong nasa target na remote host device.
  • Ang bersyon ng openshift module ng Python ay 0.6 o mas mataas. Kailangan din namin ng pyYAML module ng bersyon 3.11 o mas bago. Ang parehong mga module ay dapat na naka-set up sa remote server device pati na rin ang controller device.

Halimbawa:





Narito ang pinakaunang halimbawa kung saan ipinatupad namin ang Kubernetes sa Ansible. Para magawa ito, gumagamit kami ng anumang kapaligiran ng Ansible para ipatupad ang pinagmulan ng imbentaryo ng Kubernetes. Ang mga sumusunod na nakalistang proseso ay isinasagawa sa sumusunod na senaryo gamit ang Kubernetes Inventory Plugin:

  • Pagpapatupad ng bagong namespace sa K8s cluster sa Ansible.
  • Paglikha ng nginx pod gamit ang Ansible playbook.
  • Paglikha ng nginx deployment sa Ansible.

Upang gawing madaling maunawaan ang mga konsepto at pagpapatupad, ipinapatupad namin ang halimbawa sa ilang hakbang.



Hakbang 1: Ipatupad ang Bagong Namespace sa K8s Cluster sa Ansible

Sa unang hakbang, ginagawa namin ang playbook upang maisulat namin ang nilalaman sa format na '.yml' sa Ansible. Upang lumikha ng playbook, ang sumusunod ay ang utos na ginagamit namin:

[ ugat @ master ansible ] # nano  nginx_pod.yml

Ngayon, ang 'pod.yml' playbook ay ginawa at inilunsad sa bagong terminal ng Ansible. Nagsisimula kaming magsulat ng script. Sa playbook, una naming tinukoy ang bersyon ng API na ginagamit namin sa Ansible pod na 'v1'. Ang namespace na aming tinukoy ay 'ansible-namespace'. Pagkatapos, inilista namin ang metadata ng ansible-namespace. Sa metadata, ginagamit namin ang nginx software at ang label na naglalaman ng isang tier ng value frontend sa loob nito. Sa spec ng playbook, inilista namin ang pangalan at ang imahe na naka-imbak sa lalagyan; parehong naglalaman ng nginx sa loob nito.

Hakbang 2: Gumawa ng Manifest Document sa Ansible

Ngayon, gumawa kami ng isa pang dokumento sa parehong direktoryo ng Ansible na siyang dokumento sa pag-deploy sa format na '.yml'. Upang lumikha ng manifest na dokumento, gamitin ang sumusunod na command sa Ansible terminal:

[ ugat @ master ansible ] # nano nginx_deployment.yml

Sa manifest na dokumento, una naming tinukoy muli ang bersyon ng app na 'app/v1.' Pagkatapos, sasabihin namin kung anong uri ng file ito, kung ito ay isang deployment file. Pagkatapos, tinukoy namin ang namespace na ansible-namespace. Para buuin ang pagpapatupad, ipinapakita ng dalawang replika sa loob ng ansible-namespace ang numero ng pod. Ang nginx na mga imahe ay 1.14.2 na inilunsad sa pod. Ang parameter ng matchLabels ay nagbibigay ng mga tag para sa mga pod at ang mga detalye ng mga ito sa ilalim ng spec parameter. Kung sa anumang paraan tumutugma ang mga tag sa mga pod sa tinukoy sa impormasyon ng configuration, ang pagpapatupad ay mangyayari sa manifest na dokumento sa Ansible.

Hakbang 3: Gumawa ng Playbook para sa Pagpapatupad ng Kubernetes sa Ansible

Ngayon, gusto naming gumawa ng isa pang playbook sa Ansible. Sa playbook na ito, ipinapatupad namin ang functionality ng Kubernetes dito. Gamitin ang sumusunod na command upang lumikha ng playbook:

[ ugat @ master ansible ] # nano kubernetes_main.yml

Ang playbook ay ginawa sa parehong direktoryo kung saan ang nakaraang playbook at manifest na dokumento ay naka-imbak sa Ansible. Sa playbook, una naming tinutukoy ang functionality ng playbook na gusto naming ipatupad. Upang bumuo ng koneksyon, ibinibigay namin ang mga malayuang host na gusto naming i-target. Dito, tina-target namin ang 'lahat' ng mga host. Susunod, tinutukoy namin ang variable upang suriin ang Python interpreter sa Ansible gamit ang path kung saan ito naka-imbak. Ngayon, tinutukoy namin ang mga gawain sa playbook. Una, sinusuri namin ang katayuan ng minikube device. Susunod, gumawa kami ng bagong namespace ng Kubernetes sa playbook. Pagkatapos, i-duplicate ang nginx_pod.yml at nginx_deployment .yml sa remote na device.

Sa pamamagitan ng mga yml na dokumentong ito, binubuo namin ang pagpapatupad ng pod sa remote na device. Pagkatapos, tinitingnan namin kung ang Kubernetes pod ay naroroon o wala sa tinukoy na lokasyon sa remote na device.

Pagkatapos ng pagwawakas ng playbook, bubuo na kami ngayon ng file ng imbentaryo upang magawa namin ang koneksyon sa pagitan ng Ansible controller at ng target na remote host.

lahat:
mga host:
k8s_Master_Node:
ansible_host: 192.168.3.229
ansible_user: ansible
ansible_password: ********
ansible_connection: ssh
ansible_port: 22

[ ugat @ master ansible ] # ansible-playbook kubernate_main.yml

Narito ang nais na output kung saan nakikita natin na ang mga gawain ay matagumpay na nailagay sa target na makina:

Pagkatapos mailagay ang gawain sa target na makina, tinitingnan namin kung ang 'ansible-namespace' ay nasa cluster ng Kubernetes o wala. Ginagamit namin ang sumusunod na 'grep' na utos:

[ ugat @ master ansible ] # kubectl makakuha ng namespace | grep ansible-namespace

Kung gusto mong suriin ang ginawang pod sa namespace ng Kubernetes cluster, isulat ang sumusunod na command upang suriin:

[ ugat @ master ansible ] # kubectl makakuha ng mga pod --namespace ansible-namespace

Gaya ng nakikita mo sa nakaraang output, nakukuha namin ang mga pod na tumatakbo sa device. Ngayon, sinusuri namin ang deployment na ginawa namin sa cluster ng Kubernetes. Gamitin ang sumusunod na pahayag upang suriin ang mga nagawa nang deployment:

[ ugat @ master ansible ] # kubectl makakuha ng mga deployment --namespace ansible-namespace

Konklusyon

Nalaman namin kung ano ang pinagmulan ng imbentaryo ng Kubernetes sa Ansible. Natutunan din namin kung paano gamitin ang imbentaryo ng Kubernetes sa Ansible. Pagkatapos, nagpatupad kami ng halimbawa para mas malinaw naming matutunan ang tungkol sa paggana ng pinagmulan ng imbentaryo ng Kubernetes sa Ansible.