Fleet CLIのインストールと使用
SUSE® Rancher Prime Continuous Delivery CLIは、ローカルマシンからSUSE® Rancher Prime Continuous Deliveryと直接対話することを可能にするコマンドラインインタフェース(CLI)です。これにより、`bundles`を必要とせずに`GitRepo`を作成、適用、検査することができます。典型的な使用例は次のとおりです:
-
バンドルの内容をテストおよびプレビューすること。
-
Helmチャート、Kubernetesマニフェスト、および`fleet.yaml`ファイルから直接バンドルを作成すること。
-
バンドルがターゲットとするクラスターを確認すること。
-
クラスターにSUSE® Rancher Prime Continuous Deliveryをインストールせずにデプロイメントを検証すること。
|
クラスターに`fleet apply`をインストールせずにSUSE® Rancher Prime Continuous Deliveryを使用することができます。ただし、クラスターとの対話(例えば、 詳細については、Fleetのインストールを参照してください。 |
Install Fleet CLI
Fleet CLIは、Fleet GitHubリリースページからダウンロードできるスタンドアロンのバイナリです。
Linux/macOS
curl -L -o fleet https://github.com/rancher/fleet/releases/latest/download/fleet-linux-amd64
# Make it executable and move to PATH
chmod +x fleet
sudo mv fleet /usr/local/bin/
主要コマンド
SUSE® Rancher Prime Continuous Deliveryは、バンドルを作成、プレビュー、およびデプロイするためのいくつかのCLIコマンドを提供します。これらのコマンドは、デバッグやバンドルライフサイクルの理解に役立ちます。
-
fleet apply:Helmチャート、Kubernetesマニフェスト、またはKustomizeフォルダーなどのローカルファイルからバンドルを作成またはプレビューします。 このコマンドはクラスターへのアクセスを必要としないため、SUSE® Rancher Prime Continuous Deliveryや`kubectl`がインストールされていなくても動作します。例:
fleet apply my-bundle ./manifests
-
fleet target:バンドルファイルを読み込み、targets、targetOverrides、clusterGroups、およびラベルセレクターなどのセレクターとターゲティングルールに基づいて、どのクラスターが受信するかを評価します。例:
fleet target my-bundle ./manifests
-
fleet deploy:`fleet target`の出力、またはダンプされた`bundledeployment`/contentリソースを取得し、それをクラスターにデプロイします—ちょうど`fleet-agent`が行うように。これらのシナリオで使用できます: `fleet apply -o - name ./folder`を使用して、作成する前にバンドルのYAMLを確認します。詳細については、CLIを使用したバンドルライフサイクルの調査を参照してください。 ターゲットと共に使用して、セレクターをデバッグし、どのダウンストリームクラスターがターゲットにされているかを確認します。 ** `fleet deploy --dry-run`を使用して、適用せずにデプロイされるリソースを表示します。
Fleet CLIを使用してサンプルバンドルをデプロイする
CLIを使用してローカルに適用することで、GitReposを使用せずにワークロードをデプロイできます。例えば、Fleetのサンプルリポジトリを使用します:
git clone https://github.com/rancher/fleet-examples
cd fleet-examples/single-cluster
現在のクラスターに適用します:
fleet apply -o my-cool-bundle manifests
このコマンドは、ネームスペースに`Bundle`リソースを作成します。
Helmチャートをバンドルに変換する
Fleet CLIを使用してHelmチャートをバンドルに変換できます。例えば、*external-secrets*オペレーターのチャートを変換するには:
cat > targets.yaml <<EOF
targets:
- clusterSelector: {}
EOF
mkdir app
cat > app/fleet.yaml <<EOF
defaultNamespace: external-secrets
helm:
repo: https://charts.external-secrets.io
chart: external-secrets
EOF
fleet apply --compress --targets-file=targets.yaml -n fleet-default -o - external-secrets app > eso-bundle.yaml
kubectl apply -f eso-bundle.yaml
デプロイ先のすべてのクラスターに一致するクラスターセレクターを`targets.yaml`で使用してください。
詳細については、Fleet: Multi-Cluster Deployment with the Help of External Secretsを参照してください。
トラブルシューティング
バンドルが準備できていない場合:
-
`fleet-controller`および`fleet-agent`ポッドが実行中か確認してください。
-
`fleet-local`クラスターが登録されていることを確認してください。
-
エラーメッセージがあるかバンドルを検査してください:
kubectl describe bundle -n fleet-local <bundle-name> -
Helmの所有権の競合が発生した場合は、バンドルを削除して再適用してください。
エージェントとコントローラーのステータスを確認する
バンドルやデプロイメントの問題をトラブルシューティングする前に、Fleet agentがダウンストリームクラスターに登録されて実行中であることを確認してください。 詳細については、Fleet Agent is Registered, Watches for BundleDeploymentsを参照してください。
特定のクラスターでバンドルが準備できていない場合は、次のことを確認してください:
-
管理クラスターで:
-
fleet-controller`および`gitjob`ポッド(または`helmops、設定に応じて)が実行中であることを確認してください。 -
クラスターのステータスが*Ready*を示していることを確認してください。
-
バンドルのステータスを確認してください。デプロイメントが失敗した場合はエラーメッセージが含まれているはずです。
-
-
バンドルが準備できていないターゲットクラスターで:
-
このターゲットクラスターが登録されており、`fleet-agent`ポッドが実行中であることを確認してください。
-
最終手段として、`fleet-agent`ポッドのログを確認してください。
-