LoginSignup
1
3

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

Last updated at Posted at 2024-04-12

目的

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

全体の流れ

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

今回の記事は「2. [IBM Cloud Object Storage のセットアップ]」の内容を記載
2.IBM Cloud Object Storage のセットアップ:Part1

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

Part3の内容に関しては、こちらの記事で説明
4.アプリへのオブジェクト・ストレージの追加: Part3

IBM Cloud Object Storage のセットアップ

基本的にIBMCloudドキュメントを参照して進めれば問題ない
一部説明が不足している箇所があるので補足しつつ進める

オブジェクト・ストレージ・サービス・インスタンスの作成

IBMCloud WebConsoleの検索メニューより「Object」で検索し、製品ページに遷移する
直接ページに飛ぶにはIBM Cloud Object Storage カタログ・ページを開く
Pasted_Image_2024_04_12__13_21.png

インフラストラクチャーの選択:IBMCloud内のリソースであるIKSから利用するため、IBM Cloudを選択
プラン:利用用途に応じてプランを選択する。今回はテストのため、Freeを選択
サービス名:任意の名前
リソースグループ:どのVPCリソースグループに作成するか選択
タグ:任意で設定

最後に作成を選択し、ICOSの注文を完了する

Pasted_Image_2024_04_12__13_24.png

ICOSの注文が正常に完了すると、作成したインスタンス名のページに遷移する
Pasted_Image_2024_04_12__13_29.png

IBM Cloud Object Storage のサービス資格情報の作成

IBM Cloud Object Storage のサービス資格情報の作成とは、IBM Cloud 上の Object Storage サービスへのアクセスを許可するために必要な認証情報を生成するプロセスで、APIやアプリケーションがセキュアにストレージサービスにアクセスするために使用される。

  • インスタンスのページより、**「サービス資格情報」を選択し、続けて「新規資格情報」**を選択
    Pasted_Image_2024_04_12__13_36.png

資格情報の作成ページ
名前:任意の名前
ロール:書き込みを許可するため、ライターとする
アクセス権の詳細は、下記ページを参照
Identity and Access Management の役割

最後に追加を選択し、完了する
Pasted_Image_2024_04_16__11_59.png

apikeyの確認

問題なく作成されると、サービス資格情報一覧に鍵が見えてくるので、apikeyをメモしておく
Pasted_Image_2024_04_12__13_44.png

画像上だとbw~~~~~~~~~~~~~~~~~~~~~~~~~~Mの部分

オブジェクト・ストレージ・サービス資格情報用のシークレットの作成

オブジェクトストレージサービス資格情報用のシークレットの作成とは、IKS環境で使用するために、サービス資格情報を安全に保存し、管理するもの。このシークレットには、アクセスキーやシークレットキーなど、オブジェクトストレージサービスにアクセスするために必要な機密情報が含まれる。

IBM Cloud Object Storage サービス・インスタンスの GUID を取得

service_nameは先ほど作成したICOSの名前を""で囲って記載する

コマンド
ibmcloud resource service-instance <service_name> | grep GUID

実際のコマンド結果
% ibmcloud resource service-instance "Cloud Object Storage-cg" | grep GUID
GUID:                  2e09a007-xxxx-xxxx-xxxx-xxxxxxxxxx

アカウント内リソース一覧を確認するには以下のコマンドで確認できる

% ibmcloud resource service-instances
OK
Name                                                                                                    Location   State    Type               Resource Group ID
Cloud Object Storage-acs-paas                                                                           global     active   service_instance   d72766061fce4e839ce2bdd1247e621c
Cloud Object Storage-cg                                                                                 global     active   service_instance   d72766061fce4e839ce2bdd1247e621c

サービス資格情報を保管する Kubernetes シークレットを作成

Kubernetesのシークレットは、パスワード、OAuthトークン、SSHキーなどの機密情報を保存するためのリソースで、これらの情報はプレーンテキストでPodの設定ファイルやソースコードに含めるのではなく、シークレットに安全に格納しておくことが推奨される

IKSクラスタにログインしておく

ibmcloud ks cluster config --cluster <ClusterID>

API キーを使用する 例
入力するapikeyはここで確認した

コマンド
kubectl create secret generic cos-write-access --type=ibm/ibmc-s3fs --from-literal=api-key=<api_key> --from-literal=service-instance-id=<service_instance_guid> -n <名前空間>

実際のコマンド結果
kubectl create secret generic cos-write-access --type=ibm/ibmc-s3fs --from-literal=api-key=bwxxxxxxxxxxxxxxxxxxxM --from-literal=service-instance-id=2e09a007-xxxx-xxxx-xxxx-xxxxxxxxxx -n xxxxx
secret/cos-write-access created

Key Protect IBM Cloud Object Storage s3fs プラグインを使用して作成されたバケットの暗号化の準備

暗号化しない場合は、こちらの手順は不要

バケットの暗号化をすることで、保存されるデータが安全に暗号化されることが保証されるため実施しておく

KeyProtectインスタンスの作成

IBMCloud WebConsoleの検索メニューより「Key Protect」で検索し、製品ページに遷移する
直接ページに飛ぶにはIBM Cloud Key Protect カタログ・ページを開く
Pasted_Image_2024_04_12__14_45.png

インフラストラクチャーの選択:IBMCloud内のリソースであるIKSから利用するため、IBM Cloudを選択
プラン:プランは一つしかないので選択
サービス名:任意の名前
リソースグループ:どのVPCリソースグループに作成するか選択
タグ:任意で設定

Screenshot_2024-04-12_at_14_53_40.png

最後に作成を選択し、Key Protectの注文を完了する

ルート鍵の作成

注文完了後に、作成したKey Protectのページから -> 追加を選択
Pasted_Image_2024_04_12__14_59.png

ルート鍵 -> 鍵の名前(任意名) -> 鍵の追加を選択
Pasted_Image_2024_04_12__15_03.png

ルート鍵のCRNの確認

CLIによる確認

アカウントにあるKey Protectインスタンスの一覧を表示
% ibmcloud resource service-instances --service-name kms
OK
Name                   Location   State    Type               Resource Group ID
Key Protect-acs-paas   jp-tok     active   service_instance   d72766061fce4e839ce2bdd1247e621c

インスタンスのCRNを取得
% ibmcloud resource service-instance "Key Protect-acs-paas" --id
crn:v1:bluemix:public:kms:jp-tok:a/dbxxxxxxxxxxxxxx:xxxx699c-8xxe-4xxx-xxxx-7bxxxxxx:: 90xxxx9c-8xxe-xxx-xxx-xxxxxxx

UUIDをメモする
90xxxx9c-8xxe-xxx-xxx-xxxxxxxがUUID

ルート鍵一覧のIDを取得
% ibmcloud kp keys --instance-id "90xxxx9c-8xxe-xxx-xxx-xxxxxxx"

Targeting endpoint: https://jp-tok.kms.cloud.ibm.com
Retrieving keys...
OK
Key ID                                 Key Name
1xxa7e5d-xx1b-xx6f-9xxx-xxxxxxx07e5   iks-key

CRNを出力
% ibmcloud kp key show 1xxa7e5d-xx1b-xx6f-9xxx-xxxxxxx07e5 --instance-id "90xxxx9c-8xxe-xxx-xxx-xxxxxxx" --output json | grep crn

Targeting endpoint: https://jp-tok.kms.cloud.ibm.com
	"crn": "crn:v1:bluemix:public:kms:jp-tok:a/xxxxxxx0e468cbxxxxxxxdb82aee6fe:9xxxxxxx9c-882e-xxx0-a6bd-7ba0xxxxxxx914:key:1xxxxxxxd-1xxx-4xxx-xxxc-xxx1xxx07e5",

GUIによる確認
作成したルート鍵の右にあるボタンを選択
Pasted_Image_2024_04_12__15_07.png

鍵の詳細を選択
Pasted_Image_2024_04_12__15_12.png

CRNが確認できる
Pasted_Image_2024_04_12__15_14.png

IBM Cloud Object Storage シークレットの YAML ファイルを作成

secret-key:前手順で作成したICOSインスタンスの資格情報で確認できるapikey
service-instance-id:前手順で確認したObject Storage サービス・インスタンスのGUID
kp-root-key-crn:前手順で作成したKey Protectルート鍵の詳細で確認できるCRN
name:前手順で作成したkubernetesシークレットの名前

access-key、secret-keyおよびkp-root-key-crnはbase64形式にエンコードする必要がある

エンコードコマンド

echo -n 'エンコードしたいシークレットやCRN' | base64
apiVersion: v1
data:
    secret-key: <base64のapi-key>
    service-instance-id: <base64のservice-instance-id>
    kp-root-key-crn: <base64のCRN>
kind: Secret
metadata:
    name: cos-write-access
type: ibm/ibmc-s3fs

・シークレットのデプロイ

kubectl apply -f secret.yaml -n xxxxx

クラスター内のシークレットの確認

% kubectl get secret -n xxxxx
NAME                                                           TYPE                             DATA   AGE
cos-write-access                                               ibm/ibmc-s3fs                    3      3m2s

・kubectl create secretコマンドでやる場合(Base64形式にしないでOK)

% kubectl create secret generic cos-write-access --type=ibm/ibmc-s3fs --from-literal=api-key=bwxxxxxxxxxxxxxxxxxxxM --from-literal=service-instance-id=2e09a007-xxxx-xxxx-xxxx-xxxxxxxxxx --from-literal=kp-root-key-crn=crn:v1:bluemix:public:kms:jp-tok:a/xxxxxxx0e468cbxxxxxxxdb82aee6fe:9xxxxxxx9c-882e-xxx0-a6bd-7ba0xxxxxxx914:key:1xxxxxxxd-1xxx-4xxx-xxxc-xxx1xxx07e5 -n xxxxx

コマンドで実施した場合、下記のコマンドでyaml形式の状態を見ることができる

% kubectl get secret -n xxxxx -o yaml
apiVersion: v1
items:
- apiVersion: v1
  data:
    api-key: dEgxxxxx
    kp-root-key-crn: Y3JuOnYxOmJsdWVtaXgxxx==
    service-instance-id: xxxQxMGVh
  kind: Secret
  metadata:
    creationTimestamp: "2024-04-16T05:56:27Z"
    name: cos-write-access
    namespace: xxxxxx
    resourceVersion: "787308"
    uid: e3bb2d45-5884-448a-9f16-b9exxxx6f
  type: ibm/ibmc-s3fs

  

続き
IBM Cloud Object Storage プラグインのインストール

1
3
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
3