Aktualisierung des „ Postgres “-Datenspeichers auf Linux on IBM Z and LinuxONE

Aktualisieren Sie den Operator „ Postgres “.

Vorbereitende Schritte

Stellen Sie sicher, dass Sie Ihren Online- und Offline-Host so eingerichtet haben, dass Bilder aus dem externen Repository abgerufen werden können. Stellen Sie außerdem sicher, dass das richtige Repository „ Helm “ hinzugefügt wurde.

Postgres Betreiber-Versionen und Image-Tags für die Bereitstellung

Die folgenden Bilder werden für die festgesteckte „ Helm “-Tabelle oder die Bediener-Versionen benötigt.

Plattform Operatorversionen Version des Helm-Diagramms Bild mit Tag
Linux® x86_64 1.29.1 0.28.2

artifact-public.instana.io/self-hosted-images/3rd-party/operator/cloudnative-pg: v1.29.1_v0.34.0

artifact-public.instana.io/self-hosted-images/3rd-party/datastore/cnpg-containers: 15_v0.39.0

Postgres -Online-Upgrade mithilfe des Befehls „ CloudNativePG “

Führen Sie die folgenden Schritte aus, um den „ Postgres “-Operator in einer Online-Umgebung zu aktualisieren.

  1. Erstellen Sie die Toleranz und custom_values.yaml die Affinität und legen Sie diese fest. Überspringe diesen Schritt, wenn die Datei bereits erstellt wurde.

    tolerations:
    - key: node.instana.io/monitor
      operator: Equal
      effect: NoSchedule
      value: "true"
    affinity:
      nodeAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
          nodeSelectorTerms:
            - matchExpressions:
                - key: node-role.kubernetes.io/monitor
                  operator: In
                  values:
                  - "true"
     
  2. Aktualisieren Sie den „ Postgres “-Operator. Verwenden Sie die UID aus dem vorherigen Schritt als im <UID from namespace> folgenden Befehl:

    helm upgrade --install cnpg instana/cloudnative-pg --set image.repository=artifact-public.instana.io/self-hosted-images/3rd-party/operator/cloudnative-pg --set image.tag=v1.29.1_v0.34.0 --version=0.28.2 --set imagePullSecrets[0].name=instana-registry --set containerSecurityContext.runAsUser=<UID from namespace> --set containerSecurityContext.runAsGroup=<UID from namespace> -n instana-postgres -f custom_values.yaml
     
  3. Aktualisieren Sie „ Postgres “, indem Sie die Clusterkonfiguration anpassen.

    kubectl patch cluster postgres -n instana-postgres --type=merge --patch '
    spec:
      imageName: artifact-public.instana.io/self-hosted-images/3rd-party/datastore/cnpg-containers:15_v0.39.0
    '
     
  4. Führen Sie die Schritte unter „ Postgres -Überprüfung“ (online und offline) durch.

Offline-Upgrade von „ Postgres “ mithilfe des Befehls „ CloudNative “

Aktualisieren Sie den „ Postgres “-Operator in einer isolierten Umgebung.

Falls Sie die „ Postgres “-Images noch nicht aus der externen Registry abgerufen haben, können Sie dies jetzt tun. Führen Sie die folgenden Befehle auf Ihrem Bastion-Host aus. Kopieren Sie die Bilder anschließend auf Ihren „ Instana “-Host, der sich in Ihrer Air-Gapped-Umgebung befindet.

docker pull artifact-public.instana.io/self-hosted-images/3rd-party/operator/cloudnative-pg:v1.29.1_v0.34.0
docker pull artifact-public.instana.io/self-hosted-images/3rd-party/datastore/cnpg-containers:15_v0.39.0
         

Führen Sie die folgenden Schritte auf Ihrem „ Instana “-Host aus.

  1. Ordnen Sie die Bilder erneut Ihrem internen Bildarchiv zu.

    docker tag artifact-public.instana.io/self-hosted-images/3rd-party/operator/cloudnative-pg:v1.29.1_v0.34.0 <internal-image-registry>/operator/cloudnative-pg:v1.29.1_v0.34.0
    docker tag artifact-public.instana.io/self-hosted-images/3rd-party/datastore/cnpg-containers:15_v0.39.0 <internal-image-registry>/datastore/cnpg-containers:15_v0.39.0
                   
  2. Laden Sie die Images in Ihr internes Image-Repository auf Ihrem Bastion-Host hoch.

    docker push <internal-image-registry>/operator/cloudnative-pg:v1.29.1_v0.34.0
    docker push <internal-image-registry>/datastore/cnpg-containers:15_v0.39.0
                   
  3. Wenn Sie „ Postgres “ auf einem „ Red Hat® OpenShift® “-Cluster aktualisieren, ermitteln Sie die Dateisystem-Gruppen-ID anhand des instana-postgres Namespace. Red Hat OpenShift erfordert, dass sich Dateisystemgruppen innerhalb eines für den Namensraum spezifischen Wertebereichs befinden.

    kubectl get namespace instana-postgres -o yaml
     

    Für den Befehl wird eine Ausgabe angezeigt, die dem folgenden Beispiel ähnelt:

    apiVersion: v1
    kind: Namespace
    metadata:
    annotations:
      .......
      openshift.io/sa.scc.uid-range: 1000750000/10000
      creationTimestamp: "2024-01-14T07:04:59Z"
    labels:
      kubernetes.io/metadata.name: instana-postgres
      .......
      name: instana-postgres
     

    Die openshift.io/sa.scc.supplemental-groups Anmerkung enthält den Bereich der zulässigen IDs. Der Bereich 1000750000/10000 umfasst 10.000 Werte, beginnend mit der ID 1000750000, d. h. er gibt den Bereich der IDs von 1000750000 bis 1000760000an. In diesem Beispiel könnte der 1000750000 Wert als Dateisystem-Gruppen-ID (UID) verwendet werden.

  4. Fügen Sie hinzu custom_values.yaml und geben Sie die Toleranz und die Affinität an. Überspringe diesen Schritt, wenn die Datei bereits erstellt wurde.

    tolerations:
    - key: node.instana.io/monitor
      operator: Equal
      effect: NoSchedule
      value: "true"
    affinity:
      nodeAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
          nodeSelectorTerms:
            - matchExpressions:
                - key: node-role.kubernetes.io/monitor
                  operator: In
                  values:
                  - "true"
     
  5. Postgres -Operator aktualisieren. Ersetzen Sie im folgenden Befehl den Wert <download_key> durch Ihren eigenen Agentenschlüssel.

    • Red Hat OpenShift Cluster

      Verwenden Sie die UID aus dem vorherigen Schritt in <UID from namespace> den folgenden Befehlen:

      helm upgrade --install cnpg cloudnative-pg-1.28.0.tgz --set image.repository=image-registry.openshift-image-registry.svc:5000/instana-postgres/cloudnative-pg-operator --set image.tag=v1.29.1_v0.34.0 --version=0.28.2 --set containerSecurityContext.runAsUser=<UID from namespace> --set containerSecurityContext.runAsGroup=<UID from namespace> -n instana-postgres -f custom_values.yaml
       
    • Kubernetes-Cluster

      helm upgrade --install cnpg cloudnative-pg-0.28.2.tgz --set image.repository=<internal-image-registry>/operator/cloudnative-pg --set image.tag=v1.29.1_v0.34.0 --version=0.28.2 -n instana-postgres
       
  6. Aktualisieren Sie „ Postgres “, indem Sie die Clusterkonfiguration anpassen.

    kubectl patch cluster postgres -n instana-postgres --type=merge --patch '
    spec:
      imageName: <internal-image-registry>/self-hosted-images/3rd-party/datastore/cnpg-containers:15_v0.39.0
    '
     
  7. Führen Sie die Schritte unter „ Postgres -Überprüfung“ (online und offline) durch.

Überprüfung von „ Postgres “ (online und offline)

Führen Sie die folgenden Schritte aus, um die „ Postgres “-Instanz und den Datenspeicher zu überprüfen.

  1. Überprüfen Sie das Upgrade des „ Postgres “-Operators.

    kubectl get all -n instana-postgres
     

    Wenn der „ Postgres “-Operator erfolgreich bereitgestellt wurde, lautet das Ergebnis des Befehls wie folgt:

    NAME                                      READY    STATUS    RESTARTS    AGE
    pod/postgres-1                             1/1     Running     0         100s
    pod/postgres-2                             1/1     Running     0         69s
    pod/postgres-3                             1/1     Running     0         41s
    pod/cnpg-cloudnative-pg-64bbc87958-fqnrl   1/1     Running     0         11m
    
    NAME                           TYPE        CLUSTER-IP       EXTERNAL-IP   PORT
    service/cnpg-webhook-service   ClusterIP   172.30.66.183    <none>        443/TCP
    service/postgres-r             ClusterIP   172.30.163.146   <none>        5432/TCP
    service/postgres-ro            ClusterIP   172.30.226.75    <none>        5432/TCP
    service/postgres-rw            ClusterIP   172.30.235.178   <none>        5432/TCP
    
    NAME                                READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/cnpg-cloudnative-p   1/1     1            1           11m
    
    NAME                                           DESIRED   CURRENT   READY   AGE
    replicaset.apps/cnpg-cloudnative-pg-64bbc87958   1         1         1       11m
     
  2. Stellen Sie sicher, dass die Pods auf den gewünschten Knoten eingeplant sind.

    kubectl get pods -n instana-postgres -o wide
     

    Das folgende Beispiel zeigt eine Beispielausgabe.

    NAME                                   READY   STATUS    RESTARTS   AGE   IP              NODE                                           NOMINATED NODE   READINESS GATES
    cnpg-cloudnative-pg-7cdf76c49c-kztxr   1/1     Running   0          22d   10.254.20.122   worker0.instana-load-testing.cp.fyre.ibm.com   <none>           <none>
    postgres-1                             1/1     Running   0          22d   10.254.20.124   worker0.instana-load-testing.cp.fyre.ibm.com   <none>           <none>
    postgres-3                             1/1     Running   0          22d   10.254.16.93    worker1.instana-load-testing.cp.fyre.ibm.com   <none>           <none>
    postgres-4                             1/1     Running   0          22d   10.254.24.65    worker3.instana-load-testing.cp.fyre.ibm.com   <none>           <none>