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 targetfleet deploy)には、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/

Windows(PowerShell)

Invoke-WebRequest -Uri "https://github.com/rancher/fleet/releases/latest/download/fleet-windows-amd64.exe" -OutFile "fleet.exe"

インストールを確認してください

fleet --version

前提条件

次のツールがインストールされ、構成されていることを確認してください:

  • 動作するKubernetesクラスター(例えば、k3s、kind、またはクラウドプロバイダー)。

  • `kubectl`があなたのクラスターに対して構成されています。

  • Helmがインストールされています。

  • Fleet CLIはインストールされており、ターミナルでアクセス可能です。

前提条件の確認

kubectl get nodes
helm version
fleet --version

主要コマンド

SUSE® Rancher Prime Continuous Deliveryは、バンドルを作成、プレビュー、およびデプロイするためのいくつかのCLIコマンドを提供します。これらのコマンドは、デバッグやバンドルライフサイクルの理解に役立ちます。

  • fleet apply:Helmチャート、Kubernetesマニフェスト、またはKustomizeフォルダーなどのローカルファイルからバンドルを作成またはプレビューします。 このコマンドはクラスターへのアクセスを必要としないため、SUSE® Rancher Prime Continuous Deliveryや`kubectl`がインストールされていなくても動作します。

    例:

fleet apply my-bundle ./manifests
  • fleet target:バンドルファイルを読み込み、targetstargetOverridesclusterGroups、およびラベルセレクターなどのセレクターとターゲティングルールに基づいて、どのクラスターが受信するかを評価します。

    例:

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の主要コマンドの動作を説明する図

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`ポッドのログを確認してください。