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

Cluster install — update on 2024–08–04

--

--