web-dev-qa-db-ja.com

.confファイルのクラスター情報を使用してkubectlを構成する方法は?

次のコマンドが正常に機能するように、クラスターに関する情報を含むadmin.confファイルがあります。

kubectl --kubeconfig ./admin.conf get nodes

config kubectlを使用して、このファイルのクラスター、ユーザー、および認証を1つのコマンドのデフォルトとして使用するにはどうすればよいですか? set-cluster、set-credentials、set-context、use-contextなどが個別に表示されるだけです。単純に実行すると同じ出力が得られます。

kubectl get nodes
33
Assen Kolov

Kubectlの構成方法に関する公式ドキュメントは次のとおりです。

http://kubernetes.io/docs/user-guide/kubeconfig-file/

いくつかのオプションがあります。特にこの質問に対しては、admin.conf~/.kube/configにコピーするだけです。

31
Gleeb

私はちょうど.bashrcを介してkubectlコマンドを開発環境と本番環境用に別々のものにエイリアスします

alias k8='kubectl'
alias k8prd='kubectl --kubeconfig ~/.kube/config_prd.conf'

環境変数を使用すると、間違った環境でコマンドを実行する可能性があるのに対して、各メソッドの環境を定義する必要があるため、この方法を好みます。

10
Jeff Beagley

私が見つけた最良の方法は、環境変数を使用することでした:

export KUBECONFIG=/path/to/admin.conf
9
stasdeep

すべてのクラスター構成に.kubeconfigという名前を付けます。これはプロジェクトディレクトリにあります。

次に、.bashrcまたは.bash_profileに次のエクスポートがあります。

export KUBECONFIG=.kubeconfig:$HOME/.kube/config

この方法でプロジェクトディレクトリにいるとき、kubectlはローカル.kubeconfigをロードします。役立つことを願っています

3
Mirceac21

kubectlは、デフォルトの構成ファイルとして~/.kube/configを使用します。そのため、admin.confをコピーするだけです。

2
SeMeKh

回答が非常に堅実で有益なものになる前に、ここに2セントを追加しようとします。

優先順位を知っているkubeconfigファイルを構成する

kubectlを使用している場合、使用するkubeconfigファイルを決定する際に有効になる設定は次のとおりです。

  1. 指定されている場合、--kubeconfigフラグを使用します
  2. 指定されている場合は、KUBECONFIG環境変数を使用します
  3. $HOME/.kube/configファイルを使用

これにより、kubectlコマンドで使用するkubeconfigファイルを簡単にオーバーライドできます。

#
# using --kubeconfig flag
#
kubectl get pods --kubeconfig=file1
kubectl get pods --kubeconfig=file2

#
# or 
# using `KUBECONFIG` environment variable
#
KUBECONFIG=file1 kubectl get pods
KUBECONFIG=file2 kubectl get pods

#
# or 
# merging your kubeconfig file w/ $HOME/.kube/config (w/ cp backup)
#
cp $HOME/.kube/config $HOME/.kube/config.backup.$(date +%Y-%m-%d.%H:%M:%S)
KUBECONFIG= $HOME/.kube/config:file2:file3 kubectl config view --merge --flatten > \
~/.kube/merged_kubeconfig && mv ~/.kube/merged_kubeconfig ~/.kube/config
kubectl get pods --context=cluster-1
kubectl get pods --context=cluster-2

注:--minifyフラグを使用すると、そのコンテキストに関する情報のみを抽出でき、--flattenフラグを使用すると、資格情報は編集されていません。

あなたの例

kubectl get pods --kubeconfig=/path/to/admin.conf

#
# or:
#
KUBECONFIG=/path/to/admin.conf kubectl get pods

#
# or: 
#
cp $HOME/.kube/config $HOME/.kube/config.backup.$(date)
KUBECONFIG= $HOME/.kube/config:/path/to/admin.conf kubectl config view --merge --flatten > \
~/.kube/merged_kubeconfig && mv ~/.kube/merged_kubeconfig ~/.kube/config
kubectl get pods --context=cluster-1
kubectl get pods --context=cluster-2

この優先順位リストはドキュメントで正式に指定されていませんが、 ここにコード化されています です。 Kubernetes用のクライアントツールを開発している場合は、プログラムに標準の--kubeconfigフラグと$KUBECONFIG検出をもたらす cli-runtime ライブラリの使用を検討する必要があります。

ref article:https://ahmet.im/blog/mastering-kubeconfig/

0