クラスターへのアクセス
IBM Cloud® Kubernetes Service クラスターを作成したら、そのクラスターにアクセスしてクラスターの操作を開始できます。
前提条件
- 必要な CLI ツールをインストールします (IBM Cloud CLI、Kubernetes Service プラグイン (
ibmcloud ks
)、および Kubernetes CLI (kubectl
) を含む)。クラスター内のテスト機能に素早くアクセスするために、IBM Cloud Shell を使用することもできます。 - IBM Cloud Kubernetes Service クラスターを作成します。
- 企業ファイアウォールでネットワークが保護されている場合は、IBM Cloud と IBM Cloud Kubernetes Service の API エンドポイントとポートへのアクセスを許可します。 プライベート・クラウド・サービス・エンドポイントのみのクラスターの場合は、クラウド・サービス・エンドポイント・サブネットへのアクセスを構成するまで、クラスターへの接続をテストすることはできません。
ibmcloud ks cluster get -c <cluster_name_or_ID>
を実行して、クラスターが正常な状態であることを確認します。 クラスターが正常な状態でない場合は、クラスターのデバッグのガイドを参照してください。 例えば、ファイアウォール・ゲートウェイ・アプライアンスによって保護されているアカウントにクラスターがプロビジョンされている場合は、 該当するポートと IP アドレスへの発信トラフィックを許可するようにファイアウォール設定を構成します。- 前の手順のクラスター詳細の出力で、クラスターのパブリックまたはプライベートのサービス・エンドポイント URL を確認します。
- パブリックのサービス・エンドポイント URL のみ: パブリック・クラウド・サービス・エンドポイントを介したクラスターへのアクセスに進みます。
- プライベートのサービス・エンドポイント URL のみ: プライベート・クラウド・サービス・エンドポイントを介したクラスターへのアクセスに進みます。
- 両方のサービス・エンドポイント URL: パブリックまたはプライベートのサービス・エンドポイントを介してクラスターにアクセスできます。
- 仮想プライベート・エンドポイント を介して VPC クラスターにアクセスすることもできます。
パブリック・クラウド・サービス・エンドポイントを介したクラスターへのアクセス
クラスターを処理するには、作成したクラスターを CLI セッションのコンテキストとして設定して、kubectl
コマンドを実行します。
IBM Cloud コンソールを代わりに使用する場合は、IBM Cloud Shell の Web ブラウザーから直接 CLI コマンドを実行できます。
- 作成したクラスターを、このセッションのコンテキストとして設定します。 次の構成手順は、クラスターの操作時に毎回行ってください。
- クラスターの
kubeconfig
構成ファイルをダウンロードし、kubeconfig
の既存の~/.kube/config
に追加するか、KUBECONFIG
環境変数の最後のファイルに追加します。ibmcloud ks cluster config -c <cluster_name_or_ID>
kubectl
コマンドが正しく実行され、Kubernetesコンテキストがクラスターに設定されていることを確認します。
出力例kubectl config current-context
<cluster_name>/<cluster_ID>
- クラスターの
- デフォルトのポート
8001
で Kubernetes ダッシュボードを起動します。- デフォルトのポート番号でプロキシーを設定します。
kubectl proxy
Starting to serve on 127.0.0.1:8001
- Web ブラウザーで以下の URL を開いて、Kubernetes ダッシュボードを表示します。
http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
- デフォルトのポート番号でプロキシーを設定します。
プライベート・クラウド・サービス・エンドポイントを介したクラスターへのアクセス
許可されたクラスター・ユーザーが、プライベート・クラウド・サービス・エンドポイントを介して VPC クラスターまたはクラシック・クラスターにアクセスできるようにします。
プライベート・クラウド・サービス・エンドポイントを介した VPC クラスターへのアクセス
許可されたクラスター・ユーザーが IBM Cloud プライベート・ネットワークの中で作業している場合、または VPC VPN 接続などを介してプライベート・ネットワークに接続している場合は、プライベート・クラウド・サービス・エンドポイントを介して Kubernetes マスターにアクセスできます。 ただし、プライベート・クラウド・サービス・エンドポイントを介した 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 接続を介してプライベート・ネットワークに接続していることを確認します。
-
クラスターの
kubeconfig
構成ファイルをダウンロードし、kubeconfig
の既存の~/.kube/config
に追加するか、KUBECONFIG
環境変数の最後のファイルに追加します。ibmcloud ks cluster config -c <cluster_name_or_ID> --endpoint private
-
kubectl
コマンドが正しく実行され、Kubernetesコンテキストがクラスターに設定されていることを確認します。kubectl config current-context
出力例
<cluster_name>/<cluster_ID>
プライベート・クラウド・サービス・エンドポイントを介したクラシック・クラスターへのアクセス
許可されたクラスター・ユーザーが、IBM Cloud プライベート・ネットワークの中で作業している場合、またはクラシック VPN 接続や IBM Cloud Direct Link などを介してプライベート・ネットワークに接続している場合は、プライベート・クラウド・サービス・エンドポイントを介して
Kubernetes マスターにアクセスできます。 ただし、プライベート・クラウド・サービス・エンドポイントを介した Kubernetes マスターとの通信には、IP アドレス範囲 166.X.X.X
を使用する必要があります。この範囲はクラシック VPN 接続でも IBM Cloud Direct Link でもルーティングすることはできません。 プライベート・ネットワーク・ロード・バランサー (NLB) を使用して、クラスター・ユーザーのマスターのプライベート・クラウド・サービス・エンドポイントを公開できます。
プライベート NLB は、ユーザーが VPN または IBM Cloud Direct Link 接続を使用してアクセスできる内部 10.X.X.X
IP アドレス範囲として、マスターのプライベート・クラウド・サービス・エンドポイントを公開します。 プライベート・クラウド・サービス・エンドポイントのみを有効にする場合は、Kubernetes ダッシュボードを使用するか、パブリック・クラウド・サービス・エンドポイントを一時的に有効にして、プライベート
NLB を作成できます。
-
クラスターのプライベート・クラウド・サービス・エンドポイント URL およびポートを取得します。
ibmcloud ks cluster get -c <cluster_name_or_ID>
この出力例では、プライベート・サービス・エンドポイント URL は
https://c1.private.us-east.containers.cloud.ibm.com:25073
です。NAME: setest ID: b8dcc56743394fd19c9f3db7b990e5e3 State: normal Status: healthy cluster Created: 2019-04-25T16:03:34+0000 Location: wdc04 Master URL: https://c1.private.us-east.containers.cloud.ibm.com:25073 Public Service Endpoint URL: - Private Service Endpoint URL: https://c1.private.us-east.containers.cloud.ibm.com:25073 Master Location: Washington D.C. ...
-
kube-api-via-nlb.yaml
という名前の YAML ファイルを作成します。 この YAML はプライベートLoadBalancer
サービスを作成し、NLB を介してプライベート・クラウド・サービス・エンドポイントを公開します。<private_service_endpoint_port>
を、先述の手順で確認したポートに置き換えます。apiVersion: v1 kind: Service metadata: name: kube-api-via-nlb annotations: service.kubernetes.io/ibm-load-balancer-cloud-provider-ip-type: private namespace: default spec: type: LoadBalancer ports: - protocol: TCP port: 8080 # Or, the <private_service_endpoint_port> that you found earlier. targetPort: 8080 # Optional. By default, the `targetPort` is set to match the `port` value unless specified otherwise. --- kind: Endpoints apiVersion: v1 metadata: name: kube-api-via-nlb subsets: - addresses: - ip: 172.20.0.1 ports: - port: 2040
-
プライベート NLB を作成するには、クラスター・マスターに接続する必要があります。 VPN または IBM Cloud Direct Link からプライベート・クラウド・サービス・エンドポイントを介してまだ接続できないため、クラスター・マスターに接続し、パブリック・クラウド・サービス・エンドポイントまたは Kubernetes ダッシュボードを使用して NLB を作成する必要があります。
-
プライベート・クラウド・サービス・エンドポイントのみを有効にした場合は、Kubernetes ダッシュボードを使用して NLB を作成できます。 ダッシュボードは、すべての要求をマスターのプライベート・クラウド・サービス・エンドポイントに自動的に経路指定します。
- [クラスター]ページで、アクセスするクラスターをクリックします。
- クラスターの詳細ページで、**「Kubernetes ダッシュボード (Kubernetes Dashboard)」**をクリックします。
- **「+ 作成 (+ Create)」**をクリックします。
- **「ファイルから作成 (Create from file)」を選択し、
kube-api-via-nlb.yaml
ファイルをアップロードして、「アップロード」**をクリックします。 - **「概要」**ページで、
kube-api-via-nlb
サービスが作成されていることを確認します。 **「外部エンドポイント (External endpoints)」**列で、10.x.x.x
アドレスをメモします。 この IP アドレスは、YAML ファイルで指定したポートで Kubernetes マスターのプライベート・クラウド・サービス・エンドポイントを公開します。
-
パブリック・クラウド・サービス・エンドポイントも有効にした場合は、既にマスターにアクセスできます。
- クラスターの
kubeconfig
構成ファイルをダウンロードし、kubeconfig
の既存の~/.kube/config
に追加するか、KUBECONFIG
環境変数の最後のファイルに追加します。ibmcloud ks cluster config -c <cluster_name_or_ID>
- NLB およびエンドポイントを作成します。
kubectl apply -f kube-api-via-nlb.yaml
kube-api-via-nlb
NLB が作成されていることを確認します。 出力の10.x.x.x
EXTERNAL-IP** アドレス ** をメモします。 この IP アドレスは、YAML ファイルで指定したポートで Kubernetes マスターのプライベート・クラウド・サービス・エンドポイントを公開します。
この出力例では、Kubernetes マスターのプライベート・クラウド・サービス・エンドポイントの IP アドレスはkubectl get svc -o wide
10.186.92.42
です。NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR kube-api-via-nlb LoadBalancer 172.21.150.118 10.186.92.42 443:32235/TCP 10m <none> ...
- クラスターの
-
-
自分自身またはユーザーが
kubectl
コマンドを実行するクライアント・マシンで、NLB IP アドレスとプライベート・クラウド・サービス・エンドポイント URL を/etc/hosts
ファイルに追加します。 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 接続を介してプライベート・ネットワークに接続していることを確認します。
-
クラスターの
kubeconfig
構成ファイルをダウンロードし、kubeconfig
の既存の~/.kube/config
に追加するか、KUBECONFIG
環境変数の最後のファイルに追加します。ibmcloud ks cluster config -c <cluster_name_or_ID> --endpoint private
-
kubectl
コマンドが正しく実行され、Kubernetesコンテキストがクラスターに設定されていることを確認します。kubectl config current-context
出力例
<cluster_name>/<cluster_ID>
プライベート・クラウド・サービス・エンドポイントに対する許可リストの作成
プライベート・サービスのエンドポイント許可リストは非推奨であり、サポートは2025年2月10日に終了する。 できるだけ早く、許可リストからコンテキストベースの制限に移行する。 詳細については、プライベート・サービス・エンドポイントの許可リストからコンテキスト・ベースの制限(CBR)への移行 を参照してください。
サブネット許可リストを作成して、プライベート・クラウド・サービス・エンドポイントへのアクセスを制御します。
IBM Cloud IAM を使用してクラスターへのアクセス権限をユーザーに付与した後、プライベート・クラウド・サービス・エンドポイントの許可リストを作成することにより、セキュリティーの 2 次層を追加できます。 許可リスト内のサブネットからクラスター・マスターへの許可済み要求のみが、クラスターのプライベート・クラウド・サービス・エンドポイントを介して許可されます。
クラスターとは異なる VPC からの要求を許可する場合は、その VPC のクラウド・サービス・エンドポイントを許可リストに含める必要があります。
例えば、クラスターのプライベート・クラウド・サービス・エンドポイントにアクセスするには、VPN または IBM Cloud を介して IBM Cloud Direct Link クラシック・ネットワークまたは VPC ネットワークに接続する必要があります。 VPN または Direct Link トンネルのサブネットを追加して、組織内の許可されたユーザーのみがそのサブネットからプライベート・クラウド・サービス・エンドポイントにアクセス可能にします。
プライベート・クラウド・サービス・エンドポイント許可リストは、ユーザーが許可の取り消し後にクラスターにアクセスできないようにするのにも役立ちます。 ユーザーが組織を退職したら、そのユーザーにクラスターへのアクセス権限を付与する IBM Cloud IAM 権限を削除します。 しかし、ユーザーがAPIキーをコピーした可能性があり、そのAPIキーには、クラスターに必要なIAM権限が含まれている機能IDの認証情報が含まれている可能性があります。 引き続きそのユーザーは、これらの資格情報とプライベート・クラウド・サービス・エンドポイント・アドレスを使用して、別の IBM Cloud アカウントなどの別のサブネットからクラスターにアクセスできます。 組織の IBM Cloud アカウント内の VPN トンネルのサブネットのみを含む許可リストを作成すると、別の IBM Cloud アカウントからのユーザーのアクセス試行が拒否されます。
ワーカー・ノードが常にプライベート・クラウド・サービス・エンドポイントを介してマスターにアクセスできるように、ワーカー・ノード・サブネットの許可リストへの追加と削除は、自動的に行われます。
プライベート・クラウド・サービスのエンドポイント許可リストは、20のサブネットに制限されており、まもなくサポートされなくなる。 コンテキストベースの制限ルールはこれに代わるもので、最大200のサブネットを含むことができます。したがって、許可リストに20以上のサブネットが必要な場合は、プライベートサービスのエンドポイントの許可リストからコンテキストベースの制限(CBR)への移行 を使うべきです。
クラスターに対してパブリック・クラウド・サービス・エンドポイントを有効にした場合は、パブリック・クラウド・サービス・エンドポイントを介した許可済み要求は引き続き許可されます。 したがって、プライベート・クラウド・サービス・エンドポイント許可リストは、プライベート・クラウド・サービス・エンドポイントのみを有効にしたクラスターへのアクセスを制御する場合に最も実効性があります。
始める前に
プライベート・クラウド・サービス・エンドポイント許可リストを作成するには、以下のようにします。
-
許可リストに追加するサブネットを取得します。 例えば、VPN または Direct Link トンネルを介した IBM Cloud プライベート・ネットワークへの接続のためのサブネットを取得できます。
-
クラスターのプライベート・クラウド・サービス・エンドポイントに対して、サブネット許可リスト機能を有効にします。 これで、許可リスト内にないサブネットからの要求について、プライベート・クラウド・サービス・エンドポイントを介したクラスターへのアクセスがブロックされます。 ワーカー・ノードは引き続き実行され、マスターにアクセスできます。
ibmcloud ks cluster master private-service-endpoint allowlist enable --cluster <cluster_name_or_ID>
-
許可ユーザーがプライベート・クラウド・サービス・エンドポイントにアクセスできるサブネットを許可リストに追加します。
ibmcloud ks cluster master private-service-endpoint allowlist add --cluster <cluster_name_or_ID> --subnet <subnet_CIDR> [--subnet <subnet_CIDR> ...]
-
許可リストのサブネットが正しいことを確認します。 許可リストには、手動で追加したサブネットと、ワーカー・ノード・サブネットなど、IBM によって自動的に追加および管理されるサブネットが含まれます。
ibmcloud ks cluster master private-service-endpoint allowlist get --cluster <cluster_name_or_ID>
これで、許可ユーザーは、プライベート・クラウド・サービス・エンドポイントを介したクラスターへのアクセスに進むことができます。
仮想プライベート・エンドポイント・ゲートウェイを介した VPC クラスターへのアクセス
仮想プライベート・エンドポイント・ゲートウェイ は、VPC クラスター用に自動的に作成されます。 許可されたクラスター・ユーザーが IBM Cloud VPC VPN などを介してクラスターのデプロイ先と同じ VPC に接続されている場合、この仮想プライベート・エンドポイント・ゲートウェイを介して
Kubernetes マスターにアクセスできます。 この場合、 kubeconfig
はプライベートDNS名URL で構成されており、 IBM Cloud VPCでのみ解決できます。 IBM Cloud VPC プライベートDNSサーバーのアドレスは、 161.26.0.7
と 161.26.0.8
です。
-
IBM Cloud VPC VPN をセットアップし、VPN を介して VPC に接続します。
- VPC への クライアントからサイト または サイトからサイト への VPN を構成します。 例えば、VPN クライアントとのクライアントからサイトへの接続をセットアップすることを選択できます。
- クライアントからサイトへの VPN for IBM Cloud VPC サービスの場合は、 考慮事項 に記載されているように VPN サーバーをプロビジョンするときに IBM Cloud VPC プライベート DNS のサービス・アドレスを指定する必要があります。また、VPN
サーバーがプロビジョンされた後に、宛先
161.26.0.0/16
とアクションtranslate
を指定して VPN 経路を作成する必要があります。 - IBM Cloud VPC サービスのサイト間 VPN の場合は、 VPN ガイドを介したサービス・エンドポイントへのアクセス に従い、 IBM Cloud VPC プライベート DNS サービス・アドレスを構成します。
- IBM Cloud VPC VPN 接続を通じて VPC に接続していることを確認してください。
-
クラスターの
kubeconfig
構成ファイルをダウンロードし、kubeconfig
の既存の~/.kube/config
に追加するか、KUBECONFIG
環境変数の最後のファイルに追加します。ibmcloud ks cluster config -c <cluster_name_or_ID> --endpoint vpe
-
1.30 以降 VPN の
kube-vpegw-<clusterID>
にセキュリティー・グループ・ルールを追加します。 この例のリモート・リソースは、VPN のクライアント IP CIDR からのものです。ibmcloud ks cluster get -c CLUSTER
を実行すると、VPE ポートを確認できます。ibmcloud is sg-rulec kube-vpegw-<clusterID> inbound tcp --port-min 30829 --port-max 30829 --remote 192.168.192.0/22
-
Kubernetes コンテキストがクラスターに設定されていることを確認します。
kubectl config current-context
出力例
<cluster_name>/<cluster_ID>
kubectl version
出力例
Client Version: v1.25.3 Kustomize Version: v4.5.7 Server Version: v1.25.4+IKS