Satellite クラスターの内部イメージ・レジストリーのセットアップ

Satellite

デフォルトでは、Satellite クラスターでは内部レジストリーは実行されません。内部レジストリー用のバッキング・ストレージがセットアップされていないからです。 以下のチュートリアルを完了して、 IBM Cloud Object Storage をバッキング・ストレージとして Satellite クラスターに内部イメージ・レジストリーを構成します。

このチュートリアルでは、 IBM Cloud Object Storageを使用してイメージ・レジストリーをセットアップする方法について説明します。 ただし、ワーカー・ノードで非永続ストレージを使用することもできます。 詳しくは、 ワーカー・ノードの空のディレクトリーへのイメージの保管 を参照してください。

要件を満たす IBM Cloud Object Storage インスタンスを作成します。

  1. IBM Cloud コンソールで、 「リソース」 メニューにナビゲートし、ストレージ・インスタンスをリストします。
  2. Object Storage インスタンスを識別し、 「ロケーション」 列を見つけます。 インスタンスが IBM Cloudで作成された場合、そのロケーションは 「グローバル」 としてリストされます。
  3. 要件を満たすグローバル・インスタンスがない場合は、以下の手順に従って作成します。
    1. IBM Cloud Object Storageで、 「インスタンスの作成」 をクリックします。
    2. 「インフラストラクチャーの選択」 で、 IBM Cloud オプションを選択します。
    3. 価格プランとサービス名を選択します。
    4. Satellite コンポーネントが保管されているリソース・グループを選択します。
    5. 「作成」 をクリックします。 インスタンスのプロビジョンには数分かかる場合があることに注意してください。

イメージ・レジストリーに使用するバケットを作成します

イメージ・レジストリーのセットアップ時に使用するバケットを作成します。 バケットは、地域の回復力を使用して構成する必要があります。 バケットの作成について詳しくは、 IBM Cloud Object Storageのセットアップ を参照してください。

  1. Object Storage のインスタンスをクリックします。
  2. 「バケットの作成」 をクリックします。
  3. 「バケットのカスタマイズ (Customize your bucket)」 のオプションを選択します。
  4. 「回復力」 で、 「地域」 を選択します。
  5. 「ロケーション」 ドロップダウン・メニューから、ロケーションの管理元に最も近い地域を選択します。 例えば、ロケーションが wdc (ワシントン DC) から管理されている場合は、 us-east 地域を選択します。 Satellite ロケーションの管理元を確認するには、CLI で ibmcloud sat location ls を実行します。
  6. 「ストレージ・クラス」 で、 「標準」 を選択します。
  7. 残りのカテゴリーを設定に合わせて構成します。
  8. 「バケットの作成」 をクリックします。
  9. クラスターが Object Storage インスタンスと通信できるようにするサービス資格情報を作成します。
  10. ナビゲーション・ペインで、 「サービス資格情報」 をクリックしてから、 「新規資格情報」 をクリックします。
  11. 新規資格情報の名前を入力します。
  12. ドロップダウン・メニューから、 「ライター」 役割を選択します。
  13. 「拡張オプション」 をクリックし、 「HMAC 資格情報を含める」 オプションを選択します。
  14. 追加 をクリックします。
  15. 「サービス資格情報」 テーブルで、新しい資格情報を展開します。 access_key_id および secret_access_key_id をメモします。 これらの資格情報を他のユーザーと共有しないでください。 保存する資格情報の例。
    "cos_hmac_keys": {
        "access_key_id": "1111111a1111111a11aa1a111111111a11aa1a111a11a1a1",
        "secret_access_key": "222222b222222b22bb2b22222222b22bb2b222b22b2b2"
    }
    

COS サービス資格情報を含むシークレットを作成します

CLI で、作成して保存したサービス資格情報を使用してシークレットを作成します。

  1. アカウントにログインします。 該当する場合は、適切なリソース・グループをターゲットにします。 クラスターのコンテキストを設定します。
  2. シークレットを作成します。
    oc create secret generic image-registry-private-configuration-user --from-literal=REGISTRY_STORAGE_S3_ACCESSKEY=<access_key_id> --from-literal=REGISTRY_STORAGE_S3_SECRETKEY=<secret_access_key> --namespace openshift-image-registry
    

Red Hat OpenShift レジストリー・オペレーター CRD の更新

  1. Red Hat OpenShift Register オペレーターの管理状態を変更します。
    oc patch configs.imageregistry.operator.openshift.io cluster --type merge --patch '{"spec":{"managementState":"Managed"}}'
    
  2. 構成ストレージ属性を編集して、イメージを Object Storage バケットに保管します。
    1. Satellite ロケーションのリージョン・リンク・エンドポイントを見つけて保存します。 出力では、エンドポイントが 「アドレス」 列の下にリストされます。
      ibmcloud sat endpoint ls --location <location_name> | grep satellite-cosRegional
      
      出力例
      ID                           Name                                              Destination Type   Address       
      cavvku1p1h1gcfgk1kn1_uwokw   satellite-cosRegional-cavvku1p1h1gcfgk1kn1        cloud              TLS   i11aa11a1a1a11a11-1a11a1aaa1a1a1a1a-c000.us-east.satellite.appdomian.cloud:11111
      
    2. CLI でファイル・エディターを開きます。
      oc edit configs.imageregistry.operator.openshift.io/cluster
      
    3. 編集する以下のセクションを見つけます。
      storage:
          emptyDir: {}
          managementState: Managed
      storageManaged: true
      
    4. emptyDir: {} をバケット情報とロケーション・エンドポイントに置き換えます。
      s3:
        bucket: <bucket_name>
        region: <bucket_region>
        regionEndpoint: <location_link_endpoint>
        virtualHostedStyle: false
      
      バケットおよびロケーション情報を追加した後のセクションの例。
        storage:
          managementState: Managed
          s3:
            bucket: my_bucket
            region: us-east
            regionEndpoint: https://i11aa11a1a1a11a11-1a11a1aaa1a1a1a1a-c000.us-east.satellite.appdomian.cloud:11111
            virtualHostedStyle: false
        storageManaged: true
      
    5. 変更を保存して適用します。

変更の確認

openshift-image-registry 名前空間内の image-registry- で始まるポッドを確認して、イメージ・レジストリーが構成されていることを確認します。

  1. 次のコマンドを実行します。

    oc get pod -n openshift-image-registry
    
  2. 出力を確認し、レジストリー・ポッドが Running であることを確認します。

    出力例

    NAME                                               READY   STATUS      RESTARTS      AGE
    image-registry-63p54b8add-vkjju                    1/1      Running      0              16m