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:
- Erstellen Sie Ihre IBM Cloud Object Storage-Serviceinstanz und bereiten Sie sie vor.
- Erstellen Sie einen geheimen Schlüssel, um Ihre IBM Cloud Object Storage-Serviceberechtigungsnachweise zu speichern.
- Entscheiden Sie über die Konfiguration Ihres IBM Cloud Object Storage.
Gehen Sie wie folgt vor, um IBM Cloud Object Storage zu Ihrem Cluster hinzuzufügen:
-
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 inibm.io/bucketangeben.
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 auftruesetzen, müssen Sieibm.io/auto-create-bucket: trueundibm.io/bucket: ""festlegen, sodass Ihr Bucket automatisch mit einem Namen im Formattmp-s3fs-xxxxerstellt 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-bucketauftruefestgelegt ist: Geben Sie den Namen des Buckets ein, das Sie in IBM Cloud Object Storage erstellen wollen. Wenn außerdemibm.io/auto-delete-bucketauftruegesetzt ist, muss dieses Feld leer bleiben, damit Ihrem Bucket automatisch ein Name im Formattmp-s3fs-xxxxzugewiesen wird. Der Name muss in IBM Cloud Object Storage eindeutig sein. - Wenn
ibm.io/auto-create-bucketauffalsefestgelegt 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 inibm.io/bucketangeben. ibm.io/quota-limit-
- Damit diese Annotation verwendet werden kann, müssen Sie während der Installation die Option
--set quotaLimit=trueangeben. Wenn Sie diese Anmerkung verwenden möchten, aber--set quotaLimit=truewä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-limitauffalsegesetzt ist, wird das Kontingent für Ihren PVC nicht erzwungen. Dies bedeutet, dass die tatsächliche Speichermenge in Byte diestorage: <size>überschreitet, die Sie abhängig von Ihrer App angegeben haben.
- Damit diese Annotation verwendet werden kann, müssen Sie während der Installation die Option
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
ibmcruft 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 Sieoc 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 Formathttps://<s3fs_private_service_endpoint>für private Cloud-Serviceendpunkte oderhttp://<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 Optionibm.io/endpointnicht 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
falsestandardmäßig aktiviert. Setzen Sie diese Option auftrue, um die Bucket-Versionierung zu aktivieren. Setzen Sie diese Option auffalse, 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.
-
Erstellen Sie die PVC in Ihrem Cluster.
oc apply -f filepath/pvc.yaml -
Überprüfen Sie, ob Ihr PVC erstellt und an den persistenten Datenträger (PV) gebunden wurde.
oc get pvcBeispielausgabe
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 -
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.
-
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.appundlabels.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-listaus, 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/nameidentisch. 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.
-
Erstellen Sie die Implementierung.
oc apply -f <local_yaml_path> -
Ü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 -
Ü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 -
Navigieren Sie zu Ihrem Datenträgermountpfad, den Sie in Ihrer App-Bereitstellung definiert haben.
-
Erstellen Sie eine Textdatei.
echo "This is a test" > test.txt -
Navigieren Sie in der IBM Cloud-Konsole zu Ihrer IBM Cloud Object Storage-Serviceinstanz.
-
Wählen Sie im Menü die Option Buckets aus.
-
Öffnen Sie Ihr Bucket und überprüfen Sie, dass das von Ihnen erstellte Element
test.txtangezeigt 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
-
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: 1GiBeispiel 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
volumeClaimTemplatesIhrer statusabhängigen Gruppe angeben, werden von Kubernetes nicht berücksichtigt. Diese Bezeichnungen müssen stattdessen in den Abschnittenspec.selector.matchLabelsundspec.template.metadata.labelsder 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 imspec.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.matchLabelsder 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
kubeletden 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.namedefiniert 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/bucketder 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: trueundibm.io/bucket: ""festlegen, damit Ihr Bucket automatisch mit einem Namen im Formattmp-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.
- 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/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-bucketauf true gesetzt ist: Geben Sie den Namen des Buckets ein, das in IBM Cloud Object Storage erstellt werden soll. Wenn außerdemibm.io/auto-delete-bucketauftruegesetzt ist, muss dieses Feld leer bleiben, damit Ihrem Bucket automatisch ein Name im Formattmp-s3fs-xxxxzugewiesen wird. Der Name muss in IBM Cloud Object Storage eindeutig sein. - Wenn
ibm.io/auto-create-bucketauf false gesetzt ist: Geben Sie den Namen des im Cluster vorhandenen Buckets ein, auf das Sie zugreifen möchten.
- Wenn
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.
- Wenn
-
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 Bereitstelleribm.io/ibmc-s3fsverwendet 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-classder 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.