iconnext
Posted on June 12, 2023
Helm กำลังกลายเป็นตัวเลือกยอดนิยมในการจัดการแอปพลิเคชัน Kubernetes
Helm และ Helm chart repository คืออะไร
Helm ความหมายอย่างเป็นทางการคือ "ผู้จัดการแพ็คเกจสำหรับ Kubernetes"
Helm ช่วยให้การติดตั้ง application บน Kubernetes เป็นไปอย่างง่ายดายในขั้นตอนการเผยแพร่ นอกจากนี้สามารถจัดการตัวแปรผ่านไฟล์ Kubernetes manifest YAML
เมื่อเราสร้าง chart ในการติดตั้ง Kubernetes application และต้องการแชร์ให้ผู้อื่นใช้งานได้ วิธีที่ง่ายที่สุดคือ upload ไปยัง Helm chart repository ตัว Helm chart repository จะทำหน้าที่เก็บบันทึก และแชร์แพ็คเกจ โดยทำงานเหมือน HTTP เซริฟเวิอร์ น่าเสียดายที่ Helm ไม่มีเครื่องมือเฉพาะในการ upload chart ไปยัง remote chart repository (Helm รองรับ local repository)
โดยเราจะใช้ประโยชน์จาก Github Pages ในการแชร์ Chart ที่เราสร้างขึ้นมา
Github Pages คือ
GitHub Pages เป็นบริการจาก Github สำหรับวางเว็บไซด์แบบ static โดยมันเข้ากันกับวัตถุประสงค์ของเราเนื่องจากทุกสิ่งที่เราต้องการคือการโฮสต์ไฟล์ index.yaml ไฟล์เดียวพร้อมกับไฟล์ .tgz จำนวนมาก แล้วทำไมไม่โฮสต์สิ่งเหล่านี้ในเว็บเซิร์ฟเวอร์ของคุณเอง มันช่วยลดค่าใช้จ่ายในการดำเนินการและความเสี่ยงของคุณ (ลองนึกถึงการตรวจสอบ การจัดการแพตช์ ความปลอดภัย บริการสำรองข้อมูล...) คุณจึงสามารถเน้นไปที่โค้ดและสิ่งที่ทำให้ธุรกิจของคุณเกี่ยวข้องกับลูกค้าของคุณ
ขั้นตอนการสร้าง helm repository
ตามตัวอย่างจะเป็นการเป็นการสร้าง Helm chart repository แบบ public
การตั้งค่าที่ Repository ที่ Github
1.ไปที่เว็บ https://github.com/{ชื่อผู้ใช้งาน}
2.ที่หน้าเว็บของ github เลือกที่แท็บ Repositories จากนั้นคลิกที่ปุ่ม New repository
3.ในหน้า Create a new repositoryให้กำหนดชื่อ repository ที่เก็บ helm chart (กำหนดเป็น helm-chart) กำหนดการเข้าถึงเป็นแบบ public จากนั้นคลิกที่ปุ่ม Create repository
การตั้งค่าที่ฝั่งผู้ใช้งาน
หลังจากสร้าง repository บน GitHub แล้วมันยังเป็น repository ว่างๆ อยู่ยังไม่สามารถเผยแพร่บน github page ได้ขั้นตอนนี้จะเป็นการ
1.clone repository ผ่านคำสั่ง
$git clone {file .git ที่กำหนด repository ที่สรา้งขึ้น}
2.เข้าไปใน folder ที่เก็บ code
$cd helm-chart
3.สร้างไฟล์ robots.txt เพื่อหลีกเลี่ยง bot ในการเก็บข้อมูลภายใน repository โดยกำหนดข้อมูลในไฟล์ robots.txt ผ่านคำสั่ง
$ echo -e “User-Agent: *\nDisallow: /” > robots.txt
4.ต่อไปจะเป็นการาสรา้งพื้นทืี่เก็บข้อมูล chart ของ helm ชื่อ source และทดสอบการสร้าง helm chart (บนเครื่องผู้ใช้งานจะต้องมีการติดตั้ง helm CLI ลง)ผ่านคำสั่ง
$ mkdir source && cd source
5.สร้าง Helm Chart ชื่อ demo ใหม่ผ่านคำสั่ง
$helm create source/demo
6.ใช้คำสั่ง helm lint ในการตรวจสอบรูปแบบ ของ chart ว่าอยู่ในรูปแบบที่ดี
$helm lint sources/*
7.สร้างแพ็คเกจของ Helm chart ผ่านคำสั่ง
$helm package source/demo
8.การทำดัชนีของ Helm chart repository อ้างจากข้อมูลของ Helm
ใน repository จะมีไฟล์พิเศษที่ชื่อ index.yaml ซึ่งมีรายการของแพ็กเกจทั้งหมดที่จัดเตรียมพร้อมด้วย meta data ที่อนุญาตให้เรียกค้นและตรวจสอบแพ็กเกจเหล่านั้น
ดังนั้นต้องมีการสร้างไฟล์index.yaml ผ่านคำสั่ง
$helm repo index --url {ชื่อ repository ที่สร้างสำหรับเก็บ Helm chart ไว้} .
$ cat index.yaml
apiVersion: v1
entries:
demo:
- apiVersion: v2
appVersion: 1.16.0
created: "2023-06-12T11:35:20.297558+07:00"
description: A Helm chart for Kubernetes
digest: f172cc0de7f5e6de24b18d46bc353e1dc582f8a9ea1b5a7b76cf1aaf0d9f2acf
name: demo
type: application
urls:
- https://github.com/iconnext/helm-chart/demo-0.1.0.tgz
version: 0.1.0
generated: "2023-06-12T11:35:20.297041+07:00"
9.push ข้อมูลทั้งหมดขึ้น github
$ git add . && git commit -m "Initial commit" && git push origin master
การกำหนด Helm chart repository เป็น github page
1.ไปยังหน้าของ repository ที่สร้างไว้จากนั้นคลิกที่ แท็บ settings
2.ที่หน้า General เมนูทางซ้ายมือให้เลือกที่ Pages
3.ที่หน้า GitHub Pages ที่ Source เลือกที่ Deploy from a branch และที่ branch เลือก main จากนั้นคลิกที่ปุ่ม Save
ทดสอบการใช้งาน Helm chart
1.เมื่อต้องการนำchart ที่เราสร้างขึ้นมาไปใช้ต้องทำการเพิ่ม repository ทีเราสร้างขึ้นบน เครื่องที่ติดตั้ง Helm Client ผ่านคำสั่ง
$ helm repo add connect https://iconnext.github.io/helm-chart/
2.ตรวจสอบว่ามีการเพิ่ม chart repository ผ่าน Helm Client โดยใช้คำสั่ง
$helm repo list
NAME URL
t3n https://storage.googleapis.com/t3n-helm-charts
truecharts https://charts.truecharts.org/
bitnami https://charts.bitnami.com/bitnami
chatwoot https://chatwoot.github.io/charts
iconnext https://iconnext.github.io/helm-chart/
ตอนนี้เราสามารถสรา้ง Helm Chart เพื่อให้สามารถ deploy Kubernetes Application บนเครื่องไหนก็ได้ผ่าน Github Pages
Posted on June 12, 2023
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.