Im ersten Teil haben wir unsere Ubuntu VW erstellt und JFrog Container Registry installiert. In zweiten Teil erstellten wir einen Reverse Proxy und richteten Let’s Encrypt ein. Nun werden wir unsere private Docker Container Registry einrichten.
Index
Private Docker Container Registry einrichten im JFrog Container Registry. Die JFrog Container Registry ist ein Repository-Manager, der Docker- und Helm-Registrierungen und generische Repositorys unterstützt, so dass Sie Ihre Container-Images erstellen, bereitstellen und verwalten können.
JFrog Container Registry kommt mit einer einfach zu bedienenden UI, mit einer erweiterten Ansicht und Suchfunktionen für Images. Eine leistungsstarke REST-API kann verwendet werden, um Images zu pushen, zu ziehen und einfach zu verwalten.
JFrog Container Registry ist als selbst gehostete (Freemium) oder SaaS-Lösung verfügbar und unterstützt private und öffentliche Docker-Images, Helm Charts und generische Repositorys. Der interne Berechtigungsmechanismus hilft DevOps-Teams bei der Entscheidung, wer auf was zugreifen darf, mit einer feinkörnigen Zugriffskontrolle.
Voraussetzungen
– Ubuntu VM mit SSH Zugriff (Teil1)
– JFrog Container Registry installiert (Teil 1)
– NGINX (Teil 2)
Überblick
Die JFrog Container Registry unterstützt bei der Arbeit mit Docker drei Arten von Repositorys.
Lokale Repositories sind ein Ort für Ihre internen Docker-Images. Durch die Sicherheitsfunktionen von Artifactory sind dies sichere private Docker-Registrierungen.
Remote Repositories werden verwendet, um entfernte Docker-Ressourcen wie den Docker Hub einzubinden.
Virtuelle Repositories können mehrere Docker-Registrierungen zusammenfassen und so einen einzigen Endpunkt ermöglichen, den Sie sowohl für das Verschieben als auch für das Ziehen von Docker-Images verwenden können. Auf diese Weise kann der Administrator die verschiedenen Docker-Registrierungen ohne Wissen seiner Benutzer verwalten und weiterhin mit demselben Endpunkt arbeiten.
Private Docker Container Registry einrichten
Docker Settings
Als Erstes melden wir uns an unserer Container Registry mit unseren Anmeldedaten an und nehmen ein paar Einstellungen unter Services -> JFrog Container Registry -> HTTP Settings vor.
Hier wählen wir als Docker Access Method Repository Path aus. Bei den Reverse Proxy Settings wählen wir unseren NGINX Webserver aus, den wir im zweiten Teil installiert haben und setzen die folgenden Werte:
Internal Hostname: localhost
Public Server Name: jfrog.domain-name.de
HTTP Port: 80
HTTPS Port: 443
SSL Key Path: /etc/letsencrypt/live/jfrog.domain-name.de/privkey.pem
SSL Certificate Path: /etc/letsencrypt/live/jfrog.domain-name.de/cert.pem
NGINX Settings
Der zweite Teil der Einrichtung von unserer privaten Docker Container ist die Einrichtung von NGINX. Unsere erstellte Proxy Konfiguration können wir uns nach dem Speichern herunterladen oder mit View anschauen und kopieren. Anschließend werden wir die Konfiguration etwas bearbeiten und neu verlinken.
Im ersten Schritt legen wir uns eine neue Konfiguration an:
1 |
sudo nano /etc/nginx/sites-available/artifactory-nginx.conf |
Anschließend kopieren wir den folgenden Inhalt hinein, nachdem wir unsere eigenen Werte eingetragen haben.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
server { listen 443 ssl; listen 80 ; server_name jfrog.domain-name.de; if ($http_x_forwarded_proto = '') { set $http_x_forwarded_proto $scheme; } rewrite ^/$ /ui/ redirect; rewrite ^/ui$ /ui/ redirect; chunked_transfer_encoding on; client_max_body_size 0; location / { proxy_read_timeout 2400s; proxy_pass_header Server; proxy_cookie_path ~<em>^/.</em> /; proxy_buffer_size 128k; proxy_buffers 40 128k; proxy_busy_buffers_size 128k; proxy_pass http://localhost:8082; proxy_set_header X-JFrog-Override-Base-Url $http_x_forwarded_proto://$host:$server_port; proxy_set_header X-Forwarded-Port $server_port; proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto; proxy_set_header Host $http_host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; location ~ ^/artifactory/ { proxy_pass http://localhost:8081; } } ssl_certificate /etc/letsencrypt/live/jfrog. domain-name.de/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/jfrog. domain-name.de/privkey.pem; include /etc/letsencrypt/options-ssl-nginx.conf; ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; } |
Anschließend schließen und speichern wir die Datei. Mit folgendem Befehl erstellen wir wieder eine Verlinkung zu unserer Konfiguration.
1 |
sudo ln -s /etc/nginx/sites-available/artifactory-nginx.conf /etc/nginx/sites-enabled/ |
Überprüfen wir als nächstes NGINX mit dem folgenden Befehl auf Syntaxfehler und starten NGINX dann neu, nachdem wir den alten Link entfernt haben.
1 |
sudo nginx -t<br>sudo rm /etc/nginx/sites-enabled/jfrog.conf<br>sudo systemctl restart nginx |
Jetzt gehen wir wieder zurück ins Admin Panel auf Repositories und legen uns ein lokales Repository an. Als Typ wählen wir Docker und entscheiden uns für einen geeigneten Namen. In unserem Beispiel nehmen wir docker-local. JFrog hat zum Thema Namenskonventionen einen großartigen Artikel und auch einen Leitfaden auf der Homepage veröffentlicht (https://jfrog.com/whitepaper/best-practices-structuring-naming-artifactory-repositories/).
Alle anderen Einstellungen belassen wir auf den Standardwerten. Das Remote Repository legen wir analog dazu an. Wir vergeben einen Namen und belassen alle anderen auf Standard.
Letzter Schritt ist das virtuelle Repository, dieses verbindet unser lokales und entfernte Reposiorys miteinander. Außerdem verwenden wir dieses Repository zum pushen und pullen von unseren Docker Images.
Als Selected Repositories wählen wir unsere beiden zuletzt erstellen Repositorys aus. Unser Default Deployment Repository ist das lokale Repository.
Unterstützung benötigt?
Gerne stellen wir Ihnen unsere Leistungen und Lösungen in einem persönlichen Gespräch vor und würden uns über Ihre Kontaktaufnahme sehr freuen!
Leave a Reply
<p>Danke für Ihre Anregungen, Fragen und Hinweise.<br/>Infos zum <a href="https://www.active-directory-faq.dekontakt/">Datenschutz</a></p>