ROSA について学ぶ
Red Hat OpenShift Service on AWS について学ぶ
概要
第1章 クラスターワークショップの作成 リンクのコピーリンクがクリップボードにコピーされました!
1.1. クラスターの作成 リンクのコピーリンクがクリップボードにコピーされました!
このワークショップに従って、サンプルの Red Hat OpenShift Service on AWS (ROSA) クラスターをデプロイします。その後、次のワークショップでクラスターを使用できます。
ワークショップの目的
クラスター作成の前提条件を学習します。
- サンプル Virtual Private Cloud (VPC) の作成
- サンプル OpenID Connect (OIDC) リソースの作成
- サンプル環境変数を作成します。
- サンプル ROSA クラスターをデプロイします。
前提条件
- ROSA バージョン 1.2.31 以降
- Amazon Web Services (AWS) コマンドラインインターフェイス (CLI)
-
ROSA CLI (
rosa
)
1.1.1. クラスター作成の前提条件 リンクのコピーリンクがクリップボードにコピーされました!
ROSA クラスターをデプロイする前に、VPC リソースと OIDC リソースの両方が必要です。そのため、最初にこれらのリソースを作成します。ROSA は、独自の VPC (BYO-VPC) モデルを使用します。
1.1.1.1. VPC の作成 リンクのコピーリンクがクリップボードにコピーされました!
AWS CLI (
aws
) が、ROSA が利用可能なリージョンを使用するように設定されていることを確認します。次のコマンドを実行して、AWS CLI でサポートされているリージョンを確認します。rosa list regions --hosted-cp
$ rosa list regions --hosted-cp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow VPC を作成します。このワークショップでは、次の スクリプトで VPC とその必要なコンポーネントを作成します。
aws
CLI で設定されたリージョンを使用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow スクリプトはコマンドを出力します。後で使用するためにサブネット ID を保存するには、コマンドを環境変数として設定します。以下のコマンドをコピーして実行します。
export PUBLIC_SUBNET_ID=$PUBLIC_SUBNET_ID export PRIVATE_SUBNET_ID=$PRIVATE_SUBNET_ID
$ export PUBLIC_SUBNET_ID=$PUBLIC_SUBNET_ID $ export PRIVATE_SUBNET_ID=$PRIVATE_SUBNET_ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、環境変数を確認します。
echo "Public Subnet: $PUBLIC_SUBNET_ID"; echo "Private Subnet: $PRIVATE_SUBNET_ID"
$ echo "Public Subnet: $PUBLIC_SUBNET_ID"; echo "Private Subnet: $PRIVATE_SUBNET_ID"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Public Subnet: subnet-0faeeeb0000000000 Private Subnet: subnet-011fe340000000000
Public Subnet: subnet-0faeeeb0000000000 Private Subnet: subnet-011fe340000000000
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.1.1.2. OIDC 設定の作成 リンクのコピーリンクがクリップボードにコピーされました!
このワークショップでは、OIDC 設定を作成するときに自動モードを使用します。また、後で使用できるように、OIDC ID を環境変数として保存します。このコマンドは、ROSA CLI を使用して、クラスターの一意の OIDC 設定を作成します。
次のコマンドを実行して、OIDC 設定を作成します。
export OIDC_ID=$(rosa create oidc-config --mode auto --managed --yes -o json | jq -r '.id')
$ export OIDC_ID=$(rosa create oidc-config --mode auto --managed --yes -o json | jq -r '.id')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.1.2. 追加の環境変数の作成 リンクのコピーリンクがクリップボードにコピーされました!
環境変数を設定するには、次のコマンドを実行します。これらの変数を使用すると、ROSA クラスターを作成するコマンドの実行が容易になります。
export CLUSTER_NAME=<cluster_name> export REGION=<VPC_region>
$ export CLUSTER_NAME=<cluster_name> $ export REGION=<VPC_region>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ヒントVPC リージョンを確認するには、
rosa whoami
を実行します。
1.1.3. クラスターの作成 リンクのコピーリンクがクリップボードにコピーされました!
オプション: Operator ポリシーや AWS IAM ロールとポリシーを含め、アカウント全体のロールとポリシーを作成するには次のコマンドを実行します。
重要このアカウントで ROSA を 初めて デプロイし、アカウントのロールとポリシーをまだ 作成していない 場合にのみ、この手順を完了してください。
rosa create account-roles --mode auto --yes
$ rosa create account-roles --mode auto --yes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行してクラスターを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
約 10 分後にクラスターの準備が完了します。選択したリージョン内の 3 つの AWS アベイラビリティーゾーンにまたがるコントロールプレーンがクラスターに作成され、AWS アカウントに 2 つのワーカーノードが作成されます。
1.1.4. インストールステータスの確認 リンクのコピーリンクがクリップボードにコピーされました!
次のコマンドのいずれかを実行して、クラスターのステータスを確認します。
クラスターのステータスの詳細を表示するには、次のコマンドを実行します。
rosa describe cluster --cluster $CLUSTER_NAME
$ rosa describe cluster --cluster $CLUSTER_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターのステータスの概要を表示するには、次のコマンドを実行します。
rosa list clusters
$ rosa list clusters
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ログの進行状況を監視するには、次を実行します。
rosa logs install --cluster $CLUSTER_NAME --watch
$ rosa logs install --cluster $CLUSTER_NAME --watch
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 状態が “ready” に変われば、クラスターのインストールは完了です。ワーカーノードがオンラインになるまでにさらに数分かかる場合があります。
1.2. 管理者ユーザーの作成 リンクのコピーリンクがクリップボードにコピーされました!
管理 (admin) ユーザーを作成すると、クラスターにすばやくアクセスできるようになります。管理ユーザーを作成するには、次の手順に従います。
管理ユーザーは、このチュートリアル設定では問題なく機能します。実際のデプロイメントでは、正式なアイデンティティープロバイダー を使用してクラスターにアクセスし、ユーザーに管理者特権を付与します。
次のコマンドを実行して管理ユーザーを作成します。
rosa create admin --cluster=<cluster-name>
rosa create admin --cluster=<cluster-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 前のステップで返されたログインコマンドをコピーし、ターミナルに貼り付けます。これにより、CLI を使用してクラスターにログインし、クラスターの使用を開始できるようになります。
oc login https://api.my-rosa-cluster.abcd.p1.openshiftapps.com:6443 \ --username cluster-admin \ --password FWGYL-2mkJI-00000-00000
$ oc login https://api.my-rosa-cluster.abcd.p1.openshiftapps.com:6443 \ > --username cluster-admin \ > --password FWGYL-2mkJI-00000-00000
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Login successful. You have access to 79 projects, the list has been suppressed. You can list all projects with ' projects' Using project "default".
Login successful. You have access to 79 projects, the list has been suppressed. You can list all projects with ' projects' Using project "default".
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 管理ユーザーとしてログインしていることを確認するには、次のコマンドのいずれかを実行します。
オプション 1:
oc whoami
$ oc whoami
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
cluster-admin
cluster-admin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション 2:
oc get all -n openshift-apiserver
oc get all -n openshift-apiserver
Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドをエラーなしで実行できるのは管理ユーザーのみです。
- これでクラスターを管理ユーザーとして使用できるようになりました。このチュートリアルではこれで十分です。実際のデプロイメントでは、次のチュートリアル で説明するアイデンティティープロバイダーを設定することを強く推奨します。
1.3. アイデンティティープロバイダーの設定 リンクのコピーリンクがクリップボードにコピーされました!
クラスターにログインするには、アイデンティティープロバイダー (IDP) をセットアップします。このチュートリアルでは、IDP の例として GitHub を使用します。ROSA がサポートする IDP の完全なリストを参照してください。
すべての IDP オプションを表示するには、次のコマンドを実行します。
rosa create idp --help
rosa create idp --help
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.3.1. GitHub を使用した IDP のセットアップ リンクのコピーリンクがクリップボードにコピーされました!
- GitHub アカウントにログインします。
自分が管理者となる新しい GitHub 組織を作成します。
ヒントすでに既存の組織の管理者であり、その組織を使用する場合は、ステップ 9 に進みます。
+ アイコンをクリックし、New Organization をクリックします。
- 状況に最も適したプランを選択するか、Join for free をクリックします。
組織のアカウント名、メールアドレス、および個人アカウントかビジネスアカウントかを入力します。Next をクリックします。
- オプション: 他のユーザーの GitHub ID を追加して、ROSA クラスターへの追加のアクセス権を付与します。後で追加することもできます。
- Complete Setup をクリックします。
- オプション: 次のページで、要求される情報を入力します。
- Submit をクリックします。
ターミナルに戻り、次のコマンドを入力して GitHub IDP を設定します。
rosa create idp --cluster=<cluster name> --interactive
rosa create idp --cluster=<cluster name> --interactive
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の値を設定します。
Type of identity provider: github Identity Provider Name: <IDP-name> Restrict to members of: organizations GitHub organizations: <organization-account-name>
Type of identity provider: github Identity Provider Name: <IDP-name> Restrict to members of: organizations GitHub organizations: <organization-account-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow CLI にリンクが表示されます。リンクをコピーしてブラウザーに貼り付け、Enter を押します。これにより、このアプリケーションを OAuth に登録するために必要な情報が入力されます。情報を変更する必要はありません。
Register application をクリックします。
次のページに Client ID が表示されます。ID をコピーし、Client ID を要求するターミナルに ID を貼り付けます。
注記タブは閉じないでください。
CLI で Client Secret を求められます。ブラウザーに戻り、Generate a new client secret をクリックします。
- シークレットが生成されます。シークレットは二度と表示されないため、コピーしてください。
- シークレットをターミナルに貼り付けて Enter を押します。
- GitHub Enterprise Hostname は空白のままにします。
- claim を選択します。
IDP が作成され、設定がクラスターに反映されるまで、約 1 分間待ちます。
返されたリンクをコピーし、ブラウザーに貼り付けます。新しい IDP を、選択した名前で利用できるはずです。IDP をクリックし、GitHub 認証情報を使用してクラスターにアクセスします。
1.3.2. 他のユーザーにクラスターへのアクセス権を付与する リンクのコピーリンクがクリップボードにコピーされました!
他のクラスターユーザーにアクセス権を付与するには、その GitHub ユーザー ID を、このクラスターに使用する GitHub 組織に追加する必要があります。
- GitHub で、Your organizations ページに移動します。
profile icon をクリックし、Your organizations をクリックします。次に、<自分の組織名> をクリックします。この例では、
my-rosa-cluster
です。Invite someone をクリックします。
- 新しいユーザーの GitHub ID を入力し、正しいユーザーを選択して、Invite をクリックします。
- 新しいユーザーが招待を承諾すると、Hybrid Cloud Console リンクと GitHub 認証情報を使用して ROSA クラスターにログインできるようになります。
1.4. 管理者特権の付与 リンクのコピーリンクがクリップボードにコピーされました!
管理 (admin) 権限は、クラスターに追加したユーザーに自動的には付与されません。特定のユーザーに管理レベルの権限を付与する場合は、各ユーザーに手動で権限を付与する必要があります。ROSA コマンドラインインターフェイス (CLI) または Red Hat OpenShift Cluster Manager Web ユーザーインターフェイス (UI) のいずれかから管理権限を付与できます。
Red Hat は 2 種類の管理権限を提供します。
-
cluster-admin
:cluster-admin
権限は、管理ユーザーにクラスター内のすべての権限を付与します。 -
dedicated-admin
:dedicated-admin
権限を持つ管理ユーザーは、ほとんどの管理タスクを完了できますが、クラスターの破損を防ぐために一定の制限があります。権限の昇格が必要な場合は、dedicated-admin
を使用することを推奨します。
管理者特権の詳細は、クラスターの管理に関する ドキュメントを参照してください。
1.4.1. ROSA CLI の使用 リンクのコピーリンクがクリップボードにコピーされました!
クラスターを作成したユーザーが、次のコマンドのいずれかを実行して管理権限を付与します。
cluster-admin
の場合:rosa grant user cluster-admin --user <idp_user_name> --cluster=<cluster-name>
$ rosa grant user cluster-admin --user <idp_user_name> --cluster=<cluster-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow dedicated-admin
の場合:rosa grant user dedicated-admin --user <idp_user_name> --cluster=<cluster-name>
$ rosa grant user dedicated-admin --user <idp_user_name> --cluster=<cluster-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次のコマンドを実行して、管理権限が追加されたことを確認します。
rosa list users --cluster=<cluster-name>
$ rosa list users --cluster=<cluster-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
rosa list users --cluster=my-rosa-cluster
$ rosa list users --cluster=my-rosa-cluster ID GROUPS <idp_user_name> cluster-admins
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 現在 Red Hat Hybrid Cloud Console にログインしている場合は、コンソールからログアウトし、クラスターに再度ログインして、"Administrator パネル" がある新しいパースペクティブを表示します。シークレットウィンドウまたはプライベートウィンドウが必要になる場合があります。
次のコマンドを実行して、アカウントに管理権限が追加されたことをテストすることもできます。このコマンドをエラーなしで実行できるのは、
cluster-admin
ユーザーのみです。oc get all -n openshift-apiserver
$ oc get all -n openshift-apiserver
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4.2. Red Hat OpenShift Cluster Manager UI の使用 リンクのコピーリンクがクリップボードにコピーされました!
- OpenShift Cluster Manager にログインします。
- クラスターを選択します。
- Access Control タブをクリックします。
- サイドバーの Cluster roles and Access タブをクリックします。
Add user をクリックします。
- ポップアップ画面でユーザー ID を入力します。
ユーザーに
cluster-admin
権限を付与するか、dedicated-admin
権限を付与するかを選択します。
1.5. クラスターへのアクセス リンクのコピーリンクがクリップボードにコピーされました!
コマンドラインインターフェイス (CLI) または Red Hat Hybrid Cloud Console ユーザーインターフェイス (UI) を使用してクラスターに接続できます。
1.5.1. CLI を使用したクラスターへのアクセス リンクのコピーリンクがクリップボードにコピーされました!
CLI を使用してクラスターにアクセスするには、oc
CLI がインストールされている必要があります。チュートリアルの手順を実行してきた場合は、oc
CLI がすでにインストールされています。
- OpenShift Cluster Manager にログインします。
- 右上隅にあるユーザー名をクリックします。
Copy Login Command をクリックします。
アイデンティティープロバイダー (IDP) を選択できる新しいタブが開きます。使用する IDP をクリックします。たとえば、"rosa-github" です。
- 新しいタブが開きます。Display token をクリックします。
ターミナルで次のコマンドを実行します。
oc login --token=sha256~GBAfS4JQ0t1UTKYHbWAK6OUWGUkdMGz000000000000 --server=https://api.my-rosa-cluster.abcd.p1.openshiftapps.com:6443
$ oc login --token=sha256~GBAfS4JQ0t1UTKYHbWAK6OUWGUkdMGz000000000000 --server=https://api.my-rosa-cluster.abcd.p1.openshiftapps.com:6443
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Logged into "https://api.my-rosa-cluster.abcd.p1.openshiftapps.com:6443" as "rosa-user" using the token provided. You have access to 79 projects, the list has been suppressed. You can list all projects with ' projects' Using project "default".
Logged into "https://api.my-rosa-cluster.abcd.p1.openshiftapps.com:6443" as "rosa-user" using the token provided. You have access to 79 projects, the list has been suppressed. You can list all projects with ' projects' Using project "default".
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、ログインしていることを確認します。
oc whoami
$ oc whoami
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
rosa-user
rosa-user
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - これで、クラスターにアクセスできます。
1.5.2. Hybrid Cloud Console を使用したクラスターへのアクセス リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Cluster Manager にログインします。
Hybrid Cloud Console URL を取得するには、次のコマンドを実行します。
rosa describe cluster -c <cluster-name> | grep Console
rosa describe cluster -c <cluster-name> | grep Console
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
IDP をクリックします。たとえば、"rosa-github" です。
- ユーザー認証情報を入力します。
ログインが完了します。チュートリアルの手順を実行してきた場合は、cluster-admin となり、Administrator パネルがある Hybrid Cloud Console の Web ページが表示されるはずです。
1.6. ワーカーノードの管理 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift Service on AWS (ROSA) では、ワーカーノードの変更はマシンプールを使用して実行します。マシンプールを使用すると、ユーザーは多数のマシンを 1 つのエンティティーとして管理できます。すべての ROSA クラスターに、クラスターの作成時に作成されるデフォルトのマシンプールがあります。詳細は、マシンプールの ドキュメントを参照してください。
1.6.1. マシンセットの作成 リンクのコピーリンクがクリップボードにコピーされました!
マシンプールは、コマンドラインインターフェイス (CLI) またはユーザーインターフェイス (UI) のいずれかを使用して作成できます。
1.6.1.1. CLI を使用したマシンプールの作成 リンクのコピーリンクがクリップボードにコピーされました!
以下のコマンドを実行します。
rosa create machinepool --cluster=<cluster-name> --name=<machinepool-name> --replicas=<number-nodes>
$ rosa create machinepool --cluster=<cluster-name> --name=<machinepool-name> --replicas=<number-nodes>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 入力の例
rosa create machinepool --cluster=my-rosa-cluster --name=new-mp
$ rosa create machinepool --cluster=my-rosa-cluster --name=new-mp --replicas=2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
I: Machine pool 'new-mp' created successfully on cluster 'my-rosa-cluster' I: To view all machine pools, run 'rosa list machinepools -c my-rosa-cluster'
I: Machine pool 'new-mp' created successfully on cluster 'my-rosa-cluster' I: To view all machine pools, run 'rosa list machinepools -c my-rosa-cluster'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: 次のコマンドを実行して、新しいマシンプール内の特定のノードにノードラベルまたはテイントを追加します。
rosa create machinepool --cluster=<cluster-name> --name=<machinepool-name> --replicas=<number-nodes> --labels=`<key=pair>`
rosa create machinepool --cluster=<cluster-name> --name=<machinepool-name> --replicas=<number-nodes> --labels=`<key=pair>`
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 入力の例
rosa create machinepool --cluster=my-rosa-cluster --name=db-nodes-mp --replicas=2 --labels='app=db','tier=backend'
$ rosa create machinepool --cluster=my-rosa-cluster --name=db-nodes-mp --replicas=2 --labels='app=db','tier=backend'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
I: Machine pool 'db-nodes-mp' created successfully on cluster 'my-rosa-cluster'
I: Machine pool 'db-nodes-mp' created successfully on cluster 'my-rosa-cluster'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow これにより、1 つのユニットとして管理できる追加の 2 つのノードが作成されます。また、表示されるラベルがこのノードに割り当てられます。
次のコマンドを実行して、マシンプールの作成と割り当てられたラベルを確認します。
rosa list machinepools --cluster=<cluster-name>
rosa list machinepools --cluster=<cluster-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
ID AUTOSCALING REPLICAS INSTANCE TYPE LABELS TAINTS AVAILABILITY ZONE SUBNET DISK SIZE VERSION AUTOREPAIR workers Yes 2/2-4 m5.xlarge us-east-1f subnet-<subnet_id> 300 GiB 4.14.36 Yes
ID AUTOSCALING REPLICAS INSTANCE TYPE LABELS TAINTS AVAILABILITY ZONE SUBNET DISK SIZE VERSION AUTOREPAIR workers Yes 2/2-4 m5.xlarge us-east-1f subnet-<subnet_id> 300 GiB 4.14.36 Yes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.6.1.2. UI を使用したマシンプールの作成 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Cluster Manager にログインし、クラスターをクリックします。
Machine pools タブをクリックします。
- Add machine pool をクリックします。
必要な設定を入力します。
ヒントまた、Edit node labels and taints セクションを展開して、ノードラベルとテイントをマシンプール内のノードに追加することもできます。
- [マシンプールの追加] ボタンをクリックして保存します。
作成した新しいマシンプールが表示されます。
1.6.2. ワーカーノードのスケーリング リンクのコピーリンクがクリップボードにコピーされました!
マシンプールを編集して、その特定のマシンプール内のワーカーノードの数をスケーリングします。CLI または UI を使用してワーカーノードをスケーリングできます。
1.6.2.1. CLI を使用したワーカーノードのスケーリング リンクのコピーリンクがクリップボードにコピーされました!
次のコマンドを実行して、各クラスターで作成されたデフォルトのマシンプールを確認します。
rosa list machinepools --cluster=<cluster-name>
rosa list machinepools --cluster=<cluster-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
ID AUTOSCALING REPLICAS INSTANCE TYPE LABELS TAINTS AVAILABILITY ZONES Default No 2 m5.xlarge us-east-1a
ID AUTOSCALING REPLICAS INSTANCE TYPE LABELS TAINTS AVAILABILITY ZONES Default No 2 m5.xlarge us-east-1a
Copy to Clipboard Copied! Toggle word wrap Toggle overflow デフォルトのマシンプールを異なるノード数にスケールアウトするには、次のコマンドを実行します。
rosa edit machinepool --cluster=<cluster-name> --replicas=<number-nodes> <machinepool-name>
rosa edit machinepool --cluster=<cluster-name> --replicas=<number-nodes> <machinepool-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 入力の例
rosa edit machinepool --cluster=my-rosa-cluster --replicas 3 Default
rosa edit machinepool --cluster=my-rosa-cluster --replicas 3 Default
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、マシンプールがスケーリングされたことを確認します。
rosa describe cluster --cluster=<cluster-name> | grep Compute
rosa describe cluster --cluster=<cluster-name> | grep Compute
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 入力の例
rosa describe cluster --cluster=my-rosa-cluster | grep Compute
$ rosa describe cluster --cluster=my-rosa-cluster | grep Compute
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
- Compute (Autoscaled): 2-4 - Compute (current): 2
- Compute (Autoscaled): 2-4 - Compute (current): 2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.6.2.2. UI を使用したワーカーノードのスケーリング リンクのコピーリンクがクリップボードにコピーされました!
- 編集するマシンプールの右側にある 3 つの点をクリックします。
- Edit をクリックします。
- 必要なノード数を入力し、Save をクリックします。
クラスターを選択し、Overview タブをクリックします。Compute listing までスクロールして、クラスターがスケーリングされたことを確認します。Compute listing はスケーリングされたノードと同じであるはずです。たとえば、3/3 のようになります。
1.6.2.3. ノードラベルの追加 リンクのコピーリンクがクリップボードにコピーされました!
次のコマンドを使用してノードラベルを追加します。
rosa edit machinepool --cluster=<cluster-name> --replicas=<number-nodes> --labels='key=value' <machinepool-name>
rosa edit machinepool --cluster=<cluster-name> --replicas=<number-nodes> --labels='key=value' <machinepool-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 入力の例
rosa edit machinepool --cluster=my-rosa-cluster --replicas=2 --labels 'foo=bar','baz=one' new-mp
rosa edit machinepool --cluster=my-rosa-cluster --replicas=2 --labels 'foo=bar','baz=one' new-mp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow これにより、新しいマシンプールに 2 つのラベルが追加されます。
このコマンドは、すべてのマシンプール設定を新しく定義した設定に置き換えます。別のラベルを追加し、かつ 古いラベルを保持する場合は、新しいラベルと既存のラベルの両方を指定する必要があります。指定しないと、既存のすべてのラベルが追加するラベルに置き換えられます。同様に、ラベルを削除する場合は、削除するラベルを除いて必要なラベルを指定し、コマンドを実行します。
1.6.3. ノードタイプの混在 リンクのコピーリンクがクリップボードにコピーされました!
新しいマシンプールを使用して、同じクラスター内で異なるワーカーノードマシンタイプを混在させることもできます。マシンプールの作成後にマシンプールのノードタイプを変更することはできません。しかし、--instance-type
フラグを追加することで、異なるノードを持つ新しいマシンプールを作成できます。
たとえば、データベースノードを別のノードタイプに変更するには、次のコマンドを実行します。
rosa create machinepool --cluster=<cluster-name> --name=<mp-name> --replicas=<number-nodes> --labels='<key=pair>' --instance-type=<type>
rosa create machinepool --cluster=<cluster-name> --name=<mp-name> --replicas=<number-nodes> --labels='<key=pair>' --instance-type=<type>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 入力の例
rosa create machinepool --cluster=my-rosa-cluster --name=db-nodes-large-mp --replicas=2 --labels='app=db','tier=backend' --instance-type=m5.2xlarge
rosa create machinepool --cluster=my-rosa-cluster --name=db-nodes-large-mp --replicas=2 --labels='app=db','tier=backend' --instance-type=m5.2xlarge
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 利用可能なすべてのインスタンスタイプ を表示するには、次のコマンドを実行します。
rosa list instance-types
rosa list instance-types
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ステップバイステップで変更するには、
--interactive
フラグを使用します。rosa create machinepool -c <cluster-name> --interactive
rosa create machinepool -c <cluster-name> --interactive
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行してマシンプールをリストし、より大きな新しいインスタンスタイプを確認します。
rosa list machinepools -c <cluster-name>
rosa list machinepools -c <cluster-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.7. 自動スケーリング リンクのコピーリンクがクリップボードにコピーされました!
クラスターオートスケーラーは、 Pod リソースに基づいてクラスターにワーカーノードを追加または削除します。
クラスターオートスケーラーは、次の場合にクラスターのサイズを増やします。
- リソースが不足しているため、Pod を現在のノードでスケジュールできない場合。
- デプロイメントのニーズを満たすために、別のノードが必要な場合。
クラスターオートスケーラーは、指定の制限を超えてクラスターリソースを拡大することはありません。
クラスターオートスケーラーは、次の場合にクラスターのサイズを減らします。
- 一部のノードが長期間続けて必要とされない場合。たとえば、ノードのリソース使用量が低く、そのノードの重要な Pod がすべて他のノードに収まる場合です。
1.7.1. CLI を使用した既存マシンプールの自動スケーリングの有効化 リンクのコピーリンクがクリップボードにコピーされました!
クラスターの自動スケーリングは、クラスターの作成時、および新しいマシンプールを作成するときに、--enable-autoscaling
オプションを使用して有効にできます。
自動スケーリングは、マシンプールの可用性に基づいて設定されます。どのマシンプールが自動スケーリングに使用できるかを確認するには、次のコマンドを実行します。
rosa list machinepools -c <cluster-name>
$ rosa list machinepools -c <cluster-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
ID AUTOSCALING REPLICAS INSTANCE TYPE LABELS TAINTS AVAILABILITY ZONE SUBNET DISK SIZE VERSION AUTOREPAIR workers No 2/2 m5.xlarge us-east-1f subnet-<subnet_id> 300 GiB 4.14.36 Yes
ID AUTOSCALING REPLICAS INSTANCE TYPE LABELS TAINTS AVAILABILITY ZONE SUBNET DISK SIZE VERSION AUTOREPAIR workers No 2/2 m5.xlarge us-east-1f subnet-<subnet_id> 300 GiB 4.14.36 Yes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、利用可能なマシンプールに自動スケーリングを追加します。
rosa edit machinepool -c <cluster-name> --enable-autoscaling <machinepool-name> --min-replicas=<num> --max-replicas=<num>
$ rosa edit machinepool -c <cluster-name> --enable-autoscaling <machinepool-name> --min-replicas=<num> --max-replicas=<num>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 入力の例
rosa edit machinepool -c my-rosa-cluster --enable-autoscaling workers --min-replicas=2 --max-replicas=4
$ rosa edit machinepool -c my-rosa-cluster --enable-autoscaling workers --min-replicas=2 --max-replicas=4
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 上記のコマンドは、リソースに応じて 2 - 4 ノードの間でスケーリングするワーカーノードのオートスケーラーを作成します。
1.7.2. UI を使用した既存マシンプールの自動スケーリングの有効化 リンクのコピーリンクがクリップボードにコピーされました!
マシンプールの作成時に Enable autoscaling チェックボックスをオンにすることで、クラスターの作成時にクラスターの自動スケーリングを有効にできます。
- Machine pools タブに移動し、右側の 3 つの点をクリックします。
- [編集] をクリックし、[自動スケーリングを有効にする] を クリックします。
- 最小ノード数と最大ノード数を編集するか、デフォルトの数値のままにします。
- Save をクリックします。
次のコマンドを実行して、自動スケーリングが追加されたことを確認します。
rosa list machinepools -c <cluster-name>
$ rosa list machinepools -c <cluster-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
ID AUTOSCALING REPLICAS INSTANCE TYPE LABELS TAINTS AVAILABILITY ZONE SUBNET DISK SIZE VERSION AUTOREPAIR workers Yes 2/2-4 m5.xlarge us-east-1f subnet-<subnet_id> 300 GiB 4.14.36 Yes
ID AUTOSCALING REPLICAS INSTANCE TYPE LABELS TAINTS AVAILABILITY ZONE SUBNET DISK SIZE VERSION AUTOREPAIR workers Yes 2/2-4 m5.xlarge us-east-1f subnet-<subnet_id> 300 GiB 4.14.36 Yes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.8. クラスターのアップグレード リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift Service on AWS (ROSA) では、クラスターのアップグレードはすべてマネージドサービスの一環として実行されます。ユーザーがコマンドを実行したり、クラスターに変更を加えたりする必要はありません。アップグレードは都合の良い時刻にスケジュールできます。
クラスターのアップグレードをスケジュールする方法には、次のものがあります。
- コマンドラインインターフェイス (CLI) を使用した手動アップグレード: 1 回限りの即時アップグレードを開始するか、将来の日時に 1 回限りのアップグレードをスケジュールします。
- Red Hat OpenShift Cluster Manager ユーザーインターフェイス (UI) を使用した手動アップグレード: 1 回限りの即時アップグレードを開始するか、将来の日時に 1 回限りのアップグレードをスケジュールします。
- 自動アップグレード: 手動でスケジュールを設定することなく、新しいバージョンが利用可能になるたびに、定期的な y-stream アップグレードのアップグレード時間を設定します。マイナーバージョンは手動でスケジュールする必要があります。
クラスターのアップグレードの詳細は、次のコマンドを実行してください。
rosa upgrade cluster --help
$ rosa upgrade cluster --help
1.8.1. CLI を使用したクラスターの手動アップグレード リンクのコピーリンクがクリップボードにコピーされました!
次のコマンドを実行して、利用可能なアップグレードがあるかどうかを確認します。
rosa list upgrade -c <cluster-name>
$ rosa list upgrade -c <cluster-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
rosa list upgrade -c <cluster-name>
$ rosa list upgrade -c <cluster-name> VERSION NOTES 4.14.7 recommended 4.14.6 ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 上の例では、バージョン 4.14.7 と 4.14.6 の両方が利用可能です。
次のコマンドを実行して、1 時間以内にクラスターをアップグレードするようにスケジュールします。
rosa upgrade cluster -c --control-plane <cluster-name> --version <desired-version>
$ rosa upgrade cluster -c --control-plane <cluster-name> --version <desired-version>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: 次のコマンドを実行して、将来の日時にクラスターをアップグレードするようにスケジュールします。
rosa upgrade cluster -c <cluster-name> --version <desired-version> --schedule-date <future-date-for-update> --schedule-time <future-time-for-update>
$ rosa upgrade cluster -c <cluster-name> --version <desired-version> --schedule-date <future-date-for-update> --schedule-time <future-time-for-update>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.8.2. UI を使用したクラスターの手動アップグレード リンクのコピーリンクがクリップボードにコピーされました!
- OpenShift Cluster Manager にログインし、アップグレードするクラスターを選択します。
- Settings タブをクリックします。
アップグレードが利用可能な場合は、Update をクリックします。
- 新しいウィンドウでアップグレードするバージョンを選択します。
- アップグレードの時間をスケジュールするか、すぐに開始します。
1.8.3. 自動定期アップグレードの設定 リンクのコピーリンクがクリップボードにコピーされました!
- OpenShift Cluster Manager にログインし、アップグレードするクラスターを選択します。
Settings タブをクリックします。
- Update Strategy で、Recurring updates をクリックします。
- アップグレードを実行する日時を設定します。
- Save をクリックします。
1.9. クラスターの削除 リンクのコピーリンクがクリップボードにコピーされました!
コマンドラインインターフェイス (CLI) またはユーザーインターフェイス (UI) を使用して、Red Hat OpenShift Service on AWS (ROSA) クラスターを削除できます。
1.9.1. CLI を使用した ROSA クラスターの削除 リンクのコピーリンクがクリップボードにコピーされました!
オプション: 次のコマンドを実行して、クラスターをリストし、削除する正しいクラスターを確認します。
rosa list clusters
$ rosa list clusters
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行してクラスターを削除します。
rosa delete cluster --cluster <cluster-name>
$ rosa delete cluster --cluster <cluster-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 警告このコマンドは元に戻せません。
CLI に、クラスターを削除するかどうかを確認するプロンプトが表示されます。y を押してから Enter を押します。クラスターとそれに関連するすべてのインフラストラクチャーが削除されます。
注記AWS STS および IAM のロールとポリシーはすべての残るため、クラスターの削除が完了したら、以下の手順に従って手動で削除する必要があります。
CLI に、作成した OpenID Connect (OIDC) プロバイダーおよび Operator IAM ロールのリソースを削除するコマンドが出力します。クラスターの削除が完了するまで待ってから、これらのリソースを削除します。次のコマンドを実行して、簡単なステータスチェックを実行します。
rosa list clusters
$ rosa list clusters
Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターが削除されたら、次のコマンドを実行して OIDC プロバイダーを削除します。
rosa delete oidc-provider -c <clusterID> --mode auto --yes
$ rosa delete oidc-provider -c <clusterID> --mode auto --yes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、Operator IAM ロールを削除します。
rosa delete operator-roles -c <clusterID> --mode auto --yes
$ rosa delete operator-roles -c <clusterID> --mode auto --yes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記このコマンドには、クラスター名ではなくクラスター ID が必要です。
残りのアカウントロールは、同じアカウント内の他のクラスターで必要なくなった場合にのみ削除してください。このアカウントで他の ROSA クラスターを作成する場合は、この手順を実行しないでください。
アカウントロールを削除するには、アカウントロールの作成時に使用した接頭辞を確認する必要があります。特に指定しなかった場合、デフォルトは "ManagedOpenShift" です。
次のコマンドを実行して、アカウントのロールを削除します。
rosa delete account-roles --prefix <prefix> --mode auto --yes
$ rosa delete account-roles --prefix <prefix> --mode auto --yes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.9.2. UI を使用した ROSA クラスターの削除 リンクのコピーリンクがクリップボードにコピーされました!
- OpenShift Cluster Manager にログインし、削除するクラスターを見つけます。
クラスターの右側にある 3 つの点をクリックします。
ドロップダウンメニューで、Delete cluster をクリックします。
- 削除を確認するクラスターの名前を入力し、Delete をクリックします。
1.10. サポートの利用 リンクのコピーリンクがクリップボードにコピーされました!
必要なときに適切なサポートを受けることが重要です。ここでは、サポートが必要な場合に利用できるリソースをいくつか紹介します。
1.10.1. サポート連絡先の追加 リンクのコピーリンクがクリップボードにコピーされました!
クラスターに関する連絡用のメールアドレスを追加できます。
- Red Hat OpenShift Cluster Manager ユーザーインターフェイス (UI) で、サイドナビゲーションタブの クラスターリスト をクリックします。
- サポートが必要なクラスターを選択します。
- Support タブをクリックします。
- Add notification contact をクリックし、追加のメールアドレスを入力します。
1.10.2. UI を使用して Red Hat にサポートについて問い合わせる リンクのコピーリンクがクリップボードにコピーされました!
- OpenShift Cluster Manager UI で、Support タブをクリックします。
- Open support case をクリックします。
1.10.3. サポートページを使用して Red Hat にサポートについて問い合わせる リンクのコピーリンクがクリップボードにコピーされました!
- Red Hat サポートページ に移動します。
Open a new Case をクリックします。
- Red Hat アカウントにログインします。
サポートに問い合わせる理由を選択します。
Red Hat OpenShift Service on AWS を選択します。
- continue をクリックします。
問題の概要とリクエストの詳細を入力します。ファイル、ログ、スクリーンショットをアップロードします。ご提供いただく情報が多いほど、Red Hat サポートが適切な解決方法を見つけやすくなります。
注記このページの下部に、問題の解決に役立つ関連性の高い提案が表示されます。
- Continue をクリックします。
- 新しいフィールドの質問に回答します。
- Continue をクリックします。
ケースに関する次の情報を入力します。
- Support level: Premium
- Severity: Red Hat サポートの重大度レベルの定義を確認して、正しいものを選択します。
- Group: このケースが他のいくつかのケースに関連する場合は、対応するグループを選択できます。
- Language
- Send notifications: アクティビティーの通知を受け取るためのメールアドレスを追加します。
- Red Hat associates: Red Hat の従業員とやり取りをしていて、その従業員と情報を共有する場合は、ここに従業員のメールアドレスを入力できます。
- Alternate Case ID: お客様独自の ID を割り当てる場合は、ここに入力できます。
- Continue をクリックします。
確認画面で、問い合わせに関連する正しいクラスター ID を選択していることを確認します。
- Submit をクリックします。
- 指定した重大度レベル の約束された応答時間に応じて連絡が届きます。
第2章 アプリケーションワークショップの展開 リンクのコピーリンクがクリップボードにコピーされました!
2.1. ワークショップの概要 リンクのコピーリンクがクリップボードにコピーされました!
2.1.1. はじめに リンクのコピーリンクがクリップボードにコピーされました!
クラスターのプロビジョニングが正常に完了したら、このワークショップに従ってクラスターにアプリケーションをデプロイし、コンテナーベースのアプリケーションのデプロイと操作の概念を理解します。
ワークショップの目的
- Source-to-Image (S2I) と Kubernetes デプロイメントオブジェクトを使用して Node.js ベースのアプリケーションをデプロイする
- ソースコードの変更を自動的にプッシュするための継続的デリバリー (CD) パイプラインを設定する
- 自己修復アプリケーションを体験する
- ConfigMap、シークレット、環境変数による設定管理について学ぶ
- 永続ストレージを使用して Pod の再起動間でデータを共有する
- Kubernetes とアプリケーションのネットワークを探索する
- ROSA と Kubernetes の機能について理解を深める
- Horizontal Pod Autoscaler (HPA) からの負荷に基づいて Pod を自動的にスケーリングします
前提条件
- プロビジョニングされた ROSA クラスター
- OpenShift コマンドラインインターフェイス (CLI)
- GitHub アカウント
2.1.2. OSToy アプリケーションについて リンクのコピーリンクがクリップボードにコピーされました!
OSToy は、Kubernetes の機能を探索するために ROSA クラスターにデプロイされる Node.js アプリケーションです。
このアプリケーションのユーザーインターフェイスから、以下を実行できます。
- メッセージをログに書き込む (stdout/stderr)
- 自己修復を確認するために意図的にアプリケーションをクラッシュさせる
- liveness プローブを切り替えて OpenShift の動作を監視する
- ConfigMap、シークレット、環境変数を読み取る
- 共有ストレージに接続したときにファイルを読み書きする
- ネットワーク接続、クラスター内 DNS、および含まれるマイクロサービスとの通信を確認します。
- HPA を使用して Pod の自動スケーリングを確認するには、負荷を増やします。
2.1.2.1. OSToy アプリケーション図 リンクのコピーリンクがクリップボードにコピーされました!
2.1.2.2. OSToy の UI について リンクのコピーリンクがクリップボードにコピーされました!
- Pod の名前
- ホーム: アプリケーションのホームページ
- 永続ストレージ: アプリケーションにバインドされた永続ボリュームにデータを書き込みます
- Config map: アプリケーションで利用可能な ConfigMap とキーと値のペアを表示します。
- シークレット: アプリケーションで利用可能なシークレットとキーと値のペアを表示します
- ENV 変数: アプリケーションで利用可能な環境変数を表示します
- ネットワーキング: ネットワーキングツール
- Pod の自動スケーリング: Pod の負荷を増やし、Horizontal Pod Autoscaler (HPA) をテストします。
- ACK S3: AWS S3 と統合してバケットへのオブジェクトの読み書きを行う
- 概要: アプリケーション情報
2.1.2.3. ラボのリソース リンクのコピーリンクがクリップボードにコピーされました!
- OSToy アプリケーションのソースコード
- OSToy フロントエンドコンテナーイメージ
- OSToy マイクロサービスコンテナーイメージ
デプロイメント定義 YAML ファイル:
ostoy-frontend-deployment.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ostoy-microservice-deployment.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ACK S3 の S3 バケットマニフェスト
s3-bucket.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
OSToy アプリケーションのデプロイを簡略化するために、上記のデプロイメントマニフェストで必要なすべてのオブジェクトはグループ化されています。一般的なエンタープライズデプロイメントでは、Kubernetes オブジェクトごとに個別のマニフェストファイルを使用することを推奨します。
2.2. Kubernetes を使用した OSToy アプリケーションのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
アプリケーションをデプロイするには、コンテナーイメージを作成し、それをイメージリポジトリーに保存し、そのイメージを使用するデプロイメントオブジェクトを定義する必要があります。
アプリケーションのデプロイには次の手順が含まれます。
- フロントエンドとバックエンドのマイクロサービスコンテナーのイメージを作成する
- コンテナーイメージをイメージリポジトリーに保存する
- アプリケーションの Kubernetes デプロイメントオブジェクトを作成する
- アプリケーションのデプロイ
このワークショップでは、アプリケーションのデプロイメントに焦点を当て、ユーザーに既存のイメージを使用するリモートファイルを実行させます。
2.2.1. ログインコマンドの取得 リンクのコピーリンクがクリップボードにコピーされました!
手順
次のコマンドを実行して、コマンドラインインターフェイス (CLI) にログインしていることを確認します。
rosa whoami
rosa whoami
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドラインインターフェイスにログインしている場合は、新しいプロジェクトの作成に進んでください。コマンドラインインターフェイスにログインしていない場合は、この手順を続行します。
- Web コンソールを使用してクラスターにアクセスします。
右上隅のログイン名の横にあるドロップダウン矢印をクリックし、ログインコマンドのコピー を選択します。
新しいタブが開きます。
- 認証方法を選択します。
- Display Token をクリックします。
- Log in with this token の下のコマンドをコピーします。
ターミナルから、コピーしたコマンドを貼り付けて実行します。ログインに成功すると、次の確認メッセージが表示されます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2.2. 新規プロジェクトの作成 リンクのコピーリンクがクリップボードにコピーされました!
好みのインターフェイスを使用して新しいプロジェクトを作成します。
2.2.2.1. CLI を使用して新しいプロジェクトを作成する リンクのコピーリンクがクリップボードにコピーされました!
手順
以下のコマンドを実行して、クラスターに
ostoy
という名前の新規プロジェクトを作成します。oc new-project ostoy
$ oc new-project ostoy
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Now using project "ostoy" on server "https://api.myrosacluster.abcd.p1.openshiftapps.com:6443".
Now using project "ostoy" on server "https://api.myrosacluster.abcd.p1.openshiftapps.com:6443".
Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: 次のコマンドを実行して、一意のプロジェクト名を作成します。
oc new-project ostoy-$(uuidgen | cut -d - -f 2 | tr '[:upper:]' '[:lower:]')
$ oc new-project ostoy-$(uuidgen | cut -d - -f 2 | tr '[:upper:]' '[:lower:]')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2.2.2. Web コンソールを使用して新しいプロジェクトを作成する リンクのコピーリンクがクリップボードにコピーされました!
手順
- Web コンソールから、Home → Projects をクリックします。
Projects ページで Create Project をクリックします。
- [プロジェクトの作成] ボックスで、[名前] フィールドにプロジェクト名を入力します。
- Create をクリックします。
2.2.3. バックエンドマイクロサービスのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
マイクロサービスは内部 Web リクエストを処理し、現在のホスト名とランダムに生成された色の文字列を含む JSON オブジェクトを返します。
手順
次のコマンドを実行してマイクロサービスをデプロイします。
oc apply -f https://raw.githubusercontent.com/openshift-cs/rosaworkshop/master/rosa-workshop/ostoy/yaml/ostoy-microservice-deployment.yaml
$ oc apply -f https://raw.githubusercontent.com/openshift-cs/rosaworkshop/master/rosa-workshop/ostoy/yaml/ostoy-microservice-deployment.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
oc apply -f https://raw.githubusercontent.com/openshift-cs/rosaworkshop/master/rosa-workshop/ostoy/yaml/ostoy-microservice-deployment.yaml
$ oc apply -f https://raw.githubusercontent.com/openshift-cs/rosaworkshop/master/rosa-workshop/ostoy/yaml/ostoy-microservice-deployment.yaml deployment.apps/ostoy-microservice created service/ostoy-microservice-svc created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2.4. フロントエンドマイクロサービスのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
フロントエンドデプロイメントでは、アプリケーションと追加の Kubernetes オブジェクトに Node.js フロントエンドを使用します。
フロントエンドデプロイメントでは、次の機能が定義されます。
- 永続ボリューム要求
- Deployment オブジェクト
- サービス
- ルート
- ConfigMap
- シークレット
手順
次のコマンドを実行して、アプリケーションのフロントエンドをデプロイし、オブジェクトを作成します。
oc apply -f https://raw.githubusercontent.com/openshift-cs/rosaworkshop/master/rosa-workshop/ostoy/yaml/ostoy-frontend-deployment.yaml
$ oc apply -f https://raw.githubusercontent.com/openshift-cs/rosaworkshop/master/rosa-workshop/ostoy/yaml/ostoy-frontend-deployment.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow すべてのオブジェクトが正常に作成されるはずです。
2.2.5. アプリケーションへのルートを取得する リンクのコピーリンクがクリップボードにコピーされました!
アプリケーションにアクセスするためのルートを取得します。
手順
次のコマンドを実行して、アプリケーションへのルートを取得します。
oc get route
$ oc get route
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD ostoy-route ostoy-route-ostoy.apps.<your-rosa-cluster>.abcd.p1.openshiftapps.com ostoy-frontend-svc <all> None
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD ostoy-route ostoy-route-ostoy.apps.<your-rosa-cluster>.abcd.p1.openshiftapps.com ostoy-frontend-svc <all> None
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2.6. アプリケーションの表示 リンクのコピーリンクがクリップボードにコピーされました!
手順
-
前の手順で出力された
ostoy-route-ostoy.apps.<your-rosa-cluster>.abcd.p1.openshiftapps.com
URL をコピーします。 コピーした URL を Web ブラウザーに貼り付けて Enter キーを押します。アプリケーションのホームページが表示されます。ページが読み込まれない場合は、
https
ではなくhttp
を使用していることを確認してください。
2.3. Health check リンクのコピーリンクがクリップボードにコピーされました!
Kubernetes が Pod の障害にどのように対応するかを確認します。そのためには、Pod を意図的にクラッシュさせ、Kubernetes liveness プローブに応答しないようにします。
2.3.1. デスクトップの準備 リンクのコピーリンクがクリップボードにコピーされました!
手順
OpenShift Web コンソールから、Workloads > Deployments > ostoy-frontend を選択して、OSToy デプロイメントを表示します。
2.3.2. Pod のクラッシュ リンクのコピーリンクがクリップボードにコピーされました!
手順
-
OSToy アプリケーションの Web コンソールから、左側のメニューの Home をクリックし、Crash Pod ボックスに
This is goodbye!
などのメッセージを入力します。 Crash Pod をクリックします。
Pod がクラッシュし、Kubernetes が Pod を再起動します。
2.3.3. 復活した Pod の確認 リンクのコピーリンクがクリップボードにコピーされました!
手順
OpenShift Web コンソールから、Deployments 画面にすばやく切り替えます。Pod が黄色に変わり、ダウンしていることがわかります。すぐに復活して青色に変わるはずです。復活のプロセスは急速に起こります。
検証
Web コンソールから、Pods > ostoy-frontend-xxxxxxx-xxxx をクリックして、Pod 画面に切り替えます。
[イベント] サブタブをクリックし、コンテナーがクラッシュして再起動したことを確認します。
2.3.4. アプリケーションを誤動作させる リンクのコピーリンクがクリップボードにコピーされました!
手順
~~。Pod イベントページを開いたままにしておきます。~~
OSToy アプリケーションから、Toggle Health Status タイルの Toggle Health をクリックします。Current Health 状態が I’m not feeling all that well に切り替わるのを確認します。
検証
アプリケーションを誤動作させると、アプリケーションは 200 HTTP コード
で応答を停止します。3 回連続して失敗すると、Kubernetes は Pod を停止して再起動します。
- Web コンソールから Pod イベントページに戻り、liveness プローブが失敗し、Pod が再起動したことを確認します。
次のイメージは、Pod イベントページに表示される内容の例を示しています。
A. Pod で失敗が 3 回連続で発生しました。
B. Kubernetes が Pod を停止します。
C. Kubernetes が Pod を再起動します。
2.4. クラスターストレージの永続ボリューム リンクのコピーリンクがクリップボードにコピーされました!
{rosa-classic-first} と Red Hat OpenShift Service on AWS (ROSA) は、Amazon Web Services (AWS) Elastic Block Store (EBS) または AWS Elastic File System (EFS) のいずれかを使用して永続ボリュームを保存することをサポートしています。
2.4.1. 永続ボリュームの使用 リンクのコピーリンクがクリップボードにコピーされました!
以下の手順に従ってファイルを作成し、クラスター内の永続ボリュームに保存し、Pod の障害と再作成後もファイルが存在することを確認します。
2.4.1.1. 永続ボリューム要求の表示 リンクのコピーリンクがクリップボードにコピーされました!
手順
- クラスターの OpenShift Web コンソールに移動します。
- 左側のメニューで Storage をクリックし、PersistentVolumeClaims をクリックして、すべての永続ボリューム要求のリストを表示します。
永続ボリューム要求をクリックすると、サイズ、アクセスモード、ストレージクラス、その他の要求の詳細が表示されます。
注記アクセスモードは
ReadWriteOnce
(RWO) です。つまり、ボリュームは 1 つのノードにのみマウントでき、Pod または複数の Pod がボリュームの読み取りと書き込みを行うことができます。
2.4.1.2. ファイルの保存 リンクのコピーリンクがクリップボードにコピーされました!
手順
- OSToy アプリケーションコンソールで、左側のメニューで Persistent Storage をクリックします。
-
Filename ボックスに、
.txt
拡張子が付いたファイル名 (test-pv.txt
など) を入力します。 -
File contents ボックスに、テキストの文を入力します (例:
OpenShift is the greatest thing since sliced bread!
)。 Create file をクリックします。
- OSToy アプリケーションコンソールで 既存のファイル までスクロールします。
作成したファイルをクリックすると、ファイル名と内容が表示されます。
2.4.1.3. Pod のクラッシュ リンクのコピーリンクがクリップボードにコピーされました!
手順
- OSToy アプリケーションコンソールで、左側のメニューの Home をクリックします。
- Crash Pod をクリックします。
2.4.1.4. 永続ストレージの確認 リンクのコピーリンクがクリップボードにコピーされました!
手順
- Pod が再作成されるまで待機します。
- OSToy アプリケーションコンソールで、左側のメニューで Persistent Storage をクリックします。
作成したファイルを見つけて開き、内容を表示して確認します。
検証
デプロイメント YAML ファイルには /var/demo_files
ディレクトリー が永続ボリューム要求にマウントされたことが示されています。
次のコマンドを実行して、フロントエンド Pod の名前を取得します。
oc get pods
$ oc get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、コンテナー内でセキュアシェル (SSH) セッションを開始します。
oc rsh <pod_name>
$ oc rsh <pod_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行してディレクトリーに移動します。
cd /var/demo_files
$ cd /var/demo_files
Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: 次のコマンドを実行して、作成したすべてのファイルを表示します。
ls
$ ls
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、ファイルを開いてコンテンツを表示します。
cat test-pv.txt
$ cat test-pv.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力が OSToy アプリケーションコンソールに入力したテキストであることを確認します。
端末の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.4.1.5. セッションの終了 リンクのコピーリンクがクリップボードにコピーされました!
手順
-
ターミナルで
exit
と入力してセッションを終了し、CLI に戻ります。
2.5. ConfigMap、シークレット、環境変数 リンクのコピーリンクがクリップボードにコピーされました!
このチュートリアルでは、config map、シークレット、環境変数 を使用して OSToy アプリケーションを設定する方法を説明します。
2.5.1. ConfigMap を使用した設定 リンクのコピーリンクがクリップボードにコピーされました!
config map を使用すると、コンテナーイメージのコンテンツから設定アーティファクトを分離して、コンテナー化されたアプリケーションの移植性を維持できます。
手順
OSToy アプリの左側のメニューで、Config Maps をクリックすると、OSToy アプリケーションで使用できる config map の内容が表示されます。このコードスニペットは、config map の設定の例を示しています。
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.5.2. シークレットを使用した設定 リンクのコピーリンクがクリップボードにコピーされました!
Kubernetes の Secret
オブジェクトを使用すると、パスワード、OAuth トークン、SSH 鍵などの機密情報を保存および管理できます。機密情報をシークレットに格納すると、Pod 定義やコンテナーイメージにプレーンテキストで格納するよりも安全性と柔軟性が高まります。
手順
OSToy アプリの左側のメニューで、Secrets をクリックすると、OSToy アプリケーションで使用できるシークレットの内容が表示されます。このコードスニペットは、シークレットの設定の例を示しています。
出力例
USERNAME=my_user PASSWORD=VVNFUk5BTUU9bXlfdXNlcgpQQVNTV09SRD1AT3RCbCVYQXAhIzYzMlk1RndDQE1UUWsKU01UUD1sb2NhbGhvc3QKU01UUF9QT1JUPTI1 SMTP=localhost SMTP_PORT=25
USERNAME=my_user PASSWORD=VVNFUk5BTUU9bXlfdXNlcgpQQVNTV09SRD1AT3RCbCVYQXAhIzYzMlk1RndDQE1UUWsKU01UUD1sb2NhbGhvc3QKU01UUF9QT1JUPTI1 SMTP=localhost SMTP_PORT=25
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.5.3. 環境変数を使用した設定 リンクのコピーリンクがクリップボードにコピーされました!
環境変数を使用すると、コードを変更することなくアプリケーションの動作を簡単に変更できます。同じアプリケーションの別々のデプロイメントで、環境変数によって動作を変えることができます。Red Hat OpenShift Service on AWS では、Pod またはデプロイメントの環境変数の設定、表示、更新を簡単に行うことができます。
手順
OSToy アプリの左側のメニューで、ENV Variables をクリックすると、OSToy アプリケーションで使用できる環境変数が表示されます。このコードスニペットは、環境変数の設定の例を示しています。
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.6. ネットワーク リンクのコピーリンクがクリップボードにコピーされました!
OSToy アプリケーションは、クラスター内ネットワークを使用して、マイクロサービスによって機能を分離します。
このワークショップには、それぞれ独自のサービスを持つ少なくとも 2 つの個別の Pod があります。1 つの Pod は、サービスとパブリックにアクセス可能なルートを備えたフロントエンド Web アプリケーションとして機能します。もう一方の Pod は、フロントエンド Pod がマイクロサービスと通信できるように、サービスオブジェクトを備えたバックエンドマイクロサービスとして機能します。
複数の Pod がある場合、Pod 間で通信が行われます。マイクロサービスは、クラスターの外部や他の名前空間やプロジェクトからはアクセスできません。マイクロサービスの目的は、内部 Web リクエストを処理し、現在のホスト名 (Pod の名前) とランダムに生成された色の文字列を含む JSON オブジェクトを返すことです。この色文字列は、OSToy アプリケーションの Web コンソールにその色のボックスを表示します。
ネットワークの制限の詳細は、ネットワークポリシーについてを 参照してください。
2.6.1. クラスター内ネットワーク リンクのコピーリンクがクリップボードにコピーされました!
OSToy アプリケーションでネットワーク設定を表示できます。
手順
- OSToy アプリケーション Web コンソールで、左側のメニューの [ネットワーク] を クリックします。
ネットワーク設定を確認します。タイルホスト名検索は、Pod 用に作成されたサービス名が内部 ClusterIP アドレスに変換される方法を示しています。
ホスト名検索タイルに、
<service_name>.<namespace>.svc.cluster.local
という形式で作成したマイクロサービスの名前を入力します。次のコマンドを実行すると、ostoy-microservice.yaml
のサービス定義でマイクロサービス名を見つけることができます。oc get service <name_of_service> -o yaml
$ oc get service <name_of_service> -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、完全なホスト名は、
ostoy-microservice-svc.ostoy.svc.cluster.local
です。IP アドレスが返されます。上記の例では、
172.30.165.246
になります。これはクラスター内 IP アドレスであり、クラスター内からのみアクセスできます。
2.7. アプリケーションのスケーリング リンクのコピーリンクがクリップボードにコピーされました!
Horizontal Pod Autoscaler (HPA) を使用して、Pod を手動または自動でスケーリングします。クラスターノードをスケーリングすることもできます。
前提条件
- アクティブな ROSA クラスター
- 展開された OSToy アプリケーション
2.7.1. Pod の手動スケーリング リンクのコピーリンクがクリップボードにコピーされました!
次のいずれかの方法を使用して、アプリケーションの Pod を手動でスケーリングできます。
- ReplicaSet またはデプロイメント定義の変更
- コマンドラインの使用
- Web コンソールの使用
このワークショップでは、まず 1 つの Pod だけをマイクロサービスに使用します。デプロイメント定義でレプリカを 1
に定義すると、Kubernetes レプリケーションコントローラーが 1 つの Pod を維持しようとします。次に、負荷に基づいて必要に応じてさらに Pod をスケールアウトする Horizontal Pod Autoscaler (HPA) を使用して Pod の自動スケーリングを定義する方法を学習します。
手順
- OSToy アプリケーションで、ナビゲーションメニューの Networking タブをクリックします。
クラスター内通信セクションで、色がランダムに変化するボックスを見つけます。ボックス内に、マイクロサービスの Pod 名が表示されます。この例では、マイクロサービスの Pod が 1 つしかないため、ボックスは 1 つしかありません。
次のコマンドを実行して、マイクロサービスに対して実行されている Pod が 1 つだけであることを確認します。
oc get pods
$ oc get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME READY STATUS RESTARTS AGE ostoy-frontend-679cb85695-5cn7x 1/1 Running 0 1h ostoy-microservice-86b4c6f559-p594d 1/1 Running 0 1h
NAME READY STATUS RESTARTS AGE ostoy-frontend-679cb85695-5cn7x 1/1 Running 0 1h ostoy-microservice-86b4c6f559-p594d 1/1 Running 0 1h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ostoy-microservice-deployment.yaml をダウンロードし、ローカルマシンに保存します。
次の例を使用して、デプロイメント定義を 1 Pod から 3 Pod に変更します。
spec: selector: matchLabels: app: ostoy-microservice replicas: 3
spec: selector: matchLabels: app: ostoy-microservice replicas: 3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行してレプリカの変更を適用します。
oc apply -f ostoy-microservice-deployment.yaml
$ oc apply -f ostoy-microservice-deployment.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記OpenShift Web コンソールで Workloads > Deployments > ostoy-microservice > YAML タブに移動して、
ostoy-microservice-deployment.yaml
ファイルを編集することもできます。次のコマンドを実行して、Pod が 3 つあることを確認します。
oc get pods
$ oc get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力から、マイクロサービスの Pod が 1 つではなく 3 つあることがわかります。
出力例
NAME READY STATUS RESTARTS AGE ostoy-frontend-5fbcc7d9-rzlgz 1/1 Running 0 26m ostoy-microservice-6666dcf455-2lcv4 1/1 Running 0 81s ostoy-microservice-6666dcf455-5z56w 1/1 Running 0 81s ostoy-microservice-6666dcf455-tqzmn 1/1 Running 0 26m
NAME READY STATUS RESTARTS AGE ostoy-frontend-5fbcc7d9-rzlgz 1/1 Running 0 26m ostoy-microservice-6666dcf455-2lcv4 1/1 Running 0 81s ostoy-microservice-6666dcf455-5z56w 1/1 Running 0 81s ostoy-microservice-6666dcf455-tqzmn 1/1 Running 0 26m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドラインインターフェイス (CLI) または Web ユーザーインターフェイス (UI) を使用してアプリケーションをスケーリングします。
CLI で次のコマンドを実行して、Pod の数を
3
から2
に減らします。oc scale deployment ostoy-microservice --replicas=2
$ oc scale deployment ostoy-microservice --replicas=2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - OpenShift Web コンソール UI のナビゲーションメニューから、Workloads > Deployments > ostoy-microservice をクリックします。
- 中央に 3 Pod のラベルが付いた青い円を見つけます。
円の横にある矢印を選択すると、Pod の数が増加します。下矢印を選択して
2
にします。
検証
CLI、Web UI、または OSToy アプリケーションを使用して Pod の数を確認します。
CLI から次のコマンドを実行して、マイクロサービスに 2 つの Pod が使用されていることを確認します。
oc get pods
$ oc get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME READY STATUS RESTARTS AGE ostoy-frontend-5fbcc7d9-rzlgz 1/1 Running 0 75m ostoy-microservice-6666dcf455-2lcv4 1/1 Running 0 50m ostoy-microservice-6666dcf455-tqzmn 1/1 Running 0 75m
NAME READY STATUS RESTARTS AGE ostoy-frontend-5fbcc7d9-rzlgz 1/1 Running 0 75m ostoy-microservice-6666dcf455-2lcv4 1/1 Running 0 50m ostoy-microservice-6666dcf455-tqzmn 1/1 Running 0 75m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Web UI で、Workloads > Deployments > ostoy-microservice を選択します。
OSToy アプリケーションのナビゲーションメニューで [Networking] を選択して、2 つの Pod があることを確認することもできます。2 つの Pod の色付きボックスが 2 つがあるはずです。
2.7.2. Pod の自動スケーリング リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift Service on AWS は、Horizontal Pod Autoscaler (HPA) を備えています。HPA はメトリクスを使用して、必要に応じて Pod の数を増減します。
手順
Web UI のナビゲーションメニューから、Pod Auto Scaling を選択します。
次のコマンドを実行して HPA を作成します。
oc autoscale deployment/ostoy-microservice --cpu-percent=80 --min=1 --max=10
$ oc autoscale deployment/ostoy-microservice --cpu-percent=80 --min=1 --max=10
Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、ostoy-microservice デプロイメントによって制御される Pod のレプリカを 1 - 10 個の間で維持する HPA を作成するものです。デプロイメント中に、HPA はレプリカの数を増減して、すべての Pod の平均 CPU 使用率を 80% および 40 ミリコアに保ちます。
Pod Auto Scaling > Horizontal Pod Autoscaling ページで、Increase the load を選択します。
重要負荷が増加すると、が発生するため、ページが応答しなくなる可能性があります。これは予想どおりの反応です。負荷の増加を 1 回だけクリックします。プロセスの詳細は、このマイクロサービスの GitHub リポジトリー を参照してください。
数分後、ページに新しい Pod が色付きのボックスで表示されます。
注記ページに遅延が発生する可能性があります。
検証
次のいずれかの方法で Pod 数を確認します。
OSToy アプリケーションの Web UI で、Remote Pods ボックスを確認します。
Pod は 1 つしかないため、ワークロードを増やすと Pod も増加するはずです。
CLI で、次のコマンドを実行します。
oc get pods --field-selector=status.phase=Running | grep microservice
oc get pods --field-selector=status.phase=Running | grep microservice
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
ostoy-microservice-79894f6945-cdmbd 1/1 Running 0 3m14s ostoy-microservice-79894f6945-mgwk7 1/1 Running 0 4h24m ostoy-microservice-79894f6945-q925d 1/1 Running 0 3m14s
ostoy-microservice-79894f6945-cdmbd 1/1 Running 0 3m14s ostoy-microservice-79894f6945-mgwk7 1/1 Running 0 4h24m ostoy-microservice-79894f6945-q925d 1/1 Running 0 3m14s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift Cluster Manager から自動スケーリングを確認することもできます。
- OpenShift Web コンソールのナビゲーションメニューで、Observe > Dashboards をクリックします。
ダッシュボードで、Kubernetes / Compute Resources / Namespace (Pods) と namespace ostoy を選択します。
CPU とメモリーのリソース使用状況を示すグラフが表示されます。上のグラフは Pod ごとの最近の CPU 消費量を示し、下のグラフはメモリー使用量を示しています。グラフ内の記号の意味は次のとおりです。
- 負荷が増加しました (A)。
- 2 つの新しい Pod が作成されました (B および C)。
- 各グラフの幅は CPU 消費量を表し、どの Pod がより多くの負荷を処理したかを示しています。
負荷が減少し (D)、Pod が削除されました。
2.7.3. ノードの自動スケーリング リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift Service on AWS では、ノードの自動スケーリング を使用できます。ここでは、クラスターが処理できない大きなワークロードを持つジョブを含む新しいプロジェクトを作成します。自動スケーリングが有効な場合、負荷が現在の容量を超えたときに、クラスターが負荷を処理するために新しいノードを自動的に作成します。
前提条件
- マシンプールで自動スケーリングが有効になっている。
手順
次のコマンドを実行して、
autoscale-ex
という新しいプロジェクトを作成します。oc new-project autoscale-ex
$ oc new-project autoscale-ex
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行してジョブを作成します。
oc create -f https://raw.githubusercontent.com/openshift-cs/rosaworkshop/master/rosa-workshop/ostoy/yaml/job-work-queue.yaml
$ oc create -f https://raw.githubusercontent.com/openshift-cs/rosaworkshop/master/rosa-workshop/ostoy/yaml/job-work-queue.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 数分後、次のコマンドを実行して Pod を確認します。
oc get pods
$ oc get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
保留中の
状態の Pod が多数あるため、このステータスによりオートスケーラーがトリガーされ、マシンプールにさらにノードが作成されます。これらのワーカーノードが作成されるまで待ちます。 数分後、次のコマンドを使用して、現在のワーカーノードの数を確認します。
oc get nodes
$ oc get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ワークロードを処理するためにワーカーノードが自動的に作成されたことがわかります。
次のコマンドを入力して、OSToy アプリケーションに戻ります。
oc project ostoy
$ oc project ostoy
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.8. S2I デプロイメント リンクのコピーリンクがクリップボードにコピーされました!
統合された Source-to-Image (S2I) ビルダーは、OpenShift でアプリケーションをデプロイする 1 つの方法です。S2I は、再現可能な Docker 形式のコンテナーイメージをビルドするためのツールです。詳細は、OpenShift の概念 を参照してください。
前提条件
- ROSA クラスター
2.8.1. ログインコマンドを取得しています リンクのコピーリンクがクリップボードにコピーされました!
手順
次のコマンドを実行して、コマンドラインインターフェイス (CLI) にログインしていることを確認します。
rosa whoami
rosa whoami
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドラインインターフェイスにログインしている場合は、新しいプロジェクトの作成に進んでください。コマンドラインインターフェイスにログインしていない場合は、この手順を続行します。
コマンドラインインターフェイス (CLI) にログインしていない場合は、OpenShift Cluster Manager で、右上の名前の横にあるドロップダウン矢印をクリックし、ログインコマンドのコピー を選択します。
- 新しいタブが開きます。ユーザー名とパスワードを入力し、認証方法を選択します。
- Display Token をクリックします。
- "Log in with this token" の下のコマンドをコピーします。
コピーしたコマンドをターミナルで実行して CLI にログインします。
入力の例
oc login --token=RYhFlXXXXXXXXXXXX --server=https://api.osd4-demo.abc1.p1.openshiftapps.com:6443
$ oc login --token=RYhFlXXXXXXXXXXXX --server=https://api.osd4-demo.abc1.p1.openshiftapps.com:6443
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Logged into "https://api.myrosacluster.abcd.p1.openshiftapps.com:6443" as "rosa-user" using the token provided. You don't have any projects. You can try to create a new project, by running oc new-project <project name>
Logged into "https://api.myrosacluster.abcd.p1.openshiftapps.com:6443" as "rosa-user" using the token provided. You don't have any projects. You can try to create a new project, by running oc new-project <project name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.8.2. 新規プロジェクトの作成 リンクのコピーリンクがクリップボードにコピーされました!
次のコマンドを実行して、CLI から新しいプロジェクトを作成します。
oc new-project ostoy-s2i
$ oc new-project ostoy-s2i
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.8.3. OSToy リポジトリーのフォーク リンクのコピーリンクがクリップボードにコピーされました!
ソースコードの変更に基づいて自動ビルドをトリガーするには、GitHub Webhook を設定する必要があります。Webhook は、GitHub リポジトリーにコードをプッシュすると S2I ビルドをトリガーします。Webhook を設定するには、まず リポジトリー をフォークする必要があります。
このガイドで以下に示す URL の <UserName>
は、自分の GitHub ユーザー名に置き換えてください。
2.8.4. S2i を使用してクラスターに OSToy をデプロイする リンクのコピーリンクがクリップボードにコピーされました!
手順
OpenShift にシークレットを追加します。
この例では、
.env
ファイルをエミュレートします。ファイルは OpenShift 環境に簡単に直接移動でき、シークレット内で名前を変更することもできます。次のコマンドを実行し、
<UserName> を
GitHub ユーザー名に置き換えます。oc create -f https://raw.githubusercontent.com/<UserName>/ostoy/master/deployment/yaml/secret.yaml
$ oc create -f https://raw.githubusercontent.com/<UserName>/ostoy/master/deployment/yaml/secret.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
OpenShift に ConfigMap を追加します。
この例では、OpenShift アプリケーションのデフォルト設定を上書きするために通常使用される HAProxy 設定ファイルをエミュレートします。ConfigMap でファイルの名前を変更できます。
次のコマンドを実行し、
<UserName> を
GitHub ユーザー名に置き換えます。oc create -f https://raw.githubusercontent.com/<UserName>/ostoy/master/deployment/yaml/configmap.yaml
$ oc create -f https://raw.githubusercontent.com/<UserName>/ostoy/master/deployment/yaml/configmap.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
マイクロサービスをデプロイします。
サービス環境変数が UI アプリケーションから使用できるようにするには、マイクロサービスをデプロイする必要があります。
--context-dir は、
Git リポジトリー内のマイクロサービス
ディレクトリーに定義されたアプリケーションをビルドします。アプリ
ラベルにより、ユーザーインターフェイス (UI) アプリケーションとマイクロサービスの両方が OpenShift UI でグループ化されます。次のコマンドを実行してマイクロサービスを作成し、
<UserName> を
GitHub ユーザー名に置き換えます。oc new-app https://github.com/<UserName>/ostoy \ --context-dir=microservice \ --name=ostoy-microservice \ --labels=app=ostoy
$ oc new-app https://github.com/<UserName>/ostoy \ --context-dir=microservice \ --name=ostoy-microservice \ --labels=app=ostoy
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
マイクロサービスのステータスを確認します。
次のコマンドを実行して、マイクロサービスが作成され、正しく実行されていることを確認します。
oc status
$ oc status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow マイクロサービスが正常にデプロイされたことが表示されるまで待ちます。Web UI からこれを確認することもできます。
フロントエンド UI をデプロイします。
アプリケーションは、外部設定を定義するためにいくつかの環境変数に依存します。
次のコマンドを実行して、シークレットと ConfigMap をアタッチし、PersistentVolume を作成します。
oc new-app https://github.com/<UserName>/ostoy \ --env=MICROSERVICE_NAME=OSTOY_MICROSERVICE
$ oc new-app https://github.com/<UserName>/ostoy \ --env=MICROSERVICE_NAME=OSTOY_MICROSERVICE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次のコマンドを実行してデプロイメントを更新します。
oc patch deployment ostoy --type=json -p \ '[{"op": "replace", "path": "/spec/strategy/type", "value": "Recreate"}, {"op": "remove", "path": "/spec/strategy/rollingUpdate"}]'
$ oc patch deployment ostoy --type=json -p \ '[{"op": "replace", "path": "/spec/strategy/type", "value": "Recreate"}, {"op": "remove", "path": "/spec/strategy/rollingUpdate"}]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow liveness プローブを設定します。
アプリケーションに問題がある場合、Pod が再起動することを確認するために、liveness プローブを作成します。
以下のコマンドを実行します。
oc set probe deployment ostoy --liveness --get-url=http://:8080/health
$ oc set probe deployment ostoy --liveness --get-url=http://:8080/health
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
シークレット、ConfigMap、永続ボリュームをデプロイメントにアタッチします。
シークレットを添付するには、次のコマンドを実行します。
oc set volume deployment ostoy --add \ --secret-name=ostoy-secret \ --mount-path=/var/secret
$ oc set volume deployment ostoy --add \ --secret-name=ostoy-secret \ --mount-path=/var/secret
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ConfigMap をアタッチするには、次のコマンドを実行します。
oc set volume deployment ostoy --add \ --configmap-name=ostoy-config \ -m /var/config
$ oc set volume deployment ostoy --add \ --configmap-name=ostoy-config \ -m /var/config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 永続ボリュームを作成して接続するには、次のコマンドを実行します。
oc set volume deployment ostoy --add \ --type=pvc \ --claim-size=1G \ -m /var/demo_files
$ oc set volume deployment ostoy --add \ --type=pvc \ --claim-size=1G \ -m /var/demo_files
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
UI アプリケーションを OpenShift Route として公開します。
次のコマンドを実行して、含まれている TLS ワイルドカード証明書を使用する HTTPS アプリケーションとしてアプリケーションをデプロイします。
oc create route edge --service=ostoy --insecure-policy=Redirect
$ oc create route edge --service=ostoy --insecure-policy=Redirect
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次の方法でアプリケーションを参照する
次のコマンドを実行して、OSToy アプリケーションで Web ブラウザーを開きます。
python -m webbrowser "$(oc get route ostoy -o template --template='https://{{.spec.host}}')"
$ python -m webbrowser "$(oc get route ostoy -o template --template='https://{{.spec.host}}')"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行してアプリケーションのルートを取得し、そのルートをコピーしてブラウザーに貼り付けます。
oc get route
$ oc get route
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.9. 自動デプロイメントのための Source-to-Image (S2I) Webhook の使用 リンクのコピーリンクがクリップボードにコピーされました!
Webhook を使用すると、ソースコードを変更するたびにビルドとデプロイが自動的にトリガーされます。このプロセスの詳細は、Triggering Builds を参照してください。
手順
次のコマンドを実行して、GitHub Webhook トリガーシークレットを取得します。
oc get bc/ostoy-microservice -o=jsonpath='{.spec.triggers..github.secret}'
$ oc get bc/ostoy-microservice -o=jsonpath='{.spec.triggers..github.secret}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
`o_3x9M1qoI2Wj_cz1WiK`
`o_3x9M1qoI2Wj_cz1WiK`
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要このプロセスの後のステップでこのシークレットを使用する必要があります。
次のコマンドを実行して、OSToy の buildconfig から GitHub Webhook トリガー URL を取得します。
oc describe bc/ostoy-microservice
$ oc describe bc/ostoy-microservice
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
[...] Webhook GitHub: URL: https://api.demo1234.openshift.com:443/apis/build.openshift.io/v1/namespaces/ostoy-s2i/buildconfigs/ostoy/webhooks/<secret>/github [...]
[...] Webhook GitHub: URL: https://api.demo1234.openshift.com:443/apis/build.openshift.io/v1/namespaces/ostoy-s2i/buildconfigs/ostoy/webhooks/<secret>/github [...]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow GitHub Webhook URL の
<secret>
テキストを、取得したシークレットに置き換えます。実際の URL は、次の出力例のようになります。出力例
https://api.demo1234.openshift.com:443/apis/build.openshift.io/v1/namespaces/ostoy-s2i/buildconfigs/ostoy-microservice/webhooks/o_3x9M1qoI2Wj_czR1WiK/github
https://api.demo1234.openshift.com:443/apis/build.openshift.io/v1/namespaces/ostoy-s2i/buildconfigs/ostoy-microservice/webhooks/o_3x9M1qoI2Wj_czR1WiK/github
Copy to Clipboard Copied! Toggle word wrap Toggle overflow GitHub リポジトリーに webhook URL を設定します。
リポジトリーで、Settings > Webhooks > Add webhook をクリックします。
-
ペイロード URL フィールドに、
シークレット
が含まれる GitHub Webhook URL を貼り付けます。 -
"Content type" を
application/json
に変更します。 Add webhook ボタンをクリックします。
Webhook が正常に設定されたことを示す GitHub のメッセージが表示されます。これで、GitHub リポジトリーに変更をプッシュするたびに、新しいビルドが自動的に開始し、ビルドが成功すると新しいデプロイが開始します。
ソースコードを変更します。変更すると、ビルドとデプロイが自動的にトリガーされます。この例では、OSToy アプリケーションの状態を示す色がランダムに選択されます。設定をテストするには、ボックスをグレースケール表示に変更します。
- リポジトリー内のソースコード https://github.com/<username>/ostoy/blob/master/microservice/app.js に移動します。
- ファイルを編集します。
-
8 行目 (
let randomColor = getRandomColor();
を含む行) をコメントアウトします。 9 行目 (
let randomColor = getRandomGrayScaleColor();
を含む行) のコメントを解除します。7 app.get('/', function(request, response) { 8 //let randomColor = getRandomColor(); // <-- comment this 9 let randomColor = getRandomGrayScaleColor(); // <-- uncomment this 10 11 response.writeHead(200, {'Content-Type': 'application/json'});
7 app.get('/', function(request, response) { 8 //let randomColor = getRandomColor(); // <-- comment this 9 let randomColor = getRandomGrayScaleColor(); // <-- uncomment this 10 11 response.writeHead(200, {'Content-Type': 'application/json'});
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - "changed box to grayscale colors" など、更新を示すメッセージを入力します。
- 下部の Commit クリックして、変更をメインブランチにコミットします。
クラスターの Web UI で、Builds > Builds をクリックして、ビルドのステータスを確認します。このビルドが完了すると、デプロイが開始します。ターミナルで
oc status
を実行してステータスを確認することもできます。デプロイが完了したら、ブラウザーで OSToy アプリケーションに戻ります。左側の Networking メニュー項目にアクセスします。ボックスの色がグレースケールの色だけに制限されるようになります。
Legal Notice
リンクのコピーリンクがクリップボードにコピーされました!
Copyright © 2025 Red Hat
OpenShift documentation is licensed under the Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0).
Modified versions must remove all Red Hat trademarks.
Portions adapted from https://github.com/kubernetes-incubator/service-catalog/ with modifications by Red Hat.
Red Hat, Red Hat Enterprise Linux, the Red Hat logo, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation’s permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.