initial commit
This commit is contained in:
113
dev/nexus/README.md
Executable file
113
dev/nexus/README.md
Executable file
@@ -0,0 +1,113 @@
|
||||
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.
|
||||
Reference in New Issue
Block a user