K3S on Raspberry Pi — Remote Access

ในบทความนี้จะเป็นการนำเอา Kube Context Config ที่เราได้ทำการ Export เอาไว้ในตอนที่เราทำการ setup cluster นั้น เราก็จะนำเอา context มารวมไว้กับไฟล์ Context Config ในเครื่องของเรากันครับ

In this article, we will discuss how to incorporate the Kube Context Config that we exported during the cluster setup process. We will merge the context into the Context Config file on our machine.

เริ่มแรกให้เราทำการ download ไฟล์ context มาไว้ในเครื่องเรากันก่อน ด้วยคำสั่งนี้

First, let’s download the context file to our machine using this command.

scp <user>@<ip>:<path to download> <path to store file>

จากนั้นให้เราทำการเปิดไฟล์ที่เราดาวน์โหลดขึ้นมา เพื่อทำการแก้ไขค่าให้ถูกต้อง โดยให้เราทำการแก้ไขค่าจากคำว่า default เป็น raspberry-pi ดังภาพ

Next, open the file we downloaded to make the necessary modifications. Change the value from “default” to “raspberry-pi” as shown in the image.

จากนั้นให้แก้ไข IP ของ Server จาก https://127.0.0.1:6443 เป็นหมายเลข IP ของ Raspberry Pi ของเรา อย่างเช่นกำหนดไว้เป็น 192.168.1.119 ก็ให้เปลี่ยนเป็น https://192.168.1.119:6443

Then, update the server’s IP address from https://127.0.0.1:6443 to the IP address of your Raspberry Pi. For instance, if the IP address is set to 192.168.1.119, change it to https://192.168.1.119:6443.

สำหรับเครื่องใครที่ไม่ได้มี config ของ kubernetes ในเครื่องให้ทำการเก็บไฟล์นี้เอาไว้ที่ c:\users\<user>\.kube โดยให้ตั้งชื่อว่า config ครับ แต่ถ้าหากใครที่มี config เดิมอยู่แล้ว ให้ทำขั้นตอนต่อไปได้เลยครับ

For those who don’t have a Kubernetes config on their machine, save this file at c:\users\<user>\.kube and name it config. If you already have an existing config, you can proceed with the next steps.

เมื่อแก้ไขค่าเสร็จแล้ว เราก็จะทำการเปลี่ยนชื่อไฟล์เป็น raspberry-pi.yaml แล้วจากนั้นจึงย้ายไฟล์ไปไว้ตำแหน่งเดียวกับไฟล์ config ในเครื่องคอมเรา ซึ่งก็จะอยู่ที่ตำแหน่ง c:\users\<user>\.kube ซึ่งก็จะมีไฟล์ต่างๆ ดังนี้ (ในขั้นตอนนี้อย่าลืม backup ไฟล์ config เอาไว้ด้วยนะครับ)

After making the modifications, rename the file to raspberry-pi.yaml. Then, move the file to the same directory as the config file on your computer, which is located at c:\users\<user>\.kube. At this point, you should see various files in this directory. (Don’t forget to backup the existing config file before proceeding.)

หลังจากนั้นให้เปลี่ยน cli จาก powershell เป็น linux bash ด้วยคำสั่งนี้

After that, switch the CLI from PowerShell to Linux Bash using this command:

bash

แล้วจากนั้นให้ใช้คำสั่งนี้ เพื่อทำการ merge config ทั้ง 2 ไฟล์เข้าด้วยกัน

Then, use the following command to merge the two config files:

KUBECONFIG=<Original Kube Config path>:<New Kube Config path> kubectl config view --flatten > merge-config.yaml 
KUBECONFIG=./config:./raspberry-pi.yaml kubectl config view --flatten > merge-config.yaml

หลังจากนั้นจะได้ไฟล์ชื่อ merge-config.yaml ขึ้นมา ซึ่งเมื่อเราทำการเปิดไฟล์นี้ขึ้นมา ก็จะเจอกับ config ของเดิมที่อยู่ในเครื่องของเรา และ config ของ Raspberry Pi ที่เราทำการเพิ่มเข้ามาใหม่ครับ

Once you execute those commands, you’ll have a file named merged-config.yaml. When you open this file, you'll find both the original config from your machine and the new config for the Raspberry Pi that you added. This merged file contains configurations from both sources.

จากนั้นให้ทำการนำเอาไฟล์ merge-config.yaml ที่เราได้มาใหม่ ไปทับไฟล์ config เดิมของเราก็จะได้ kube context config ใหม่ที่พร้อมใช้งานได้แล้วครับ

Then, replace your original config file with the newly created merged-config.yaml. This will give you a new Kubernetes context config that is ready to use.

mv merge-config.yaml config

ถ้าเกิดว่าใครลง extension ชื่อ Kubernetes ใน VS code ก็จะมองเห็น context ที่เราพึ่งเพิ่มไปได้แล้วครับ

If someone has installed the Kubernetes extension in VS Code, they will be able to see the context you just added. This extension allows users to interact with Kubernetes clusters directly from within VS Code, and it detects available contexts to provide a seamless experience.

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

--

--