[บันทึกช่วยจำ] ลองเล่น VMware vSphere with Tanzu + HAProxy ตอนที่ 1

หลังจากที่ได้ลองเล่นทำ LAB กับ VMware vSphere with Tanzu ได้ประมาณ 1 เดือน วันนี้จะมาแชร์วิธีการ Setup และการใช้งานเบื้องต้น เผื่อที่จะได้เป็นแนวทางให้กับผู้ที่หลงเข้ามาอ่านนำไปลองทำกันดูครับ

แต่ก่อนที่จะไปเริ่มกันก็มาทำความรู้จักกับ VMware vSphere with Tanzu คืออะไรกันก่อนดีกว่า

vSphere with Tanzu คืออะไร

vSphere with Tanzu เป็นการพัฒนาล่าสุดจาก VMware ที่จะมาช่วยทำให้เราสามารถที่จะรัน K8s แบบ Native บน vSphere ได้ ซึ่งเหมาะกับองค์ที่ยังจำเป็นต้องใช้งาน Infarstructure แบบ On-Premises และจำเป็นเป็นต้องรันงานที่เป็น K8s ที่กำลังนิยมมากขึ้นในปัจจุบัน

vSphere with Tanzu ช่วยอะไร

vSphere with Tanzu จะมาช่วยให้ Administrator สามารถทำการสร้าง และบริหารจัดการ K8s Cluster ได้อยากมีประสิทธิภาพ และมี Standard ที่เหมือนกันทั้งหมด ลดความเสี่ยงที่จะเกิดการผิดพลาดจากการที่ต้องมา Config หรือ Upgrade เอง กำหนดสิทธิ์ต่างๆ ให้กับทีม Developer ได้ และแน่นอนผู้ดูแลระบบสามารถ Monitor Resource ต่างๆ ได้จากหน้า vCenter ได้ด้วย

vSphere และ vCenter เวอร์ชั่นที่รองรับ

  1. VMware ESXi 7.0 U1
  2. VMware vCenter 7.0 U1

Envoriment ที่ใช่ทำ LAB

ทางผู้เขียนได้ทำการ Setup vSphere Cluster ขึ้นมาโดยมีรายละเอียดดังต่อไปนี้

Infarstructure

ในส่วนของ vCenter เปิด HA และ DRS ให้เรียบร้อย และสร้าง Distributed Network สำหรับ Workload

ในส่วนของ Network จะแบ่งเป็น 2 ส่วนหลักๆ

  1. Management network — 192.168.0.0/24
  2. Workload network — 172.17.36.0/24
  3. Frontend network — 172.17.37.0/24

vSphere with Tanzu

จะเห็นได้ว่า vSphere with Tanzu จะทำการสร้าง Supervisor Cluster ขึ้นมาชุดหนึ่งประกอบไปด้วย VMs จำนวน 3 VMs ทำหน้าที่บริหารจัดการ K8s ที่เราจะสร้างขึ้นมาอีกที โดยจะมี HAProxy ทำหน้าที่เป็น Load Balancer ให้กับ Supervisor Cluster รวมทั้ง K8s ที่เราทำการเรียกเข้าไปใช้งานด้วย

เอาละเรามาลงมือทำกันเลยดีกว่า

ตั้งค่าในส่วนของ Storage

ในส่วนจะเป็นการตั้งค่าให้กับ Storage ที่เราจะใช้งานซึ่งต้องเป็น Share Storage ที่สามารถมองเห็นได้ทุกๆ เครื่อง ESXi Host ที่อยู่ใน Cluster นี้ โดยเราจำเป็นต้องตั้งค่า Tag ให้กับ Storage เพื่อให้ Supercisor Cluster และ Namespace สามารถใช้งานได้

ขั้นตอนที่ 1 — ไปที่ Menu ->Storage

ขั้นตอนที่ 2— คลิ้กขวาที่ Storage ที่เราต้องการใช้งานแล้วเลือกไปที่ “Tags and Custom Attributes and Assign Tags” ในตัวอย่างใช้ vsanDatastore

ขั้นตอนที่ 3— สร้าง Tag ที่ชื่อว่า “kubernetes-demo-storage”

ขั้นตอนที่ 4— หลังจากนั้นให้คลิ้กที่ปุ่ม “Create New Category” เพื่อและตั้งชื่อ Category ว่า “kubernetes-demo-tag-category”

ขั้นตอนที่ 5— เลือก Category ที่ได้ทำการสร้างเมื่อสักครู่

ขั้นตอนที่ 6— เลือก Tag ที่ได้สร้างเมื่อสักครู่คลิ้กที่ Assign

ขั้นตอนที่ 7— ต่อมาให้ไปที่ Menu -> Policies and Profile -> VM Storage Policies เพื่อทำการสร้าง Storge Policy สำหรับ kubernetes คลิ้ก Create

ขั้นตอนที่ 8— ตั้งชื่อ Storge Policy ว่า “kubernetes-gold-storage-policy” แล้วคลิ้ก Next

ขั้นตอนที่ 9— ให้ทำการเลือก “Enable tag based placement rules” แล้วคลิ้ก Next

ขั้นตอนที่ 10— ทำการเลือก Tag Category เป็น “kubernetes-demo-tag-category” และคลิ้ก “Browse Tags”

ขั้นตอนที่ 11 — เลือก Tag “kubernetes-demo-storage” ที่เราได้สร้างไว้ก่อนหน้า หลังจากนั้นคลิ้ก Next

ขั้นตอนที่ 12 — เลือก Storage ที่เราเลือกในตัวอย่างใช้ vsanDatastore

ขั้นตอนที่ 13 — เลือกเสร็จแล้วคลิ้ก Finish เป็นอันจบในส่วนของ Stroage

เพิ่ม User ให้กับทีม

ในส่วนนี้จะเป็นการสร้าง User ให้กับทีมที่จะเข้ามาใช้งานใน K8s Cluster ที่เราจะให้บริการ หาก vCenter มีการ Join Domain เราสามารถที่จะใช้ User จาก Domain แทนได้ด้วย

ขั้นตอนที่ 1 — ให้ไปที่ Menu -> Administration -> Users and Groups แล้วให้เลือก Domain เป็น vsphere.local

ขั้นตอนที่ 2— หลักจากนั้นให้คลิ้ก Add

ขั้นตอนที่ 3— เพิ่ม User ที่ต้องการตัวอย่างใช้เป็น devops และตั้ง password ตามต้องการ เมื่อใส่ข้อมูลเสร็จแล้วก็คลิ้ก Add ก็เป็นอันเสร็จสิ้น

สร้าง Content Content Library

ในส่วนนี้จะเป็นการตั้งค่า Content Libraray จะเป็นสร้าง Library เพื่อ subscribed TKG cluster images ล่าสุดเพื่อไว้ใช้งาน

ขั้นตอนที่ 1 — ให้ไปที่ Menu -> Content Library

ขั้นตอนที่ 2— หลังจากนั้นคลิ้ก Create

ขั้นตอนที่ 3— ให้ทำการตั้งชื่อให้กลับ Content Library ที่เราจะสร้างในที่ใช่ชื่อว่า “tkg-cl” และตรวจสอบ vCenter เป็นตัวที่เราใช้งานอยู่หรือไม่ หลังจากนั้นคลิ้ก Next

ขั้นตอนที่ 4— ให้เลือกเป็น “Subscribed Content Library” และทำการใส่ http://wp-content.vmware.com/v2/latest/lib.json ในช่อง Subscribtion URL หลังจากนั้นคลิ้ก Next

ขั้นตอนที่ 5— เลือก Storage ที่ต้องการจัดเก็บ หลังจากนั้นคลิ้ก Next

ขั้นตอนที่ 6 — คลิ้ก Finish ก็เป็นอันเสร็จสิ้น

ติดตั้ง HAProxy

ในส่วนนี้จะเป็นการติดตั้ง HAProxy เพื่อให้บริการในส่วนของ Supercisor Cluster, TKG Cluster และ Application ที่มีการ Deploy ลงไปด้วย

ขั้นตอนที่ 1 — Download HAProxy สำหรับ Tanzu จาก URL ดังต่อไปนี้ https://cdn.haproxy.com/download/haproxy/vsphere/ova/vmware-haproxy-v0.1.8.ova

ขั้นตอนที่ 2 — ให้คลิ้กขวาที่ Cluster แล้วทำการเลือก Deploy OVF Template

ขั้นตอนที่ 3 — ให้เลือก OVF HAProxy ที่เราได้ทำการ download มาแล้วคลิ้ก Next

ขั้นตอนที่ 4 — ตั้งชื่อให้กับ HAProxy ในที่นี้ใช้ชื่อว่า “TZHAPRXY01.lab.local” และเลือก Folder ที่จะให้ VM นี้อยู่แล้วคลิ้ก Next

ขั้นตอนที่ 5 — เลือก Cluster หรือ ESXi Host ที่จะให้ VM นี้ทำงานแล้วคลิ้ก Next

ขั้นตอนที่ 6 — ระบบจะแสดงแสดงข้อมูลเบื้องต้นของ HAProxy ให้คลิ้ก Next

ขั้นตอนที่ 7 — กด Accpect License Agreements แล้วคลิ้ก Next

ขั้นตอนที่ 8 — เลือกรูปแบบ Deploy ในที่นี้จะเลือกเป็น Frontend Network แล้วคลิ้ก Next

ขั้นตอนที่ 9 — เลือก Datastore ที่ต้องการให้ VM แล้วคลิ้ก Next

ขั้นตอนที่ 10 — เลือก Network โดยให้เลือกให้ตรงตามที่ได้แบ่งไว้ แล้วคลิ้ก Next

ขั้นตอนที่ 11— ตั้งค่าต่างเริ่มด้วย ตั้งค่า Password สำหรับ Root และอนุญาติให้ SSH ด้วย Root ได้ ในตัวอย่างตั้งค่าดังต่อไปนี้

  • Root Password = VMware1!

ขั้นตอนที่ 12 — ต่อมาตั้งค่าในส่วนของ Network ในตัวอย่างตั้งค่าดังต่อไปนี้

  • Host Name = TZHAPRXY01.lab.local
  • DNS = 192.168.0.10
  • Management IP = 192.168.0.65/24
  • Management GW = 192.168.0.254
  • Workload IP = 172.17.36.65/24
  • Workload GW = 172.17.36.254
  • Frontend IP = 172.17.37.65/24
  • Frontend GW = 172.17.37.254

ขั้นตอนที่ 13 — ต่อมาตั้งค้าในส่วนของ Load Balancing ในตัวอย่างตั้งค่าดังต่อไปนี้

  • Load Balancer IP Rang = 172.17.37.0/25

** ในส่วนนี้ต้องอยู่ในรูปแบบ CIDR โดยสามารถคำนวณจำนวน IP ที่เราต้องการได้จากเว็บ https://www.ipaddressguide.com/cidr

  • Dataplane API Management Port = 5556
  • HAProxy ID = wcp
  • HAProxy Password = VMware1!

ขั้นตอนที่ 14 — เมื่อทำการตั้งค่าต่างๆ เสร็จแล้วให้คลิ้ก Next

ขั้นตอนที่ 15 — ตรวจสอบข้อมูลอีกครั้งถ้ามั่นใจแล้วคลิ้ก Finish เพื่อเริ่ม Deploy แล้วก็รอจน Deploy เสร็จ แล้วก็ทำการ PowerOn และรอจนระบบ Boot เรียบร้อย

ขั้นตอนที่ 16 — ทดลองเรียก https://192.168.0.65:5556/v2 เพื่อตรวจสอบว่า HAProxy ทำงานปกติหรือยัง โดยจะต้องได้ตามรูป

ขั้นตอนที่ 17 — ให้ทำการ SSH ไปที่ HAProxy เพื่อที่เราจะเข้าไปดู Server Certificate เพื่อนำไปใช้ในขั้นตอนถัดไปโดยจะอยู่ใน Path ดังต่อไปนี้

$ cat /etc/haproxy/server.crt

เปิดการใช้งาน Workload Management

ในส่วนจะเป็นการตั้งค่าเปิดการใช้งาน Workload Management โดยระบบจะทำการสร้าง Supervisor Cluster ขึ้นมาเพื่อใช้บริหารจัดการ K8s Cluster ต่างๆ

ขั้นตอนที่ 1 — ให้ไปที่ Menu -> Workload Management -> Cluster หากพบหน้าลงทะเบียน Free Evaluation ก็ให้ทำการลงทะเบียนให้เรียบร้อย

ขั้นตอนที่ 2— หลังจากลงทะเบียนเรียบร้อยก็จะมาหน้าเริ่มต้นให้คลิ้ก Get Start

ขั้นตอนที่ 3— การเปิดใช้งาน Workload Management ก็จะขั้นตอนให้เราตั้งเราให้เราทำตามขั้นตอนหน้าจอไปเรื่อยๆ เริ่มจากเลือก vCenter Server and Network ในตัวอย่างตั้งค่าดังต่อไปนี้ เสร็จแล้วคลิ้ก Next

  • vCenter Server = TZVCSA.lab.local
  • Network = vCenter Server Network

** ตอนนี้จะเลือกได้อยากเดี่ยวเนื่องจากตัวอย่างนี้ยังไม่มีการใช้งาน NSX-T

ขั้นตอนที่ 4— เลือก Cluster ที่เราจะใช้งานเป็น Workload ในตัวอย่างตั้งค่าดังต่อไปนี้ เสร็จแล้วคลิ้ก Next

  • Cluster

ขั้นตอนที่ 5— ให้เลือกขนาดของ Control Plane VMs ในตัวอย่างตั้งค่าดังต่อไปนี้ เสร็จแล้วคลิ้ก Next

  • Tiny

ขั้นตอนที่ 6— เลือก Storage Policy ในตัวอย่างตั้งค่าดังต่อไปนี้ เสร็จแล้วคลิ้ก Next

  • vSAN Default Storage Policy

ขั้นตอนที่ 7— ตั้งค่าในส่วน Load Balancer ในตัวอย่างตั้งค่าดังต่อไปนี้ โดยค่าต่างๆ เอามาจากตอนที่เรา Deploy HAProxy เสร็จแล้วคลิ้ก Next

  • Name = tzhaprxy01
  • Type = HAProxy
  • Data plan API Addresses = 192.168.0.65:5556
  • User name = wcp
  • Password = VMware1!
  • IP Address rang for Virtual Server = 172.17.37.100-172.17.37.240
  • Server Certificate Authority = ** ได้มาจาก /etc/haproxy/server.crt

ขั้นตอนที่ 8— ตั้งค่าในส่วนของ Management Network ในกับ Supervisor Cluster ในตัวอย่างตั้งค่าดังต่อไปนี้ เสร็จแล้วคลิ้ก Next

  • Network = VM network
  • Starting IP Address = 192.168.0.70
  • Subnet Mark = 255.255.255.0
  • Gateway = 192.168.0.254
  • DNS Server = 192.168.0.10
  • DNS Search Domain = lab.local
  • NTP Server = 192.168.0.10

ขั้นตอนที่ 9— ตั้งค่าในส่วนของ Workload Network ให้ทำการคลิ้กที่ Add เพิ่มตั้งค่า Workload Network ในตัวอย่างตั้งค่าดังต่อไปนี้ เสร็จแล้วคลิ้ก Save

  • Name = network-1
  • Port Group = DPortGroup-Workload
  • Gateway = 172.17.36.254
  • Subnet = 255.255.255.0
  • IP Address Rang = 172.17.36.100-172.17.36.240

ขั้นตอนที่ 10 — ให้ตั้งค่าในส่วนที่เหลือ เสร็จแล้วคลิ้ก Next

  • IP Address for services = 10.96.0.0/24 * ค่าเริ่มต้น
  • DNS Server = 192.168.0.10

ขั้นตอนที่ 11 — ให้ตั้งต่า TKG โดยการเลือก Content Library ที่เราได้ตั้งค่าไว้ ในตัวอย่างตั้งค่าดังต่อไปนี้ เสร็จแล้วคลิ้ก Next

  • Add Content Library = tkg-cl

ขั้นตอนที่ 12 — ให้ตรวจสอบอีกครั้ง มั่นใจแล้วก็คลิ้ก Finish และรอระบบทำการตั้งค่าสถานะ Config ตอนนี้จะเป็น Configuring ซึ่งขั้นตอนนี้จะใช้เวลาประมาณ 30–60 นาที

ขั้นตอนที่ 13 — เมื่อระบบทำการตั้งค่าเสร็จสิ้นแล้ว สถานะ Config จะเปลี่ยนเป็น Running

ขั้นตอนที่ 14 — ตรวจสอบโดยการเรียกไปที่ https://172.17.37.100 โดยจะต้องขึ้นหน้าจอดังรูป

เปิดการใช้งาน Namespace

ขั้นตอนที่ 1 — ให้ไปที่ Menu -> Workload Management -> Namespace คลิ้ก Create Namespace

ขั้นตอนที่ 2— ทำการตั้งค่าต่างๆ ในตัวอย่างตั้งค่าดังต่อไปนี้ เสร็จแล้วคลิ้ก Next

  • Cluster = Cluster
  • Name = devops
  • Network = network-1

ขั้นตอนที่ 3— ต่อมาตั้งค่า Permission เพื่อกำหนดสิทธิ์ที่จะให้ User ไหนใช้งานได้บ้าง โดยการคลิ้กที่ Add Permission

ขั้นตอนที่ 4— เลือก User หรือ User Group ที่ต้องการ และกำหนด Role ในตัวอย่างตั้งค่าดังต่อไปนี้ เสร็จแล้วคลิ้ก Add

  • Identity Source = vsphere.local
  • User/Group Serch = devops
  • Role = can edit

ขั้นตอนที่ 5— ต่อมาตั้งค่า Storage เพื่อกำหนดว่า Namespace นี้สามารถใช้งาน Storage Policy อะไรได้บ้าง โดยการคลิ้กที่ Add Storage

ขั้นตอนที่ 6— เลือก Storage Policy ที่ได้สร้างไว้ ในตัวอย่างตั้งค่าดังต่อไปนี้ เสร็จแล้วคลิ้ก Add

  • kubernetes-gold-storage-policy

ขั้นตอนที่ 7— ก็เป็นอันเสร็จสิ้นในการสร้าง Namespace

เพื่อเท่านี้เราก็ได้ vSphere with Tanzu ไว้บริหารจัดการ K8s Cluster บน VMware เรียบร้อยแล้ว ในตอนต่อไปเราจะมาลองใช้งานเจ้า vSphere with Tanzu กันดูว่าจะยาก หรือง่ายขนาดไหน

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

.

สารบัญ

.

[บันทึกช่วยจำ] ลองเล่น VMware vSphere with Tanzu + HAProxy ตอนที่ 1

[บันทึกช่วยจำ] ลองเล่น VMware vSphere with Tanzu + HAProxy ตอนจบ

[บันทึกช่วยจำ] มาทำ Private Container Registry ด้วย Harbor และเอาไปใช้บนกับ VMware vSphere with Tanzu กันเถอะ

[บันทึกช่วยจำ] ลองเล่น VMware vSphere with Tanzu + NSX-T ตอนที่ 1

[บันทึกช่วยจำ] ลองเล่น VMware vSphere with Tanzu + NSX-T ตอนจบ

[บันทึกช่วยจำ] ลองเล่น VMware vSphere with Tanzu + NSX ALB (Avi)

[บันทึกช่วยจำ] มาลอง Avi Kubernetes Operator (AKO) หรือ Ingress Controller จาก NSX ALB กันเถอะ

.

Ref: https://core.vmware.com/resource/vsphere-tanzu-quick-start-guide-v1a

Ref: https://cormachogan.com/2020/09/25/deploy-ha-proxy-for-vsphere-with-tanzu/

Ref: https://cormachogan.com/2020/09/29/deploying-tanzu-kubernetes-guest-cluster-in-vsphere-with-tanzu/

Ref: https://www.virten.net/2020/08/vmware-vsphere-with-kubernetes-guide-part-7-octant-and-lens/

Ref: https://docs.vmware.com/en/VMware-vSphere/7.0/vmware-vsphere-with-tanzu/GUID-7351EEFF-4EF0-468F-A19B-6CEA40983D3D.html

Ref: https://www.virten.net/2020/11/tanzu-kubernetes-licensing-in-vsphere-7-0-update-1/

.

นายช่างระบบระบบคอมพิวเตอร์ทั้วๆ ที่ชอบทดลอง และเรียนรู้สิ่งใหม่ไปเรื่อยๆ

นายช่างระบบระบบคอมพิวเตอร์ทั้วๆ ที่ชอบทดลอง และเรียนรู้สิ่งใหม่ไปเรื่อยๆ