概要
IBMCloud上のRedhat Openshift環境にてPV(PersistentVolume:外部ストレージ)としてICOSオブジェクトストレージを利用する方法をまとめました。
以下の3つのステップで記載します。
- IBM Cloud Object Storage のセットアップ <- この記事の範囲 (part1)
- IBM Cloud Object Storage プラグインのインストール [Link]
- アプリへのオブジェクト・ストレージの追加 [Link]
IBMCloud Object Storage Setup
1. オブジェクト・ストレージ・サービス・インスタンスの作成
1-1. COS(ストレージ)のオーダ
リンク先のオーダ画面で必要な情報を指定し、新規にCOSリソースを作成する。
COSオーダ画面
1-2. 作成したCOSバケットのリソースを確認する
1-3. 作成したCOSバケットへ資格情報を作成・登録する
-
ポップアップしたダイアログで必要情報を入力し、追加
-
作成したCOSバケットのCredential情報を確認
2. Openshift(Kubernetes)へ手順1のサービス資格に紐づくシークレット作成・登録およびYAMLファイル適用
本手順はOpenshiftClusterとICOS間の接続にあたり必要となる認証資格情報をOpenshiftClusterのSecret情報として登録する手順です。
2-1. COSバケットのGUID(グローバル一意識別子)情報をIBMCloudCLIコマンドで取得する
-
IBMCloud CLIでコマンド実行
-
もしご自身の端末にIBMCloudCLIをインストールしていない場合、OpenshiftCluster利用ではCLI操作で必要となるので以下の手順を参考に事前インストールをお願いいたします。
IBMCloudCLIのインストール -
GUID取得コマンド
ibmcloud resource service-instance <service_name> | grep GUID
-
コマンド実行例
- 実行結果の
15cbab4b-9c98-4424-xxxx-18962cdb565d
部分がGUID。 - Secret情報に必要なため1-3手順のapikeyと同様に、GUIDもコピーしておく。
- 実行結果の
-
実行コマンド:
% ibmcloud resource service-instance "Cloud Object Storage-Test" | grep GUID
GUID: 15cbab4b-9c98-4424-xxxx-18962cdb565d
2-2. OpenshiftClusterにSecretを登録する
- oc createコマンド
- コマンド構文
oc create secret generic <secret-name> --type=ibm/ibmc-s3fs --from-literal=api-key=<api_key> --from-literal=service-instance-id=<service_instance_guid>
- 実行コマンド例
- secret名()は"cos-write-access-test"としている
- 上記手順でメモした
apikey
<api_key>およびGUID
<service_instance_guid>の部分に入力
実行コマンド:
oc create secret generic cos-write-access-test --type=ibm/ibmc-s3fs --from-literal=api-key=v04BsrXXXXXXzDJdzGpSHaKKvcXXXXXXr826ZrgdJiZu --from-literal=service-instance-id=15cbab4b-9c98-4424-xxxx-18962cdb565d
- (参考) 実行ログおよびSecretが作成されていることを確認
- secretのリストに"cos-write-access-test"が含まれていることを確認。
% oc create secret generic cos-write-access-test --type=ibm/ibmc-s3fs --from-literal=api-key=v04Bsr202VK1zDJdzGpSHaKKvcyzSlnwr826ZrgdJiZu --from-literal=service-instance-id=15cbab4b-9c98-4424-9d94-18962cdb565d
secret/cos-write-access-test created
% oc get secret
NAME TYPE DATA AGE
cos-write-access-test ibm/ibmc-s3fs 2 38s
~一部省略~
%
2-3. YAMLファイル作成
-
apikey(OAUTH2認証), keyprotect(暗号化鍵)を用いてICOSとセキュアに接続するためのYAMLファイルを作成する。
-
YAMLファイルではaccess-key(apikey),kp-root-key-crn()のパラメータを指定する必要がある。
- まずKeyProtectで暗号鍵を作成し、CRN(一意の識別子)情報をbase64形式に変換する必要がある。
2-3-1. KeyProtectサービスでの事前作業
-
KeyProtectリソースを以下ページからオーダする
https://cloud.ibm.com/catalog/services/key-protect -
IBMCloudポータル -> リソース・リスト -> セキュリティ -> 上記で作成したKeyProtectリソースを選択
2-3-2. 作成したKeyProtect鍵のCRN情報をbase64にエンコードする
(YAMLがbase64での入力が必要なため)
# base64エンコードコマンド (MACターミナルで実行した例)
% echo -n 'crn:v1:bluemix:public:kms:jp-tok:a/db415xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' | base64
Y3JuOnYxOmJsdWVtaXg6cHVibGljOmttczpqcC10b2s6YS9kYjQxNWM1NTljMGU0NjhjYjk0MTRlZGI4MmFlZTZmZTo5MGQ1Njk5Yy04ODJlLTRiMDAtYTZiZC03YmEwMGM5ZjY5MTQ6a2V5OjcwZTM4ZmEwLThjY2EtNGViNy05Y2FkLWxxxxxxxxxxxxxxxx==
%
2-3-3. YAMLファイル 編集
Clusterアクセスしている端末上でYAMLファイルを作成する。
apikey,KeyProtectのCRN(base64形式)を利用して、YAMLファイルを以下のように作成
apiVersion: v1
data:
access-key: v04Bsr202VK1zDJdzGpSHaKKvcyzSlnxxxxxxxxxxxxxxxx
kp-root-key-crn: Y3JuOnYxOmJsdWVtaXg6cHVibGljOmttczpqcC10b2s6YS9kYjQxNWM1NTljMGU0NjhjYjk0MTRlZGI4MmFlZTZmZTo5MGQ1Njk5Yy04ODJlLTRiMDAtYTZiZC03YmEwMGM5ZjY5MTQ6a2V5OjcwZTM4ZmEwLThjY2EtNGxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx==
kind: Secret
metadata:
name: cos-write-access-test
type: ibm/ibmc-s3fs
2-4. YAMLファイル OpenshiftCluster適用
2-4-1. YAMLファイルをOpenshiftClusterへ適用
% kubectl apply -f secret_test_icos.yml
secret/cos-write-access-test configured
%
2-4-2. ICOSサービスとKeyProtectサービス間の接続許可設定
KeyProtectサービスで暗号鍵をICOSバケットを暗号化する場合、本作業(2-4-2手順)が必要になります。ICOSサービスとKeyProtectサービス間の接続をIAMサービスで明示的に許可します。今回はICOSバケットをKeyProtectサービスで暗号化する手順を実施します。
もし2-4-1手順を行わない場合、ClusterにPVCのYAML適用する際(Part3記事)に認証エラーが出てしまい接続に失敗します。
3. まとめ
- ここまででClusterにSecret適用が完了しました。
- Part2手順 (ICOSプラグインをOpenshiftクラスタにインストール)に続きます。