Thursday, June 11, 2026
DevOps GitLab K3s

Belajar GitLab Part 2-Integrasi K3s

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

      GitLab SSH Keys

      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:

      GitLab Project Repository

      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


      Similar Posts