バンドルリソースを作成する

バンドルは、SUSE® Rancher Prime Continuous Deliveryによって、`GitRepo`が作成されるときに自動的に作成されます。ほとんどの場合、`Bundles`はユーザーによって手動で作成されるべきではありません。Gitリポジトリからリソースをデプロイしたい場合は、代わりにGitRepoを使用してください。

Gitリポジトリなしでリソースをデプロイしたい場合は、このガイドに従って`Bundle`を作成してください。

Fleetコントローラーを実行せずにリソースをデプロイしたい場合。CLIを使用してHelmチャートをバンドルに変換するを参照してください。

`GitRepo`を作成する際、SUSE® Rancher Prime Continuous DeliveryはGitリポジトリからリソースを取得し、それらをバンドルに追加します。 `Bundle`を作成する際、リソースは`Bundle`仕様に明示的に指定する必要があります。 リソースはgzで圧縮できます。 managedchart.goを参照してください。RancherがGoコードで圧縮を使用する方法の例です。

ダウンストリームクラスターにデプロイしたい場合は、ターゲットを定義する必要があります。ターゲットは、`GitRepo`のターゲットと同様に機能します。 ダウンストリームクラスターへのマッピングを参照してください。

以下の例は、ローカルクラスタにnginxの`Deployment`を作成します。

kind: Bundle
apiVersion: fleet.cattle.io/v1alpha1
metadata:
  # Any name can be used here
  name: my-bundle
  # For single cluster use fleet-local, otherwise use the namespace of
  # your choosing
  namespace: fleet-local
spec:
  resources:
  # List of all resources that will be deployed
  - content: |
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: nginx-deployment
        labels:
          app: nginx
      spec:
        replicas: 3
        selector:
          matchLabels:
            app: nginx
        template:
          metadata:
            labels:
              app: nginx
          spec:
            containers:
              - name: nginx
                image: nginx:1.14.2
                ports:
                  - containerPort: 80
    name: nginx.yaml
  targets:
  - clusterName: local

ターゲット

バンドルは複数のクラスターをターゲットにできます。それはGitRepoと同じターゲティングを使用します。 ターゲットごとに追加のカスタマイズオプションを指定できます。

targets:
- clusterSelector:
    matchLabels:
      env: dev
  defaultNamespace: lab-1
  helm:
    values:
      replicas: 1

制限

Helmチャートのダウンロードに関連するHelmオプションは無視されます。HelmチャートはFleet CLIによってダウンロードされ、バンドルが作成されます。バンドルには、チャートからのすべてのリソースが含まれている必要があります。したがって、バンドルは以下を無視します:

  • spec.helm.repo

  • spec.helm.charts

リソースに`fleet.yaml`を使用することはできません。これはバンドルを作成するためにFleet CLIによってのみ使用されます。

`spec.targetRestrictions`フィールドは役に立ちません。これは`spec.targets`で指定されたターゲットの許可リストだからです。これは必要ありません。なぜなら、`targets`はバンドル内で明示的に指定されており、空の`targetRestrictions`はデフォルトで許可されるからです。

Fleet CLIを使用して、Helmチャートを`bundle`に変換することができます。詳細については、CLIを使用してHelmチャートをバンドルに変換するを参照してください。