แหล่งที่มาของสินค้าคงคลัง Ansible Kubernetes (K8s)

Haelng Thima Khxng Sinkha Khngkhlang Ansible Kubernetes K8s



ในโพสต์นี้ เราเรียนรู้วิธีใช้ปลั๊กอิน Kubernetes ในเครื่องมือ Ansible ใน Ansible การจัดการคอนเทนเนอร์จำนวนมากเป็นเรื่องยาก แต่การใช้ Kubernetes ใน Ansible นั้นมีประโยชน์ในขณะที่จัดการคอนเทนเนอร์ ในคู่มือนี้ เราจะเรียนรู้ว่าแหล่งสินค้าคงคลังของ Kubernetes คืออะไร และทำงานอย่างไรใน Ansible

Google เปิดตัวซอฟต์แวร์การจัดการที่เข้าถึงได้ง่ายชื่อ Kubernetes ซึ่งเรียกอีกอย่างว่า K8s ซึ่งใช้ในการจัดการการกำหนดค่าเสมือนจริงผ่านชุดเครื่องระยะไกลพร้อมคุณสมบัติการติดตั้งแบบไม่ต้องหยุดทำงาน การย้อนกลับอัตโนมัติ และความสามารถในการปรับขนาด ซึ่งให้ปลั๊กอิน Kubernetes ที่ปรับเปลี่ยนได้อย่างมาก สถาปัตยกรรมใน Ansible ด้วยความพร้อมใช้งานของ REST API สำหรับการทำงานที่จำเป็น เป้าหมายหลักของ Kubernetes คือการปกปิดความซับซ้อนที่เกี่ยวข้องกับการควบคุมคอนเทนเนอร์จำนวนหนึ่ง







การกำหนดค่าของ Kubernetes จะขึ้นอยู่กับไคลเอ็นต์-เซิร์ฟเวอร์ อย่างไรก็ตาม ตามค่าเริ่มต้น จะมีเซิร์ฟเวอร์หลักเพียงเครื่องเดียวที่ทำหน้าที่เป็นโฮสต์ควบคุม ใน Kubernetes เรายังสามารถใช้ตัวควบคุมหลายหลักสำหรับการกำหนดค่า Kubernetes ได้อีกด้วย แหล่งที่มาของสินค้าคงคลัง K8s มีความจำเป็นในบางครั้งสำหรับระบบควบคุมและกำหนดค่าบริการบนโฮสต์ระยะไกลเพื่อควบคุมพ็อด แต่มีปัญหาในการรับคำแนะนำเฉพาะเกี่ยวกับวิธีการดังกล่าว ด้วยเหตุนี้ เราจึงใช้บทช่วยสอนนี้เกี่ยวกับวิธีสร้าง Ansible Playbook ที่แยกพ็อดในโดเมนและสร้างแหล่งสินค้าคงคลัง Kubernetes



ข้อกำหนดเบื้องต้นของการใช้ Kubernetes Inventory Source ใน Ansible

หากต้องการใช้แหล่งสินค้าคงคลังของ Kubernetes ใน Ansible จะมีคำแนะนำหรือคำสั่งขั้นตอนกระบวนการอยู่ในคู่มือนี้ ตรวจสอบให้แน่ใจว่าคุณมีการเตรียมการที่จำเป็นหากคุณต้องการก้าวไปข้างหน้า:



  • ในการทำงานในสถานการณ์ Ansible ขั้นแรกเราได้ตั้งค่าเครื่องมือ Ansible บนเซิร์ฟเวอร์และตรวจสอบให้แน่ใจว่าคุณมี Ansible เวอร์ชัน 2.11.7 เพื่อให้เราสามารถใช้ปลั๊กอิน Kubernetes ได้อย่างง่ายดาย
  • ในการประเมินปลั๊กอิน Kubernetes เราจำเป็นต้องมีอุปกรณ์เซิร์ฟเวอร์ระยะไกลที่มีคลัสเตอร์ Kubernetes ในตัว
  • ขณะนี้โฮสต์ระยะไกลได้รับการกำหนดค่าให้ดำเนินการตามคำสั่ง Ansible และ playbooks รวมถึงไฟล์รายการสินค้าที่สร้างขึ้น ชื่อของอุปกรณ์ระยะไกลเป้าหมายคือ K8s Master Node
  • เวอร์ชันของ Python คือ 3.6 ขึ้นไปซึ่งต้องติดตั้งบนอุปกรณ์ของตัวควบคุม Ansible นอกจากนี้ยังสามารถอยู่ในอุปกรณ์โฮสต์ระยะไกลเป้าหมาย
  • เวอร์ชันของโมดูล openshift ของ Python คือ 0.6 หรือสูงกว่า เราต้องการโมดูล pyYAML เวอร์ชัน 3.11 ขึ้นไปด้วย ต้องตั้งค่าโมดูลทั้งสองในอุปกรณ์เซิร์ฟเวอร์ระยะไกลเช่นเดียวกับอุปกรณ์ควบคุม

ตัวอย่าง:





นี่คือตัวอย่างแรกที่เราใช้งาน Kubernetes ใน Ansible ในการดำเนินการดังกล่าว เราใช้สภาพแวดล้อม Ansible เพื่อใช้งานแหล่งที่มาของพื้นที่โฆษณา Kubernetes กระบวนการที่แสดงรายการต่อไปนี้ดำเนินการในสถานการณ์ต่อไปนี้โดยใช้ Kubernetes Inventory Plugin:

  • การใช้งานเนมสเปซใหม่ในคลัสเตอร์ K8 ใน Ansible
  • การสร้าง nginx pod โดยใช้ Ansible playbook
  • การสร้างการปรับใช้ nginx ใน Ansible

เพื่อให้แนวคิดและการดำเนินการเข้าใจได้ง่าย เราจึงนำตัวอย่างไปใช้ในหลายๆ ขั้นตอน



ขั้นตอนที่ 1: ใช้เนมสเปซใหม่ในคลัสเตอร์ K8s ใน Ansible

ในขั้นตอนแรก เราสร้าง playbook เพื่อให้เราสามารถเขียนเนื้อหาในรูปแบบ '.yml' ใน Ansible ในการสร้าง playbook เราใช้คำสั่งต่อไปนี้:

[ ราก @ ต้นแบบ ansible ] #นาโน nginx_pod.yml

ขณะนี้ playbook “pod.yml” ถูกสร้างขึ้นและเปิดตัวในเทอร์มินัลใหม่ของ Ansible เราเริ่มเขียนบท ใน Playbook อันดับแรก เราจะกำหนดเวอร์ชัน API ที่เราใช้ในพ็อด Ansible ซึ่งก็คือ “v1” เนมสเปซที่เรากำหนดคือ “ansible-namespace” จากนั้น เราจะแสดงรายการข้อมูลเมตาของเนมสเปซแบบ ansible ในข้อมูลเมตา เราใช้ซอฟต์แวร์ nginx และป้ายกำกับซึ่งมีฟรอนท์เอนด์ระดับของค่าอยู่ในนั้น ในข้อมูลจำเพาะของ playbook เราระบุชื่อและภาพที่จัดเก็บไว้ในคอนเทนเนอร์ ทั้งสองมี nginx อยู่ในนั้น

ขั้นตอนที่ 2: สร้างเอกสารรายการใน Ansible

ตอนนี้ เราสร้างเอกสารอีกฉบับในไดเร็กทอรีเดียวกันของ Ansible ซึ่งเป็นเอกสารการปรับใช้ในรูปแบบ '.yml' หากต้องการสร้างเอกสารรายการ ให้ใช้คำสั่งต่อไปนี้ในเทอร์มินัล Ansible:

[ ราก @ ต้นแบบ ansible ] # นาโน nginx_deployment.yml

ในเอกสารรายการ ก่อนอื่นเราจะกำหนดเวอร์ชันของแอปอีกครั้ง ซึ่งก็คือ 'app/v1' จากนั้นเราก็บอกว่าเป็นไฟล์ประเภทใด ไม่ว่าจะเป็น ไฟล์การปรับใช้ จากนั้นเรากำหนดเนมสเปซซึ่งเป็นเนมสเปซแบบ ansible ในการสร้างการใช้งาน แบบจำลองสองรายการภายใน ansible-namespace จะแสดงจำนวนของพ็อด อิมเมจ nginx คือ 1.14.2 ซึ่งเปิดตัวในพ็อด พารามิเตอร์ matchLabels จัดเตรียมแท็กสำหรับพ็อดและข้อมูลจำเพาะภายใต้พารามิเตอร์ spec หากแท็กในพ็อดตรงกับที่ระบุในข้อมูลการกำหนดค่า การใช้งานจะเกิดขึ้นในเอกสารรายการใน Ansible

ขั้นตอนที่ 3: สร้าง Playbook สำหรับการใช้งาน Kubernetes ใน Ansible

ตอนนี้เราต้องการสร้าง playbook อื่นใน Ansible ใน Playbook นี้ เราใช้ฟังก์ชันการทำงานของ Kubernetes ในนั้น ใช้คำสั่งต่อไปนี้เพื่อสร้าง playbook:

[ ราก @ ต้นแบบ ansible ] # นาโน kubernetes_main.yml

Playbook ถูกสร้างขึ้นในไดเร็กทอรีเดียวกับที่เก็บ Playbook และเอกสารรายการก่อนหน้าใน Ansible ใน playbook อันดับแรก เราจะกำหนดฟังก์ชันการทำงานของ playbook ที่เราต้องการนำไปใช้ เพื่อสร้างการเชื่อมต่อ เราจัดเตรียมโฮสต์ระยะไกลที่เราต้องการกำหนดเป้าหมาย ที่นี่ เรากำหนดเป้าหมายโฮสต์ 'ทั้งหมด' ต่อไป เรากำหนดตัวแปรเพื่อตรวจสอบตัวแปล Python ใน Ansible โดยใช้เส้นทางที่เก็บไว้ ตอนนี้ เรากำหนดงานใน playbook ก่อนอื่น เราตรวจสอบสถานะของอุปกรณ์ minikube ต่อไป เราสร้างเนมสเปซ Kubernetes ใหม่ใน playbook จากนั้น ทำซ้ำ nginx_pod.yml และ nginx_deployment .yml ไปยังอุปกรณ์ระยะไกล

เราสร้างการใช้งานพ็อดในอุปกรณ์ระยะไกลผ่านเอกสาร yml เหล่านี้ จากนั้นเราจะตรวจสอบว่ามีพ็อด Kubernetes หรือไม่ในตำแหน่งที่ระบุในอุปกรณ์ระยะไกล

หลังจากการสิ้นสุด playbook ตอนนี้เราสร้างไฟล์รายการสินค้าเพื่อให้เราทำการเชื่อมต่อระหว่างตัวควบคุม Ansible และโฮสต์ระยะไกลเป้าหมาย

ทั้งหมด:
เจ้าภาพ:
k8s_Master_โหนด:
ansible_host: 192.168.3.229
ansible_user: ใช้งานได้
ansible_password: ********
ansible_connection: จุ๊ๆ
ansible_port: 22

[ ราก @ ต้นแบบ ansible ] # ansible-playbook kubernates_main.yml

นี่คือผลลัพธ์ที่ต้องการซึ่งเราเห็นว่างานนั้นวางบนเครื่องเป้าหมายได้สำเร็จ:

หลังจากวางงานบนเครื่องเป้าหมายแล้ว เราจะตรวจสอบว่า 'ansible-namespace' อยู่ในคลัสเตอร์ Kubernetes หรือไม่ เราใช้คำสั่ง 'grep' ต่อไปนี้:

[ ราก @ ต้นแบบ ansible ] # kubectl รับเนมสเปซ | grep ansible-เนมสเปซ

หากคุณต้องการตรวจสอบพ็อดที่สร้างขึ้นในเนมสเปซของคลัสเตอร์ Kubernetes ให้เขียนคำสั่งต่อไปนี้เพื่อตรวจสอบ:

[ ราก @ ต้นแบบ ansible ] # kubectl รับพ็อด --namespace ansible-namespace

ดังที่คุณเห็นในเอาต์พุตก่อนหน้านี้ เราได้รับพ็อดที่กำลังทำงานบนอุปกรณ์ ตอนนี้ เราตรวจสอบการปรับใช้ที่เราสร้างในคลัสเตอร์ Kubernetes ใช้คำสั่งต่อไปนี้เพื่อตรวจสอบการปรับใช้ที่ทำไว้แล้ว:

[ ราก @ ต้นแบบ ansible ] # kubectl รับการปรับใช้ --namespace ansible-namespace

บทสรุป

เราได้เรียนรู้ว่าแหล่งสินค้าคงคลังของ Kubernetes คืออะไรใน Ansible เรายังได้เรียนรู้วิธีใช้พื้นที่โฆษณา Kubernetes ใน Ansible จากนั้น เราใช้ตัวอย่างเพื่อให้เรียนรู้เกี่ยวกับการทำงานของแหล่งที่มาของพื้นที่โฆษณา Kubernetes ใน Ansible ได้ชัดเจนยิ่งขึ้น