kopsを使用してkubernetesクラスターをセットアップしましたが、ローカルマシンからセットアップしました。だから私の.kube
ディレクトリはローカルマシンに保存されていますが、kops
をs3
。
私は今CIサーバーをセットアップしている最中です。そのボックスからkubectl
コマンドを実行したいと思います。サーバーに既存の状態をインポートするにはどうすればよいですか?
kubectl
コマンドを実行するには、認証のためにクラスターのapiServer URLと関連する認証情報が必要です。これらのデータは慣例により~/.kube/config
ファイルに保存されます。 kubectl config view
コマンドを使用して表示することもできます。
CIサーバーでkubectl
を実行するには、~/.kube/config
ファイルにkubectl
クライアントが必要とするすべての情報が含まれていることを確認する必要があります。
Kopsの場合、単純な単純な解決策は次のとおりです。
1)CIサーバーにkops、kubectlをインストールします
2)CIサーバーのAWSアクセス認証情報を(IAMロールまたは単にenv varsを介して)構成し、s3状態ストアパスへのアクセス権があることを確認します
3)kopsがクラスターにアクセスできるようにenv varを設定します。
export NAME=${YOUR_CLUSTER_NAME}
export KOPS_STATE_STORE=s3://${YOUR_CLUSTER_KOPS_STATE_STORE}
4)kops exportコマンドを使用して、kubectlの実行に必要なkubecfgを取得します
kops export kubecfg ${YOUR_CLUSTER_NAME}
参照 https://github.com/kubernetes/kops/blob/master/docs/cli/kops_export.md
これで、CIサーバーの~/.kube/config
ファイルに、クラスターにアクセスするためにkubectl
が必要とするすべての情報が含まれるようになります。
これはCIサーバーのデフォルトの管理者アカウントを使用することに注意してください。より安全なCI/CD環境を実装するには、必要な権限スコープ(名前空間、タイプ、リソースなど)にバインドするサービスアカウントを作成し、その認証情報をCIサーバーマシンに配置する必要があります。
.kube/config
はほとんど「状態」ではなく、単なるクライアント構成であるため、その内容(またはローカルにコンテキストがある場合はその一部)を取得して別のマシンで使用することが可能です。 CI専用のユーザー(キー/証明書)を作成する場合を除きます。その場合、別の資格情報を作成する必要があり、キー/証明書を使用する場合、それらは別の証明書「サブジェクト」用である必要があるため、ユーザーは別のユーザーとして認識できます