IBMCloud IKS作成時のエラー対応(ContainerRegistry)

## 目的
IBM Cloud Kubernetes Serviceのオーダ時に一部権限が足りない場合、サービスの作成は完了するものの、一部エラーとなり、事後対応が必要になる場合がある。今回はContainerRegistryに関するエラーとなった場合の対応方法を記載する。

## エラー内容
![貼り付けた画像_2024_01_25_13_51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/ba6859da-1c09-d2e5-8005-d26a3b14dd26.png)

## 対応の流れ
* IAM権限の付与
* ContainerRegistryに対するIAM権限役割をクラスターに割り当てる

### IAM権限の付与
参考URL
[名前空間を作成するときに、指定されたリソースへのアクセスが許可されないのはなぜですか?](https://cloud.ibm.com/docs/Registry?topic=Registry-troubleshoot-namespace-auth)

```
ドキュメント抜粋

起きている現象
名前空間を作成しようとすると、以下のエラー・メッセージが表示されます。

You are not authorized to access the specified resource.

現象の理由
名前空間を操作するための正しいユーザー権限がありません。 名前空間を追加、割り当て、および削除するには、アカウント・レベルで Container Registry サービスの管理者役割を持っている必要があります。 リソース・グループ (複数可) に対する管理者の役割を持っている場合は、アカウント・レベルの管理者の役割でなければなりません。

修正方法
アカウント・レベルでマネージャーの役割が割り当てられていることを確認する必要があります。 詳しくは、名前空間を操作するためのユーザー許可を参照してください。
```

ここから権限の付与を実施していく

今回はグループに対してアクセス権限を追加する
**管理** -> **アクセス(IAM)**を選択
![貼り付けた画像_2024_01_25_14_10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/2dba4cad-d9ed-0a5c-9819-992dc9359554.png)

**アクセスグループ** -> **グループ名** -> **右側の・・・を選択** -> **グループの管理**を選択
![貼り付けた画像_2024_01_25_14_08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/5cb0e31a-6bea-a000-6ba5-9b4fa3208048.png)

**アクセス** -> **アクセス権限の割り当て**を選択
![貼り付けた画像_2024_01_25_14_11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/fd06f8e0-28bb-294d-00b3-26055554a7bf.png)

検索メニューにて、**Container Registry**を選択し、**次へ**
![貼り付けた画像_2024_01_25_14_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/0dff168d-935c-5d11-3b8a-2761a7ae23fb.png)

**すべてのリソース**を選択
<font color=red>リソースグループ等で制限すると動作しない</font>
![貼り付けた画像_2024_01_25_14_03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/2e299650-ce4c-2586-800d-8b0ad3daf7fa.png)

役割とアクションにて、サービスアクセスの**管理者**にチェックを入れる
![貼り付けた画像_2024_01_25_14_03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/0eb672c8-32e1-bbb8-220a-b7a7764b36e4.png)

**レビュー**を選択
![貼り付けた画像_2024_01_25_14_15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/57f26144-be90-cb86-7610-bd9a8efb4bf9.png)

設定内容に問題がないことを確認し、**追加**を選択
![貼り付けた画像_2024_01_25_14_05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/0edc00d6-ff6c-70f2-fb82-baad5ac604f6.png)

最後に、**割り当て**を選択して完了
![貼り付けた画像_2024_01_25_14_05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/9a65e2c6-6258-9ab8-3345-5abecad1fe47.png)

下記のように権限が追加されたらOK
![貼り付けた画像_2024_01_25_14_16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/515814b2-7c03-662c-6bef-262fbffb9255.png)

### ContainerRegistryに対するIAM権限役割をクラスターに割り当てる
参考ページ
[デフォルトのイメージ・プル・シークレットのセットアップ](https://cloud.ibm.com/docs/containers?topic=containers-registry&locale=ja#cluster_registry_auth_default)
[イメージ・プル・シークレットの更新](https://cloud.ibm.com/docs/containers?topic=containers-registry&locale=ja#update-pull-secret)

まずは、IKSのクラスターIDを確認するために、IKSのポータルページから確認する
![貼り付けた画像_2024_01_25_14_18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/7129f59a-3469-05ff-6bf6-ec0cea255de3.png)

IBMCloud CLIにて以下コマンドを実行する
```
ibmcloud ks cluster pull-secret apply --cluster <cluster_name_or_ID>
```

実行例
```
% ibmcloud ks cluster pull-secret apply --cluster cmosgidt0i0xxxxxxx
OK
Creating the image pull secrets in namespace 'default'. The process might take a few minutes to complete.
```

以上で、IBM Cloud Container Registry icr.io ドメインからイメージをプルするコンテナーをデプロイが可能となる。