GNU/Linux >> Belajar Linux >  >> Panels >> Docker

Cara Mengatur Registri Docker Pribadi di Kubernetes (k8s)

Selalu disarankan untuk memiliki registri atau repositori buruh pelabuhan pribadi di kluster Kubernetes Anda. Registri pribadi Docker memungkinkan pengembang untuk mendorong dan menarik gambar wadah pribadi mereka. Setelah wadah aplikasi didorong ke registri pribadi, pengembang dapat menggunakan jalur registri pribadi mereka saat membuat dan menerapkan file yaml mereka.

Pada artikel ini, kita akan mempelajari bagaimana kita dapat men-deploy private docker registry sebagai deployment di atas cluster Kubernetes. Saya berasumsi bahwa cluster Kubernetes sudah aktif dan berjalan.

Detail lab Kubernetes untuk menyiapkan registri buruh pelabuhan pribadi

  • k8s-master – 192.168.1.40 – CentOS 7
  • k8s-worker-1 – 192.168.1.41 – CentOS 7
  • k8s-worker-2 – 192.168.1.42  – CentOS 7
  • pengguna kaadmin dengan hak sudo
  • Bagian NFS ‘/opt/certs’ &‘/opt/registry’

Catatan:  Dalam kasus saya, saya telah menyiapkan server nfs pada master node dan mengekspor /opt/certs dan /opt/registry sebagai nfs share.

Sebelum memulai penerapan registri pribadi, pastikan pembagian nfs ini dipasang di setiap node pekerja. Jalankan perintah berikut pada setiap node pekerja.

$ sudo mkdir /opt/certs /opt/registry$ sudo mount 192.168.1.40:/opt/certs /opt/certs$ sudo mount 192.168.1.40:/opt/registry /opt/registry

Untuk pemasangan permanen, tambahkan entri nfs di file /etc/fstab.

Sebagai pengganti pemasangan bagian nfs ini, kami juga dapat membuat volume persisten berbasis nfs dan kemudian kami dapat menggunakan volume persisten ini dalam file yaml.

Mari selami langkah-langkah instalasi dan konfigurasi registry docker pribadi di Kubernetes.

Langkah 1) Buat sertifikat yang ditandatangani sendiri untuk registri pribadi

Login ke control plane atau master node Anda dan gunakan perintah openssl untuk menghasilkan sertifikat yang ditandatangani sendiri untuk repositori buruh pelabuhan pribadi.

$ cd /opt $ sudo openssl req -newkey rsa:4096 -nodes -sha256 -keyout \ ./certs/registry.key -x509 -days 365 -out ./certs/registry.crt

Setelah file kunci dan sertifikat dibuat, gunakan perintah ls untuk memverifikasinya,

[[email protected] opt]$ ls -l certs/total 8-rw-r--r--. 1 root root 2114 26 Sep 03:26 registry.crt-rw-r--r--. 1 root root 3272 26 Sep 03:26 registry.key[[email protected] opt]$

Langkah 2) Terapkan registri pribadi sebagai penerapan melalui file yaml

Pada node master Anda, buat file private-registry.yaml dengan konten berikut

[[email protected] ~]$ mkdir docker-repo[[email protected] ~]$ cd docker-repo/[[email protected] docker-repo]$ vi private-registry.yamlapiVersion:apps/v1kind:Deploymentmetadata :  name:private-repository-k8s  labels:    app:private-repository-k8sspec:  replicas:1  selector:    matchLabels:      app:private-repository-k8s  template:    metadata:      labels:       app:      spec - private-repository-k8s Nama:Certs-Vol HostPath:Path:/Opt /Certs Jenis:Direktori-Nama:Registry-Vol HostPath:Path:/Opt /Registry Jenis:Direktori Kontainer:-Gambar:Registry:2 Nama:Private-Repository-K8S ImagePullpolicy:Ifnotpresent env:- Nama:registry_http_tls_certificate nilai:"/certs/registry.crt" - Nama:registry_http_tls_key nilai:"/certs/registry.key" port:- containerport:5000 volumeMount:- - name:certs-vol            mountPath:/certs         - name:registry-vol           mountPath:/var/lib/registry

simpan dan tutup file yaml

Jalankan perintah kubectl berikut menyebarkan registri pribadi menggunakan file yaml yang dibuat di atas,

[[email protected] docker-repo]$ kubectl create -f private-registry.yamldeployment.apps/private-repository-k8s Created[[email protected] docker-repo]$

Jalankan perintah kubectl di bawah ini untuk memverifikasi status penyebaran registri dan podnya.

[[email protected] ~]$ kubectl get deployments private-repository-k8sNAME                  READY   UP-TO-DATE   AVAILABLE  AGEprivate-repository-k8s                    ~]$ kubectl dapatkan pod | grep -i private-repoprivate-repository-k8s-85cf76b9d7-qsjxq   1/1     Berjalan   0         5m14s[[email protected] ~]$

Sempurna, output di atas mengonfirmasi bahwa registri telah berhasil disebarkan, Sekarang salin file sertifikat registri ke node pekerja dan node master di bawah folder "/etc/pki/ca-trust/source/anchors". Jalankan perintah berikut pada node master dan setiap node pekerja

$ sudo cp /opt/certs/registry.crt /etc/pki/ca-trust/source/anchors/$ sudo update-ca-trust$ sudo systemctl restart docker

Langkah 3) Buka penerapan registri sebagai jenis layanan nodeport

Untuk mengekspos penyebaran registri sebagai jenis layanan nodeport, buat file yaml berikut dengan konten di bawahnya,

[[email protected] ~]$ cd docker-repo/[[email protected] docker-repo]$ vi private-registry-svc.yamlapiVersion:v1kind:Servicemetadata:  labels:    app:private-repository-k8s  name:private-repository-k8sspec:  ports:  - port:5000    nodePort:31320    protocol:TCP    targetPort:5000  selector:    app:private-repository-k8s  type:NodePort

simpan dan tutup file.

Sekarang terapkan layanan dengan menjalankan perintah kubectl berikut,

$ kubectl create -f private-registry-svc.yamlservice/private-repository-k8s create$

Jalankan perintah kubectl di bawah ini untuk memverifikasi status layanan,

[[email protected] ~]$ kubectl get svc private-repository-k8sNAME                TYPE     CLUSTER-IP    EXTERNAL-IP PORT(S)       AGEprivate-repository:10.3 k8s[11 Repository k8s. email dilindungi] ~]$

Langkah 4) Uji dan Gunakan registri buruh pelabuhan pribadi di k8s

Untuk menguji private registry, kita akan mendownload image nginx secara lokal dan kemudian akan mengupload image tersebut ke private registry, dari master node jalankan perintah berikut,

$ sudo docker tarik nginx$ sudo docker tag nginx:k8s-master terbaru:31320/nginx:1.17$ sudo docker push k8s-master:31320/nginx:1.17

Output dari perintah di atas akan seperti di bawah ini:

Jalankan perintah buruh pelabuhan di bawah ini untuk memverifikasi apakah nginx diunggah ke repositori pribadi atau tidak.

[[email protected] ~]$ sudo docker image ls | grep -i nginxnginx                  terbaru   7e4d58f0e5f3       2 minggu yang lalu     133MBk8s-master:31320/nginx    1.17     7e4d      133MBk8s-master:31320/nginx    1.17    7e4d[    5ff] 

Sekarang, mari kita terapkan penerapan berbasis nginx dan di file yaml tentukan jalur gambar sebagai registri buruh pelabuhan pribadi kita. Contoh ditunjukkan di bawah ini:

[[email protected] ~]$ vi nginx-test-deployment.yamlapiVersion:apps/v1kind:Deploymentmetadata:  name:nginx-test-deployment  labels:    app:nginxspec:  replicas:3  selector:    matchLabels:      app :    metadata:      labels:        app:nginx    spec:      containers:      - name:nginx-1-17       image:k8s-master:31320/nginx:1.17       port:      > containerPort:80
 Simpan dan Tutup file

Jalankan perintah kubectl berikut,

[[email protected] ~]$ kubectl create -f nginx-test-deployment.yamldeployment.apps/nginx-test-deployment created[[email protected] ~]$ kubectl get deployments  nginx-test-deploymentNAME    -       READY TO-DATE   TERSEDIA   AGEnginx-test-deployment   3/3     3          3          13s[[email protected] ~]$[[email protected] ~]$ kubectl get  pod | grep nginx-test-deploymentnginx-test-deployment-f488694b5-2rvmv     1/1    Menjalankan   0      80snginx-test-deployment-f488694b5-8kb6c    1/1     Running       0      email dilindungi] ~]$

Coba deskripsikan pod apa pun menggunakan perintah 'kubectl explain' dan verifikasi jalur gambar

$ kubectl mendeskripsikan pod nginx-test-deployment-f488694b5-2rvmv

Output dari perintah di atas adalah,

Keluaran di atas mengonfirmasi bahwa jalur gambar wadah adalah registri buruh pelabuhan pribadi kami, jadi itu berarti gambar nginx telah diunduh dari registri pribadi. Itu saja dari artikel ini, saya harap langkah-langkah ini membantu Anda mengatur registri buruh pelabuhan pribadi di cluster Kubernetes Anda. Silakan bagikan umpan balik dan komentar Anda di bagian komentar di bawah.

Baca JugaCara Menyiapkan Cluster Kubernetes di Google Cloud Platform (GCP)

Baca JugaCara Menyiapkan NGINX Ingress Controller di Kubernetes


Docker
  1. Cara Mengatur Registri Docker Pribadi di Rocky Linux 8

  2. Apa itu containerd, Dan Bagaimana Hubungannya dengan Docker dan Kubernetes?

  3. Cara Mengatur Server Web Apache Sederhana di Wadah Docker

  1. Cara Mengatur dan Menggunakan Registri Docker Pribadi

  2. Cara Menginstal Kubernetes di Ubuntu 18.04

  3. Docker vs. Kubernetes

  1. Cara Memasang Cluster Kubernetes (k8s) di RHEL 8

  2. Cara Mengatur Cluster Kubernetes(k8s) di HA dengan Kubeadm

  3. Cara Mengatur Registri Docker Pribadi di Ubuntu 20.04