LKSN2022 – Module C – Local Registry

Soal dapat dilihat di https://itnsa.id/.

Ketentuan Soal

  • Access srv1.artemis.local to do tasks in this section
  • Container Name : proteus-registry
  • Use image registry:2.7.0 from docker hub
  • Volume mounts : /mnt/registry to /var/lib/registry
  • Expose container port 1234
  • Eanble https by using local self-signed CA
    • Generate CA using openssl
    • Common name : srv1.artemis.local
    • Country : ID
    • Organizational : ITNSA-CA
  • Enable basic authentication with following credentials :
    • Username: devops
    • Password: lksn2022
  • Make sure it’s accessible from srv2.artemis.local server

Pembahasan

Pembahasannya akan saya lakukan dengan beberapa urutan sebagai berikut:

  1. Generate CA
  2. Import CA
  3. Enable basic authentication
  4. Create container
  5. Testing

Persiapan

mkdir -p local-registry/{certs,auth}
cd local-registry/

Generate CA

  • Eanble https by using local self-signed CA
    • Generate CA using openssl
    • Common name : srv1.artemis.local
    • Country : ID
    • Organizational : ITNSA-CA

Generate self-signed certificate dengan openssl. Untuk hal ini bebas caranya seperti apa, saya menggunakan cara dibawah ini.

openssl genrsa -out certs/server.key
openssl req -new -x509 -subj "/C=ID/O=ITNSA-CA/CN=srv1.artemis.local" -addext "subjectAltName = DNS:srv1.artemis.local" -key certs/server.key -out certs/server.crt

Country, Organization, dan Common Name alternatif lainnya bisa diubah di /etc/ssl/openssl.cnf

Import CA

Selanjutnya import self-signed certificate yang sudah dibuat. Importnya bisa dengan 2 cara.

mkdir -p /etc/docker/certs.d/srv1.artemis.local:1234
cp certs/server.crt /etc/docker/certs.d/srv1.artemis.local\:1234/
systemctl restart docker

atau

cp local-registry/certs/server.crt /usr/local/share/ca-certificates/
update-ca-certificates

Enable Basic Authentication

  • Enable basic authentication with following credentials :
    • Username: devops
    • Password: lksn2022

Kemudian bikin user untuk local registry memerlukan paket apache2-utils untuk generate passwordnya dengan menggunakan command htpasswd.

sudo apt install apache2-utils -y
htpasswd -Bbc auth/htpasswd devops lksn2022

Create Container

  • Container Name : proteus-registry
  • Use image registry:2.7.0 from docker hub
  • Volume mounts : /mnt/registry to /var/lib/registry
  • Expose container port 1234

Tinggal running containernya deh.

docker run -d -p 1234:5000 --restart=always --name proteus-registry \
-v /mnt/registry:/var/lib/registry \
-v "$(pwd)"/auth:/auth \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
-v "$(pwd)"/certs:/certs \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/server.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/server.key \
registry:2.7.0

Catatan untuk $(pwd) bisa disesuaikan dengan lokasi shell yang aktif atau bisa diubah dengan /root/local-registry/auth dan /root/local-registry/certs.

Command diatas sepertinya tidak perlu saya jelaskan karena bisa membacanya sendiri di https://docs.docker.com/registry/deploying/.

Testing

Pada srv1 bisa dicoba dengan login.

docker login srv1.artemis.local:1234
  • Make sure it’s accessible from srv2.artemis.local server

Poin terakhir dapat diselesaikan dengan copy CA dari srv1 ke srv2 lalu import CA di srv2 kemudian srv2 bisa login dan menggunakan secure local registry.

References

About Rizal Fadil

Leave a Reply

Your email address will not be published. Required fields are marked *