ROSA 4.12 デプロイ記録

IBM Cloud Pak for Data を ROSA (Red Hat OpenShift Service on AWS) 環境にデプロイする機会を得ました。その際、ROSA 4.12 のデプロイを行った記録です。

ROSAのデプロイは前提条件の確認（これだけAWSマネージドコンソール）を除いて、ほぼすべてをRed Hat Hybrid Cloud Consoleから行います。

注）当記事は2023年8月時点での記録であり、今後変更される場合があります。

## ROSAの有効化
- AWSマネージドコンソールのROSAの画面から `使用を開始` をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/ce3555c8-720f-b9f4-1e75-b164d3e443f6.png)

- ROSAは有効になっていました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/6f484e57-1273-c0f8-e7ee-b35f04b0cfb9.png)

- 「Service Quotas」や「ELB サービスにリンクされたロール」が要件を満たしていることを確認し `Red Hatに進む`をクリックします。
![rosa3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/0ddd4a7b-70ae-750c-fd3e-703a913152e7.png)

- ブラウザの別タブでRed Hatのログイン画面が起動します。Red Hatアカウントでログインすると、Red Hat Hybrid Cloud Console の [Get started with Red Hat OpenShift Service on AWS (ROSA)] 画面が表示されます。この手順に沿って、デプロイを進めます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/1d6a5659-382d-c6dc-88a1-e9854806a84d.png)

## ROSA Prerequisites - Prepare your AWS account
### Step 1:  Enable ROSA Service in AWS account
既に済んでいます。

### Step 2:  Download and install the ROSA and AWS command line tools (CLI) and add it to your PATH.
このステップから実行します。

#### ROSA CLI
ROSA CLI(今回はLinux x86_64)をダウンロードして解凍します。`rosa`コマンドを実行できることを確認します。
  
  ```
  # ls -l
  -rw-r--r--. 1 root root  21240499  7月 18 04:44 rosa-linux.tar.gz
  # tar xvf rosa-linux.tar.gz
  rosa
  # mv rosa /usr/local/bin
  # rosa version
  1.2.23
  I: Your ROSA CLI is up to date.
  #
  ```
#### AWS CLI

こちらを参考にしてください：[awsコマンドを実行する](https://qiita.com/mizutan/items/fdeae578389a1bb36d49)

### Step 3:  Create the service linked role for the Elastic Load Balancer (ELB)

ELB用のIAMロールがあるかどうかを確認します。
  ![enable_rosa11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523630/db3941c2-1dd4-383d-4869-f7b8d7338018.png)

AWSコンソールのCloudShell（またはawsコマンドを実行できるクライアント）から1のチェックコマンドを実行します。必要なロールは既にありました。

コマンド実行例：
```
[cloudshell-user@ip-10-6-73-27 ~]$ aws iam get-role --role-name "AWSServiceRoleForElasticLoadBalancing"
{
    "Role": {
        "Path": "/aws-service-role/elasticloadbalancing.amazonaws.com/",
        "RoleName": "AWSServiceRoleForElasticLoadBalancing",
        "RoleId": "xxxxxxxxxxxxxxxxxxxxx",
        "Arn": "arn:aws:iam::xxxxxxxxxxxx:role/aws-service-role/elasticloadbalancing.amazonaws.com/AWSServiceRoleForElasticLoadBalancing",
        "CreateDate": "2022-MM-DDT02:36:54+00:00",
        "AssumeRolePolicyDocument": {
            "Version": "2012-10-17",
            "Statement": [
                {
                    "Effect": "Allow",
                    "Principal": {
                        "Service": "elasticloadbalancing.amazonaws.com"
                    },
                    "Action": "sts:AssumeRole"
                }
            ]
        },
        "Description": "Allows ELB to call AWS services on your behalf.",
        "MaxSessionDuration": 3600,
        "RoleLastUsed": {
            "LastUsedDate": "2022-MM-DDT20:48:21+00:00",
            "Region": "ap-northeast-2"
        }
    }
}
[cloudshell-user@ip-10-6-73-27 ~]$ 
```


### Step 4:  Log in to the ROSA CLI with your Red Hat account token and create AWS account roles and policies

1 のコマンドをコピーして実行し、ROSAにログインします。
2 のコマンドをコピーして実行し、autoモードでアカウントロールを作成します。
  ![enable_rosa12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523630/8e4594a9-bbaa-ede3-3472-1b95a41db0f1.png)

コマンド実行例：
```
# rosa login --token="eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJhZDUyM...."
I: Logged in as 'xxxxxx' on 'https://api.openshift.com'

# rosa create account-roles --mode auto
I: Logged in as 'xxxxxx' on 'https://api.openshift.com'
I: Validating AWS credentials...
I: AWS credentials are valid!
I: Validating AWS quota...
I: AWS quota ok. If cluster installation fails, validate actual AWS resource usage against https://docs.openshift.com/rosa/rosa_getting_started/rosa-required-aws-service-quotas.html
I: Verifying whether OpenShift command-line tool is available...
I: Current OpenShift Client Version: 4.13.4
I: Creating account roles
I: Creating roles using 'arn:aws:iam::xxxxxxxxxxxx:user/xxxxxx@yy.zzz.com'
I: Created role 'ManagedOpenShift-Installer-Role' with ARN 'arn:aws:iam::xxxxxxxxxxxx:role/ManagedOpenShift-Installer-Role'
I: Created role 'ManagedOpenShift-ControlPlane-Role' with ARN 'arn:aws:iam::xxxxxxxxxxxx:role/ManagedOpenShift-ControlPlane-Role'
I: Created role 'ManagedOpenShift-Worker-Role' with ARN 'arn:aws:iam::xxxxxxxxxxxx:role/ManagedOpenShift-Worker-Role'
I: Created role 'ManagedOpenShift-Support-Role' with ARN 'arn:aws:iam::xxxxxxxxxxxx:role/ManagedOpenShift-Support-Role'
I: To create an OIDC Config, run the following command:
        rosa create oidc-config
I: To create a cluster with these roles, run the following command:
        rosa create cluster --sts
  ```

### Step5: Verify your credentials and quota
Step 5のコマンドをコピーして実行し、認証情報とクオータを確認します。
  ![enable_rosa13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523630/cf76d838-a7f0-ca53-390e-31aa44433087.png)
コマンド実行例：
```
# rosa whoami
AWS ARN:                      arn:aws:iam::xxxxxxxxxxxx:user/xxxxxx@yy.zzz.com
AWS Account ID:               xxxxxxxxxxxx
AWS Default Region:           ap-northeast-1
OCM API:                      https://api.openshift.com
OCM Account Email:            xxxxxx@yy.zzz.com
OCM Account ID:               xxxxxxxxxxxxxxxxxxxxxxxx
OCM Account Name:             xxxx xxxx
OCM Account Username:         xxxxxx
OCM Organization External ID: xxxxxxxx
OCM Organization ID:          xxxxxxxxxxxxxxxx
OCM Organization Name:        XXXXXXXXX

# rosa verify quota
I: Validating AWS quota...
I: AWS quota ok. If cluster installation fails, validate actual AWS resource usage against https://docs.openshift.com/rosa/rosa_getting_started/rosa-required-aws-service-quotas.html
```

## ROSAクラスターのデプロイ
Web インターフェイスでのデプロイをします。`Create with web interface`をクリックします。
![rosa_deploy.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/36b70ee7-9733-0da4-d5f6-02525ed0514f.png)
AWSアカウントとRed Hatアカウントの関連付けを行います。
`How to associate a new account` をクリックします。
![deploy1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/00afb389-41a4-d86c-45ee-a475b4e2690b.png)
今回は Basic OCM role を実行します。
![deploy2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/366b3086-622a-16ea-c80c-d2099768f473.png)
OCM role がリンクされたかどうかをチェックします。
![deploy3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/2e6afb32-7f48-1d4c-3568-1663f31703fe.png)
コマンド実行例：
```
# rosa list ocm-role
I: Fetching ocm roles
I: No ocm roles available

# rosa create ocm-role
I: Creating ocm role
? Role prefix: ManagedOpenShift
? Enable admin capabilities for the OCM role (optional): Yes
? Permissions boundary ARN (optional):
? Role Path (optional):
? Role creation mode: auto
I: Creating role using 'arn:aws:iam::xxxxxxxxxxxx:user/xxxxxx@yy.zzz.com'
? Create the 'ManagedOpenShift-OCM-Role-1XXXXXXX' role? Yes
I: Created role 'ManagedOpenShift-OCM-Role-1XXXXXXX' with ARN 'arn:aws:iam::xxxxxxxxxxxx:role/ManagedOpenShift-OCM-Role-1XXXXXXX'
I: Linking OCM role
? OCM Role ARN: arn:aws:iam::xxxxxxxxxxxx:role/ManagedOpenShift-OCM-Role-1XXXXXXX
? Link the 'arn:aws:iam::xxxxxxxxxxxx:role/ManagedOpenShift-OCM-Role-1XXXXXXX' role with organization 'XXXXXXXXXXXXXXXXXXXX'? Yes
I: Successfully linked role-arn 'arn:aws:iam::xxxxxxxxxxxx:role/ManagedOpenShift-OCM-Role-1XXXXXXX' with organization account 'XXXXXXXXXXXXXXXXXXXX'

# rosa list ocm-role
I: Fetching ocm roles
ROLE NAME                           ROLE ARN                                                           LINKED  ADMIN  AWS Managed
ManagedOpenShift-OCM-Role-1XXXXXXX  arn:aws:iam::xxxxxxxxxxxx:role/ManagedOpenShift-OCM-Role-1XXXXXXX  Yes     Yes    No
```

次にuse roleを作成します。
![deploy4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/8c11546d-8478-d205-f403-6d630e7d0bd7.png)
コマンド実行例
```
# rosa create user-role
I: Creating User role
? Role prefix: ManagedOpenShift
? Permissions boundary ARN (optional):
? Role Path (optional):
? Role creation mode: auto
I: Creating ocm user role using 'arn:aws:iam::xxxxxxxxxxxx:user/xxxxxx@yy.zzz.com'
? Create the 'ManagedOpenShift-User-rhusername-Role' role? Yes
I: Created role 'ManagedOpenShift-User-rhusername-Role' with ARN 'arn:aws:iam::xxxxxxxxxxxx:role/ManagedOpenShift-User-rhusername-Role'
I: Linking User role
? User Role ARN: arn:aws:iam::xxxxxxxxxxxx:role/ManagedOpenShift-User-rhusername-Role
? Link the 'arn:aws:iam::xxxxxxxxxxxx:role/ManagedOpenShift-User-rhusername-Role' role with account '1gOBLbn8leu12WizZMB9cfiP9mr'? Yes
I: Successfully linked role ARN 'arn:aws:iam::xxxxxxxxxxxx:role/ManagedOpenShift-User-rhusername-Role' with account '1gOBLbn8leu12WizZMB9cfiP9mr'

# rosa list user-role
I: Fetching user roles
ROLE NAME                             ROLE ARN                                                             LINKED
ManagedOpenShift-User-rhusername-Role  arn:aws:iam::xxxxxxxxxxxx:role/ManagedOpenShift-User-rhusername-Role  Yes
```

OKをクリックすると、Accounts and roles画面に戻り、`Associated AWS infrastructure account`にアカウントが入っています。`Next`をクリックします。
![deploy6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/0d7d132d-c584-86ae-7fd8-a919f1dfacbc.png)

[Cluster settings Details]画面で、クラスター名を入力し、バージョン、リージョン、Availability等に希望の設定を選択し、`Next`をクリックします。
![deploy7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/931e0d3e-f222-0d75-4f9a-904b4306d22f.png)

[Cluster settings - Machine pool]画面で、Compute node instance typeに希望のインスタンスタイプを選択、Compute node countに希望のノード数を選択し、他の項目にも希望の設定を選択し、`Next`をクリックします。
![deploy8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/bfb676aa-b2a5-673e-ce66-45fb62cfad96.png)
[Networking - Configuration]画面で、希望の設定を選択し、`Next`をクリックします。
![deploy9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/33aef366-60fd-3627-b41c-98dbc9f7d314.png)
[Networking CIDR ranges]画面で、希望の設定を選択し、`Next`をクリックします。
![deploy10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/84a4bbd3-b4d6-e409-4e4e-08ef4e480f73.png)
[Cluster roles and policies]画面で、希望の設定を選択し、`Next`をクリックします。
![deploy11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/babca4a3-c8e3-b428-63c1-05d0bb47f0bf.png)
[Cluster update strategy]画面で、希望の設定を選択し、`Next`をクリックします。
![deploy12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/af0f2cd6-23bd-9392-bc74-5de97704c34e.png)
[Review your ROSA cluster]画面で、設定を確認し、`Create cluster`をクリックします。
![deploy13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/ccb4004a-296d-dadf-4584-2d9b9f7d7797.png)


Create clusterをクリックすると間もなく、operator roles と OIDC provider を作成するようポップアップが表示されます。（[Cluster roles and policies]画面での選択によります）
![deploy14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/279a5f1b-de85-001f-83a6-26360470bbfa.png)
示された2つのrosaコマンドを実行します。
```
# rosa create operator-roles --interactive -c rosa-wd
? Role creation mode: auto
? Permissions boundary ARN (optional):
I: Creating roles using 'arn:aws:iam::xxxxxxxxxxxx:user/xxxxxx@yy.zzz.com'
I: Created role 'rosa-wd-clpc-openshift-cloud-network-config-controller-cloud-cre' with ARN 'arn:aws:iam::xxxxxxxxxxxx:role/rosa-wd-clpc-openshift-cloud-network-config-controller-cloud-cre'
I: Created role 'rosa-wd-clpc-openshift-machine-api-aws-cloud-credentials' with ARN 'arn:aws:iam::xxxxxxxxxxxx:role/rosa-wd-clpc-openshift-machine-api-aws-cloud-credentials'
I: Created role 'rosa-wd-clpc-openshift-cloud-credential-operator-cloud-credentia' with ARN 'arn:aws:iam::xxxxxxxxxxxx:role/rosa-wd-clpc-openshift-cloud-credential-operator-cloud-credentia'
I: Created role 'rosa-wd-clpc-openshift-image-registry-installer-cloud-credential' with ARN 'arn:aws:iam::xxxxxxxxxxxx:role/rosa-wd-clpc-openshift-image-registry-installer-cloud-credential'
I: Created role 'rosa-wd-clpc-openshift-ingress-operator-cloud-credentials' with ARN 'arn:aws:iam::xxxxxxxxxxxx:role/rosa-wd-clpc-openshift-ingress-operator-cloud-credentials'
I: Created role 'rosa-wd-clpc-openshift-cluster-csi-drivers-ebs-cloud-credentials' with ARN 'arn:aws:iam::xxxxxxxxxxxx:role/rosa-wd-clpc-openshift-cluster-csi-drivers-ebs-cloud-credentials'

# rosa create oidc-provider --interactive -c rosa-wd
? OIDC provider creation mode: auto
I: Creating OIDC provider using 'arn:aws:iam::xxxxxxxxxxxx:user/xxxxxx@yy.zzz.com'
? Create the OIDC provider for cluster 'rosa-wd'? Yes
I: Created OIDC provider with ARN 'arn:aws:iam::xxxxxxxxxxxx:oidc-provider/rh-oidc.s3.us-east-1.amazonaws.com/252mr0g8tqh9k0p1co2pbc12cn3cibb7'
```

ROSAコマンド実行後、自動でインストール画面が進みます。
![deploy15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/b6ccd29a-bdee-579b-7f70-b513ffad1ab1.png)
今回は1時間弱でインストールが完了しました。
![deploy16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/bcad9190-e7ff-75ba-fe25-2b2d11982d71.png)

## OpenShift ユーザーの作成
Missing identity providers の警告メッセージに表示された `Add OAuth configuration` のリンクをクリックすると、Access controlのタブが表示されます。
![add_access1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/832297d6-0e07-7dd8-06ca-d2702f0bd61b.png)
Add identity providerで `htpasswd` を選択します。
![add_access2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/18a87709-036a-5514-edc4-e73082716763.png)
ユーザー名とパスワードを指定して `Add` をクリックします。
![add_access3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/d6093455-f0a1-cffe-1bf2-f6803809e396.png)
続いて、作成したユーザーに権限を付与します。クラスター管理者権限を付与するためには `Cluster Roles and Access` をクリックします。
![add_access4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/41030a72-331c-64c5-6e7e-0b0f0574e2ec.png)
`Add user` をクリックします。
![add_access5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/948bad49-e651-d712-2de1-6e5cbf58d238.png)
User IDに作成済みのユーザーを入力し、Groupに `cluster-admins` にチェックして `Add user` をクリックします。
![add_access6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/b5bb2f3b-d69c-6539-da75-78b30c892840.png)
クラスター管理者としてadminユーザーが作成されました。
`Open console` をクリックします。
![add_access7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/8c09e10b-b793-6ce9-9ddb-79b1b773d534.png)
設定済みのidentity providerが表示されますのでクリックし、作成済みのユーザーでログインします。
![add_access8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/3194a0a3-0171-8e81-7a52-83f90fe93d90.png)

（注）設定後、identity providerによるログイン画面が表示されるまで数分かかる場合があります。
こちらのidentity providerの表示のないログイン画面からは、先ほど作成したユーザーではログインできません。
![rosa_login.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/af3b91f1-ef6f-bac2-80bd-0043fc25b05c.png)


## 参考

https://qiita.com/seijitanabe/items/e512dc7271f7cb6d6ca1

https://access.redhat.com/documentation/ja-jp/red_hat_openshift_service_on_aws/4/html/prepare_your_environment/index