
Tentang BlabakHubungi Blabak Login
Kategori
ActionAnother actionSomething else hereSeparated link
Submit
- Yusuf
- 133
Membuat Klaster Kubernetes dan CICD Gitlab
Oleh Yusuf - 19 Agustus 2021
Presetup server
Pada artikel berikut kita akan membahas bagaimana untuk men-setup kubernetes yang telah kita install agar dapat terhubung ke CICD pada Gitlab, sehingga proses Integrasi dan Deployment menjadi otomatis.
sudo yum -y update
sudo yum install git1. Install Kubernetes
Post install kubernetes
Create the docker group.
sudo groupadd dockerAdd your user to the docker group.
$ sudo usermod -aG docker $USERLogin Logout and Check
docker info
2. Install nginx ingress
Nginx ingress digunakan untuk mengarahkan web ke pods:
https://docs.nginx.com/nginx-ingress-controller/installation/installation-with-manifests/
git clone https://github.com/nginxinc/kubernetes-ingress/
cd kubernetes-ingress/deployments
git checkout v1.12.0Configure RBAC
kubectl apply -f common/ns-and-sa.yaml
kubectl apply -f rbac/rbac.yamlCreate common resources
kubectl apply -f common/default-server-secret.yaml
kubectl apply -f common/nginx-config.yaml
kubectl apply -f common/ingress-class.yamlDeploy ingress
kubectl apply -f daemon-set/nginx-ingress.yamlCheck ingress controller is running
kubectl get pods --namespace=nginx-ingress3. Integration dengan gitlab
Disini kita akan menambahkan Gitlab Runner agar kluster kubernetes dapat terhubung ke Gitlab. Runner ini memungkinkan kita untuk menggunakan fitur CI/CD yang ada di Gitlab menggunakan kubernetes yang telah kita buat.
Install Gitlab Runner
curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh" | sudo bash
sudo yum install gitlab-runnerRegister Runner
Mendaftarkan runner ke gitlab kita:
sudo gitlab-runner registerBerikut contoh hasil dari register gitlab runner:
Enter the GitLab instance URL (for example, https://gitlab.com/):
http://git.pdsb.id/
Enter the registration token:
C_dEF4YbxsApQGGv4BHX
Enter a description for the runner:
[master-node]: Kubernetes Cluster Development
Enter tags for the runner (comma-separated):
kubedev01
Registering runner... succeeded runner=C_dEF4Yb
Enter an executor: shell, ssh, virtualbox, kubernetes, docker, parallels, docker+machine, docker-ssh+machine, custom, docker-ssh:
shell
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!Enable gitlab-runner to use docker command
Mendaftarkan gitlab-runner agar dapat menggunakan docker:
sudo usermod -aG docker gitlab-runnerBisa jadi Anda akan menemui error berikut apabila tidak menjalankan command diatas:
ERROR: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.24/info: dial unix /var/run/docker.sock: connect: permission deniedError
The connection to the server localhost:8080 was refused - did you specify the right host or port?sudo mkdir -p /home/gitlab-runner/.kube
for kubernetes
sudo cp -i /etc/kubernetes/admin.conf /home/gitlab-runner/.kube/config
for minikube:
minikube ssh
cat /etc/kubernetes/admin.conf #copy isi file
exit
sudo vi /home/gitlab-runner/.kube/config #paste content tadi
Both
sudo chown gitlab-runner:gitlab-runner /home/gitlab-runner/.kube/config
Custom gitlab
Jika gitlab Anda tidak menggunakan SSL, kemungkinan Anda menemui error berikut:
Error response from daemon: Get https://registry.blabak.com:5005/v2/: http: server gave HTTP response to HTTPS clientSolusi:
rubah file berikut, atau jika belum ada file tersebut, buat filenya:
vi /etc/docker/daemon.jsonTambahkan line berikut { "insecure-registries":["host:port"] }, contoh :
{ "insecure-registries":["registry.blabak.com:5005"] }untuk host diisikan host tempat docker registry, sedangkan port juga menggunakan port docker registry. Karena disini kita menggunakan gitlab, untuk defaultnya adalah registry.gitlab.com dengan port 5005 default gitlab kita.
Lalu restart docker daemon dengan command berikut:
$ sudo service docker restartError:
denied: requested access to the resource is denied
Try push on server, cek login, cek push path
On Master node
Setelah dari CICD pipeline tidak ada error, masih ada kemungkinan error pada saat dari cluster kubernetes akan melakukan pull dari image yang kita gunakan.
Berikut adalah contoh error dimana cluster kubernetes kita tidak diijinkan untuk melakukan pull image yang ada di registry gitlab:
Warning Failed 19s (x2 over 33s) kubelet, worker-node-1 Failed to pull image "registry.gitlab.com/blabak/blabak:stage": rpc error: code = Unknown desc = Error response from daemon: Head https://registry.gitlab.com/v2/blabak/blabak/manifests/stage: denied: access forbiddenSolusinya adalah dengan cara menambahkan secret key yang digunakan kubernetes untuk login ke registry yang kita gunakan
- masuk ke server dan login menggunakan user password gitlab kita
docker login registry.pdsb.id:5005
Username: simin
Password:
WARNING! Your password will be stored unencrypted in /home/simin/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded- Dari pesan diatas didapatkan credential yang disimpan di
/home/simin/.docker/config.json, selanjutnya menggunakan config.json tersebut, kita buat secret di kubernetes dengan command berikut:
sudo kubectl create secret generic regcred --from-file=.dockerconfigjson=/home/simin/.docker/config.json --type=kubernetes.io/dockerconfigjsonPastikan path dockerconfigjson yang kita gunakan sesuai dengan yang dihasilkan pada command sebelumnya.
Install HAProxy
Selanjutnya yang kita butuhkan adalah HAProxy, yang berfungsi untuk
sudo service haproxy start
NFS
sudo systemctl enable --now rpcbind
sudo systemctl enable --now nfs-server
sudo systemctl enable --now nfs-lock
sudo systemctl enable --now nfs-idmap
Error
Failed to pull image "registry.gitlab.com/blabak/blabak:stage": rpc error: code = Unknown desc = Error response from daemon: Head https://registry.gitlab.com/v2/blabak/blabak/manifests/stage: denied: access forbiddenSlow

Aplikasi
