DEV Community

Cover image for การสรา้ง Helm Repository โดยใช้ GitHub Page
iconnext
iconnext

Posted on

การสรา้ง Helm Repository โดยใช้ GitHub Page

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

Image description
3.ในหน้า Create a new repositoryให้กำหนดชื่อ repository ที่เก็บ helm chart (กำหนดเป็น helm-chart) กำหนดการเข้าถึงเป็นแบบ public จากนั้นคลิกที่ปุ่ม Create repository

Image description

การตั้งค่าที่ฝั่งผู้ใช้งาน

หลังจากสร้าง repository บน GitHub แล้วมันยังเป็น repository ว่างๆ อยู่ยังไม่สามารถเผยแพร่บน github page ได้ขั้นตอนนี้จะเป็นการ

1.clone repository ผ่านคำสั่ง

$git clone {file .git ที่กำหนด repository ที่สรา้งขึ้น}
Enter fullscreen mode Exit fullscreen mode

2.เข้าไปใน folder ที่เก็บ code

$cd helm-chart
Enter fullscreen mode Exit fullscreen mode

3.สร้างไฟล์ robots.txt เพื่อหลีกเลี่ยง bot ในการเก็บข้อมูลภายใน repository โดยกำหนดข้อมูลในไฟล์ robots.txt ผ่านคำสั่ง

$ echo -e “User-Agent: *\nDisallow: /” > robots.txt
Enter fullscreen mode Exit fullscreen mode

4.ต่อไปจะเป็นการาสรา้งพื้นทืี่เก็บข้อมูล chart ของ helm ชื่อ source และทดสอบการสร้าง helm chart (บนเครื่องผู้ใช้งานจะต้องมีการติดตั้ง helm CLI ลง)ผ่านคำสั่ง

$ mkdir source && cd source
Enter fullscreen mode Exit fullscreen mode

5.สร้าง Helm Chart ชื่อ demo ใหม่ผ่านคำสั่ง

$helm create source/demo
Enter fullscreen mode Exit fullscreen mode

6.ใช้คำสั่ง helm lint ในการตรวจสอบรูปแบบ ของ chart ว่าอยู่ในรูปแบบที่ดี

$helm lint sources/*
Enter fullscreen mode Exit fullscreen mode

7.สร้างแพ็คเกจของ Helm chart ผ่านคำสั่ง

$helm package source/demo
Enter fullscreen mode Exit fullscreen mode

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"

Enter fullscreen mode Exit fullscreen mode

9.push ข้อมูลทั้งหมดขึ้น github

$ git add . && git commit -m "Initial commit" && git push origin master
Enter fullscreen mode Exit fullscreen mode

การกำหนด Helm chart repository เป็น github page

1.ไปยังหน้าของ repository ที่สร้างไว้จากนั้นคลิกที่ แท็บ settings

Image description

2.ที่หน้า General เมนูทางซ้ายมือให้เลือกที่ Pages

Image description

3.ที่หน้า GitHub Pages ที่ Source เลือกที่ Deploy from a branch และที่ branch เลือก main จากนั้นคลิกที่ปุ่ม Save

Image description

ทดสอบการใช้งาน  Helm chart

1.เมื่อต้องการนำchart ที่เราสร้างขึ้นมาไปใช้ต้องทำการเพิ่ม repository ทีเราสร้างขึ้นบน เครื่องที่ติดตั้ง Helm Client ผ่านคำสั่ง

$ helm repo add connect https://iconnext.github.io/helm-chart/

Enter fullscreen mode Exit fullscreen mode

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/  
Enter fullscreen mode Exit fullscreen mode

ตอนนี้เราสามารถสรา้ง Helm Chart เพื่อให้สามารถ deploy Kubernetes Application บนเครื่องไหนก็ได้ผ่าน  Github Pages

Top comments (0)