Créer une ressource Bundle

Les Bundles sont automatiquement créés par SUSE® Rancher Prime Continuous Delivery lorsqu’un GitRepo est créé. Dans la plupart des cas, Bundles ne doit pas être créé manuellement par l’utilisateur. Si vous souhaitez déployer des ressources à partir d’un dépôt git, utilisez un GitRepo à la place.

Si vous souhaitez déployer des ressources sans dépôt git, suivez ce guide pour créer un Bundle.

Si vous souhaitez déployer des ressources sans exécuter un contrôleur Fleet. Référez-vous à Convertir un chart Helm en bundle en utilisant CLI.

Lors de la création d’un GitRepo, SUSE® Rancher Prime Continuous Delivery récupérera les ressources d’un dépôt git et les ajoutera à un Bundle. Lors de la création d’un Bundle, les ressources doivent être spécifiées explicitement dans le Bundle Spec. Les ressources peuvent être compressées avec gz. Voir managedchart.go un exemple de la façon dont Rancher utilise la compression dans le code go.

Si vous souhaitez déployer dans des clusters en aval, vous devez définir des cibles. Les cibles fonctionnent de manière similaire aux cibles dans GitRepo. Voir Mapping vers des clusters en aval.

L’exemple suivant crée un nginx Deployment dans la grappe locale :

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

Cibles

Le Bundle peut cibler plusieurs clusters. Il utilise le même ciblage que le GitRepo. Des options de personnalisation supplémentaires peuvent être spécifiées par cible :

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

limites

Les options Helm liées au téléchargement du chart Helm seront ignorées. Le chart Helm est téléchargé par le fleet-cli, qui crée les Bundles. Le Bundle doit contenir toutes les ressources du chart Helm. Par conséquent, le Bundle ignorera :

  • spec.helm.repo

  • spec.helm.charts

Vous ne pouvez pas utiliser un fleet.yaml dans les ressources, il est uniquement utilisé par le fleet-cli pour créer des Bundles.

Le champ spec.targetRestrictions n’est pas utile, car il s’agit d’une liste d’autorisation pour les cibles spécifiées dans spec.targets. Il n’est pas nécessaire, puisque targets sont explicitement donnés dans un Bundle et un targetRestrictions vide équivaut par défaut à 'allow'.

Vous pouvez utiliser Fleet CLI pour convertir un chart Helm en un bundle. Pour plus d’informations, référez-vous à Convertir un chart Helm en un Bundle en utilisant CLI..