

Tentang BlabakHubungi Blabak Login
Kategori
ActionAnother actionSomething else hereSeparated link
Submit
Oleh Yusuf - 19 Agustus 2021
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 gitCreate the docker group.
sudo groupadd dockerAdd your user to the docker group.
$ sudo usermod -aG docker $USERLogin Logout and Check
docker info
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.0kubectl apply -f common/ns-and-sa.yaml
kubectl apply -f rbac/rbac.yamlkubectl apply -f common/default-server-secret.yaml
kubectl apply -f common/nginx-config.yaml
kubectl apply -f common/ingress-class.yamlkubectl apply -f daemon-set/nginx-ingress.yamlkubectl get pods --namespace=nginx-ingressDisini 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.
curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh" | sudo bash
sudo yum install gitlab-runnerMendaftarkan 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!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 deniedThe 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
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
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
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/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.
Selanjutnya yang kita butuhkan adalah HAProxy, yang berfungsi untuk
sudo service haproxy start
sudo systemctl enable --now rpcbind
sudo systemctl enable --now nfs-server
sudo systemctl enable --now nfs-lock
sudo systemctl enable --now nfs-idmap
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