Red Hat OpenShift クラスターへのアクセス
Red Hat® OpenShift® on IBM Cloud® クラスターを作成したら、そのクラスターにアクセスしてクラスターの操作を開始できます。
前提条件
- 必要な CLI ツールをインストールします。 クラスター内のテスト機能に素早くアクセスするために、IBM Cloud Shell を使用することもできます。
- Red Hat OpenShift クラスターを作成します。
- 企業ファイアウォールでネットワークが保護されている場合は、IBM Cloud と Red Hat OpenShift on IBM Cloud の API エンドポイントとポートへのアクセスを許可します。 プライベート・クラウド・サービス・エンドポイントのみが有効な VPC クラスターの場合は、クラウド・サービス・エンドポイント・サブネットを使用した VPC VPN の構成までクラスターへの接続をテストできません。
ibmcloud oc cluster get -c <cluster_name_or_ID>を実行して、クラスターが正常な状態であることを確認します。 クラスターが正常な状態でない場合は、クラスターのデバッグのガイドを参照してください。 例えば、ファイアウォール・ゲートウェイ・アプライアンスによって保護されているアカウントにクラスターがプロビジョンされている場合は、 該当するポートと IP アドレスへの発信トラフィックを許可するようにファイアウォール設定を構成します。- クラスターのサービス・エンドポイントを確認します。
- クラシック・クラスターまたは VPC クラスター: 前の手順のクラスター詳細の出力で、クラスターのパブリックまたはプライベートのサービス・エンドポイント URL を確認します。
- パブリックのサービス・エンドポイント URL のみ: パブリック・クラウド・サービス・エンドポイントを介したクラスターへのアクセスに進みます。
- 両方のサービス・エンドポイント URL: パブリックまたはプライベートのサービス・エンドポイントを介してクラスターにアクセスできます。
- IBM Cloud Satellite クラスター: Satellite のクラスターへのアクセスに進みます。
- クラシック・クラスターまたは VPC クラスター: 前の手順のクラスター詳細の出力で、クラスターのパブリックまたはプライベートのサービス・エンドポイント URL を確認します。
- アカウント内のユーザーがTOTPなどの多要素認証(MFA)を使用している場合、必ず確認してください アカウントレベルですべてのユーザーに対して有効にする。 MFAを使用するには、認証エラーを回避するため、 アカウントレベルで有効化する必要があります。
パブリック・クラウド・サービス・エンドポイントを介したクラスターへのアクセス
パブリック・クラウド・サービス・エンドポイントを使用する Red Hat OpenShift クラスターの場合は、コンソールまたは CLI からクラスターにログインできます。
コンソールからクラスターへの接続
コンソールから Red Hat OpenShift on IBM Cloud クラスターへは簡単にアクセスできます。
- コンソールで、アクセスしたいクラスターをクリックします。
- **「Red Hat OpenShift Web コンソール」**をクリックします。
- コマンド・ラインで作業を続行するには、プロファイル名 (
IAM#name@email.comなど) をクリックしてから、**「Copy Login Command」**をクリックします。 クラスターのバージョンに応じて、コマンド・ラインから次のようにクラスターにログインします。- バージョン 4: **「Display Token」**をクリックし、
oc loginコマンドをコピーしてコマンド・ラインにそのコマンドを貼り付けます。
- バージョン 4: **「Display Token」**をクリックし、
セキュリティー上の理由から、ブラウザーを閉じる前に、まず IBM Cloud コンソールからログアウトしてから、 Red Hat OpenShift Web コンソールからログアウトします。 Red Hat OpenShift Web コンソールから正常にログアウトするには、2つのステップを指定された順序で実行する必要があります。
- 次のステップ
- コンソールによるアプリのデプロイを試してください。
CLI からクラスターへの接続
通常は、 Red Hat OpenShift Web コンソールを使用して、oc login トークンを取得することによって、クラスターにアクセスできます。 Red Hat OpenShift コンソールを開けない、または開きたくない場合は、CLI を使用して Red Hat OpenShift on IBM Cloud クラスターにログインするための以下のいずれかのオプションを選択します。
以下のオプションから選択します。
- 管理者としてログインする:
- クラスターに対する管理者のプラットフォーム・アクセス役割があることを確認します。
- コマンド・ラインにクラスターのコンテキストを設定し、管理者の TLS 証明書と権限ファイルをダウンロードします。
ibmcloud oc cluster config -c <cluster_name_or_ID> --admin
- API キーを使用してログインする: API キーを使用した Red Hat OpenShift へのログインを参照してください。
- IBM Cloud パスコードを使用してログインする:
- 次のコマンドの出力で、クラスターのマスター URL を取得します。
ibmcloud oc cluster get -c <cluster_name_or_ID> - ブラウザーで、次の IBM Cloud IAM パスコード Web サイトを開きます。
https://iam.cloud.ibm.com/identity/passcode - IBMid を使用してログインし、パスコードをコピーします。
- パスコードを使用してクラスターにログインします。
oc login -u passcode -p <iam_passcode> --server=<master_URL>
- 次のコマンドの出力で、クラスターのマスター URL を取得します。
プライベート・クラウド・サービス・エンドポイントを介したクラスターへのアクセス
許可されたクラスター・ユーザーが、プライベート・クラウド・サービス・エンドポイントを介して VPC クラスターまたはクラシック・クラスターにアクセスできるようにします。
ローカル・マシンからクラスターに接続するために VPN をセットアップするには、 Wireguard VPN を使用したプライベート・クラスターへのアクセスを参照してください。
プライベート・クラウド・サービス・エンドポイントを介した VPC クラスターへのアクセス
許可されたクラスター・ユーザーが Red Hat OpenShift マスターにアクセスできるのは、IBM Cloud VPC VPN 接続などを介してプライベート・ネットワークに接続されている場合です。 ただし、プライベート・クラウド・サービス・エンドポイントを介した Kubernetes マスターとの通信には、IP アドレス範囲 166.X.X.X を使用する必要があるので、この範囲を VPN ゲートウェイおよび接続のセットアップで構成する必要があります。
-
IBM Cloud VPC の VPN をセットアップし、VPN を介してプライベート・ネットワークに接続します。
- ローカル・マシンに VPN ゲートウェイを構成します。
- VPC に VPN ゲートウェイを作成し、VPC の VPN ゲートウェイとローカルの VPN ゲートウェイの間の接続を作成します。 **「VPC 用の新規 VPN 接続」**セクションで、
166.8.0.0/14「ローカル・サブネット (Local subnets)」**フィールドに ** サブネットを追加します。 マルチゾーン・クラスターの場合は、この手順を繰り返して、ワーカー・ノードが存在するゾーンごとにサブネットに VPC ゲートウェイを構成します。 - IBM Cloud VPC VPN 接続を介してプライベート・ネットワークに接続していることを確認します。
-
クラスターにログインするには、以下のいずれかのオプションを選択します。
- 管理者としてログインする:
- クラスターに対する管理者のプラットフォーム・アクセス役割があることを確認します。
- コマンド・ラインにクラスターのコンテキストを設定し、管理者の TLS 証明書と権限ファイルをダウンロードします。
ibmcloud oc cluster config -c <cluster_name_or_ID> --admin --endpoint private
- API キーを使用してログインする: API キーを使用した Red Hat OpenShift へのログインを参照してください。
- IBM Cloud パスコードを使用してログインする:
- 次のコマンドの出力で、クラスターのプライベート・サービス・エンドポイント URL を取得します。
ibmcloud oc cluster get -c <cluster_name_or_ID> - ブラウザーで、次の IBM Cloud IAM パスコード Web サイトを開きます。
https://iam.cloud.ibm.com/identity/passcode - IBMid を使用してログインし、パスコードをコピーします。
- パスコードを使用してクラスターにログインします。
oc login -u passcode -p <iam_passcode> --server=<private_service_endpoint_URL>
- 次のコマンドの出力で、クラスターのプライベート・サービス・エンドポイント URL を取得します。
- 管理者としてログインする:
-
プライベート・クラウド・サービス・エンドポイントを介してクラスターで
ocコマンドが正常に実行されることを、バージョンを調べることで確認します。oc version出力例
Client Version: 4.5.0-0.okd-2020-09-04-180756 Server Version: 4.5.35 Kubernetes Version: v1.18.3+cdb0358
プライベート・クラウド・サービス・エンドポイントを介したクラシック・クラスターへのアクセス
許可されたクラスター・ユーザーが Red Hat OpenShift マスターにアクセスできるのは、IBM Cloud プライベート・ネットワーク内にいる場合、または クラシック VPN 接続 や IBM Cloud Direct Linkなどを介してプライベート・ネットワークに接続されている場合です。
ただし、プライベート・クラウド・サービス・エンドポイントを介した Kubernetes マスターとの通信には、IP アドレス範囲 166.X.X.X を使用する必要があります。この範囲はクラシック VPN 接続でも IBM Cloud Direct Link でもルーティングすることはできません。 プライベート・ネットワーク・ロード・バランサー (NLB) を使用して、クラスター・ユーザーのマスターのプライベート・クラウド・サービス・エンドポイントを公開できます。
プライベート NLB は、ユーザーが VPN または IBM Cloud Direct Link 接続を使用してアクセスできる内部 10.X.X.X IP アドレス範囲として、マスターのプライベート・クラウド・サービス・エンドポイントを公開します。 プライベート・クラウド・サービス・エンドポイントのみを有効にする場合は、Red Hat OpenShift Web コンソールを使用して、プライベート NLBを作成できます。
-
パブリック・クラウド・サービス・エンドポイントを使用して Red Hat OpenShift クラスターにログインします。
-
クラスターのプライベート・クラウド・サービス・エンドポイント URL およびポートを取得します。
ibmcloud oc cluster get -c <cluster_name_or_ID>この出力例では、Private Service Endpoint URL は
https://c1.private.us-east.containers.cloud.ibm.com:31144です。NAME: setest ID: b8dcc56743394fd19c9f3db7b990e5e3 State: normal Status: healthy cluster Created: 2019-04-25T16:03:34+0000 Location: wdc04 Pod Subnet: 172.30.0.0/16 Service Subnet: 172.21.0.0/16 Master URL: https://c1-e.us-east.containers.cloud.ibm.com:31144 Public Service Endpoint URL: https://c1-e.us-east.containers.cloud.ibm.com:31144 Private Service Endpoint URL: https://c1.private.us-east.containers.cloud.ibm.com:31144 Master Location: Washington D.C. ... -
oc-api-via-nlb.yamlという名前の YAML ファイルを作成します。 この YAML はプライベートLoadBalancerサービスを作成し、NLB を介してプライベート・クラウド・サービス・エンドポイントを公開します。<private_service_endpoint_port>を、先述の手順で確認したポートに置き換えます。apiVersion: v1 kind: Service metadata: name: oc-api-via-nlb annotations: service.kubernetes.io/ibm-load-balancer-cloud-provider-ip-type: private namespace: default spec: type: LoadBalancer ports: - protocol: TCP port: <private_service_endpoint_port> targetPort: <private_service_endpoint_port> --- kind: Endpoints apiVersion: v1 metadata: name: oc-api-via-nlb namespace: default subsets: - addresses: - ip: 172.20.0.1 ports: - port: 2040 -
プライベート NLB およびエンドポイントを作成するには、以下のようにします。
- 先ほど作成した構成ファイルを適用します。
oc apply -f oc-api-via-nlb.yaml oc-api-via-nlbNLB が作成されたことを確認します。 出力の10.x.x.xEXTERNAL-IP** アドレス ** をメモします。 この IP アドレスで、YAML ファイルに指定したポートを使用して、クラスター・マスターのプライベート・クラウド・サービス・エンドポイントが公開されます。
この出力例では、マスターのプライベート・クラウド・サービス・エンドポイントの IP アドレスはoc get svc -o wide10.186.92.42です。NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR oc-api-via-nlb LoadBalancer 172.21.150.118 10.186.92.42 443:32235/TCP 10m <none> ...
- 先ほど作成した構成ファイルを適用します。
-
ocコマンドを実行するユーザーのクライアント・マシンの/etc/hostsファイルに、NLB の IP アドレスとプライベート・クラウド・サービス・エンドポイントの URL を追加します。 IP アドレスと URL にポートを含めたり、URL にhttps://を含めたりしないでください。-
macOS と Linux のユーザーの場合:
sudo nano /etc/hosts -
Windows ユーザーの場合:
notepad C:\Windows\System32\drivers\etc\hostsローカル・マシンの権限によっては、ホスト・ファイルを編集するためにノートパッドを管理者として実行しなければならない場合があります。
追加するテキストの例:
10.186.92.42 c1.private.us-east.containers.cloud.ibm.com
-
-
VPN または IBM Cloud Direct Link 接続を介してプライベート・ネットワークに接続していることを確認します。
-
以下のいずれかのオプションを選択して、クラスターにログインします。
- 管理者としてログインする:
- クラスターに対する管理者のプラットフォーム・アクセス役割があることを確認します。
- コマンド・ラインにクラスターのコンテキストを設定し、管理者の TLS 証明書と権限ファイルをダウンロードします。
ibmcloud oc cluster config -c <cluster_name_or_ID> --admin --endpoint private
- API キーを使用してログインする: API キーを使用した Red Hat OpenShift へのログインを参照してください。
- IBM Cloud パスコードを使用してログインする:
- 次のコマンドの出力で、クラスターのプライベート・サービス・エンドポイント URL を取得します。
ibmcloud oc cluster get -c <cluster_name_or_ID> - ブラウザーで、次の IBM Cloud IAM パスコード Web サイトを開きます。
https://iam.cloud.ibm.com/identity/passcode - IBMid を使用してログインし、パスコードをコピーします。
- パスコードを使用してクラスターにログインします。
oc login -u passcode -p <iam_passcode> --server=<private_service_endpoint_URL>
- 次のコマンドの出力で、クラスターのプライベート・サービス・エンドポイント URL を取得します。
- 管理者としてログインする:
-
プライベート・クラウド・サービス・エンドポイントを介してクラスターで
ocコマンドが正常に実行されることを、バージョンを調べることで確認します。oc version出力例
Client Version: 4.5.0-0.okd-2020-09-04-180756 Server Version: 4.5.35 Kubernetes Version: v1.18.3+cdb0358
Red Hat OpenShift の Satellite クラスターへのアクセス
Red Hat OpenShift ロケーションで Satellite クラスターを作成したら、そのクラスターにアクセスしてクラスターの操作を開始できます。
クラスターにアクセスして または oc describe node <worker_node> コマンド oc get nodes を実行すると、ワーカーノードに ロール master,worker が割り当てられていることが確認できる場合があります。 OpenShift Container Platform クラスターでは、オペレーターで管理するデフォルトのコンポーネント (内部レジストリーなど)
を OCP からクラスターにデプロイできるように、オペレーターは nodeSelector として master 役割を使用します。 クラスターに割り当てた Satellite ホストはワーカー・ノードとしてのみ機能します。ワーカー・ノードで、マスター・ノードのプロセス (API サーバーや Kubernetes スケジューラーなど) が実行されるわけではありません。
クラスターのサービス URL を使用したクラスターへのアクセス
クラスターのサービス URL を使用してクラスターに接続します。 この URL は、Satellite ロケーションのいずれかのサブドメインとノード・ポートであり、https://p1iuql40jam23qiuxt833-q9err0fiffbsar61e78vv6e7ds8ne1tx-ce00.us-east.satellite.appdomain.cloud:30710 のような形式になります。
ロケーションのホストにプライベート・ネットワーク接続しかない場合、または Amazon Web Services、Google Cloud Platform、および Microsoft Azure のホストを使用している場合に、クラスターに接続して Red Hat OpenShift Web コンソールにアクセスするには、VPN アクセスなどを使用して、ホストのプライベート・ネットワークに接続しておく必要があります。 あるいは、ホストにパブリック・ネットワーク接続がある場合は、 ホストのパブリック IP アドレスを使用するようにクラスターとロケーションの DNS レコードを変更することで、クラスターへのアクセスをテストできます。
コンソールから Red Hat OpenShift on IBM Cloud クラスターへは簡単にアクセスできます。
- コンソールで、アクセスしたいクラスターをクリックします。
- **「Red Hat OpenShift Web コンソール」**をクリックします。
- プロファイル名 (
IAM#name@email.comなど) をクリックしてから、**「Copy Login Command」**をクリックします。 - **「Display Token」**をクリックし、
oc loginコマンドをコピーします。 - このコマンドをコマンド・ラインに貼り付けます。
セキュリティー上の理由から、ブラウザーを閉じる前に、まず IBM Cloud コンソールからログアウトしてから、 Red Hat OpenShift Web コンソールからログアウトします。 Red Hat OpenShift Web コンソールから正常にログアウトするには、2つのステップを指定された順序で実行する必要があります。
Red Hat OpenShift コンソールを開けない、または開きたくない場合は、CLI を使用して Red Hat OpenShift on IBM Cloud クラスターにログインするための以下のいずれかのオプションを選択します。
- 管理者としてログインする:
- クラスターに対する管理者の IAM プラットフォーム・アクセス役割があることを確認します。
- コマンド・ラインにクラスターのコンテキストを設定し、管理者の TLS 証明書と権限ファイルをダウンロードします。 詳しくは、CLI の資料を参照してください。
ibmcloud oc cluster config -c <cluster_name_or_ID> --admin
- API キーを使用してログインする: API キーを使用した Red Hat OpenShift へのログインを参照してください。
IBM Cloud プライベート・ネットワークの内部からのクラスターへのアクセス
IBM Cloud プライベート・ネットワークに接続している場合、クラスターに自動的に生成される Satellite Link エンドポイントを使用できます。 このエンドポイントを使用すると、保護された Link トンネル・サーバーを介してロケーション・コントロール・プレーン内のクラスターのマスターに接続できます。 エンドポイントは、Link トンネル・サーバーのホスト名とノード・ポートから構成され、c-02.<region>.link.satellite.cloud.ibm.com:<port>のような形式になります。
Linkエンドポイントを使用してクラ Satellite スターに接続するには(例: --endpoint link CLI内)、ロケーションでソースを設定する手順に従う必要があります。 このソースにより、リンク・エンドポイントを介してクラスター API にアクセスできます。 詳細については、 API Satellite リンクエンドポイント Red Hat OpenShift へのアクセスを 参照してください。
- クラスターに対する管理者の IAM プラットフォーム・アクセス役割があることを確認します。
- リンク・エンドポイントを使用してコマンド・ラインにクラスターのコンテキストを設定し、管理者の TLS 証明書と権限ファイルをダウンロードします。 詳しくは、CLI の資料を参照してください。
ibmcloud oc cluster config -c <cluster_name_or_ID> --endpoint link --admin
パブリック・ネットワークからのクラスターへのアクセス
ホストにパブリック・ネットワーク接続があり、ホストのプライベート・ネットワークに接続することなくローカル・マシンからクラスターにアクセスしたい場合は、オプションで、クラスターのサブドメインとロケーションの DNS レコードを、ホストのパブリック IP アドレスを使用するように更新することができます。
ほとんどのロケーションのセットアップでは、ホストのプライベート IP アドレスがロケーションの DNS レコードに登録されています。そのため、クラウド・プロバイダーのプライベート・ネットワークに接続しないとクラスターにアクセスできないようになっています。
例えば、Amazon Web Services、Google Cloud Platform、Microsoft Azure のホストを使用している場合や、ホストのデフォルトのネットワーク・インターフェースがプライベートの場合、ロケーションの DNS レコードにはプライベート・ネットワークでしかアクセスできません。
クラスターに対して kubectl コマンドまたは oc コマンドを実行したり、Red Hat OpenShift Web コンソールにアクセスしたりするには、VPN アクセスなどを使用して、ホストのプライベート・ネットワークに接続しておく必要があります。 ただし、ローカル・マシンからクラスターへのアクセスをテストするためなど、パブリック・ネットワークからクラスターにアクセスする場合は、代わりにホストのパブリック IP を使用するように、ロケーションとクラスターのサブドメインの
DNS レコードを変更します。
実動レベルのワークロードの場合は、ホストのプライベート・ネットワーク以外で、許可されたクラスター・ユーザーにロケーションおよびクラスターのサブドメインを公開することは推奨されません。
- ロケーション・サブドメインを表示し、サブドメインについて DNS に登録されているホストのプライベート IP アドレスを**「Records」**で確認します。
ibmcloud sat location dns ls --location <location_name_or_ID> - 対応するホストのパブリック IP アドレスをクラウド・プロバイダーから取得します。
ibmcloud sat host ls --location <location_name_or_ID> - コントロール・プレーンの各ホストのパブリック IP アドレスを指定して、ロケーションのサブドメインの DNS レコードを更新します。
ibmcloud sat location dns register --location <location_name_or_ID> --ip <host_IP> --ip <host_IP> --ip <host_IP> - ロケーションの DNS レコードにパブリック IP アドレスが登録されたことを確認します。
ibmcloud sat location dns ls --location <location_name_or_ID> - クラスターのホスト名 (形式:
<service_name>-<project>.<cluster_name>-<random_hash>-0000.upi.containers.appdomain.cloud) を取得し、自動的に登録されたプライベート IP をメモします。ibmcloud oc nlb-dns ls --cluster <cluster_name_or_ID> - このクラスターにワーカー・ノードとして割り当てられているホストのパブリック IP アドレスをクラスターのサブドメインに追加します。 次のコマンドをホストのパブリック IP アドレスごとに繰り返します。
ibmcloud oc nlb-dns add --ip <public_IP> --cluster <cluster_name_or_ID> --nlb-host <hostname> - クラスターのサブドメインからプライベート IP アドレスを削除します。 先ほど取得したすべてのプライベート IP アドレスについて、このコマンドを繰り返します。
ibmcloud oc nlb-dns rm classic --ip <private_IP> --cluster <cluster_name_or_ID> --nlb-host <hostname> - クラスターのサブドメインにパブリック IP アドレスが登録されたことを確認します。
ibmcloud oc nlb-dns ls --cluster <cluster_name_or_ID>
仮想プライベート・エンドポイント・ゲートウェイを介した VPC クラスターへのアクセス
仮想プライベート・エンドポイント・ゲートウェイ は、VPC クラスター用に自動的に作成されます。 マスター Kubernetes は、 VPN IBM Cloud VPC などを通じてクラスターがデプロイされているのと同じVPCに接続されている承認済みクラスターユーザーが、この仮想プライベートエンドポイントゲートウェイ経由でアクセス可能です。
この場合、は仮想プライベートエンドポイント kubeconfig (VPE)で構成されており URL、これはプライベートDNS名であり、プライベート IBM Cloud VPC DNSサービスによってのみ解決可能です。 プライベート IBM Cloud VPC DNSサーバーのアドレスは および 161.26.0.7 です 161.26.0.8。
バージョンを実行するクラ 4.13スターの場合:クラスター作成時にプライベートクラウドサービスエンドポイントのみを有効化した場合、デフォルトではVPCの仮想プライベートエンドポイントが、Web Red Hat OpenShift コンソール Red Hat OpenShift などのコンポーネントへのアクセス OperatorHub に使用されます。 これらのコンポーネントにアクセスしたり、クラスターで
kubectl コマンドを実行したりするには、VPN 接続経由などでプライベート VPC ネットワークに接続されている必要があります。 VPE を介してコンソールにアクセスするには、パブリック接続を必要とする cloud.ibm.com にアクセスできる必要があることに注意してください。
-
IBM Cloud VPC VPN をセットアップし、VPN を介して VPC に接続します。
- VPC への クライアントからサイト または サイトからサイト への VPN を構成します。 例えば、VPN クライアントとのクライアントからサイトへの接続をセットアップすることを選択できます。
- クライアント/サイト間 VPN セットアップの場合、 考慮事項 で説明されているように、VPN サーバーをプロビジョンするときに IBM Cloud VPC プライベート DNS サービス・アドレスを指定する必要があります。 また、VPN サーバーがプロビジョンされた後に、宛先
161.26.0.0/16とアクションtranslateを使用して VPN 経路を作成する必要があります。 - サイト間 VPN セットアップの場合は、 VPN ガイドを介したサービス・エンドポイントへのアクセス に従って、 IBM Cloud VPC プライベート DNS サービス・アドレスを構成する必要があります。
- IBM Cloud VPC のVPN接続を介してVPCに接続されていることを確認してください。
-
クラスターにログインするには、以下のいずれかのオプションを選択します。
- 管理者としてログインする:
- クラスターに対する管理者のプラットフォーム・アクセス役割があることを確認します。
- コマンド・ラインにクラスターのコンテキストを設定し、管理者の TLS 証明書と権限ファイルをダウンロードします。
ibmcloud oc cluster config -c <cluster_name_or_ID> --admin --endpoint vpe
- API キーを使用してログインする: API キーを使用した Red Hat OpenShift へのログインを参照してください。
- IBM Cloud パスコードを使用してログインする:
- 次のコマンドの出力から 、VPEアドレスとマスターを取得 URL 次のコマンドの出力から取得します。
ibmcloud oc cluster get -c <cluster_name_or_ID> - ブラウザーで、次の IBM Cloud IAM パスコード Web サイトを開きます。
https://iam.cloud.ibm.com/identity/passcode - IBMid を使用してログインし、パスコードをコピーします。
- パスコードを使用してクラスターにログインします。
ログイン手順は、 IBMによって生成された自己署名証明書であるため、不明な認証局によって署名された証明書であることを通知します。oc login -u passcode -p <iam_passcode> --server=https://<VPE_URL>:<port_from_the_master_URL>
- 次のコマンドの出力から 、VPEアドレスとマスターを取得 URL 次のコマンドの出力から取得します。
- 管理者としてログインする:
-
プライベート・クラウド・サービス・エンドポイントを介してクラスターで
ocコマンドが正常に実行されることを、バージョンを調べることで確認します。oc version出力例
Client Version: 4.5.0-0.okd-2020-09-04-180756 Server Version: 4.5.35 Kubernetes Version: v1.18.3+cdb0358
API キーを使用した自動化ツールからのクラスターへのアクセス
Red Hat OpenShift on IBM Cloud は、IBM Cloud ID およびアクセス管理 (IAM) と統合されています。 IAM があれば、IAM ID を使用してユーザーおよびサービスを認証し、アクセス役割およびポリシーを使用してアクションを許可することができます。 Red Hat OpenShift コンソールでユーザーとして認証すると、IAMアイデンティティが使用され、コマンドラインにログインするために使用できる Red Hat OpenShift
ログイントークンが生成されます。 oc login コマンドに使用するための IAM の API キーまたはサービス ID を作成することで、クラスターへのログインを自動化できます。
API キーを使用したクラスターへのログイン
IBM Cloud のIAM APIキーを作成し、そのAPIキーを使用して Red Hat OpenShift クラスターにログインできます。 API キーを作成すれば、個別にログインする代わりに、1 つのユーザー・アカウントまたは共有アカウントの資格情報を使用してクラスターにアクセスできます。 サービス ID に対する API キーを作成することもできます。 詳しくは、『API キーについて』を参照してください。
-
IBM Cloud API キーを作成します。 API キーをセキュアな場所に保存します。 API キーを再度取得することはできません。 ローカルマシン上のファイルに出力を書き出す場合は、
-oオプション--file <path>/<file_name>を指定してください。ibmcloud iam api-key-create <name> -
API キーのユーザーをクラスターの RBAC ポリシーに追加してセッション・コンテキストをクラスター・サーバーに設定するように、クラスターを構成します。
- API キーの資格情報を使用して IBM Cloud にログインします。
ibmcloud login --apikey <API_key> - クラスターの
kubeconfig構成ファイルをダウンロードし、kubeconfigの既存の~/.kube/configに追加するか、KUBECONFIG環境変数の最後のファイルに追加します。 注: プライベートクラウドサービスのエンドポイントを有効化し、クラスターコンテキストで使用したい場合は、--private-cloud-service-endpointオプションを含めてください--endpoint private。 プライベート・クラウド・サービス・エンドポイントを使用してクラスターに接続するには、IBM Cloud プライベート・ネットワーク内にいるか、VPC VPN 接続またはクラシック VPN 接続か IBM Cloud Direct Link (クラシック・インフラストラクチャーの場合) を使用してプライベート・ネットワークに接続している必要があります。ibmcloud oc cluster config -c <cluster_name_or_ID> [--endpoint private]
- API キーの資格情報を使用して IBM Cloud にログインします。
-
IBM Cloud のIAM APIキー認証情報を、 Red Hat OpenShift のアクセストークンと交換してください。 CLI または API からログインできます。 詳しくは、 Red Hat OpenShift 資料を参照してください。
ocCLI を使用したログイン:oc loginコマンドを使用してクラスターにログインします。 ユーザー名 (-u) はapikey、パスワード (-p) は IBM Cloud IAM API キーの値です。 プライベートクラウドサービスのエンドポイントを使用するには、オプション--server=<private_service_endpoint>を含めてください。oc login -u apikey -p <API_key> [--server=<private_service_endpoint>]クラスターに対して Red Hat OpenShift API 要求を直接実行してログインします。 curl 要求などを使用して、API でクラスターにログインします。
-
クラスターのマスター URL を取得します。
ibmcloud oc cluster get -c <cluster_name_or_ID>出力例
NAME: mycluster ID: 1234567 State: normal Created: 2020-01-22T19:22:16+0000 Location: dal10 Master URL: https://c100-e.<region>.containers.cloud.ibm.com:<port> ... -
Red Hat OpenShift
oauthサーバーのトークン・エンドポイントを取得します。curl <master_URL>/.well-known/oauth-authorization-server | jq -r .token_endpoint出力例
<token_endpoint>/oauth/token: 画面}
-
先ほど取得したエンドポイントを使用して、クラスターにログインします。 を
oauth``<token_endpoint>サーバーのに<URL>置き換えてください。curl 要求の例:
curl -u 'apikey:<API_key>' -H "X-CSRF-Token: a" '<URL>/oauth/authorize?client_id=openshift-challenging-client&response_type=token' -vvv -
Location 応答で、以下の例に示すような
access_tokenを見つけます。< HTTP/1.1 302 Found < Cache-Control: no-cache, no-store, max-age=0, must-revalidate < Cache-Control: no-cache, no-store, max-age=0, must-revalidate < Expires: 0 < Expires: Fri, 01 Jan 1990 00:00:00 GMT < Location: <token_endpoint>/oauth/token/implicit#access_token=<access_token>&expires_in=86400&scope=user%3Afull&token_type=Bearer ... -
クラスター・マスターの URL とアクセス・トークンを使用して Red Hat OpenShift API にアクセスし、例えば、クラスターのすべてのポッドをリストしたりします。 詳細については 、 Red Hat OpenShift のAPIドキュメントをご覧ください。
curl 要求の例:
curl -H "Authorization: Bearer <access_token>" '<master_URL>/api/v1/pods'
-
サービス ID を使用したクラスターへのログイン
IBM Cloud IAM サービス ID を作成し、そのサービス ID 用の API キーを作成できます。その後、その API キーを使用して Red Hat OpenShift クラスターにログインできます。 サービス ID を使用すると、他のクラスターやクラウドでホストされているアプリから、クラスターのサービスにアクセスできるようになります。 サービス ID は特定のユーザーに結び付けられないので、個人ユーザーがアカウントから外れてもアプリの認証を行うことができます。 詳しくは、サービス ID の作成と処理を参照してください。
-
IAM ポリシーと API キー資格情報のために使用するクラスターの IBM Cloud IAM のサービス ID を作成します。 必ず、後でサービス ID を思い出せるように、クラスター名などを含む説明を付けてください。
ibmcloud iam service-id-create <cluster_name>-id --description "Service ID for Red Hat OpenShift on IBM Cloud cluster <cluster_name>"出力例
NAME <cluster_name>-id Description Service ID for Red Hat OpenShift on IBM Cloud cluster <cluster_name> CRN crn:v1:bluemix:public:iam-identity::a/1aa111aa1a11111aaa1a1111aa1aa111::serviceid:ServiceId-bbb2b2b2-2bb2-2222-b222-b2b2b2222b22 Bound To crn:v1:bluemix:public:::a/1aa111aa1a11111aaa1a1111aa1aa111::: Version 1-c3c333333333ccccc33333c33cc3cc33 Locked false UUID ServiceId-bbb2b2b2-2bb2-2222-b222-b2b2b2222b22 -
IBM Cloud へのアクセス権を与えるカスタム Red Hat OpenShift on IBM Cloud IAM ポリシーを、クラスター・サービス ID に対して作成します。
ibmcloud iam service-policy-create <cluster_service_ID> --service-name containers-kubernetes --roles <service_access_role> --service-instance <cluster_ID>このコマンドの構成要素について パラメーター 説明 <cluster_service_ID>必須。 先ほど作成した Red Hat OpenShift クラスターのサービス ID を入力します。 --service-name containers-kubernetes必須。 この IAM ポリシーは Red Hat OpenShift on IBM Cloud クラスターに対するものであるため、 containers-kubernetesと入力します。--roles <service_access_role>必須。 Red Hat OpenShift クラスターに対するサービス ID のアクセス役割を入力します。 プラットフォーム・アクセス役割は、ワーカー・ノードの作成などのクラスター管理アクティビティーを許可します。 サービス・アクセス役割 は、ポッドや名前空間などの Kubernetes リソースの場合など、クラスター内の Red Hat OpenShift 管理アクティビティーを許可する RBAC 役割に対応しています。 複数の役割を入力する場合は、コンマ区切りのリストを指定します。 指定可能な値は、 Administrator、Operator、Editor、およびViewer(プラットフォーム・アクセス役割)、ならびにReader、Writer、およびManager(サービス・アクセス役割) です。--service-instance <cluster_ID>ポリシーを特定のクラスターに制限するには、そのクラスターの ID を入力します。 クラスター ID を取得するには、 ibmcloud oc clustersを実行します。 サービス・インスタンスを指定しない場合、アクセス・ポリシーは、すべての Kubernetes と Red Hat OpenShift のクラスターに対するアクセス権限をサービス ID に付与します。 アクセス・ポリシーにリージョン (--region) またはリソース・グループ (--resource-group-name) のスコープを設定することもできます。 -
サービス ID の API キーを作成します。 サービス ID に似た API キーに名前を付け、前に作成したサービス ID を含めます、
<cluster_name>-id必ず、後でキーを思い出せるように説明を付けてください。 API キーをセキュアな場所に保存します。 API キーを再度取得することはできません。 ローカルマシン上のファイルに出力を書き出す場合は、-oオプション--file <path>/<file_name>を指定してください。ibmcloud iam service-api-key-create <cluster_name>-key <service_ID> --description "API key for service ID <service_ID> in Red Hat OpenShift cluster <cluster_name>"出力例
Please preserve the API key! It can't be retrieved after it's created. Name <cluster_name>-key Description API key for service ID <service_ID> in Red Hat OpenShift cluster <cluster_name> Bound To crn:v1:bluemix:public:iam-identity::a/1bb222bb2b33333ddd3d3333ee4ee444::serviceid:ServiceId-ff55555f-5fff-6666-g6g6-777777h7h7hh Created At 2019-02-01T19:06+0000 API Key i-8i88ii8jjjj9jjj99kkkkkkkkk_k9-llllll11mmm1 Locked false UUID ApiKey-222nn2n2-o3o3-3o3o-4p44-oo444o44o4o4 -
サービス ID のユーザーをクラスターの RBAC ポリシーに追加してセッション・コンテキストをクラスター・サーバーに設定するように、クラスターを構成します。
-
サービス ID の API キー資格情報を使用して IBM Cloud にログインします。
ibmcloud login --apikey <API_key> -
クラスターの
kubeconfig構成ファイルをダウンロードし、kubeconfigの既存の~/.kube/configに追加するか、KUBECONFIG環境変数の最後のファイルに追加します。 注: プライベートクラウドサービスのエンドポイントを有効化し、クラスターコンテキストで使用したい場合は、--private-cloud-service-endpointオプションを含めてください--endpoint private。 プライベート・クラウド・サービス・エンドポイントを使用してクラスターに接続するには、IBM Cloud プライベート・ネットワーク内にいるか、VPC VPN 接続またはクラシック VPN 接続か IBM Cloud Direct Link (クラシック・インフラストラクチャーの場合) を使用してプライベート・ネットワークに接続している必要があります。ibmcloud oc cluster config -c <cluster_name_or_ID> [--endpoint private]
-
-
サービス ID の API キーを使用して、Red Hat OpenShift クラスターにログインします。 ユーザー名 (
-u) はapikey、パスワード (-p) は API キーの値です。 プライベートクラウドサービスのエンドポイントを使用するには、オプション--server=<private_service_endpoint>を含めてください。oc login -u apikey -p <API_key> [--server=<private_service_endpoint>] -
許可したアクションをサービス ID で実行できることを確認します。
例:
Readerのサービス・アクセス役割を割り当てたサービス ID では、Red Hat OpenShift プロジェクト内のポッドをリストできます。oc get pods例:
Managerのサービス・アクセス役割を割り当てたサービス ID では、Red Hat OpenShift クラスター内のユーザーをリストできます。 IAM のサービス ID の ID は、IDENTITIES 出力内にあります。 その他の個別ユーザーは、E メール・アドレスと IBMid で識別できます。oc get users出力例
NAME UID FULL NAME IDENTITIES IAM# dd44ddddd-d4dd-44d4-4d44-4d44d444d444 IAM:iam-ServiceId-bbb2b2b2-2bb2-2222-b222-b2b2b2222b22 IAM#first.last@email.com 55555ee5-e555-55e5-e5e5-555555ee55ee IAM:IBMid-666666FFF6
コンテキストベースの制限を使用したクラスタの保護
プライベート・サービスのエンドポイント許可リストはサポートされなくなりました。 プライベート・サービス・エンドポイントの許可リストを、できるだけ早くコンテキスト・ベースの制限に移行する。 具体的な移行手順については、 プライベート・サービス・エンドポイントの許可リストからコンテキスト・ベースの制限(CBR)への移行を 参照してください。
コンテキストベースの制限(CBR)ルールを使用して、パブリックおよびプライベートサービスのエンドポイントへのアクセスを制御します。
IBM Cloud IAMを通じてユーザーにクラスタへのアクセスを許可した 後、クラスタのパブリックおよびプライベート・サービス・エンドポイントにCBRルールを作成することで、二次的なセキュリティ・レイヤーを追加できます。 CBRルール内のサブネットから発信されたクラスタ・マスタへの許可された要求のみが許可されます。
クラスタが属するVPCとは異なるVPCからのリクエストを許可する場合は、そのVPCのクラウド・サービス・エンドポイントIPアドレスをCBRルールに含める必要があります。
例えば、クラスターのプライベート・クラウド・サービス・エンドポイントにアクセスするには、VPN または IBM Cloud を介して IBM Cloud Direct Link クラシック・ネットワークまたは VPC ネットワークに接続する必要があります。 VPNまたは Direct Link トンネルのサブネットのみをCBRルールに指定することで、組織内の許可されたユーザーのみがそのサブネットからプライベートクラウドサービスのエンドポイントにアクセスできるようにできます。
パブリックCBRルール(クラスタにパブリック・サービス・エンドポイントがある場合)は、承認が取り消された後にユーザがクラスタにアクセスするのを防ぐのにも役立ちます。 ユーザーが組織を退職したら、そのユーザーにクラスターへのアクセス権限を付与する IBM Cloud IAM 権限を削除します。 しかし、ユーザがクラスタのadmin kubeconfig ファイルをコピーし、そのクラスタへのアクセス権を与えている可能性があります。 組織が所有する既知のパブリック・サブネットからのクラスタ・マスタへのアクセスのみを許可するパブリックCBRルールがある場合、別のパブリックIPアドレスからのユーザのアクセス試行はブロックされます。
ワーカー・ノードのサブネットは、バックエンドのCBR実装(CBRルール/ゾーンではなく)に自動的に追加および削除されるため、ワーカー・ノードは常にクラスタ・マスタにアクセスでき、ユーザーは自分のCBRルールにこれらを特別に追加する必要はありません。
CBRルールによるクラスタの保護の詳細については、 コンテキスト・ベースの制限によるクラスタ・リソースの保護 および コンテキスト・ベースの制限のシナリオ 例を参照してください