すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:クラスターの kubeconfig を取得し、kubectl を使用してクラスターに接続する

最終更新日:Sep 23, 2025

Container Service for Kubernetes (ACK) コンソールだけでなく、Kubernetes コマンドラインインターフェイス (kubectl) を使ってクラスターとアプリケーションを管理することも可能です。kubectl でクラスターに接続するには、まずクラスターの認証情報を含む kubeconfig ファイルを取得する必要があります。

ステップ 1: kubectl クライアントのインストールと設定

OS とクラスターのバージョンに基づいて、クライアントマシンに kubectl をインストールします。

ステップ 2: kubeconfig ファイルの取得と使用

1. kubeconfig タイプの選択

kubeconfig ファイルには、クラスターにアクセスするための認証情報が含まれています。 セキュリティ要件とユースケースに基づいて kubeconfig タイプを選択してください。

重要

責任共有モデルに従い、kubeconfig 認証情報を安全に管理することは、お客様の責任となります。認証情報の漏洩によるセキュリティリスクを軽減するため、kubeconfig を定期的にローテーションし、最小権限の原則に従ってください。

  • 有効期間別:

    • 一時的な kubeconfig:30 分から 3 日間の有効期間を設定できます。 ファイルは自動的に期限切れになるため、認証情報が漏洩するセキュリティリスクが軽減されます。 これは、API サーバーへの長期的なアクセスが必要ない、日常の運用保守、トラブルシューティング、および CI/CD パイプラインでの利用を推奨します。

    • 長期的な kubeconfig:このタイプのデフォルトの有効期間は 3 年です。頻繁な認証情報のローテーションが現実的でない自動化システムや長時間実行される監視サービスに適しています。

  • アクセス方法別:

    • プライベートアクセス:クライアントマシンがクラスターと同じ仮想プライベートクラウド (VPC) 内にある場合に使用します。内部ネットワーク経由で接続すると、レイテンシーが低減され、セキュリティが向上します。

    • パブリックアクセス:インターネットにアクセスできる任意のマシンからクラスターに接続する場合に使用します。この方法では、Elastic IP (EIP) を使用して API サーバーを公開します。ローカル開発やリモートでの運用保守に適しています。

      バインドされた EIP に関連する料金については、「従量課金」をご参照ください。
  • パブリックアクセスが有効になっている ACK 専用クラスターがある場合は、SSH 経由でマスターノードから kubeconfig ファイルを取得し、ローカルで kubectl を使用してクラスターを管理できます。 詳細については、「SSH を使用して ACK 専用クラスターのマスターノードに接続する」をご参照ください。

2. kubeconfig ファイルの取得とクラスターへの接続

コンソールから kubeconfig ファイルを取得すると、kubectl はそれを使用してクラスターに接続し、管理できます。

RAM ユーザーがクラスターに接続する前に、ACK のグローバルレベルと対象クラスターの両方で必要な権限を付与されている必要があります。 詳細については、「権限付与」をご参照ください。
  1. ACK コンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、管理するクラスターを見つけ、クラスター名をクリックするか、[操作] 列の [詳細] をクリックします。

  3. クラスターの詳細ページで、[接続情報] タブをクリックし、一時的または長期的な kubeconfig を選択します。 一時的な kubeconfig を選択した場合は、適切な有効期間を設定します。

  4. [パブリックアクセス] または [プライベートアクセス] タブを選択し、[コピー] をクリックして kubeconfig の内容をコピーします。 コピーした内容をクライアントマシンの $HOME/.kube/config ファイルに貼り付け、ファイルを保存します。

    このファイルまたはディレクトリが存在しない場合は、mkdir -p $HOME/.kubetouch $HOME/.kube/config を実行して作成します。
  5. kubectl コマンドを実行して接続を確認します。 たとえば、すべての名前空間をリストするには、次のコマンドを実行します。

    kubectl get namespaces

    接続が成功すると、名前空間のリストが返されます。

    NAME              STATUS   AGE
    default           Active   4h39m
    kube-node-lease   Active   4h39m
    kube-public       Active   4h39m
    kube-system       Active   4h39m

本番環境での適用

  • kubeconfig の有効性を確認する: サービスの中断を防ぐために、認証情報が期限切れになる前にローテーションしてください。

    長期的な kubeconfig の有効期間は 3 年です。有効期限が切れる 180 日前から、ACK コンソール または DescribeClusterUserKubeconfig API を介して新しいものを取得できます。

    新しい kubeconfig の有効期間も 3 年です。古い kubeconfig は、元の有効期限まで引き続き有効です。
  • 侵害された場合は直ちに kubeconfig を失効させる:kubeconfig ファイルが侵害された疑いがある場合は、直ちに クラスターの kubeconfig 認証情報を失効させてくだい。 これにより、古い認証情報を使用したすべての接続が無効になり、新しい kubeconfig が生成されます。

  • 不要な権限の整理: プロジェクト完了や従業員の離職など、ユーザーがアクセス不要になった場合は、kubeconfig の権限を一括で取り消します。権限が取り消された後、システムは新しい kubeconfig を生成しません。 詳細については、「kubeconfig ファイルの削除」および「ack-ram-tool を使用して ACK クラスター上の指定されたユーザーの権限を取り消す」をご参照ください。

    誤って権限を削除しないように、kubeconfig のゴミ箱を使用して、取り消された特定の kubeconfig 権限を復元できます。

よくある質問

kubeconfig 証明書に関連付けられている ID 情報を確認するにはどうすればよいですか。

次のコマンドを実行し、kubeconfig を実際のファイルパスに置き換えてください。

grep client-certificate-data kubeconfig |awk '{print $2}' |base64 -d | openssl x509 -noout -text |grep Subject:
kubectl はデフォルトで $HOME/.kube/config を使用してクラスターに接続しますが、 KUBECONFIG 環境変数や --kubeconfig パラメーターで他の kubeconfig ファイルも指定できます。

出力は次のようになります。

        Subject: O=system:users, OU=, CN=1***-1673419473

各項目の説明:

  • O: Kubernetes ユーザーグループ。 この例では、グループ名は system:users です。

  • CN: 関連付けられているユーザー情報。 この例では、ユーザーは 1***-1673419473 で、1*** は Alibaba Cloud ユーザー ID です。

kubeconfig 証明書の有効期限を確認するにはどうすればよいですか。

次のコマンドを実行して、kubeconfig に関連付けられている証明書の有効期限を取得します。kubeconfig を実際のファイルパスに置き換えてください。

grep client-certificate-data kubeconfig |awk '{print $2}' |base64 -d | openssl x509 -noout -enddate
kubectl はデフォルトで $HOME/.kube/config を使用してクラスターに接続しますが、 KUBECONFIG 環境変数や --kubeconfig パラメーターで他の kubeconfig ファイルも指定できます。

出力は次のようになります。

notAfter=Jan 10 06:44:34 2026 GMT

この例では、Jan 10 06:44:34 2026 GMT が証明書の有効期限です。

証明書の有効期限の 180 日前から、または有効期限が切れた後いつでも、コンソールまたは API を呼び出すことで新しい kubeconfig を取得できます。

kubeconfig からクライアント証明書、クライアント秘密鍵、API サーバー情報を抽出するにはどうすればよいですか。

次のコマンドを使用できます。kubeconfig を実際のファイルパスに置き換えてください。

cat  ./kubeconfig |grep client-certificate-data | awk -F ' ' '{print $2}' |base64 -d > ./client-cert.pem
cat  ./kubeconfig |grep client-key-data | awk -F ' ' '{print $2}' |base64 -d > ./client-key.pem
APISERVER=`cat  ./kubeconfig |grep server | awk -F ' ' '{print $2}'`
kubectl はデフォルトで $HOME/.kube/config を使用してクラスターに接続しますが、 KUBECONFIG 環境変数や --kubeconfig パラメーターで他の kubeconfig ファイルも指定できます。

kubectl を使用してクラスターに接続する際に certificate is valid for エラーが発生した場合、どのように解決すればよいですか?

クラスターの API サーバーの Server Load Balancer (SLB) インスタンスに新しい IP アドレスをバインドすると、新しい IP をターゲットとする kubectl コマンドが Error while proxying request: x509: certificate is valid for xxx または Unable to connect to the server: x509: certificate is valid for xxx エラーで失敗することがあります。

  • ACK マネージドクラスター:新しい IP アドレスを API サーバー証明書のサブジェクト代替名 (SAN) に追加します。 詳細については、「ACK クラスターの作成時に API サーバー証明書の SAN をカスタマイズする」をご参照ください。

  • ACK 専用クラスターinsecure-skip-tls-verify オプションを使用して、kubectl でこのエラーを無視するように設定します。

    重要

    TLS 検証をバイパスすることはセキュリティリスクであり、本番環境では推奨されません。 ACK マネージド Pro クラスターに移行することを強く推奨します。その後、API サーバー証明書の SAN に新しい IP アドレスを追加します。

    • 方法 1: kubectl コマンドを実行する際に --insecure-skip-tls-verify オプションを指定します。

      kubectl -s https://<IP>:6443 --insecure-skip-tls-verify get ns
    • 方法 2: insecure-skip-tls-verify: true 設定を追加し、certificate-authority-data 設定を削除して、kubeconfig ファイルを変更します。

      apiVersion: v1
      clusters:
      - cluster:
          server: https://<IP>:6443
          insecure-skip-tls-verify: true
        name: kubernetes
      contexts:
      ...

ACK マネージドクラスター のルート証明書キーを取得して、自分で kubeconfig 証明書を生成できますか。

いいえ、できません。 ACK マネージドクラスターはルート証明書キーを公開しないため、コンソールまたは API を呼び出して kubeconfig を取得してください。

関連ドキュメント