Criar um recurso Bundle

Os pacotes são criados automaticamente por SUSE® Rancher Prime Continuous Delivery quando um GitRepo é criado. Na maioria dos casos, Bundles não deve ser criado manualmente pelo usuário. Se você quiser implantar recursos de um repositório, use um GitRepo em vez disso.

Se você quiser implantar recursos sem um repositório, siga este guia para criar um Bundle.

Se você quiser implantar recursos sem executar um Fleet controller. Consulte Converter um Helm chart em um Bundle usando CLI.

Ao criar um GitRepo, SUSE® Rancher Prime Continuous Delivery buscará os recursos de um repositório e os adicionará a um Bundle. Ao criar um Bundle, os recursos precisam ser especificados explicitamente no Bundle Spec. Os recursos podem ser compactados com gz. Veja managedchart.go um exemplo de como o Rancher usa compressão no código go.

Se você gostaria de implantar em downstream clusters, você precisa definir alvos. Os alvos funcionam de forma semelhante aos alvos em GitRepo. Veja Mapeamento para Downstream Clusters.

O seguinte exemplo cria um nginx Deployment no cluster local:

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

Destinos

O Bundle pode direcionar múltiplos clusters. Ele usa o mesmo direcionamento que o GitRepo. Opções adicionais de personalização podem ser especificadas por alvo:

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

Limitações

As opções do Helm relacionadas ao download do Helm chart serão ignoradas. O Helm chart é baixado pelo fleet-cli, que cria os Bundles. O Bundle deve conter todos os recursos do Helm chart. Portanto, o Bundle irá ignorar:

  • spec.helm.repo

  • spec.helm.charts

Você não pode usar um fleet.yaml em recursos, ele é usado apenas pelo fleet-cli para criar Bundles.

O campo spec.targetRestrictions não é útil, pois é uma lista de permissões para os alvos especificados em spec.targets. Não é necessário, já que os targets são explicitamente informados em um Bundle e um targetRestrictions vazio assume, por padrão, o valor 'allow'.

Você pode usar o Fleet CLI para converter um Helm chart em um bundle. Para mais informações, consulte Converter um Helm chart em um Bundle usando CLI..