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 git
Create the docker group.
sudo groupadd docker
Add your user to the docker group.
$ sudo usermod -aG docker $USER
Login 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.0
kubectl apply -f common/ns-and-sa.yaml
kubectl apply -f rbac/rbac.yaml
kubectl apply -f common/default-server-secret.yaml
kubectl apply -f common/nginx-config.yaml
kubectl apply -f common/ingress-class.yaml
kubectl apply -f daemon-set/nginx-ingress.yaml
kubectl get pods --namespace=nginx-ingress
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.
curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh" | sudo bash
sudo yum install gitlab-runner
Mendaftarkan runner ke gitlab kita:
sudo gitlab-runner register
Berikut 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-runner
Bisa 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 denied
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
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 client
Solusi:
rubah file berikut, atau jika belum ada file tersebut, buat filenya:
vi /etc/docker/daemon.json
Tambahkan 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 restart
Error:
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 forbidden
Solusinya 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/dockerconfigjson
Pastikan 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 forbidden
Slow
Aplikasi