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

Container Service for Kubernetes:kubeconfig の取得と kubectl を使用したクラスターへの接続

最終更新日:Jun 16, 2026

一時的または長期的な kubeconfig を使用して、クラスターの API サーバーで kubectl を認証します。

クラスターとアプリケーションは、ACK コンソールからも管理できます。

重要

責任共有モデルに基づき、kubeconfig 認証情報を定期的にローテーションし、最小権限の原則に従って、認証情報を保護してください。

kubeconfig タイプの選択

必要なアクセス期間と、クライアントがクラスターに接続する方法に基づいて kubeconfig タイプを選択します。

有効期間別

タイプ

有効期間

最適な用途

セキュリティ

一時的

30 分~3 日間 (設定可能)

日常的な O&M (運用保守)、トラブルシューティング、CI/CD パイプライン

低リスク — 設定した期間後に自動で失効

長期的

3 年間 (デフォルト)

自動化システム、長時間実行される監視サービス

有効期限が切れる前に手動でのローテーションが必要

アクセス方法別

タイプ

使用する状況

詳細

プライベートアクセス

クライアントマシンがクラスターと同じ Virtual Private Cloud (VPC) 内にある場合

内部ネットワーク経由で接続し、低レイテンシーと強力なセキュリティを実現

パブリックアクセス

インターネットアクセスが可能な任意のマシンから接続する場合

Elastic IP アドレス (EIP) を通じて API サーバーを公開 — ローカル開発およびリモート O&M (運用保守) 向け

バインドした EIP には、従量課金料金が発生します。

パブリックアクセスが可能な ACK 専用クラスターでは、SSH 経由でマスターノードに接続して kubeconfig を取得することもできます。

前提条件

開始する前に、以下を確認してください。

  • クラスターの Kubernetes バージョンに対し、前後 1 マイナーバージョン以内の kubectl がインストールされていること (例:Kubernetes 1.28 の場合は kubectl 1.27〜1.29)。

  • ACK とクラスターの両レベルで 権限が付与された RAM ユーザーが存在すること。

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

  1. ACK コンソールにログインします。左側メニューで、 [クラスター] をクリックします。

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

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

  4. [プライベートアクセス] または [パブリックアクセス] タブをクリックし、[コピー] をクリックします。

  5. クライアントマシン上の $HOME/.kube/config ファイルに内容を貼り付け、ファイルを保存します。

    注意:ディレクトリまたはファイルが存在しない場合は、あらかじめ作成してください。
  6. すべての名前空間を一覧表示して、接続を検証します。

    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 を取得してください。

新しい kubeconfig は 3 年間有効です。古い kubeconfig は、元の有効期限まで引き続き有効です。

漏洩した認証情報の失効

kubeconfig が漏洩した疑いがある場合は、直ちに クラスターの kubeconfig 認証情報を失効させてください。これにより、既存のすべての接続が無効になり、新しい kubeconfig が生成されます。

退職したユーザーの権限のクリーンアップ

プロジェクトの終了後や従業員の退職など、ユーザーがアクセスを必要としなくなった場合は、kubeconfig ファイルを削除するか、ack-ram-tool を使用することで、そのユーザーの kubeconfig 権限を一括で失効させてください。失効後、システムは新しい kubeconfig を生成しません。

誤って失効させた権限を復元するには、kubeconfig のごみ箱を使用します。

よくある質問

デフォルトでは、kubectl は $HOME/.kube/config を使用します。別のファイルを使用するには、KUBECONFIG 環境変数を設定するか、--kubeconfig フラグを渡します。以下のコマンドでは、kubeconfig をご自身の kubeconfig ファイルへのパスに置き換えてください。

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

証明書のサブジェクトを抽出します。

# クライアント証明書を抽出し、base64 からデコードします
# 次に OpenSSL を使用して Subject フィールドを表示します
grep client-certificate-data kubeconfig | awk '{print $2}' | base64 -d | openssl x509 -noout -text | grep Subject:

期待される出力:

        Subject: O=system:users, OU=, CN=1***-1673419473
  • O — Kubernetes ユーザーグループ。この例では system:users です。

  • CN — ユーザー識別子。この例では 1***-1673419473 で、1*** は Alibaba Cloud のユーザー ID です。

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

証明書の有効期限を確認します。

# クライアント証明書を抽出し、base64 からデコードします
# 次に OpenSSL を使用して有効期限を表示します
grep client-certificate-data kubeconfig | awk '{print $2}' | base64 -d | openssl x509 -noout -enddate

期待される出力:

notAfter=Jan 10 06:44:34 2026 GMT

この例では、証明書は 2026 年 1 月 10 日に失効します。

有効期限が切れる 180 日前、または失効後いつでも、コンソールまたは API から新しい kubeconfig を取得してください。

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

証明書、キー、API サーバーの URL を抽出します。

# クライアント証明書を抽出し、PEM ファイルにデコード
grep client-certificate-data ./kubeconfig | awk -F ' ' '{print $2}' | base64 -d > ./client-cert.pem

# クライアントの秘密鍵を抽出し、PEM ファイルにデコード
grep client-key-data ./kubeconfig | awk -F ' ' '{print $2}' | base64 -d > ./client-key.pem

# API サーバーの URL を変数に抽出
APISERVER=$(grep server ./kubeconfig | awk -F ' ' '{print $2}')

「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 マネージドクラスター:API サーバー証明書の サブジェクト代替名 (SAN) に新しい IP アドレスを追加します。

  • ACK 専用クラスター:以下のいずれかの方法で、kubectl が TLS 検証をスキップするように設定します。

    重要

    TLS 検証をスキップすることはセキュリティリスクです。本番環境では使用しないでください。ACK Pro クラスターに移行し、API サーバー証明書の SAN に新しい IP アドレスを追加することを推奨します。

    • 方法 1: --insecure-skip-tls-verify フラグを渡します。

      kubectl -s https://<IP>:6443 --insecure-skip-tls-verify get ns
    • 方法 2:kubeconfig ファイルを編集します。insecure-skip-tls-verify: true を追加し、certificate-authority-data フィールドを削除します。

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

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

いいえ。ACK マネージドクラスターはルート証明書キーを公開していません。コンソールまたは DescribeClusterUserKubeconfig API から kubeconfig を取得してください。

関連ドキュメント