ทุกอย่างเริ่มต้นด้วยบรรจุภัณฑ์ ในการพัฒนาอุตสาหกรรม มีความจำเป็นต้อง "จัดทำแพ็กเกจ" แอปพลิเคชันที่ประกอบขึ้น เช่น เพื่อให้สามารถถ่ายโอนไปยังเซิร์ฟเวอร์ที่จะใช้งานได้ ในรูปแบบที่นักพัฒนารวบรวมไว้บนคอมพิวเตอร์ของเขา เช่น "บรรจุภัณฑ์" ควรทำหน้าที่เป็นเครื่องป้องกัน วิธีนี้จะช่วยลดความประหลาดใจ เช่น เมื่อแอปพลิเคชันทำงานระหว่างการทดสอบ แต่หยุดทำงานเมื่อถ่ายโอนไปยังการใช้งานจริง นอกจากนี้ “บรรจุภัณฑ์” ยังแยกแอปพลิเคชันหนึ่งจากอีกแอปพลิเคชันหนึ่งซึ่งอยู่บนเซิร์ฟเวอร์เดียวกัน การแยกดังกล่าวทำให้แอปพลิเคชันหนึ่งไม่รบกวนการทำงานของอีกแอปพลิเคชันหนึ่ง (ตัวอย่างเช่น: แอปพลิเคชันหนึ่งจะไม่สามารถเข้าครอบครอง RAM ของเซิร์ฟเวอร์ทั้งหมดได้ โดยปล่อยให้ การประยุกต์ใช้ครั้งที่สองกับชะตากรรม) ข้อดีของ "บรรจุภัณฑ์" ด้วยสถาปัตยกรรมไมโครเซอร์วิสนั้นเห็นได้ชัดเจนเป็นพิเศษและเป็นที่เข้าใจได้ มีไมโครเซอร์วิสมากมาย - แอปพลิเคชันขนาดเล็กจำนวนมากที่ต้องสื่อสารระหว่างกัน แต่ในขณะเดียวกันก็ไม่ควรรบกวนซึ่งกันและกัน ตัวอย่างคือตู้ลิ้นชัก (เซิร์ฟเวอร์) ซึ่งมีลิ้นชักที่แตกต่างกันมากมาย และเราสามารถย้ายถุงเท้าที่แตกต่างกันจากลิ้นชักหนึ่งไปอีกลิ้นชักหนึ่งได้อย่างง่ายดาย และในขณะเดียวกันก็จะไม่ปะปนกันหรือกับกางเกงชั้นใน
![Docker, Kubernetes, OpenShift คือใคร และเกี่ยวข้องกันอย่างไร - 1]()
บรรจุภัณฑ์ถูกสร้างขึ้นโดยเครื่องมือเสมือนจริง กาลครั้งหนึ่ง เครื่องเสมือน (VM) ถูกใช้เป็น "บรรจุภัณฑ์" คนเฒ่าคนแก่จะจำได้ว่าพวกเขาปรับใช้ Windows XP บน Vista ในเครื่องเสมือนได้อย่างไร ตอนนี้ VM สำหรับแพ็คเกจแอปพลิเคชันกลายเป็นอดีตไปแล้ว โลกถูกครอบครองโดยตู้คอนเทนเนอร์ เนื่องจาก: เบากว่า มีประสิทธิผลมากกว่า และปลอดภัยกว่า
รายละเอียดเพิ่มเติม: คอนเทนเนอร์แตกต่างจากเครื่องเสมือนอย่างไร ![Docker, Kubernetes, OpenShift คือใคร และเกี่ยวข้องกันอย่างไร - 2]()
คุณต้องจำข้อดีบางประการของคอนเทนเนอร์: • มีขนาดเล็กกว่า (ใช้หน่วยความจำบนเซิร์ฟเวอร์น้อยกว่า); • สามารถเข้าถึงทรัพยากรเซิร์ฟเวอร์ที่ใช้ร่วมกัน (RAM, เวลาประมวลผลของโปรเซสเซอร์); • มีความสามารถในการพกพาไปยังสภาพแวดล้อมอื่นๆ ได้ดีขึ้น (ตั้งแต่การทดสอบจนถึงระดับอุตสาหกรรม) • ให้ความเร็วในการเปิดที่สูงขึ้น (เนื่องจากคอนเทนเนอร์มีน้ำหนักเบาจึงเปิดเร็วขึ้น)
นักเทียบท่าเป็นแม่ของคอนเทนเนอร์ ถ้าพูดถึงคอนเทนเนอร์ แปลว่า Docker Docker เป็นซอฟต์แวร์สำหรับการปรับใช้และการจัดการแอปพลิเคชันในสภาพแวดล้อมแบบคอนเทนเนอร์โดยอัตโนมัติ จากตัวอย่าง Docker เป็นจุดผสมระหว่างนักออกแบบออนไลน์กับเครื่องพิมพ์ 3 มิติที่มีเครน นั่นคือเขาสามารถออกแบบเทมเพลต (รูปภาพ) สำหรับคอนเทนเนอร์ก่อน พิมพ์ (สร้าง) คอนเทนเนอร์ตามเงื่อนไขที่กำหนด (รูปภาพ) จากนั้นจึงย้ายไปยังทุกที่ที่ต้องการ Dockerfiles ถูกใช้แทนคันโยก กระบวนการจัดการนั้นง่ายดาย: คุณเขียนไฟล์ คำสั่ง รัน และดูว่าเกิดอะไรขึ้น
ความคุ้นเคยครั้งแรกกับ Docker Docker Compose - อัปเกรด Docker ตอนนี้เรามาดูสถานการณ์ที่จำเป็นต้องรันคอนเทนเนอร์หลายตัวในตำแหน่งเดียว ยูทิลิตี้ที่ใช้คือ Docker Compose Docker Compose เป็นเครื่องมือที่มาพร้อมกับ Docker ได้รับการออกแบบมาเพื่อแก้ไขปัญหาที่เกี่ยวข้องกับการปรับใช้โครงการ ความแตกต่างระหว่าง Docker และ Docker Compose: Docker ใช้เพื่อจัดการแต่ละคอนเทนเนอร์ Docker Compose ใช้เพื่อจัดการคอนเทนเนอร์หลายรายการพร้อมกัน เครื่องมือนี้มีความสามารถเช่นเดียวกับ Docker แต่ช่วยให้คุณสามารถทำงานกับโครงสร้างที่ซับซ้อนมากขึ้นได้
![Docker, Kubernetes, OpenShift คือใคร และเกี่ยวข้องกันอย่างไร - 4]()
สถานการณ์ทั่วไปสำหรับการใช้ Docker Compose: ลองนึกภาพว่าคุณเป็นนักพัฒนาโครงการเว็บ โครงการนี้มีสองเว็บไซต์ ช่องทางแรกช่วยให้นักธุรกิจสามารถสร้างร้านค้าออนไลน์ได้ด้วยการคลิกเพียงไม่กี่ครั้ง ประการที่สองมุ่งเป้าไปที่การสนับสนุนลูกค้า ไซต์ทั้งสองนี้โต้ตอบกับฐานข้อมูลเดียวกัน โปรเจ็กต์ของคุณกำลังได้รับความนิยมมากขึ้นเรื่อยๆ และปรากฎว่าพลังของเซิร์ฟเวอร์ที่โปรเจ็กต์ทำงานนั้นไม่เพียงพออีกต่อไป ด้วยเหตุนี้ คุณจึงตัดสินใจย้ายทั้งโปรเจ็กต์ไปยังเครื่องอื่น หากคุณไม่ได้ใช้ Docker Compose คุณจะต้องย้ายและกำหนดค่าคอนเทนเนอร์ใหม่ทีละรายการ โดยหวังว่าคุณจะไม่ลืมสิ่งใดในกระบวนการนี้ หากคุณใช้ Docker Compose การย้ายโปรเจ็กต์ของคุณไปยังเซิร์ฟเวอร์ใหม่เป็นเรื่องที่สามารถแก้ไขได้ด้วยการรันคำสั่งเพียงไม่กี่คำสั่ง เพื่อให้การโอนโปรเจ็กต์ไปยังตำแหน่งใหม่เสร็จสมบูรณ์ คุณจะต้องทำการตั้งค่าบางอย่างและอัปโหลดสำเนาสำรองของฐานข้อมูลไปยังเซิร์ฟเวอร์ใหม่ DockerComposer ทั่วไป:
![Docker, Kubernetes, OpenShift คือใคร และเกี่ยวข้องกันอย่างไร - 5]()
สิ่งที่คุณต้องจำไว้ที่นี่:
คอนเทนเนอร์เป็นวิธีหลักสำหรับแอปพลิเคชัน "บรรจุภัณฑ์" นักเทียบท่าจัดการคอนเทนเนอร์ สร้างอิมเมจคอนเทนเนอร์ หยิบและย้ายคอนเทนเนอร์ ในการจัดการคอนเทนเนอร์จำนวนมากพร้อมกัน จะใช้ Docker Compose ซึ่งรวมอยู่ใน Docker โปรแกรมเหล่านี้เป็นซอฟต์แวร์ฟรี (ของแจกฟรี) Kubernetes (K8s) - ระบบอัตโนมัติของนักเทียบ ท่า ดังนั้นเราจึงปรับใช้คอนเทนเนอร์ เรารู้วิธีถ่ายโอนพวกมัน "เป็นชุด" จากเครื่องหนึ่งไปอีกเครื่องหนึ่ง แต่ทันใดนั้นตู้คอนเทนเนอร์ใบหนึ่งก็หล่นลงมา! จะทำอย่างไร? ใครจะเลี้ยงมันอีกล่ะ?
![Docker, Kubernetes, OpenShift คือใคร และเกี่ยวข้องกันอย่างไร - 6]()
แน่นอนคุณสามารถทำได้ด้วยตนเองผ่าน Docker แต่คุณต้องทำอะไรบางอย่าง เขียนอะไรบางอย่าง คุณต้องมีเครื่องมืออัตโนมัติบางอย่าง นี่คือที่มาของ Kubernetes (ตัวย่อ K8s) และยังจะจัดการกับการจัดการและการประสาน (การจัดการอัตโนมัติของเอนทิตีที่เกี่ยวข้อง) ของคอนเทนเนอร์ด้วย ด้วย K8 ที่มีอยู่ คุณไม่จำเป็นต้องตรวจสอบคอนเทนเนอร์ทั้งกลางวันและกลางคืน การกำหนดสถานการณ์พฤติกรรมก็เพียงพอแล้ว และ K8 จะทำทุกอย่างเอง คุณสมบัติหลักของ Kubernetes 1. ให้ความสามารถในการปรับขนาดและการจัดการการกำหนดค่าของคุณ 2. คุณสามารถอธิบายสิ่งที่คุณต้องการได้รับเมื่อปรับใช้คลัสเตอร์ และ K8 จะดำเนินการดังกล่าว เช่น ระบุจำนวน
พ็อดจำนวนหน่วยความจำที่จะจัดสรรให้ ระบุจำนวนเรพลิกา (อินสแตนซ์) ของแอปพลิเคชันที่ใช้งาน (ในคอนเทนเนอร์) บนพ็อด 3. รับผิดชอบในการบำรุงรักษาระบบให้อยู่ในสถานะที่กำหนดหากมีสิ่งใดตก K8 จะหยิบขึ้นมาตามการกำหนดค่าที่กำหนดไว้ สิ่งที่คุณต้องจำไว้ที่นี่:
Kubernetes เป็นเครื่องมือสำหรับประสานแอปพลิเคชันที่มีคอนเทนเนอร์ ทำให้การปรับใช้งาน การปรับขนาด และการประสานงานในคลัสเตอร์เป็นแบบอัตโนมัติ รองรับเทคโนโลยีการบรรจุคอนเทนเนอร์ที่สำคัญ รวมถึง Docker K8s เป็นซอฟต์แวร์โอเพ่นซอร์ส
OpenShift คือ Ferrari ในโลกของการจำลองเสมือน เจ๋ง รวดเร็ว และมีราคาแพง กำลังพัฒนาหัวข้อ เรามาต่อกันที่ OpenShift กันดีกว่า
OpenShift เป็นส่วนเสริมของ Kubernetes ที่มีฟังก์ชันเพิ่มเติม พร้อมใช้งานทันที ไม่ต้องกำหนดค่าที่ยาวและยุ่งยาก และสามารถนำไปใช้จริงได้ทันที ดูว่ามีไอคอนที่แตกต่างกันกี่ไอคอนเหนือ Kubernetes และแต่ละคนก็ทำสิ่งเจ๋งๆ ของตัวเอง
![Docker, Kubernetes, OpenShift คือใคร และเกี่ยวข้องกันอย่างไร - 8]()
ไฮไลท์ของ OpenShift: • เป็นผลิตภัณฑ์แบบชำระเงิน ไม่เหมือน K8; • DevOps พร้อมใช้งานทันที รองรับสถานการณ์การปรับใช้สีน้ำเงิน/เขียวขั้นพื้นฐาน • รองรับ Jenkins ในตัว; • จัดเตรียมเครื่องมือที่สะดวกสำหรับการจัดการและการทำงานกับคลัสเตอร์ • มีรูปแบบการรักษาความปลอดภัยที่เข้มงวดมากขึ้นและมีการตรวจสอบในตัว ควรเน้นย้ำอีกครั้งว่า OpenShift เป็นผลิตภัณฑ์แบบชำระเงิน ไม่เหมือน Kubernetes ความแตกต่างคือ: หากเราใช้ Kubernetes เพียงอย่างเดียว เราก็จะแก้ปัญหาทั้งหมดได้ด้วยตัวเอง หากเราพูดถึง OpenShift มันเป็นผลิตภัณฑ์ของ Red Hat ซึ่งแก้ปัญหาที่เกิดขึ้นใหม่โดยเป็นส่วนหนึ่งของการสนับสนุนแบบชำระเงิน สรุป:
ในการพัฒนาอุตสาหกรรมมีความจำเป็นต้อง "จัดทำแพ็กเกจ" แอปพลิเคชัน แนวทางนี้มีความเกี่ยวข้องอย่างยิ่งในสถาปัตยกรรมไมโครเซอร์วิส ภาชนะบรรจุเป็นวิธีการหลักในการใช้งานบรรจุภัณฑ์ นักเทียบท่าจัดการคอนเทนเนอร์ สร้างอิมเมจคอนเทนเนอร์ หยิบและย้ายคอนเทนเนอร์ ในการจัดการคอนเทนเนอร์จำนวนมากพร้อมกัน จะใช้ Docker Compose ซึ่งรวมอยู่ใน Docker โปรแกรมเหล่านี้เป็นซอฟต์แวร์ฟรี Kubernetes(K8s) เป็นเครื่องมือสำหรับประสานแอปพลิเคชันที่มีคอนเทนเนอร์ ทำให้การปรับใช้ การปรับขนาด และการประสานงานในคลัสเตอร์เป็นแบบอัตโนมัติ รองรับเทคโนโลยีการบรรจุคอนเทนเนอร์ที่สำคัญ รวมถึง Docker K8s เป็นซอฟต์แวร์โอเพ่นซอร์ส OpenShift เป็นส่วนเสริมของ Kubernetes ที่มีฟังก์ชันการทำงานเพิ่มเติม นี่เป็นผลิตภัณฑ์แบบชำระเงิน ซึ่งแตกต่างจาก K8 ที่มีไว้สำหรับการใช้งานในองค์กร ให้ DevOps ทันที: รองรับสถานการณ์การปรับใช้งานหลัก สีน้ำเงิน/เขียว, canary, มีการสนับสนุนในตัวสำหรับ Jenkins และมอบเครื่องมือที่สะดวกสำหรับการจัดการและทำงานกับคลัสเตอร์ มีรูปแบบการรักษาความปลอดภัยที่เข้มงวดมากขึ้นและมีการตรวจสอบในตัว สำหรับผู้ที่อยากเขียนโค้ด:
จัดทำแอปพลิเคชัน Spring Boot ลงในคอนเทนเนอร์ วิธีปรับใช้ Postgres ใน Docker และเชื่อมต่อกับแอปพลิเคชัน Spring-Boot การสัมมนา ผ่านเว็บ: นักเทียบท่า - วิธีทำงานกับคอนเทนเนอร์ได้อย่างไร - การพัฒนาแบ็กเอนด์ใน Java
GO TO FULL VERSION