Skip to main content
0
AzureCloud Technologiesไม่มีหมวดหมู่

Deploy เว็บแอปฯ ไปยัง Azure Kubernetes Service (AKS) ง่ายนิดเดียว

สวัสดีครับ กลับมาพบกันอีกแล้ว สำหรับบทความที่จะพาทุกคนไปอัปสกิล เรียนรู้การใช้งาน เทคโนโลยีและเทคนิคต่าง ๆ โดยวันนี้เราจะมาเรียนรู้วิธีการ Deploy เว็บแอปฯ ไปยัง Azure Kubernetes Service (AKS) สำหรับมือใหม่หัดใช้ AKS กัน มาดูกันว่ามันง่ายจริงแค่ไหน 😄

ก่อนจะไปรู้จักกับ AKS จะต้องมีพื้นฐานเรื่องพวกนี้มาก่อนนะ 👇

1. ความรู้พื้นฐานเกี่ยวกับ Docker

  • เข้าใจหลักการทำงานของ Docker
  • รู้จักคำศัพท์สำคัญ เช่น Container, Image, Container Registry
  • สามารถใช้ Docker CLI เพื่อสร้าง, เรียกใช้งาน, และจัดการ Container

    แนะนำให้ดูวิดีโอนี้ก่อนนะครับ https://www.youtube.com/watch?v=rvJeTVqBSks

2. ความรู้พื้นฐานเกี่ยวกับ Kubernetes

  • เข้าใจหลักการทำงานของ Kubernetes
  • รู้จักองค์ประกอบสำคัญ เช่น Pod, Deployment, Service
  • เข้าใจคำศัพท์สำคัญ เช่น Cluster, Node

    แนะนำให้ดูวิดีโอนี้ก่อนนะครับ https://www.youtube.com/watch?v=_DySZnRD_D4

3. ความรู้พื้นฐานเกี่ยวกับ Azure

  • มีบัญชีผู้ใช้ Azure
  • เข้าใจการใช้งาน Azure Portal
  • รู้จักบริการ Azure พื้นฐาน เช่น Resource Group, Storage Account

    บทความ Azure คืออะไร www.borntodev.com/2021/08/31/what-is-microsoft-azure/

Azure Kubernetes Service (AKS) คืออะไร?

Azure Kubernetes Service (AKS) เป็นอีกหนึ่งบริการที่อยู่บน Microsoft Azure ที่เอาไว้ใช้งานและจัดการ Kubernetes บนคลาวด์ ถ้าเทียบกับเจ้าอื่น ๆ ก็จะมี EKS ของ AWS หรือ GKE ของ Google ซึ่งส่วนใหญ่แล้วบริการเหล่านี้ ช่วยให้จัดการง่ายขึ้นมีทั้ง GUI และ CLI ให้ใช้ รองรับการสเกล โดยเราไม่จำเป็นต้องมาจัดการส่วนที่เป็น Infrastructure เอง

สปอยยย! บทความนี้จะทำอะไรบ้าง?

  • สร้าง AKS cluster โดยใช้ Azure portal
  • เชื่อมต่อ cluster
  • รันแอปบน AKS

สร้าง AKS cluster โดยใช้ Azure Portal

ไปที่ Azure Portal : https://portal.azure.com/

กด Create a resource > Container > Azure Kubernetes Service แล้วกด Create

3. ตั้งชื่อ cluster และใส่รายละเอียดต่างๆ

  • Subscription: เลือก Subscription เพื่อบริหารจัดการทรัพยากรที่ Deploy และมีการคิดค่าใช้จ่าย Resource groups เปรียบเสมือนโฟลเดอร์ที่ช่วยให้ง่ายต่อการจัดการทรัพยากรทั้งหมด
  • Resource group: สร้างหรือกำหนด Resource group ที่จะใช้

    รายละเอียด Cluster
  • Cluster preset configuration: ให้ตัวเลือกการตั้งค่า Cluster ในที่นี่จะเลือกเป็น Dev/Test
  • Kubernetes cluster name: ชื่อของ Cluster
  • Region: เลือกว่าจะใช้ Data Center ไหน
  • Availability zones: ตัวเลือกกำหนดโซนที่ให้ความพร้อมใช้งานสูงจะมีให้เลือก 3 โซน
  • AKS pricing tier: เลือกรูปแบบราคาของ AKS
  • Kubernetes version: เลือก Kubernetes ที่จะใช้
  • Automatic upgrade: ตัวเลือกสำหรับการอัปเกรดอัตโนมัติ
  • Node security channel type: ตัวเลือกประเภทความปลอดภัยของ Node
  • Authentication and Authorization: เลือกระบบยืนยันตัวตนและระบบจัดการสิทธิ์ของ AKS

    แต่หากกด Create ไปแล้วไม่ผ่านให้เรามาทำการอัปเดต Node pools โดย Node pools ใน AKS คือกลุ่มของ Node (เครื่อง) ที่ทำงานร่วมกัน เพื่อที่จะให้แอปรันบน AKS และการกำหนด Node pools ช่วยให้สามารถจัดการ รุ่น VM จำนวน Node ที่ต้องการใน pool เลือกระบบปฏิบัติการ (OS) ของ Node (Linux หรือ Windows) ได้


หากเราทำการอัปเดตเสร็จเรียบร้อยก็กดสร้างได้เลย ระหว่างที่ Azure กำลังสร้าง Service ที่เราทำการกำหนด อาจจะใช้เวลาประมาณ 5 – 10 นาทีจะเป็นลักษณะภาพด้านล่าง

เมื่อ Azure สร้าง AKS เรียบร้อบแล้วจะมีข้อความว่า “Your deployment is complete” เราสามารถกด ที่ “Go to resource” เพื่อไปยังหน้า Overview ของ Service ที่เราสร้างได้เลย

เมื่อเรามายังหน้า AKS Overview ตามภาพด้านล่างได้แล้ว

ให้เราไปที่มุมขวาบนที่ icon ของ Cloud Shell ตามภาพนี้ได้เลย


หลังจากนั้น Console ของ Cloud Shell จะเปิดขึ้นมาโดย Cloud Shell จะเป็นที่ที่เราสามารถใช้ command line ของ Linux บน Azure Portal โดยไม่ต้องติดตั้งซอฟต์แวร์เพิ่มได้

เชื่อมต่อ Cluster

มาถึงส่วนในการเชื่อมต่อ Cluster ของ AKS กันบ้าง เราสามารถใช้คำสั่ง az aks get-credentials –resource-group <ชื่อ Resource Group> –name <ชื่อของ AKS ที่เราสร้าง> โดยคำสั่งนี้ทำหน้าที่ดึงข้อมูลการยืนยันตัวตนสำหรับ Kubernetes Cluster บน Azure Kubernetes Service (AKS)

ตัวอย่างเช่น

หลังจากนั้นใช้คำสั่ง kubectl get nodes เพื่อดู Node ทั้งหมดใน Kubernetes Cluster ที่เราสร้าง

รันแอปบน AKS

โดยตอนที่เรารัน Pod หรือ Service ต่าง ๆ ใน Kubernetes เราจะเขียน Configuration ไว้ในไฟล์ .yaml เราก็เลยใช้ Text Editor ที่เป็น vi แล้วตามด้วยไฟล์ชื่อว่า aks-store-quickstart.yaml ดังภาพนี้

หลังจากนั้นนำ Config นี้ไปวางใน Text Editor (ตอนวางให้ใช้ Ctrl + Shift + v)

คัดลอกโค้ดได้ที่ : https://pastebin.com/MQTzWfSQ


โดยโค้ด YAML นี้เป็นแอปที่ประกอบด้วยหลายส่วนดังนี้:

ส่วนที่ 1: RabbitMQ

  • Deployment: Deploy Container ของ RabbitMQ ที่เป็น message broker
  • ConfigMap: ตั้งค่าเปิดใช้ plugins ของ RabbitMQ
  • Service: สร้าง service เพื่อให้บริการอื่นๆ ใน cluster สามารถเข้าถึง RabbitMQ

ส่วนที่ 2: Order Service

  • Deployment: Deploy Container ของ Order Service, ซึ่งเป็นส่วนของระบบจัดการคำสั่งซื้อ
    • initContainers: Container พิเศษที่รันก่อน application หลัก เพื่อรอให้ RaabitMQ พร้อมก่อน
  • Service: สร้าง service ให้บริการอื่นๆ เข้าถึง Order Service

ส่วนที่ 3: Product Service

  • Deployment: Deploy Container ของ Product Service ของระบบจัดการสินค้า
  • Service: สร้าง service ให้บริการอื่นๆ เข้าถึง Product Service

ส่วนที่ 4: Store Front

  • Deployment: Deploy Container ของ Store Front ฝั่งหน้าบ้าน
  • Service: สร้าง service ชนิด LoadBalancer เพื่อกำหนด public IP ให้ส่วนหน้าบ้าน

ต่อมาเราก็มาทำการสั่ง deploy หรือรันแอปบน AKS โดยการใช้คำสั่ง kubectl apply -f แล้วตามด้วยชื่อไฟล์ที่ Config ด้านบน

เมื่อสั่งรันไปแล้วจะพบว่า pod ที่มี container อยู่ก็จะค่อย ๆ รันขึ้นมาจนครบ

ซึ่งตัวที่สามารถเข้าถึงผ่าน IP ได้คือตัวที่เป็นหน้าบ้านเพราะ เราได้กำหนดให้ใช้เป็น Service ที่เป็น LoadBalancer เพื่อให้คุยกับอินเทอร์เน็ตภายนอกได้

หลังจากนั้นเราก็เอา External – IP ไปเปิดบน Web Browser ก็จะสามารถเปิดเว็บได้แล้วนั่นเอง 🎉

อ้างอิง: Microsoft Learn – Introduction to Azure Kubernetes Service (AKS) จาก https://learn.microsoft.com/en-us/azure/aks/intro-kubernetes

Sirasit Boonklang

Author Sirasit Boonklang

More posts by Sirasit Boonklang

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายความเป็นส่วนตัว และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

ตั้งค่าความเป็นส่วนตัว

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

ยอมรับทั้งหมด
จัดการความเป็นส่วนตัว
  • คุกกี้ที่จำเป็น
    เปิดใช้งานตลอด

    ประเภทของคุกกี้มีความจำเป็นสำหรับการทำงานของเว็บไซต์ เพื่อให้คุณสามารถใช้ได้อย่างเป็นปกติ และเข้าชมเว็บไซต์ คุณไม่สามารถปิดการทำงานของคุกกี้นี้ในระบบเว็บไซต์ของเราได้
    รายละเอียดคุกกี้

  • คุกกี้สำหรับการติดตามทางการตลาด

    ประเภทของคุกกี้ที่มีความจำเป็นในการใช้งานเพื่อการวิเคราะห์ และ นำเสนอโปรโมชัน สินค้า รวมถึงหลักสูตรฟรี และ สิทธิพิเศษต่าง ๆ คุณสามารถเลือกปิดคุกกี้ประเภทนี้ได้โดยไม่ส่งผลต่อการทำงานหลัก เว้นแต่การนำเสนอโปรโมชันที่อาจไม่ตรงกับความต้องการ
    รายละเอียดคุกกี้

บันทึกการตั้งค่า