VPC: IBM Cloud Object Storage での許可された IP アドレスのセットアップ
仮想プライベートクラウド
VPC Cloud サービス・エンドポイントの送信元 IP アドレスに、IBM Cloud Object Storage バケットへのアクセスを許可することができます。 許可された IP アドレスをセットアップすると、それらの IP アドレス (例えばアプリ・ポッドのものなど) からしかバケット・データにアクセスできなくなります。
- 最小限必要な許可
- Red Hat OpenShift on IBM Cloud サービスに対するマネージャーのサービス・アクセス役割。
- IBM Cloud Object Storage サービスに対するライターのサービス・アクセス役割。
-
指示に従って、
ibmcHelm プラグインをインストールします。 必ずibm-object-storage-pluginをインストールし、bucketAccessPolicyオプションをtrueに設定してください。 -
IBM Cloud Object Storage インスタンスに対する
Managerの HMAC サービス資格情報 1 つとWriterの HMAC サービス資格情報 1 つを作成します。 -
IBM Cloud Object Storage のマネージャーの資格情報の
apikeyを base64 でエンコードします。echo -n "<cos_manager_apikey>" | base64 -
IBM Cloud Object Storage のライターの資格情報の
access-keyおよびsecret-keyを base64 でエンコードします。echo -n "<cos_writer_access-key>" | base64 echo -n "<cos_writer_secret-key>" | base64 -
エンコードした値を指定してシークレットの構成ファイルを作成します。
access-keyおよびsecret-keyには、作成したライターの HMAC 資格情報のaccess-keyおよびsecret-keyを base64 でエンコードしたものを入力します。res-conf-apikeyには、マネージャーの HMAC 資格情報のapikeyを base64 でエンコードしたものを入力します。apiVersion: v1 kind: Secret metadata: name: <secret_name> type: ibm/ibmc-s3fs data: access-key: # Enter your base64 encoded COS Writer access-key secret-key: # Enter your base64 encoded COS Writer secret-key res-conf-apikey: # Enter your base64 encoded COS Manager api-key -
クラスター内にシークレットを作成します。
oc create -f secret.yaml -
このシークレットが作成されたことを確認します。
oc get secrets -
作成したシークレットを使用する PVC を作成します。 データをキャッシュに入れるバケットを自動的に作成するために、
ibm.io/auto-create-bucket: "true"およびibm.io/auto_cache: "true"アノテーションを設定します。kind: PersistentVolumeClaim apiVersion: v1 metadata: name: <pvc_name> annotations: ibm.io/auto-create-bucket: "true" ibm.io/auto-delete-bucket: "false" ibm.io/auto_cache: "true" ibm.io/bucket: "<bucket_name>" ibm.io/secret-name: "<secret_name>" 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. spec: accessModes: - ReadWriteMany resources: requests: storage: 8Gi storageClassName: ibmc-s3fs-standard-regional volumeMode: Filesystem -
VPC の Cloud サービス・エンドポイントの送信元 IP アドレスのリストを取得します。
-
VPC のリストを取得します。
ibmcloud is vpcs -
VPC の詳細を取得し、Cloud サービス・エンドポイントの送信元 IP アドレスをメモします。
ibmcloud is vpc <vpc_ID>出力例
... Cloud Service Endpoint source IP addresses: Zone Address us-south-1 10.249.XXX.XX us-south-2 10.249.XXX.XX us-south-3 10.249.XXX.XX
-
-
VPC の Cloud サービス・エンドポイントの送信元 IP アドレスが IBM Cloud Object Storage バケットで許可されていることを確認します。
-
IBM Cloud Object Storage のリソース・リストから、IBM Cloud Object Storage インスタンスを選択し、PVC で指定したバケットを選択します。
-
「アクセス・ポリシー」>**「許可された IP」**を選択し、VPC の Cloud サービス・エンドポイントの送信元 IP アドレスが表示されていることを確認します。
コンソールからバケットの読み取りやバケットへの書き込みを行うことはできません。 バケットにはクラスターのアプリ・ポッドの中からしかアクセスできません。
-
クラスター内にアプリを作成します。
oc create -f app.yaml
- アプリ・ポッドが
Runningであることを確認します。
oc get pods | grep <app_name>
-
ボリュームがマウントされていること、および COS バケットの読み書きが行えることを確認します。
-
アプリ・ポッドにログインします。
oc exec -it <pod_name> bash -
COS バケットがアプリ・ポッドからマウントされていること、および COS バケットの読み書きが行えることを確認します。 disk free (
df) コマンドを実行して、システムの使用可能なディスクを表示します。 COS バケットには、s3fsファイル・システム・タイプと、PVC で指定したマウント・パスが表示されます。dfこの例では、COS バケットは
/cos-vpcにマウントされています。Filesystem 1K-blocks Used Available Use% Mounted on overlay 102048096 9071556 87786140 10% / tmpfs 65536 0 65536 0% /dev tmpfs 7565792 0 7565792 0% /sys/fs/cgroup shm 65536 0 65536 0% /dev/shm /dev/vda2 102048096 9071556 87786140 10% /etc/hosts s3fs 274877906944 0 274877906944 0% /cos-vpc tmpfs 7565792 44 7565748 1% /run/secrets/kubernetes.io/serviceaccount tmpfs 7565792 0 7565792 0% /proc/acpi tmpfs 7565792 0 7565792 0% /proc/scsi tmpfs 7565792 0 7565792 0% /sys/firmware -
ディレクトリーを、COS バケットがマウントされているディレクトリーに変更します。 この例では、バケットは
/cos-vpcにマウントされています。cd cos-vpc -
test.txtファイルを COS バケットに書き込み、ファイルのリストを表示して、そのファイルが書き込まれたことを確認します。touch test.txt && ls -
ファイルを削除し、アプリ・ポッドからログアウトします。
rm test.txt && exit