1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

IBMCloud ROKS (Redhat Openshift) におけるICOS接続 -Part1-

Last updated at Posted at 2024-04-26

概要

IBMCloud上のRedhat Openshift環境にてPV(PersistentVolume:外部ストレージ)としてICOSオブジェクトストレージを利用する方法をまとめました。

以下の3つのステップで記載します。

IBMCloud Object Storage Setup

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

1-1. COS(ストレージ)のオーダ

リンク先のオーダ画面で必要な情報を指定し、新規にCOSリソースを作成する。
COSオーダ画面

image.png

1-2. 作成したCOSバケットのリソースを確認する

  • IBMCloud Portal -> 左上メニュー -> リソース・リスト を選択
  • ストレージタブを展開し、作成したリソースを選択
    image.png

1-3. 作成したCOSバケットへ資格情報を作成・登録する

  • 対象COSバケット -> サービス資格情報タブ -> 新規資格情報を選択
    image.png

  • ポップアップしたダイアログで必要情報を入力し、追加

    • ロールでは、Reader権限以上が必要(今回はWriter権限とした)
      image.png
  • 作成したCOSバケットのCredential情報を確認

    • apikey値を取得 (後の手順で利用。OAuth2の認証のToken情報)
      image.png

2. Openshift(Kubernetes)へ手順1のサービス資格に紐づくシークレット作成・登録およびYAMLファイル適用

本手順はOpenshiftClusterとICOS間の接続にあたり必要となる認証資格情報をOpenshiftClusterのSecret情報として登録する手順です。

2-1. COSバケットのGUID(グローバル一意識別子)情報をIBMCloudCLIコマンドで取得する

  • まずCOSバケット名を確認する -> "Cloud Object Storage-Test"
    image.png

  • 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サービスでの事前作業

image.png

  • 新規に暗号鍵(openshift-icos-key)を作成
    image.png
    image.png

  • 作成したKeyProtectの暗号鍵のCRN識別子をコピーする
    image.png
    image.png

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ファイルを以下のように作成

secret-test-icos.yml
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記事)に認証エラーが出てしまい接続に失敗します。

  • IAM管理画面へ移動
    image.png
  • IAM -> アクセスの管理 -> 許可 を選択し、作成をクリック
    image.png
  • ソース・ターゲットとなるサービスおよびリソースグループを選択して許可
    image.png
  • 許可設定が正しいことを確認
    image.png

3. まとめ

  • ここまででClusterにSecret適用が完了しました。
  • Part2手順 (ICOSプラグインをOpenshiftクラスタにインストール)に続きます。
1
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?