Installation auf Kubernetes

Avantra befindet sich derzeit im Prozess der Migration unserer bestehenden containerregistrierungsbasierten Lösung zu Googles Artifact Registry gemäß den Empfehlungen von Google, da sie ihr Containerregistrierungsangebot schrittweise einstellen. In dieser Zeit wird der bestehende Kundenzugang weiterhin funktionieren. Der Zugang für Kunden in Nicht-Produktionsszenarien wird jedoch erst nach Abschluss der neuen Einrichtung gewährt. Wenn dies für Sie ein Problem darstellt, wenden Sie sich bitte an Ihren Customer Success Manager.
Diese Dokumentation setzt voraus, dass Sie bereits über ein gültiges und korrekt funktionierendes Kubernetes-Cluster verfügen und ist nur dazu gedacht, die wichtigsten Befehle und Konfigurationen zu präsentieren, die zum Ausführen von Avantra in einem Kubernetes-Cluster erforderlich sind. Sie ist nicht als umfassender Leitfaden für den Betrieb eines Kubernetes-Clusters gedacht. Für detaillierte Informationen zum Betrieb eines Kubernetes-Clusters konsultieren Sie bitte die Online-Dokumentation für Ihre gewählte Umgebung. Avantra-Support kann keine Anleitung zu Best Practices für den Kubernetes-Cluster-Betrieb oder tiefgreifenden Support für Ihr Kubernetes-Cluster bieten.

Voraussetzungen

Die folgenden Elemente sind erforderlich, um eine erfolgreiche Bereitstellung von Avantra in Ihrer Kubernetes-Umgebung abzuschließen.

  1. Ihr eigenes Kubernetes-Cluster

  2. Berechtigungen, um einen neuen Namespace hinzuzufügen

  3. Berechtigungen, um ein neues Container-Registry (Avantra) hinzuzufügen

  4. Ein gültiges Set von Anmeldedaten vom Avantra-Support zum Zugriff auf die Avantra-Container-Registry - dies ist eine .json-Datei

  5. Berechtigungen, um eine neue Anwendung im Cluster bereitzustellen

  6. Ein gültiges Avantra-Abonnement

Erforderliche Container

Name

Beschreibung

Container-URL

Operator

Verantwortlich für die Bereitstellung und Steuerung der Avantra-Installationskomponenten (von Avantra)

gcr.io/avantra-cust/avantra/operator/avantra-operator

Avantra Server

Der Server-Container (von Avantra)

gcr.io/avantra-cust/avantra/master

Avantra UI

Der UI-Container (von Avantra)

gcr.io/avantra-cust/avantra/ui

PostgreSQL-Datenbank

Der PostgreSQL-Container (offiziell von Docker Hub)

postgres

Installationsschritte

Installation vorbereiten

  1. Erstellen Sie einen neuen Namespace für Avantra in Kubernetes mit dem von Ihnen gewählten Namen. In diesem Leitfaden verwenden wir den Namespace avantra. Bitte beachten Sie, dass, wenn Sie einen anderen Namespace verwenden möchten, Sie jeden YAML-Eintrag unten überprüfen sollten, um sicherzustellen, dass Sie die Namespace-Einträge aktualisieren.

    kubectl create namespace avantra
    Sie benötigen Ihre Anmeldedaten für den Zugriff auf die Avantra-Container-Registry, die in Form einer JSON-Datei vorliegen, die im folgenden Beispiel registry-credentials.json genannt wird. Bitte kontaktieren Sie Avantra Support, falls Sie die Anmeldedaten nicht haben.
  2. Speichern Sie die Zugangsdaten für die Container-Registry in Kubernetes

    kubectl -n=avantra create secret docker-registry avantra.com \
      --docker-server gcr.io \
      --docker-username _json_key \
      --docker-email not@val.id \
      --docker-password="$(cat registry-credentials.json)"

    Dieser Befehl fügt das avantra.com-Registry mit den richtigen Anmeldedaten hinzu, um auf die Avantra-Container zuzugreifen.

Avantra installieren

  1. Erstellen Sie das Avantra Operator Service Account

    Legen Sie den untenstehenden YAML-Code in einer Datei ab, um die Bereitstellung zu erleichtern. Wenn die Datei 01_CreateServiceAccount.yaml genannt wird, können Sie dies in Ihrem Cluster mit kubectl -n=avantra create -f 01_CreateServiceAccount.yaml ausführen.

    ---
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      namespace: avantra
      labels:
        app.kubernetes.io/version: 1.0.0
        app.kubernetes.io/name: avantra-operator
      name: avantra-operator
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: avantra-operator-view
    roleRef:
      kind: ClusterRole
      apiGroup: rbac.authorization.k8s.io
      name: view
    subjects:
      - kind: ServiceAccount
        name: avantra-operator
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: avantracontroller-cluster-role
    rules:
      - apiGroups:
          ["", "apps", "avantra.com"]
        resources:
          - avantras
          - avantras/status
          - services
          - configmaps
          - secrets
          - pods
          - statefulsets
          - statefulsets/scale
          - persistentvolumes
          - persistentvolumeclaims
        verbs:
          - get
          - list
          - watch
          - create
          - delete
          - patch
          - update
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: josdk-crd-validating-cluster-role
    rules:
      - apiGroups:
          - apiextensions.k8s.io
        resources:
          - customresourcedefinitions
        verbs:
          - get
          - list
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: avantracontroller-cluster-role-binding
    roleRef:
      kind: ClusterRole
      apiGroup: rbac.authorization.k8s.io
      name: avantracontroller-cluster-role
    subjects:
      - kind: ServiceAccount
        name: avantra-operator
        namespace: avantra
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: avantracontroller-crd-validating-role-binding
    roleRef:
      kind: ClusterRole
      apiGroup: rbac.authorization.k8s.io
      name: josdk-crd-validating-cluster-role
    subjects:
      - kind: ServiceAccount
        name: avantra-operator
        namespace: avantra
    ---
  2. Zuweisung von Anmeldedaten zum Avantra Operator Service Account

    kubectl -n=avantra patch serviceaccount avantra-operator \
              -p '{"imagePullSecrets": [{"name": "avantra.com"}]}'

    Dieser Befehl weist die Zugangsdaten dem Avantra-Operator-Service-Account im Namespace zu. Wenn ein anderes Service-Account verwendet wird, müssen die Zugangsdaten diesem Konto zugewiesen werden.

  3. Installieren Sie die Avantra Operator Custom Resource Definition

    Legen Sie den untenstehenden YAML-Code in einer Datei ab, um die Bereitstellung zu erleichtern. Wenn die Datei 02_CreateServiceDefinition.yaml genannt wird, können Sie dies in Ihrem Cluster mit kubectl -n=avantra create -f 02_CreateServiceDefinition.yaml ausführen.

    apiVersion: apiextensions.k8s.io/v1
    kind: CustomResourceDefinition
    metadata:
      name: avantras.avantra.com
    spec:
      group: avantra.com
      names:
        kind: Avantra
        plural: avantras
        shortNames:
        - avantra
        singular: avantra
      scope: Namespaced
      versions:
      - name: v1
        schema:
          openAPIV3Schema:
            properties:
              spec:
                properties:
                  master:
                    properties:
                      masterCpuSize:
                        type: string
                      indexVolumeSize:
                        type: string
                      annotations:
                        additionalProperties:
                          type: string
                        type: object
                      masterImage:
                        type: string
                      masterMemorySize:
                        type: string
                      masterUI:
                        properties:
                          annotations:
                            additionalProperties:
                              type: string
                            type: object
                          isActive:
                            type: boolean
                        type: object
                      masterCommunication:
                        properties:
                          annotations:
                            additionalProperties:
                              type: string
                            type: object
                        type: object
                    type: object
                  ui:
                    properties:
                      uiImage:
                        type: string
                      uiMemorySize:
                        type: string
                      uiFrontend:
                        properties:
                          annotations:
                            additionalProperties:
                              type: string
                            type: object
                        type: object
                      slrVolumeSize:
                        type: string
                      annotations:
                        additionalProperties:
                          type: string
                        type: object
                      uiEvent:
                        properties:
                          annotations:
                            additionalProperties:
                              type: string
                            type: object
                        type: object
                      uiCpuSize:
                        type: string
                      indexVolumeSize:
                        type: string
                    type: object
                  name:
                    type: string
                  database:
                    properties:
                      databaseName:
                        type: string
                      databaseImage:
                        type: string
                      databaseUser:
                        type: string
                      annotations:
                        additionalProperties:
                          type: string
                        type: object
                      databasePassword:
                        type: string
                      databaseCpuSize:
                        type: string
                      databaseMemorySize:
                        type: string
                      databaseVolumeSize:
                        type: string
                    type: object
                  serviceAccountName:
                    type: string
                type: object
              status:
                properties:
                  installations:
                    additionalProperties:
                      properties:
                        master-replicas:
                          type: integer
                        name:
                          type: string
                        ui-replicas:
                          type: integer
                      type: object
                    type: object
                type: object
            type: object
        served: true
        storage: true
        subresources:
          status: {}
  4. Installieren Sie den Avantra Operator

    Legen Sie den untenstehenden YAML-Code in einer Datei ab, um die Bereitstellung zu erleichtern. Wenn die Datei 03_InstallAvantraOperator.yaml genannt wird, können Sie dies in Ihrem Cluster mit kubectl -n=avantra create -f 03_InstallAvantraOperator.yaml ausführen.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      namespace: avantra
      labels:
        app.kubernetes.io/version: 1.0.0
        app.kubernetes.io/name: avantra-operator
      name: avantra-operator
    spec:
      replicas: 1
      selector:
        matchLabels:
          app.kubernetes.io/version: 1.0.0
          app.kubernetes.io/name: avantra-operator
      template:
        metadata:
          labels:
            app.kubernetes.io/version: 1.0.0
            app.kubernetes.io/name: avantra-operator
        spec:
          containers:
            - env:
                - name: KUBERNETES_NAMESPACE
                  valueFrom:
                    fieldRef:
                      fieldPath: metadata.namespace
              image: gcr.io/avantra-cust/avantra/operator/avantra-operator:latest
              imagePullPolicy: Always
              livenessProbe:
                failureThreshold: 3
                httpGet:
                  path: /q/health/live
                  port: 8080
                  scheme: HTTP
                initialDelaySeconds: 0
                periodSeconds: 30
                successThreshold: 1
                timeoutSeconds: 10
              name: avantra-operator
              ports:
                - containerPort: 8080
                  name: http
                  protocol: TCP
              readinessProbe:
                failureThreshold: 3
                httpGet:
                  path: /q/health/ready
                  port: 8080
                  scheme: HTTP
                initialDelaySeconds: 0
                periodSeconds: 30
                successThreshold: 1
                timeoutSeconds: 10
          serviceAccountName: avantra-operator
  5. Installieren Sie Avantra

    Legen Sie den untenstehenden YAML-Code in einer Datei ab, um die Bereitstellung zu erleichtern. Wenn die Datei 04_InstallAvantra.yaml genannt wird, können Sie dies in Ihrem Cluster mit kubectl -n=avantra create -f 04_InstallAvantra.yaml ausführen. Wenn Sie Anpassungen an Ihre Umgebung vornehmen möchten, sind unten alle zusätzlichen Optionen aufgelistet.

    apiVersion: avantra.com/v1
    kind: Avantra
    metadata:
      name: avantra
    spec:
      name: avantra-services
      serviceAccountName: "avantra-operator"
      ui:
        uiImage: gcr.io/avantra-cust/avantra/ui:latest
        uiCpuSize: 1000m
        uiMemorySize: 2048Mi
      master:
        masterImage: gcr.io/avantra-cust/avantra/master:latest
      database:
        databaseImage: postgres:13
        databasePassword: 2e478fe8bc1203a76d83f35d0003941d
        databaseUser: avantra

UI-Optionen

Name

Beschreibung

Standardwert

uiImage

Das Image für die Avantra-UI

Erforderlich - kein Standardwert

uiCpuSize

Die CPU-Größe für die Avantra-UI

2000m

uiMemorySize

Die Speichergröße für die Avantra-UI

2048Mi

slrVolumeSize

Die Größe des Volumens, in dem die UI ihre SLR-Daten speichert

5Gi

indexVolumeSize

Die Größe des Volumens, in dem die UI ihre Indexdaten speichert

5Gi

Avantra Server (Master) Optionen

Name

Beschreibung

Standardwert

masterImage

Das Image für den Avantra-Server

Erforderlich - kein Standardwert

masterCpuSize

Die CPU-Größe für den Avantra-Server

2000m

masterMemorySize

Die Speichergröße für den Avantra-Server

2048Mi

indexVolumeSize

Die Größe des Volumens, in dem der Server seine Indexdaten speichert

5Gi

Datenbankoptionen

Name

Beschreibung

Standardwert

databaseImage

Das Image für die Datenbank, die Avantra verwendet

Erforderlich - kein Standardwert - Avantra empfiehlt postgres:13

databasePassword

Das Datenbank-Passwort

Erforderlich - kein Standardwert

databaseName

Der Name der Datenbank

avantra

databaseUser

Der Datenbankbenutzer

avantra

databaseCpuSize

Die CPU-Größe für die Datenbank

2000m

databaseMemorySize

Die Speichergröße für die Datenbank

2048Mi

databaseVolumeSize

Die Größe des Volumens, in dem die Datenbank ihre Daten speichert

10Gi

Allgemeine / Operator-Optionen

Name

Beschreibung

Standardwert

Name

Ist der Name der Avantra-Bereitstellung

Erforderlich - kein Standardwert

ServiceAccountName

Ist der Name des Service-Accounts, der für die Bereitstellung verwendet wird. Dieser Service-Account benötigt die Zugangsdaten für die Container-Registry

Erforderlich - kein Standardwert

Nach der Installation

Anmelden

Die Anmeldung bei Ihrer Avantra-Instanz erfolgt erstmals über den avantra-ui-Container auf Port 8443. Der Standardbenutzername und das Standardpasswort, die sofort geändert werden sollten, sind root und ilsx1234.

Domain-Namen

Nach einer Installation muss der Domainname des Avantra-Servers möglicherweise in der UI angepasst werden. Je nach Einrichtung Ihrer Umgebung muss möglicherweise der Name des Server-Containers von diesem Domainnamen entfernt werden, z. B. avantra-master-0.avantra-master.avantra.svc.cluster.local geändert zu avantra-master.avantra.svc.cluster.local. Sie können diesen Eintrag in der UI unter dem ?-Menü und unter der Option about anpassen. Erweitern Sie den Abschnitt Avantra Master und passen Sie den Wert von MasterHost an, damit er mit dem vollqualifizierten Domainnamen (FQDN) übereinstimmt, den entfernte Agenten verwenden, um den Avantra-Server zu erreichen. Wenn entfernte Agenten diesen FQDN nicht auflösen können, um den Avantra-Server zu erreichen, werden Sie Probleme haben, entfernte Agenten zu verbinden.