kubectl
コマンドがKubernetesクラスターと通信するためには、接続先のクラスター情報、ユーザー認証情報、およびそれらの組み合わせ(Context)が必要です。これらの情報は、通常 kubeconfig
ファイルに保存されます。
kubeconfig
ファイル
kubeconfig
ファイルは、kubectl
がKubernetesクラスターに接続するための設定情報を含むYAML形式のファイルです。デフォルトでは ~/.kube/config
に配置されます。
kubeconfig
ファイルは、主に以下の3つのセクションで構成されます。
clusters
:- 接続先のKubernetesクラスターに関する情報(APIサーバーのURL、証明書など)を定義します。
- 複数のクラスター情報を登録できます。
users
:- クラスターにアクセスするためのユーザー認証情報(クライアント証明書、トークン、ユーザー名/パスワードなど)を定義します。
- 複数のユーザー情報を登録できます。
contexts
:cluster
とuser
のペア、およびデフォルトで使用するnamespace
を指定したものです。kubectl
がどのクラスターに、どのユーザーとして、どのNamespaceで接続するかを定義します。
kubeconfig
ファイルの例:
apiVersion: v1
kind: Config
clusters: # 接続先のKubernetesクラスター情報
- cluster:
certificate-authority: /Users/USER/.minikube/ca.crt # クラスターのCA証明書
server: https://127.0.0.1:55537 # APIサーバーのエンドポイント
name: minikube # クラスターの名前 (任意の識別子)
users: # ユーザー認証情報
- name: minikube # ユーザーの名前 (任意の識別子)
user:
client-certificate: /Users/USER/.minikube/profiles/minikube/client.crt # クライアント証明書
client-key: /Users/USER/.minikube/profiles/minikube/client.key # クライアント秘密鍵
contexts: # 接続先クラスターと認証情報の組み合わせ
- context:
cluster: minikube # 参照するクラスターの名前
namespace: default # デフォルトで使用するNamespace
user: minikube # 参照するユーザーの名前
name: minikube # Contextの名前 (任意の識別子)
current-context: minikube # 現在アクティブなContextの名前
preferences: {}
kubeconfig
の操作
kubectl
コマンドには、kubeconfig
ファイルを操作するためのサブコマンドが用意されています。これにより、複数のKubernetesクラスターや異なる認証情報、Namespaceを簡単に切り替えて管理できます。
Contextの一覧表示
現在設定されているすべてのContextを表示します。現在アクティブなContextにはアスタリスク *
が付きます。
kubectl config get-contexts
Contextの切り替え
指定したContextに切り替えます。これにより、以降の kubectl
コマンドはそのContextの設定に従って実行されます。
kubectl config use-context <コンテキスト名>
# 例: kubectl config use-context minikube
現在のContextの表示
現在アクティブなContextの名前を表示します。
kubectl config current-context
Contextの追加
新しいContextを追加するには、set-cluster
, set-credentials
, set-context
コマンドを組み合わせて使用します。
# クラスター情報を追加
kubectl config set-cluster my-new-cluster --server=https://<api-server-ip> --certificate-authority=/path/to/ca.crt
# ユーザー認証情報を追加
kubectl config set-credentials my-new-user --client-certificate=/path/to/client.crt --client-key=/path/to/client.key
# Contextを追加 (クラスターとユーザーを紐付け)
kubectl config set-context my-new-context --cluster=my-new-cluster --user=my-new-user --namespace=default
# 新しいContextに切り替える
kubectl config use-context my-new-context
kubeconfig
ファイルを適切に管理することで、複数のKubernetes環境を効率的かつ安全に操作することができます。
参考
- 青山真也, 『Kubernetes完全ガイド 第2版 impress top gearシリーズ』, インプレス (2021)
- Configure Access to Multiple Clusters | Kubernetes