Bereitstellung einer App, die COS nutzt

Sie können einen Persistent Volume Claim (PVC) erstellen, um IBM Cloud Object Storage für Ihren Cluster einzurichten.

Abhängig von den Einstellungen, die Sie im PVC auswählen, können Sie IBM Cloud Object Storage auf folgende Weise einrichten:

  • Dynamische Bereitstellung: Wenn Sie das PVC erstellen, werden das zugehörige persistente Volume (PV) und der Bucket in Ihrer IBM Cloud Object Storage-Service-Instanz automatisch angelegt.
  • Statische Bereitstellung: Sie können in Ihrem PVC auf einen vorhandenen Bucket in Ihrer IBM Cloud Object Storage-Service-Instanz verweisen. Wenn Sie den PVC erstellen, wird nur der übereinstimmende PV automatisch erstellt und mit vorhandenen Bucket in IBM Cloud Object Storage verknüpft.

Vorbereitende Schritte:

Gehen Sie wie folgt vor, um IBM Cloud Object Storage zu Ihrem Cluster hinzuzufügen:

  1. Erstellen Sie eine Konfigurationsdatei, um Ihren Persistent Volume Claim (PVC) zu definieren. Wenn Sie Ihre Anmeldedaten für IBM Cloud Object Storage zu den Standard-Speicherklassen hinzufügen, geben Sie Ihr Geheimnis nicht im PVC an.

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: <name> # Enter the name of the PVC.
      namespace: <namespace> # Enter the namespace where you want to create the PVC. The PVC must be created in the same namespace where you created the Kubernetes secret for your service credentials and where you want to run your pod.
      annotations:
        ibm.io/auto-create-bucket: "<true_or_false>"
        ibm.io/auto-delete-bucket: "<true_or_false>"
        ibm.io/bucket: "<bucket_name>"
        ibm.io/object-path: "<bucket_subdirectory>"
        ibm.io/quota-limit: "true/false" # Disable or enable a quota limit for your PVC. To use this annotation you must specify the -set quotaLimit=true option during installation.
        ibm.io/endpoint: "https://<s3fs_service_endpoint>"
        ibm.io/tls-cipher-suite: "default"
        ibm.io/secret-name: "<secret_name>" # The name of your Kubernetes secret that you created.
        ibm.io/secret-namespace: "<secret-namespace>" # By default, the COS plug-in searches for your secret in the same namespace where you create the PVC. If you created your secret in a namespace other than the namespace where you want to create your PVC, enter the namespace where you created your secret.
        ibm.io/add-mount-param: "<option-1>,<option-2>" # s3fs mount options
        ibm.io/access-policy-allowed-ips: "XX.XXX.XX.XXX, XX.XX.XX.XXX, XX.XX.XX.XX" # A csv of allow listed IPs.
        ibm.io/bucket-versioning: "false" # Set to true to enable bucket versioning.
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: <size>
      storageClassName: <storage_class>
    
    ibm.io/auto-create-bucket
    Wählen Sie eine der folgenden Optionen aus.
    true: Wenn Sie den PVC erstellen, werden der PV und das Bucket in Ihrer IBM Cloud Object Storage-Serviceinstanz automatisch erstellt. Wählen Sie diese Option aus, um ein neues Bucket in Ihrer IBM Cloud Object Storage-Serviceinstanz zu erstellen. Beachten Sie, dass die Serviceberechtigungsnachweise Ausgabeprogramm-Berechtigungen haben müssen, um das Bucket automatisch zu erstellen.
    false: Wählen Sie diese Option aus, um auf Daten in einem vorhandenen Bucket zuzugreifen. Wenn Sie den PVC erstellen, wird der PV automatisch erstellt und mit dem Bucket verknüpft, den Sie in ibm.io/bucket angeben.
    ibm.io/auto-delete-bucket
    Wählen Sie eine der folgenden Optionen aus.
    true: Ihre Daten, das Bucket und der PV werden automatisch entfernt, wenn Sie den PVC löschen. Ihre IBM Cloud Object Storage-Serviceinstanz bleibt bestehen und wird nicht gelöscht. Wenn Sie diese Option auf true setzen, müssen Sie ibm.io/auto-create-bucket: true und ibm.io/bucket: "" festlegen, sodass Ihr Bucket automatisch mit einem Namen im Format tmp-s3fs-xxxx erstellt wird.
    false: Wenn Sie den PVC löschen, wird der PV automatisch gelöscht, aber Ihre Daten und das Bucket in Ihrer IBM Cloud Object Storage-Serviceinstanz bleiben erhalten. Um auf Ihre Daten zugreifen zu können, müssen Sie einen neuen PVC mit dem Namen des vorhandenen Buckets erstellen.
    ibm.io/bucket
    Wählen Sie eine der folgenden Optionen aus.
    Wenn ibm.io/auto-create-bucket auf true festgelegt ist: Geben Sie den Namen des Buckets ein, das Sie in IBM Cloud Object Storage erstellen wollen. Wenn außerdem ibm.io/auto-delete-bucket auf true gesetzt ist, muss dieses Feld leer bleiben, damit Ihrem Bucket automatisch ein Name im Format tmp-s3fs-xxxx zugewiesen wird. Der Name muss in IBM Cloud Object Storage eindeutig sein.
    Wenn ibm.io/auto-create-bucket auf false festgelegt ist: Geben Sie den Namen des vorhandenen Buckets ein, auf das Sie im Cluster zugreifen möchten.
    ibm.io/object-path
    Optional: Geben Sie den Namen des vorhandenen Unterverzeichnisses in Ihrem Bucket ein, das angehängt werden soll. Verwenden Sie diese Option, wenn nur ein Unterverzeichnis und nicht das gesamte Bucket angehängt werden soll. Um ein Unterverzeichnis anzuhängen, müssen Sie ibm.io/auto-create-bucket: "false" festlegen und den Namen des Buckets in ibm.io/bucket angeben.
    ibm.io/quota-limit
    Damit diese Annotation verwendet werden kann, müssen Sie während der Installation die Option --set quotaLimit=true angeben. Wenn Sie diese Anmerkung verwenden möchten, aber --set quotaLimit=true während der Installation nicht angegeben hat installieren Sie das Helm-Diagramm erneut.
    Wenn „ ibm.io/quota-limit “ auf „ true “ gesetzt ist, legt Ihr PVC die maximal für den Bucket verfügbare Speicherkapazität (in Byte) auf der Grundlage der von Ihnen angegebenen Größe „ storage: <size> “ fest.
    Wenn ibm.io/quota-limit auf false gesetzt ist, wird das Kontingent für Ihren PVC nicht erzwungen. Dies bedeutet, dass die tatsächliche Speichermenge in Byte die storage: <size> überschreitet, die Sie abhängig von Ihrer App angegeben haben.
    ibm.io/endpoint
    Wenn Sie Ihre IBM Cloud Object Storage-Serviceinstanz an einer Position erstellt haben, die sich von der Ihres Clusters unterscheidet, geben Sie den Private- oder Public-Cloud-Serviceendpunkt Ihrer IBM Cloud Object Storage-Serviceinstanz ein, den Sie verwenden möchten. Weitere Informationen und eine Übersicht über die verfügbaren Serviceendpunkte finden Sie unter Zusätzliche Endpunktinformationen. Das Helm-Plug-in ibmc ruft standardmäßig automatisch Ihre Clusterposition ab und erstellt die Speicherklasse unter Verwendung von IBM Cloud Object Storage-Private-Cloud-Serviceendpunkten, die Ihrer Clusterposition entsprechen. Befindet sich Ihr klassischer Cluster in einer Metro mit mehreren Zonen, wie z. B. dal10, wird der Endpunkt des IBM Cloud Object Storage-Private-Cloud-Dienstes für die Metro mit mehreren Zonen, wie z. B. Dallas, verwendet. Führen Sie oc describe storageclass <storageclassname> aus, um zu überprüfen, ob der Serviceendpunkt in Ihren Speicherklassen mit dem Serviceendpunkt Ihrer Serviceinstanz übereinstimmt. Stellen Sie sicher, dass Sie Ihren Serviceendpunkt im Format https://<s3fs_private_service_endpoint> für private Cloud-Serviceendpunkte oder http://<s3fs_public_service_endpoint> für öffentliche Cloud-Serviceendpunkte eingeben. Wenn der Serviceendpunkt in Ihrer Speicherklasse mit dem Serviceendpunkt Ihrer IBM Cloud Object Storage-Serviceinstanz übereinstimmt, schließen Sie die Option ibm.io/endpoint nicht in Ihre PVC YAML-Datei ein.
    ibm.io/add-mount-param
    Geben Sie Mountoptionen für Ihre s3fs Fuse-Datenträger ein. Beispiel: ibm.io/add-mount-param: "del_cache,retries=6". Eine Liste der Optionen finden Sie auf den Man-Pages zu s3fs.
    ibm.io/access-policy-allowed-ips
    Geben Sie eine durch Kommas getrennte Liste mit IPs ein, die auf Ihre Datenträger zugreifen können. Beispiel: ibm.io/access-policy-allowed-ips: "XX.XXX.XX.XXX, XX.XX.XX.XXX, XX.XX.XX.XX".
    storage
    Geben Sie im Abschnitt Spezifikationen – Ressourcenanforderungen die Größe Ihres IBM Cloud Object Storage-Buckets in Gigabyte ein. Der tatsächlich von Ihnen in IBM Cloud Object Storage genutzte Speicherplatz kann davon abweichen und wird gemäß der Preistabelle abgerechnet. Wenn Sie beim Installieren des Plug-ins Kontingente aktiviert haben, entspricht das Kontingent für Ihr Bucket dieser Größe.
    storageClassName
    Wählen Sie eine der folgenden Optionen aus.
    Wenn ibm.io/auto-create-bucket: "true": Geben Sie die Speicherklasse ein, die Sie für Ihr neues Bucket verwenden möchten.
    Wenn ibm.io/auto-create-bucket: "false": Geben Sie die Speicherklasse ein, die Sie zum Erstellen Ihres vorhandenen Buckets verwendet haben.
    Wenn Sie das Bucket in Ihrer IBM Cloud Object Storage-Serviceinstanz manuell erstellt oder sich nicht an die von Ihnen verwendete Speicherklasse erinnern können, suchen Sie Ihre Serviceinstanz im IBM Cloud-Dashboard und überprüfen Sie die Klasse und Position Ihres vorhandenen Buckets. Verwenden Sie anschließend die entsprechende Speicherklasse. Der in Ihrer Speicherklasse festgelegte IBM Cloud Object Storage-API-Endpunkt basiert auf der Region, in der sich Ihr Cluster befindet. Wenn Sie auf einen Bucket zugreifen möchten, der sich in einer anderen Region befindet als die, in der sich Ihr Cluster befindet, müssen Sie eine eigene Speicherklasse erstellen und den für Ihren Bucket geeigneten API-Endpunkt verwenden.
    ibm.io/secret-name
    Geben Sie den Namen des geheimen Schlüssels ein, der die IBM Cloud Object Storage-Berechtigungsnachweise enthält, die Sie zuvor erstellt haben. Wenn Sie Ihre IBM Cloud Object Storage-Berechtigungsnachweise zu den Standardspeicherklassen hinzufügen, dürfen Sie keine geheimen Schlüssel im PVC auflisten. Wenn Sie die Key Protect-Verschlüsselung beim Erstellen neuer Buckets aus PVCs in Ihrem Cluster integrieren möchten, müssen Sie den CRN des Rootschlüssels einschließen, wenn Sie Ihren geheimen IBM Cloud Object Storage-Schlüssel erstellen. Beachten Sie, dass die Verschlüsselung Key Protect nicht zu vorhandenen Buckets hinzugefügt werden kann.
    secret-namespace
    Standardmäßig sucht das COS-Plugin Ihren geheimen Schlüssel in demselben Namensbereich, in dem Sie den PVC erstellen. Wenn Sie Ihren geheimen Schlüssel in einem anderen Namensbereich erstellt haben als dem, in dem Sie Ihr PVC erstellen wollen, geben Sie den Namensbereich an, in dem Sie Ihren geheimen Schlüssel erstellt haben.
    ibm.io/bucket-versioning
    Die Versionierung von Buckets ist false standardmäßig aktiviert. Setzen Sie diese Option auf true, um die Bucket-Versionierung zu aktivieren. Setzen Sie diese Option auf false, um die Versionierung für einen Bucket zu deaktivieren, in dem die Versionierung aktiviert ist. Beachten Sie, dass die Dienstanmeldeinformationen über die Berechtigung Manager oder Writer verfügen müssen, um die Bucketversionierung für den Bucket zu aktivieren oder zu deaktivieren. Weitere Informationen finden Sie unter Erste Schritte mit der Versionsverwaltung.
  2. Erstellen Sie die PVC in Ihrem Cluster.

    oc apply -f filepath/pvc.yaml
    
  3. Überprüfen Sie, ob Ihr PVC erstellt und an den persistenten Datenträger (PV) gebunden wurde.

    oc get pvc
    

    Beispielausgabe

    NAME                  STATUS    VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS                     AGE
    s3fs-test-pvc         Bound     pvc-b38b30f9-1234-11e8-ad2b-t910456jbe12   8Gi        RWO            ibmc-s3fs-standard-cross-region  1h
    
  4. Optional: Wenn Sie als Benutzer ohne Rootberechtigung auf Ihre Daten zugreifen möchten oder Dateien zu einem vorhandenen IBM Cloud Object Storage-Bucket direkt über die Konsole oder die API hinzugefügt haben, stellen Sie sicher, dass den Dateien die richtige Berechtigung zugewiesen wird, sodass Ihre App die Dateien nach Bedarf erfolgreich lesen und aktualisieren kann.

  5. Um den PV an Ihre Bereitstellung anzuhängen, erstellen Sie eine .yaml-Konfigurationsdatei und geben Sie den PVC an, der den persistenten Datenträger bindet.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: <deployment_name>
      labels:
        app: <deployment_label>
    spec:
      selector:
        matchLabels:
          app: <app_name>
      template:
        metadata:
          labels:
            app: <app_name>
        spec:
          containers:
          - image: <image_name>
            name: <container_name>
            securityContext:
              runAsUser: <non_root_user>
            volumeMounts:
            - name: <volume_name>
              mountPath: /<file_path>
          volumes:
          - name: <volume_name>
            persistentVolumeClaim:
              claimName: <pvc_name>
    
    app
    Geben Sie im Abschnitt 'metadata' eine Bezeichnung für die Bereitstellung ein.
    matchLabels.app und labels.app
    Geben Sie im Abschnitt "spec" unter "selector" und im Abschnitt "spec" unter "template" -> "metadata" eine Bezeichnung für Ihre App ein.
    image
    Der Name des Container-Image, das Sie verwenden möchten. Führen Sie ibmcloud cr image-list aus, um die verfügbaren Images in Ihrem IBM Cloud Container Registry-Konto aufzulisten.
    name
    Der Name des Containers, den Sie in Ihrem Cluster bereitstellen möchten.
    runAsUser
    Unter "spec" im Abschnitt "containers" -> "securityContext" können Sie den Wert für "runAsUser" festlegen.
    mountPath
    Geben Sie unter "spec" im Abschnitt "containers" -> "volumeMounts" den absoluten Pfad des Verzeichnisses ein, in dem der Datenträger innerhalb des Containers per Mount angehängt wird. Wenn Sie ein Volume für verschiedene Apps gemeinsam nutzen möchten, können Sie für jede Ihrer Apps Volume-Unterpfade angeben.
    volumeMounts.name
    Geben Sie unter "spec" im Abschnitt "containers" -> "volumeMounts" den Namen des Datenträgers ein, der an Ihren Pod angehängt werden soll.
    volumes.name
    Geben Sie im Abschnitt 'volumes' den Namen des Datenträgers ein, der an Ihren Pod angehängt werden soll. Dieser Name ist in der Regel mit volumeMounts/name identisch.
    claimName
    Geben Sie im Abschnitt 'volumes: persistentVolumeClaim' den Namen des PVC ein, der den physischen Datenträger (PV) bindet, den Sie verwenden möchten.

Bereitstellung erstellen

Nachdem Sie PVC- und Bereitstellungskonfigurationsdateien erstellt haben, erstellen Sie die Bereitstellung in Ihrem Cluster.

  1. Erstellen Sie die Implementierung.

    oc apply -f <local_yaml_path>
    
  2. Überprüfen Sie, dass der persistente Datenträger erfolgreich angehängt wurde.

    oc describe deployment <deployment_name>
    

    Der Mountpunkt ist im Feld Datenträgermounts angegeben und der Datenträger im Feld Datenträger .

    Volume Mounts:
          /var/run/secrets/kubernetes.io/serviceaccount from default-token-tqp61 (ro)
          /volumemount from myvol (rw)
    ...
    Volumes:
        myvol:
        Type:    PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
        ClaimName:    mypvc
        ReadOnly:    false
    
  3. Überprüfen Sie, ob Sie Daten in Ihre IBM Cloud Object Storage-Serviceinstanz schreiben können, indem Sie sich beim App-Pod anmelden und Daten schreiben. Melden Sie sich bei dem Pod an, der Ihren PV anhängt.

    oc exec <pod_name> -it bash
    
  4. Navigieren Sie zu Ihrem Datenträgermountpfad, den Sie in Ihrer App-Bereitstellung definiert haben.

  5. Erstellen Sie eine Textdatei.

    echo "This is a test" > test.txt
    
  6. Navigieren Sie in der IBM Cloud-Konsole zu Ihrer IBM Cloud Object Storage-Serviceinstanz.

  7. Wählen Sie im Menü die Option Buckets aus.

  8. Öffnen Sie Ihr Bucket und überprüfen Sie, dass das von Ihnen erstellte Element test.txt angezeigt wird.

Objektspeicher in statusabhängiger Gruppe verwenden

Wenn Sie über eine statusabhängige App wie eine Datenbank verfügen, können Sie statusabhängige Gruppen erstellen, die IBM Cloud Object Storage zum Speichern Ihrer App-Daten verwenden. Alternativ können Sie eine IBM Cloud-DBaaS (Database as a Service) wie IBM Cloudant verwenden und Ihre Daten in der Cloud speichern.

Bevor Sie beginnen, führen Sie die vorbereitenden Schritte am Anfang dieses Themas durch.

Gehen Sie wie folgt vor, um eine statusabhängige Gruppe bereitzustellen, von der Objektspeicher verwendet wird

  1. Erstellen Sie eine Konfigurationsdatei für die statusabhängige Gruppe und den Service, den Sie verwenden, um die statusabhängige Gruppe zugänglich zu machen. In den folgenden Beispielen wird veranschaulicht, wie NGINX als statusabhängige Gruppe mit drei Replikaten bereitgestellt wird; hierbei wird von jedem Replikat jeweils ein separates Bucket verwendet oder von allen Replikaten wird ein gemeinsames Bucket verwendet.

    Beispiel für die Erstellung einer statusabhängigen Gruppe mit drei Replikaten, wobei jedes Replikat ein eigenes Bucket verwendet.

    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-v01
      namespace: default
      labels:
        app: nginx-v01 # must match spec.template.metadata.labels and spec.selector.matchLabels in stateful set YAML
    spec:
      ports:
      - port: 80
        name: web
      clusterIP: None
      selector:
        app: nginx-v01 # must match spec.template.metadata.labels and spec.selector.matchLabels in stateful set YAML
    ---
    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: web-v01
      namespace: default
    spec:
      selector:
        matchLabels:
          app: nginx-v01 # must match spec.template.metadata.labels in stateful set YAML and metadata.labels in service YAML
      serviceName: "nginx-v01"
      replicas: 3
      template:
        metadata:
          labels:
            app: nginx-v01 # must match spec.selector.matchLabels in stateful set YAML and metadata.labels in service YAML
        spec:
          terminationGracePeriodSeconds: 10
          containers:
          - name: nginx
            image: registry.k8s.io/nginx-slim:0.8
            ports:
            - containerPort: 80
              name: web
            volumeMounts:
            - name: mypvc
              mountPath: /usr/share/nginx/html
      volumeClaimTemplates:
      - metadata:
          name: mypvc
          annotations:
            ibm.io/auto-create-bucket: "true"
            ibm.io/auto-delete-bucket: "true"
            ibm.io/bucket: ""
            ibm.io/secret-name: mysecret
            volume.beta.kubernetes.io/storage-class: ibmc-s3fs-standard-perf-cross-region
            volume.beta.kubernetes.io/storage-provisioner: ibm.io/ibmc-s3fs
        spec:
          accessModes: [ "ReadWriteOnce" ]
          storageClassName: "ibmc-s3fs-standard-perf-cross-region"
          resources:
            requests:
              storage: 1Gi
    

    Beispiel für die Erstellung einer statusabhängigen Gruppe mit drei Replikaten, die dasselbe Bucket gemeinsam nutzen mybucket.

    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-v01
      namespace: default
      labels:
        app: nginx-v01 # must match spec.template.metadata.labels and spec.selector.matchLabels in stateful set YAML
    spec:
      ports:
      - port: 80
        name: web
      clusterIP: None
      selector:
        app: nginx-v01 # must match spec.template.metadata.labels and spec.selector.matchLabels in stateful set YAML
    ---
    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: web-v01
      namespace: default
    spec:
      selector:
        matchLabels:
          app: nginx-v01 # must match spec.template.metadata.labels in stateful set YAML and metadata.labels in service YAML
      serviceName: "nginx-v01"
      replicas: 3
      template:
        metadata:
          labels:
            app: nginx-v01 # must match spec.selector.matchLabels in stateful set YAML and metadata.labels in service YAML
        spec:
          terminationGracePeriodSeconds: 10
          containers:
          - name: nginx
            image: registry.k8s.io/nginx-slim:0.8
            ports:
            - containerPort: 80
              name: web
            volumeMounts:
            - name: mypvc
              mountPath: /usr/share/nginx/html
      volumeClaimTemplates:
      - metadata:
          name: mypvc
          annotations:
            ibm.io/auto-create-bucket: "false"
            ibm.io/auto-delete-bucket: "false"
            ibm.io/bucket: mybucket
            ibm.io/secret-name: mysecret
            volume.beta.kubernetes.io/storage-class: ibmc-s3fs-standard-perf-cross-region
            volume.beta.kubernetes.io/storage-provisioner: ibm.io/ibmc-s3fs
        spec:
          accessModes: [ "ReadOnlyMany" ]
          storageClassName: "ibmc-s3fs-standard-perf-cross-region"
          resources:
            requests:
              storage: 1Gi
    
name

Geben Sie einen Namen für die statusabhängige Gruppe ein. Der von Ihnen eingegebene Name wird verwendet, um den Namen für Ihren PVC im folgenden Format zu erstellen: <volume_name>-< statefulset_name>-<replica_number>.

serviceName

Geben Sie den Namen des Service ein, der verwendet werden soll, um die statusabhängige Gruppe zugänglich zu machen.

replicas

Geben Sie die Anzahl der Replikate für die statusabhängige Gruppe ein.

matchLabels

Geben Sie unter "spec" im Abschnitt "selector" -> "matchLabels" alle Bezeichnungen ein, die Sie in die statusabhängige Gruppe und in den PVC einschließen möchten. Bezeichnungen, die Sie im volumeClaimTemplates Ihrer statusabhängigen Gruppe angeben, werden von Kubernetes nicht berücksichtigt. Diese Bezeichnungen müssen stattdessen in den Abschnitten spec.selector.matchLabels und spec.template.metadata.labels der YAML-Datei Ihrer statusabhängigen Gruppe definiert werden. Um sicherzustellen, dass alle Replikate Ihrer statusabhängigen Gruppe in den Lastausgleich Ihres Service einbezogen werden, schließen Sie dieselbe Bezeichnung ein, die Sie im spec.selector-Abschnitt Ihrer Service-YAML verwendet haben.

labels

Geben Sie im Abschnitt für Bezeichnungen der Spezifikationsmetadaten dieselben Bezeichnungen ein, die Sie zum Abschnitt spec.selector.matchLabels der YAML-Datei für Ihre statusabhängige Gruppe hinzugefügt haben.

terminationGracePeriodSeconds

Geben Sie die Anzahl der Sekunden ein, die dem System zur Verfügung stehen soll, um kubelet den Pod, auf dem Ihre Stateful-Set-Replik läuft, sicher zu beenden. Weitere Informationen finden Sie in Pods löschen.

VolumeClaimTemplates.name

Geben Sie im Abschnitt 'spec: volumeClaimTemplates: metadata' einen Namen für Ihren Datenträger ein. Verwenden Sie den Namen, den Sie im Abschnitt spec.containers.volumeMount.name definiert haben. Der hier eingegebene Name wird verwendet, um den Namen für Ihren PVC im Format <volume_name>-<statefulset_name>-<replica_number> zu erstellen.

ibm.io/auto-create-bucket

Legen Sie im Abschnitt 'spec: volumeClaimTemplates: metadata' eine Annotation fest, um zu konfigurieren, wie Buckets erstellt werden. Wählen Sie eine der beiden folgenden Optionen aus:

  • true: Wählen Sie diese Option aus, damit für jedes Replikat der statusabhängigen Gruppe automatisch ein Bucket erstellt wird. Beachten Sie, dass die Serviceberechtigungsnachweise Ausgabeprogramm-Berechtigungen haben müssen, um das Bucket automatisch zu erstellen.
  • false: Wählen Sie diese Option aus, wenn ein vorhandenes Bucket in Ihren Replikaten der statusabhängigen Gruppe gemeinsam genutzt werden soll. Stellen Sie sicher, dass der Name des Buckets im Abschnitt spec.volumeClaimTemplates.metadata.annotions.ibm.io/bucket der YAML-Datei für Ihre statusabhängige Gruppe definiert ist.
ibm.io/auto-delete-bucket

Legen Sie im Abschnitt 'spec: volumeClaimTemplates: metadata' eine Annotation fest, um zu konfigurieren, wie Buckets gelöscht werden. Wählen Sie eine der beiden folgenden Optionen aus:

  • true: Ihre Daten, das Bucket und der persistente Datenträger werden automatisch entfernt, wenn Sie die PVC löschen. Ihre IBM Cloud Object Storage-Serviceinstanz bleibt bestehen und wird nicht gelöscht. Wenn Sie diese Option auf 'true' setzen, müssen Sie ibm.io/auto-create-bucket: true und ibm.io/bucket: ""festlegen, damit Ihr Bucket automatisch mit einem Namen im Format tmp-s3fs-xxxxerstellt wird.
  • false: Beim Löschen der PVC wird der PV automatisch gelöscht, aber Ihre Daten und das Bucket in Ihrer IBM Cloud Object Storage-Serviceinstanz bleiben erhalten. Um auf Ihre Daten zugreifen zu können, müssen Sie einen neuen PVC mit dem Namen des vorhandenen Buckets erstellen.
ibm.io/bucket

Legen Sie im Abschnitt 'spec: volumeClaimTemplates: metadata' eine Annotation für die Bucketdetails fest. Wählen Sie eine der beiden folgenden Optionen aus:

  • Wenn ibm.io/auto-create-bucket auf true gesetzt ist: Geben Sie den Namen des Buckets ein, das in IBM Cloud Object Storage erstellt werden soll. Wenn außerdem ibm.io/auto-delete-bucket auf true gesetzt ist, muss dieses Feld leer bleiben, damit Ihrem Bucket automatisch ein Name im Format tmp-s3fs-xxxx zugewiesen wird. Der Name muss in IBM Cloud Object Storage eindeutig sein.
  • Wenn ibm.io/auto-create-bucket auf false gesetzt ist: Geben Sie den Namen des im Cluster vorhandenen Buckets ein, auf das Sie zugreifen möchten.
ibm.io/secret-name

Geben Sie im Abschnitt 'spec volume claim templates metadata annotations' den Namen des geheimen Schlüssels ein, der die Berechtigungsnachweise für IBM Cloud Object Storage enthält, die Sie zuvor erstellt haben. Wenn Sie Ihre IBM Cloud Object Storage-Berechtigungsnachweise zu den Standardspeicherklassen hinzufügen, dürfen Sie den geheimen Schlüssel nicht im PVC auflisten.

kubernetes.io/storage-class

Geben Sie unter "spec" -> "volumeClaimTemplates" im Abschnitt "metadata" -> "annotations" die Speicherklasse ein, die Sie verwenden möchten. Wählen Sie eine der beiden folgenden Optionen aus:

  • Wenn ibm.io/auto-create-bucket: "true": Geben Sie die Speicherklasse ein, die Sie für Ihr neues Bucket verwenden möchten.
  • Wenn ibm.io/auto-create-bucket: "false": Geben Sie die Speicherklasse ein, die Sie zum Erstellen Ihres vorhandenen Buckets verwendet haben.

Um vorhandene Speicherklassen aufzulisten, führen Sie folgenden Befehl aus oc get sc | grep s3. Wenn Sie keine Speicherklasse angeben, wird der PVC mit der Standardspeicherklasse erstellt, die in Ihrem Cluster festgelegt ist. Stellen Sie sicher, dass von der Standardspeicherklasse der Bereitsteller ibm.io/ibmc-s3fs verwendet wird, damit die statusabhängige Gruppe mit Objektspeicher bereitgestellt wird.

storageClassName

Geben Sie im Abschnitt 'spec volume claim templates spec' dieselbe Speicherklasse ein, die Sie im Abschnitt spec.volumeClaimTemplates.metadata.annotations.volume.beta.kubernetes.io/storage-class der YAML-Datei für Ihre statusabhängige Gruppe eingegeben haben.

storage

Geben Sie im Abschnitt (spec volume claim templates spec resource requests' eine fiktive Größe für Ihr IBM Cloud Object Storage-Bucket in Gigabyte ein. Die Größe ist für Kubernetes erforderlich, wird in IBM Cloud Object Storage jedoch nicht berücksichtigt. Sie können eine beliebige Größe angeben. Der tatsächlich von Ihnen in IBM Cloud Object Storage genutzte Speicherplatz kann davon abweichen und wird gemäß der Preistabelle abgerechnet.