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 ゲートウェイを構成します。 例えば、StrongSwan をマシンにセットアップすることができます。
- 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-nlb
NLB が作成されたことを確認します。 出力の10.x.x.x
EXTERNAL-IP** アドレス ** をメモします。 この IP アドレスで、YAML ファイルに指定したポートを使用して、クラスター・マスターのプライベート・クラウド・サービス・エンドポイントが公開されます。
この出力例では、マスターのプライベート・クラウド・サービス・エンドポイントの IP アドレスはoc get svc -o wide
10.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
プライベート・クラウド・サービス・エンドポイントに対する許可リストの作成
プライベート・サービスのエンドポイント許可リストは非推奨であり、サポートは2025年2月10日に終了する。 できるだけ早く、許可リストからコンテキストベースの制限に移行する。 詳細については、プライベート・サービス・エンドポイントの許可リストからコンテキスト・ベースの制限(CBR)への移行 を参照してください。
サブネット許可リストを作成して、プライベート・クラウド・サービス・エンドポイントへのアクセスを制御します。
IBM Cloud IAM を使用してクラスターへのアクセス権限をユーザーに付与した後、プライベート・クラウド・サービス・エンドポイントの許可リストを作成することにより、セキュリティーの 2 次層を追加できます。 許可リスト内のサブネットからクラスター・マスターへの許可済み要求のみが、クラスターのプライベート・クラウド・サービス・エンドポイントを介して許可されます。
クラスターとは異なる VPC からの要求を許可する場合は、その VPC のクラウド・サービス・エンドポイントを許可リストに含める必要があります。
例えば、クラスターのプライベート・クラウド・サービス・エンドポイントにアクセスするには、VPN または IBM Cloud を介して IBM Cloud Direct Link クラシック・ネットワークまたは VPC ネットワークに接続する必要があります。 VPN または Direct Link トンネルのサブネットを追加して、組織内の許可されたユーザーのみがそのサブネットからプライベート・クラウド・サービス・エンドポイントにアクセス可能にします。
プライベート・クラウド・サービス・エンドポイント許可リストは、ユーザーが許可の取り消し後にクラスターにアクセスできないようにするのにも役立ちます。 ユーザーが組織を退職したら、そのユーザーにクラスターへのアクセス権限を付与する IBM Cloud IAM 権限を削除します。 しかし、ユーザはクラスタに必要なIAMパーミッションを含む機能IDの認証情報を含むAPIキーをコピーした可能性があります。 引き続きそのユーザーは、これらの資格情報とプライベート・クラウド・サービス・エンドポイント・アドレスを使用して、別の IBM Cloud アカウントなどの別のサブネットからクラスターにアクセスできます。 組織の IBM Cloud アカウント内の VPN トンネルのサブネットのみを含む許可リストを作成すると、別の IBM Cloud アカウントからのユーザーのアクセス試行が拒否されます。
ワーカー・ノードが常にプライベート・クラウド・サービス・エンドポイントを介してマスターにアクセスできるように、ワーカー・ノード・サブネットの許可リストへの追加と削除は、自動的に行われます。
プライベート・クラウド・サービスのエンドポイント許可リストは、20のサブネットに制限されており、まもなくサポートされなくなる。 コンテキストベースの制限ルールはこれに代わるもので、最大200のサブネットを含むことができます。したがって、許可リストに20以上のサブネットが必要な場合は、プライベートサービスのエンドポイントの許可リストからコンテキストベースの制限(CBR)への移行 を使うべきです。
クラスターに対してパブリック・クラウド・サービス・エンドポイントを有効にした場合は、パブリック・クラウド・サービス・エンドポイントを介した許可済み要求は引き続き許可されます。 したがって、プライベート・クラウド・サービス・エンドポイント許可リストは、プライベート・クラウド・サービス・エンドポイントのみを有効にしたクラスターへのアクセスを制御する場合に最も実効性があります。
始める前に
プライベート・クラウド・サービス・エンドポイント許可リストを作成するには、以下のようにします。
-
許可リストに追加するサブネットを取得します。 例えば、VPN または Direct Link トンネルを介した IBM Cloud プライベート・ネットワークへの接続のためのサブネットを取得できます。
-
クラスターのプライベート・クラウド・サービス・エンドポイントに対して、サブネット許可リスト機能を有効にします。 これで、許可リスト内にないサブネットからの要求について、プライベート・クラウド・サービス・エンドポイントを介したクラスターへのアクセスがブロックされます。 ワーカー・ノードは引き続き実行され、マスターにアクセスできます。
ibmcloud oc cluster master private-service-endpoint allowlist enable --cluster <cluster_name_or_ID>
-
許可ユーザーがプライベート・クラウド・サービス・エンドポイントにアクセスできるサブネットを許可リストに追加します。
ibmcloud oc cluster master private-service-endpoint allowlist add --cluster <cluster_name_or_ID> --subnet <subnet_CIDR> [--subnet <subnet_CIDR> ...]
-
許可リストのサブネットが正しいことを確認します。 許可リストには、手動で追加したサブネットと、ワーカー・ノード・サブネットなど、IBM によって自動的に追加および管理されるサブネットが含まれます。
ibmcloud oc cluster master private-service-endpoint allowlist get --cluster <cluster_name_or_ID>
これで、許可ユーザーは、プライベート・クラウド・サービス・エンドポイントを介したクラスターへのアクセスに進むことができます。
Red Hat OpenShift の Satellite クラスターへのアクセス
Red Hat OpenShift ロケーションで Satellite クラスターを作成したら、そのクラスターにアクセスしてクラスターの操作を開始できます。
クラスタにアクセスして oc get nodes
または oc describe node <worker_node>
コマンドを実行すると、ワーカーノードに 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>
のような形式になります。
CLI でリンク・エンドポイント (例えば、 --endpoint link
) を使用して Satellite クラスターに接続するには、以下の手順に従ってロケーションに ソース をセットアップする必要があります。 このソースにより、リンク・エンドポイントを介してクラスター API にアクセスできます。 詳しくは、 Red Hat OpenShift API Satellite リンク・エンドポイントへのアクセス を参照してください。
- クラスターに対する管理者の 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 クラスター用に自動的に作成されます。 許可されたクラスター・ユーザーが IBM Cloud VPC VPN などを介してクラスターのデプロイ先と同じ VPC に接続されている場合、この仮想プライベート・エンドポイント・ゲートウェイを介して
Kubernetes マスターにアクセスできます。 この場合、 kubeconfig
は、プライベートDNS名であるVirtual Private Endpoint (VPE) URL で構成されており、 IBM Cloud VPC プライベートDNSサービスによってのみ解決されます。 IBM Cloud VPC のプライベートDNSサーバーのアドレスは、 161.26.0.7
と 161.26.0.8
です。
バージョン 4.13を実行するクラスターの場合: クラスターの作成時にプライベート・クラウド・サービス・エンドポイントのみを有効にした場合、VPC の仮想プライベート・エンドポイントがデフォルトで使用されて Red Hat OpenShift コンポーネント ( Red Hat OpenShift これらのコンポーネントにアクセスしたり、クラスターで 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 キーを再度取得することはできません。 出力をローカル・マシンのファイルにエクスポートしたい場合は、
--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
環境変数の最後のファイルに追加します。 注 :プライベート・クラウド・サービスのエンドポイントを有効にし、クラスタ・コンテキストに使用する場合は、--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 資料を参照してください。
oc
CLI を使用したログイン: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
: スクリーン}
-
先ほど取得したエンドポイントを使用して、クラスターにログインします。
<URL>
をoauth
サーバーの<token_endpoint>
に置き換える。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 キーを再度取得することはできません。 出力をローカル・マシンのファイルにエクスポートしたい場合は、--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
環境変数の最後のファイルに追加します。 注 :プライベート・クラウド・サービスのエンドポイントを有効にし、クラスタ・コンテキストに使用する場合は、--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