user: admin password: Nexus01@ #installatie postgres14 starten als dat nog niet is gebeurd ingressrouteTCP-route aanmaken voor registry ingressroutes HTTP en TLS aanmaken voor nexus (nodig voor compileren met maven) kubectl apply -f nexus.yaml i.v.m. permissions (zie logfile) indien nodig op sudo chmod +R /mnt/nfs_share/nexus uitvoeren admin password staat in data-dir op de nfs-share #Repository-routes configureren: In nexus kun je een repository definieren van het type "Docker". Die geef je dan een eigen poortnummer. Bij TLS-interrupt door Traefik gewoon http-poort 5000 (https kun je leeglaten) Bij TLS-interrupt door Nexus moet je een https-poort gebruiken (bijv 8444) #SSL TLS Interrupt voor UI: gewoon een ingressroute-HTTP en ingressroute-tls aanmaken voor nexus-dev.allarddcs.nl #SSL TLS Interrupt voor Registry: TLS-interrupt kun je het best door traefik laten doen. Dit heeft de voorkeur want dan heb je een trusted certificaat en hoefje geen "insecure registry" te configurenren in docker-config. #TLS-INTERRUPT DOOR TRAEFIK: De ingressrouteTCP naar de docker registry ziet er dan alsvolgt uit: apiVersion: traefik.io/v1alpha1 kind: IngressRouteTCP metadata: name: registry-tcp namespace: nexus spec: entryPoints: - websecure # Traefik HTTPS entrypoint routes: - match: HostSNI(`registry-dev.allarddcs.nl`) services: - name: nexus port: 5000 # Nexus HTTP port for Docker registry tls: certResolver: letsencrypt # Traefik uses this certificate Dit is dus een bijzondere combinatie van IngressrouteTCP en toch TLS-interrupt. Vanaf traefik gaat het verkeer dan naar de http-poort van je docker registry. Daarnaast heb ik ook een ingressroute-http aangemaakt : apiVersion: traefik.io/v1alpha1 kind: IngressRoute metadata: name: registry-http namespace: nexus spec: entryPoints: - web routes: - match: Host(`registry-dev.allarddcs.nl`) kind: Rule services: - name: nexus port: 8081 Deze gaat dus naar de web-kant voor de ACME-challenge van Letsencrypt. #TLS-INTERRUPT DOOR NEXUS: Deze optie heeft het nadeel dat je dan bij inloggen met docker de melding krijgt dat het certificaat self-signed is. Dan moet je insecure registry opvoeren in docker-config. Met keytool een certificaat aanmaken. Certificaat zet je dan op nfs-share op data-dir/etc/ssl/keystore.jks Deze poort moet je ook als ingressrouteTCP ontsluiten met TLS passthrough (want nexus doet TLS-interrupt) maar dan uiteraard wel op de domeinnaam "registry-dev.allarddcs.nl". Deze tweede route heeft hetzelfde "entrypoint" als de GUI, namelijk "websecure" nexus-properties: nexus-args=${jetty.etc}/jetty.xml,${jetty.etc}/jetty-http.xml,${jetty.etc}/jetty-https.xml,${jetty.etc}/jetty-requestlog.xml application-port-ssl=8443 ssl-keystore=/nexus-data/etc/ssl/keystore.jks ssl-keystore-password=password ssl-keystore-type=JKS jetty.sslContext.keyStorePath=/opt/sonatype/sonatype-work/nexus3/etc/ssl/keystore.jks jetty.sslContext.keyStorePassword=password jetty.sslContext.keyManagerPassword=password jetty.sslContext.trustStoreType=JKS #vervelende foutmeldingen in log voorkomen. Om java in een container te kunnen runnen probeert nexus blijkbaar een .java directory aan te maken in /opt/sonatype/nexus. Maar use nexus mag dat niet. Vandaar dat er een emptydir gemount wordt: volumeMounts: - name: java-prefs mountPath: /opt/sonatype/nexus/.java volumes: - name: java-prefs emptyDir: {} Die emptydir verdwijnt weer als je de container stopt.