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 のグローバルレベルと対象クラスターの両方で必要な権限を付与されている必要があります。 詳細については、「権限付与」をご参照ください。
ACK コンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを見つけ、クラスター名をクリックするか、[操作] 列の [詳細] をクリックします。
クラスターの詳細ページで、[接続情報] タブをクリックし、一時的または長期的な kubeconfig を選択します。 一時的な kubeconfig を選択した場合は、適切な有効期間を設定します。
[パブリックアクセス] または [プライベートアクセス] タブを選択し、[コピー] をクリックして kubeconfig の内容をコピーします。 コピーした内容をクライアントマシンの
$HOME/.kube/configファイルに貼り付け、ファイルを保存します。このファイルまたはディレクトリが存在しない場合は、
mkdir -p $HOME/.kubeとtouch $HOME/.kube/configを実行して作成します。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 -enddatekubectl はデフォルトで$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 を取得してください。
関連ドキュメント
クラスターの kubeconfig をクエリするには、DescribeClusterUserKubeconfig API 操作を呼び出します。
ノードにログインするには、「ECS リモート接続方法の概要」をご参照ください。