一時的または長期的な kubeconfig を使用して、クラスターの API サーバーで kubectl を認証します。
クラスターとアプリケーションは、ACK コンソールからも管理できます。
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 ファイルの取得とクラスターへの接続
-
ACK コンソールにログインします。左側メニューで、 [クラスター] をクリックします。
-
[クラスター] ページで、対象のクラスター名をクリックするか、[操作] 列の [詳細] をクリックします。
-
[クラスター情報] ページで、[接続情報] タブをクリックします。一時的または長期的な kubeconfig を選択します。一時的な kubeconfig の場合は、有効期間を設定します。
-
[プライベートアクセス] または [パブリックアクセス] タブをクリックし、[コピー] をクリックします。
-
クライアントマシン上の
$HOME/.kube/configファイルに内容を貼り付け、ファイルを保存します。注意:ディレクトリまたはファイルが存在しない場合は、あらかじめ作成してください。
-
すべての名前空間を一覧表示して、接続を検証します。
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 を取得してください。
関連ドキュメント
-
DescribeClusterUserKubeconfig API を使用して、プログラムによって kubeconfig をクエリします。
-
クラスターノードにログインします。詳細については、「ECS のリモート接続方法」をご参照ください。