Kali ini kita akan belajar Integrasi ke K3s, jadi berikut yang akan kita bahas
Berikut Topology yang di harapkan
Macbook / Laptop -> Gitlab -> Server gitlab runner -> Ks3 ( untuk deploy)
A.Integrasi laptop dengan Gitlab konek via ssh
Sekarang tinggal memastikan local project kamu benar-benar sudah menjadi Git repository dan ada commit yang bisa di-push.
Urutan lengkapnya seperti ini:
cd existing_repo
1. Inisialisasi Git (kalau belum)
git init
2. Tambahkan file project
git add .
3. Commit pertama
git commit -m "first commit"
Kalau muncul error identity unknown:
git config --global user.name "Nama Kamu"
git config --global user.email "[email protected]"
Lalu commit ulang.
4. Tambahkan remote GitLab
git remote add origin https://gitlab.com/project7112620/belajar-gitlab.git
Kalau sebelumnya sudah pernah add origin dan muncul:
remote origin already exists
gunakan:
git remote remove origin
lalu add lagi.
5. Rename branch ke main
git branch -M main
6. Push ke GitLab
git push -uf origin main
Kalau Muncul Login Password Error
GitLab sekarang biasanya tidak menerima password biasa untuk HTTPS.
Solusi terbaik:
- gunakan Personal Access Token
ATAU - gunakan SSH key (lebih recommended)
Cara Pakai SSH (Recommended)
Generate SSH key
ssh-keygen -t rsa -b 4096 -C "[email protected]"
Tekan ENTER terus.
Ambil public key
cat ~/.ssh/id_rsa.pub
Copy hasilnya.
Tambahkan ke GitLab
Klik:
- Add new key
- paste public key
- save
Ganti remote HTTPS jadi SSH
Cek dulu:
git remote -v
Ganti:
git remote set-url origin [email protected]:project7112620/belajar-gitlab.git
Test SSH
ssh -T [email protected]
Kalau berhasil muncul:
Welcome to GitLab ...
Push lagi
git push -uf origin main
Setelah Berhasil
Cek project GitLab kamu:
Kalau file sudah muncul berarti sukses 🎉
B. Install Gitlab Runner
Misalkan saya installkan gitlab runner di master K3s
Agar pipeline jalan:
- install GitLab Runner
- runner harus punya Docker
install docker
sudo apt update
sudo apt install -y ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo $VERSION_CODENAME) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
install gitlab runner
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash
sudo apt install gitlab-runner -y
Register Runner
Di GitLab:
- Settings
- CI/CD
- Runners
- Create project runner
- Copy token


misal namanya -> main-runner
Lalu:
sudo gitlab-runner register
Enter the GitLab instance URL:
https://gitlab.com/
Enter the registration token:
xxxxxx
Enter a description for the runner:
k3s-runner
Enter tags for the runner:
k3s,docker
Enter optional maintenance note:
(skip)
Enter an executor:
docker
Enter the default Docker image:
docker:latest
Setelah Berhasil
Cek runner:
sudo gitlab-runner status
C. Coba Build dari Gitlab ke K3s
Ambil code dari -> https://github.com/kyuby13/belajar-gitlab
yang wajib harus ada file .gitlab-ci.yml -> jangan lupa tags nya harus sama nama nya dengan nama runner di gitlab yang di langkah bagian B misalkan namanya main-runner
deploy:
image: alpine:latest
tags:
- main-runner
stage: deploy
before_script:
- apk add --no-cache curl
- curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
- chmod +x kubectl
- mv kubectl /usr/local/bin/
variables:
KUBECONFIG: /etc/rancher/k3s/k3s.yaml
script:
- kubectl get nodes
- kubectl apply -f deployment.yaml
- kubectl apply -f service.yaml
kurang lebih nanti isi file nya seperti berikut :

saya anggap nanti isi project gitlab anda sudah sama dengan gambar tersebut.
D. Setting K3s dan Gitlab Runner
setting k3s ( ubah IP dari localhost ke IP K3s)
nano /etc/rancher/k3s/k3s.yaml
ubah bagian server: https://127.0.0.1:6443
menjadi server: https://192.168.10.15:6443
Setting Gitlab Runner
nano /etc/gitlab-runner/config.toml
concurrent = 1
check_interval = 0
connection_max_age = "15m0s"
shutdown_timeout = 0
[session_server]
session_timeout = 1800
[[runners]]
name = "master-runner"
url = "https://gitlab.com"
id = 53125612
token = "glrt-T2W3hsya775bXIB7_TdsVmM6MQpvOjEKcDoxY3c0NXIKdDozCnU6OG94MnAc.01.1o0ngqaug"
token_obtained_at = 2026-05-12T10:07:25Z
token_expires_at = 0001-01-01T00:00:00Z
executor = "docker"
tag_list = ["k3s"]
[runners.cache]
MaxUploadedArchiveSize = 0
[runners.cache.s3]
AssumeRoleMaxConcurrency = 0
[runners.cache.gcs]
[runners.cache.azure]
[runners.docker]
tls_verify = false
image = "docker:latest"
privileged = true
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/cache", "/etc/rancher/k3s:/etc/rancher/k3s"]
volume_keep = false
shm_size = 0
network_mtu = 0
Note: tambahkan line tag_list = [“k3s”] , ubah line privileged = true dan volumes = [“/cache”, “/etc/rancher/k3s:/etc/rancher/k3s”]
sudo systemctl restart gitlab-runner
sudo gitlab-runner verify
sudo systemctl status gitlab-runner
kubectl get node
kubectl get pods
kubectl get svc
E. Coba trigger untuk Build
Dari macbook/lapotp coba trigger
git add .
git commit -m "first k3s deployment"
git push
atau cara triger pipline nya saja
git commit --allow-empty -m "rerun pipeline"
git push
cek di gitlab, jika sukses berarti berhasil

cek pods di K3s , jika berhasil akan muncul pod baru
root@kube1:~# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-app-6489b68c68-44f5b 1/1 Running 0 3h2m
coba akses via web -> http://192.168.10.15:30080

Workflow kamu sekarang:
MacBook
↓
git push
↓
GitLab Pipeline
↓
Runner di kube1
↓
kubectl apply
↓
Deploy otomatis ke K3s
Itu sudah real DevOps pipeline.
Yang Sudah Berhasil
✅ GitLab Runner lokal
✅ Runner connect ke K3s
✅ Pipeline otomatis
✅ Auto deployment Kubernetes
✅ Service NodePort
✅ kubectl dari pipeline
