Migration zur neuen ICC

Verwaltung von mehreren Clustern

Sie können mehrere Cluster zu Ihrer kubeconfig Datei hinzufügen und mittels des nachfolgenden Befehles zwischen diesen wechseln. Weitere Informationen dazu finden Sie hier

1
kubectl context use-context <context-name>

Wiederherstellung von yaml-Dateien

Für die Migration zur neuen ICC müssen Sie sich einen neuen Space (siehe: Accounts und Spaces) erstellen und anschließend Ihre Deployment yaml-Dateien in der neuen ICC neu deployn. Sollten Sie keinen Zugriff mehr auf Ihre yaml-Dateien haben, können Sie mittels der nachfolgenden Befehle die yaml-Dateien aus dem Cluster auslesen.

Dies ist ein Beispiel für die Service yaml-Dateien. Typischerweise haben Sie auch noch ein Deployment, einen Ingress und Persistentvolumeclaims.

1
kubectl get services -n <namespace-name>

Kopieren Sie den Namen des Services von dem Sie die yaml-Datei benötigen und führen Sie anschließend den folgenden Befehl aus, um die yaml-Datei für den Service lokal zu speichern.

1
kubectl get services <service-name> -n <namespace-name> -o yaml > service.yaml

GitLab Integrator

In der neuen ICC wird es keine automatische Synchronisation zwischen GitLab und der ICC mehr geben. Der GitLab Integrator hat früher automatisch Namespaces aus den GitLab Projekte erstellt und die Mitglieder des GitLab-Projekts automatisch zum Namespace hinzugefügt. Wenn Sie mit mehreren Personen in einem Space arbeiten wollen, dann schauen Sie bitte hier.

Durch die Umstellung und die Abschaltung des Integrators erhöhen wir die Zuverlässigkeit und Sicherheit des Clusters.

Jupyterhub

Sollten Sie in der Vergangenheit die Jupyterhub Instanz genutzt haben und die dortigen Daten noch benötigen, dann sichern Sie diese lokal bei sich und spielen diese in die neue Jupyterhub Instanz wieder ein.

Sicherung von Daten von PVCs

Falls Sie Daten in PVCs gesichert haben, müssen Sie diese sichern, falls Sie dies bisher nicht getan haben, da dieser sonst bei der Abschaltung der alten ICC permanent gelöscht werden. Dazu können Sie einen SSH-Server in Ihrem Namespace starten und diesem Ihren PVC zuweisen, damit Sie die Daten runterladen können. Dazu ist es notwendig, dass der PVC zurzeit von keinem anderen Pod verwendet wird.

Im Nachfolgenden finden Sie ein Beispiel-Deployment mit dem ein openssh-Server in einem Namespace gestartet wird und dieser ein PVC unter den Pfad /usr/backup mountet. Erstellen Sie ein yaml-Datei, kopieren den nachfolgenden Inhalt in die Datei und füllen anschließend die Felder aus.

 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
apiVersion: v1
kind: Pod
metadata:
  name: openssh-server
  labels:
    name: openssh-server
spec:
  volumes:
    - name: <Name für den PVC>
      persistentVolumeClaim:
        claimName: <Name des PVCs welcher gemoutet werden soll>
  containers:
    - name: openssh-server
      image: linuxserver/openssh-server
      resources:
        limits:
          memory: "128Mi"
          cpu: "500m"
      ports:
        - containerPort: 2222
      volumeMounts:
        - mountPath: /usr/backup/
          name: <Name des Volumes (Zeile 9)>
      env:
        - name: PUBLIC_KEY
          value: "<Ihr öffentlicher SSH-Schlüssel>"
        - name: USER_NAME
          value: backup

Nachdem Sie die Felder ausgefüllt haben, führen Sie den nachfolgenden Befehl aus, um den Pod zu starten.

1
kubectl apply -f <Ihre yaml-Datei> -n <namespace-name>

Wenn sich der Pod im Status "running" befindet, führen Sie den nachfolgenedn Befehl aus, um ein lokales port-forwading einzurichten, damit Sie auf den ssh-Server zugreifen können.

1
kubectl port-forward pod/openssh-server 2222:2222 -n <namespace-name>

Öffnen Sie nun ein neues Terminal-Fenster/Tab und führen den nachfolgenden Befehl aus, um sich mit dem ssh-Server zu verbinden.

1
ssh backup@127.0.0.1 -p 2222

Wenn Sie nun mittels cd nach /usr/backup navigieren, sollten Sie den Inhalt Ihres PVCs sehen können. Um die Daten auf Ihren lokalen Rechner zu kopieren verwenden Sie das Werkzeug scp. Im nachfolgenden ist ein Beispiel für die Verwendung dafür aufgeführt. Führen Sie diesen auf Ihrem lokalen Rechner aus und nicht in dem Terminal-Fenster, in dem Sie sich per ssh mit dem Pod verbunden haben.

1
scp -r -P 2222 backup@127.0.0.1:/usr/backup/untitled.txt .

Löschen Sie, nachdem Sie Ihre Daten gesichert haben, den Pod wieder mit dem nachfolgenden Befehl.

1
kubectl delete -f <Ihre yaml-Datei> -n <namespace-name>

Wenn Sie mit der Sicherung Ihrer Daten fertig sind, dann löschen Sie bitte auch Ihre Deployments in der alten ICC gleich mit.

Übertragung von Ingress Ressourcen in die neue ICC

Wenn Sie Ihre Dienste wieder weltweit erreichbar machen wollen und eine *.informatik.haw-hamburg.de Domain haben, dann müssen Sie sich zunächst an das AI-Labor wenden, damit die Domain umgetragen werden kann. Dies hat zur Folge, dass der Dienst für einige Zeit nicht erreichbar sein wird, da die DNS Änderungen einige Zeit in Anspruch nehmen, bis diese bei allen großen Anbietern eingetroffen und verarbeitet worden sind.

Wenn Ihre Domain extern verwaltet wird, dann müssen Sie einen CNAME-Eintrag von Ihrer Domain auf 'icc-k8s-api.informatik.haw-hamburg.de' vornehmen.

Achten Sie zudem drauf, dass Sie bei Ihrem Ingress auf die neue v1 Version wechseln und die nachfolgenden Annotation eintragen: 'cert-manager.io/cluster-issuer: letsencrypt-production'.

Weitere Informationen und ein Beispiel dazu finden Sie hier.