1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

IBMCloud IKS(Kubernetes)へのObject Storageの接続 Part3

Last updated at Posted at 2024-04-23

目的

IBMCloudにてIKSクラスタへオブジェクトストレージを接続するには、サービスの注文から
セキュリティ設定、オブジェクトストレージ接続のプラグイン導入の設定が必要となる。
これらの操作について、スクリーンショットやCLIコマンドの交えて解説する

全体の流れ

1.IKSクラスタの作成(この部分は対象外とする)

Part1の内容に関しては、こちらの記事で説明
2.IBM Cloud Object Storage のセットアップ:Part1

Part2の内容に関しては、こちらの記事で説明
3.IBM Cloud Object Storage プラグインのインストール:Part2

今回の記事は「4. アプリへのオブジェクト・ストレージの追加」の内容を記載
4.アプリへのオブジェクト・ストレージの追加: Part3

アプリへのオブジェクト・ストレージの追加

①PVCの定義yamlファイルを作成する

annotationsの詳細についてdocsに記載があるので必要に応じて記載する

secret-nameについては、Part1のこちらの手順で作成した名前とすること

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: icos-pvc
  namespace: sample
  annotations:
    ibm.io/auto-create-bucket: "true"
    ibm.io/auto-delete-bucket: "true"
    ibm.io/quota-limit: "false"
    ibm.io/secret-name: "cos-write-access"
    ibm.io/secret-namespace: "xxxxx"
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi 
  storageClassName: ibmc-s3fs-standard-regional 

②PVCの作成

kubectl apply -f pvc.yaml -n xxxxx

③PVCのバインド確認

問題なく作成された場合、status->Boundとなる

% kubectl get pvc -n xxxxx
NAME       STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS                  AGE
icos-pvc   Bound    pvc-32ccca74-8c41-4afe-841f-xxxxx   10Gi       RWO            ibmc-s3fs-standard-regional   9m26s

ICOS ~ Key Protecy間の権限不足のエラーの対処

pvc作成時に、権限が不足している場合、下記の様なエラーとなる
ICOSからKeyProtectへの参照権限がない状況

kubectl describe pvc -n xxxxx

略
  Type     Reason              Age    From                                                                                                   Message
  ----     ------              ----   ----                                                                                                   -------
  Warning  ProvisioningFailed  2m57s  ibm.io/ibmc-s3fs_ibmcloud-object-storage-plugin-5565fbd668-5zbs4_40fbfcc8-ac04-4a7a-8562-0d595c8b0e7a  failed to provision volume with StorageClass "ibmc-s3fs-standard-regional": icos-pvc:co9j451t0t7uths6kb10 :cannot create bucket tmp-s3fs-10202b8f-6b27-47c3-b3ba-483ae5944d2e: ServiceNotAuthorized: The specified COS Service Instance does not have sufficient permissions to access the resource associated with the KMS key CRN.

以下手順にて権限を付与する必要がある
IBMCloudポータル -> 管理 -> アクセス(IAM) -> 許可を選択
Pasted_Image_2024_04_16__15_20.png

作成を選択
Pasted_Image_2024_04_16__15_25.png

ソース:Cloud Object Storage
ターゲット:Key Protect
役割:リーダー
その他は、環境に応じてリソースグループ単位であったり、リソース単体でで制御する

Pasted_Image_2024_04_16__15_28.png

作成後の画面
Pasted_Image_2024_04_16__15_33.png

サーバへのマウント

⑤PV をデプロイメントにマウント

VolumeMounts
volumeMountsセクションは、ボリュームをコンテナ内の特定のパスにマウントする方法を定義する

volumes
volumesセクションは、どのようなタイプのボリュームを使うか(PersistentVolumeClaim、ConfigMap、Secretなど)と、そのボリュームに対する詳細設定を定義する

YAMLファイルの例

apiVersion: apps/v1
kind: Deployment
metadata:
  name: icos-nginx 
  namespace: xxxx
  labels:
    app: icos-nginx
spec:
  selector:
    matchLabels:
      app: service1
  template:
    metadata:
      labels:
        app: service1
    spec:
      containers:
      - image: jp.icr.io/xxx/nginx:latest
        name: iks-enginx-icos
        securityContext:
          runAsUser: 0
        volumeMounts:
        - name: volume
          mountPath: /data
      volumes:
      - name: volume
        persistentVolumeClaim:
          claimName: icos-pvc
      imagePullSecrets:
        - name: myregistrykey

persistentVolumeClaimは作成したPVCの名前を指定する

% ku get pvc -n xxxxx
NAME        STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS                  AGE
icos-pvc    Bound    pvc-32ccca74-8c41-4afe-841f-xxxxx   10Gi       RWO            ibmc-s3fs-standard-regional   6d17h

動作確認

実行中の Kubernetes ポッド内のコンテナで特定のコマンドを実行するためkubectl execコマンドを使用する。このコマンドは、ポッド内のコンテナに対してリモートでコマンドを実行する。

-i: このフラグはポッドの標準入力をオープンに保ち、ユーザがコンテナ内で対話式コマンドを実行する
-t (--tty): このフラグは疑似ターミナル(TTY)にてユーザーは通常のターミナルセッションと同様の対話型セッションを開く
bash: 実行するコマンドで、ここでは Bash シェルを開始します。これにより、ユーザーはコンテナ内で Bash セッションを開始し、様々なコマンドを対話的に実行できるようになる。

% ku get pod -n khoshina
NAME                          READY   STATUS    RESTARTS   AGE
icos-nginx-647c8b5f4b-445jh   1/1     Running   0          11m

% kubectl exec icos-nginx-647c8b5f4b-445jh -it bash -n xxxxx
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.

ディスクスペースの使用状況を確認
Filesystemがs3fsとして/dataがマウントされていることがわかる

root@icos-nginx-647c8b5f4b-445jh:/# df -h
Filesystem      Size  Used Avail Use% Mounted on
overlay          98G  6.5G   87G   7% /
tmpfs            64M     0   64M   0% /dev
tmpfs           1.9G     0  1.9G   0% /sys/fs/cgroup
s3fs            4.0G     0  4.0G   0% /data
/dev/vda2        98G  6.5G   87G   7% /etc/hosts
shm              64M     0   64M   0% /dev/shm
tmpfs           2.7G   16K  2.7G   1% /run/secrets/kubernetes.io/serviceaccount
tmpfs           1.9G     0  1.9G   0% /proc/acpi
tmpfs           1.9G     0  1.9G   0% /proc/scsi
tmpfs           1.9G     0  1.9G   0% /sys/firmware

/dataにアクセスし、aaaaテキストをtext.txtに書き込む

root@icos-nginx-647c8b5f4b-445jh:/# cd /data
root@icos-nginx-647c8b5f4b-445jh:/data# ls
dev  etc  var
root@icos-nginx-647c8b5f4b-445jh:/data# echo aaaa > test.txt

書き込んだファイルの中身が見えることを確認

root@icos-nginx-647c8b5f4b-445jh:/data# cat test.txt 
aaaa
root@icos-nginx-647c8b5f4b-445jh:/data# 
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?