K3S on Raspberry Pi — Ingress Nginx
เนื่องมาจาก Ingress Controller ที่ถูกติดตั้งมาพร้อมกับ K3S คือ Traefik ทำให้หลายๆ คนไม่ถนัดที่จะใช้งานกัน ในบทความนี้จึงจะเป็นการติดตั้ง Ingress Nginx ใช้งานกันครับ
Since the Ingress Controller installed with K3S is Traefik, which many people are not familiar with, this article will cover installing and using Ingress Nginx.
เริ่มแรกเราต้องทำการยกเลิกการใช้งาน Traefik กันก่อน โดยเราจะทำการแก้ไข ExecStart บน Main Cluster กัน สำหรับคำสั่งที่ใช้แก้ไขคือ
First, we need to disable Traefik. We’ll modify the ExecStart on the Main Cluster. The command to edit this is:
sudo nano /etc/systemd/system/k3s.service
จากนั้นให้มองหาคำสั่ง ExecStart ในไฟล์ ซึ่งอาจจะอยู่ข้างล่างสุดของไฟล์
Next, look for the ExecStart command in the file, which might be at the bottom of the file.
แล้วให้เพิ่มคำสั่งนี้ต่อท้าย ก็จะได้ตามภาพ ด้านล่าง แล้วทำการบันทึกไฟล์และออก
Then add this command at the end, as shown in the image below. Save the file and exit.
--disable=traefik \
หลังจากนั้นให้ทำการสร้างไฟล์ชื่อ traefik.yaml.skip โดยคำสั่งมี ดังนี้
After that, create a file named traefik.yaml.skip
with the following command:
sudo touch /var/lib/rancher/k3s/server/manifests/traefik.yaml.skip
แล้วจากนั้นให้ทำการ restart service K3S ด้วยคำสั่ง
Then, restart the K3S service with the command:
sudo systemctl restart k3s
ให้ทำการตรวจสอบ service K3S ว่าทำงานหรือยัง ด้วยคำสั่ง หาก service ทำงาน ก็จะเป็นดังภาพด้านล่าง
Check if the K3S service is running using the command. If the service is running, it will look like the image below.
sudo systemctl status k3s
แล้วเราก็จะมาทำการติดตั้ง Ingress Nginx กันต่อเลยครับ โดยคำสั่งที่เราจะใช้นั้น จะเป็นการติดตั้งผ่านโปรแกรมชื่อว่า helm สำหรับขั้นตอนการติดตั้ง เราจะใช้การติดตั้งจาก Script ด้วยคำสั่ง
Now, let’s proceed with installing Ingress Nginx. We’ll use the helm program for installation. For the installation steps, we’ll use a script with the following command:
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
ให้กำหนดสิทธิ์ให้สามารถ Execute Script ที่เรา Download ด้วยคำสั่ง
Grant execute permissions to be able to execute the downloaded script using the command:
chmod 700 get_helm.sh
สั่งให้เริ่มติดตั้ง Helm ด้วยคำสั่ง
Initiate the installation of Helm using the command:
./get_helm.sh
ให้ทำการกำหนดสิทธิ์โฟลเดอร์ ~/.kube/config เพื่อให้ helm สามารถเขียนค่า config ได้ โดยใช้คำสั่ง
Set permissions for the ~/.kube/config folder to allow Helm to write config values using the command:
chmod go-r ~/.kube/config && chmod 600 ~/.kube/config
แล้วก็ทำการเช็คสิทธิ์ด้วยคำสั่ง
Then, check the permissions using the command:
ls -l ~/.kube/config
เมื่อเราติดตั้ง helm แล้ว ขั้นตอนต่อไปเราก็จะทำการติดตั้ง Ingress Nginx กันต่อ ด้วยคำสั่ง
After installing Helm, the next step is to install Ingress Nginx using the command:
helm upgrade --install ingress-nginx ingress-nginx \
--repo https://kubernetes.github.io/ingress-nginx \
--namespace ingress-nginx --create-namespace
เมื่อเรานั่งรอติดตั้งจนเสร็จแล้ว เราสามารถใช้คำสั่งนี้ เพื่อเช็คสถานะของ pod ของ Ingress Nginx โดยที่เมื่อ Pod ขึ้นสถานะ Running ก็จะสามารถใช้งานได้แล้วครับ
After waiting for the installation to complete, you can use this command to check the status of the Ingress Nginx pod. Once the pod’s status is ‘Running’, it will be ready for use.
เมื่อทำการตรวจสอบด้วยคำสั่งแสดง Namespace ก็จะมี Namespace ของ Ingress Nginx ขึ้นมา ดังภาพ
When you check with the command to display the Namespace, you will see the Namespace for Ingress Nginx as shown in the image.
kubectl get ns
และเมื่อเราใช้คำสั่งสำหรับดึงข้อมูล Pods และ Service ขึ้นมา ก็จะมีรายการ Pod และ Service ขึ้นมา ดังภาพ
And when you use the command to fetch Pod and Service information, you will see a list of Pods and Services as shown in the image.
kubectl get pods,svc --namespace=ingress-nginx
Part 1 — Raspberry PI Setup
Part 2 — Static IP Setup
Part 3 — Main Cluster Setup
Part 4 — Node Cluster
Part 5 — Ingress Nginx
Part 6 — Remote Access
Part 7 — Portainer