Rollback an alveolus deployment.

The strategy is the following one:

  • Load current alveolus (recursively) to list all descriptors in "current" version

  • Find previous version if not explicit (by choosing the first previous on in the list of available version on maven repository)

  • Run delete command for current version

  • Run apply command for previous version

this command only uses releases when it guesses the versions, it does not handles SNAPSHOTs. If you want to rollback to a snapshot, ensure to configure previous* properties.
this is equivalent to apply and delete commands successfully. For now it is recommended to do both manually.

Name: rollback.



Alveolus name to rollback (in currently deployed version). When set to auto, it will look up all manifests found in the classpath (it is not recommended until you perfectly know what you do). If you set manifest option, alveolus is set to auto and there is a single alveolus in it, this will default to it instead of using classpath deployment. Default value: auto


If an integer > 0, how long (ms) to await for the actual deletion of components - before redeploying. Default value: 120000


Root dependency to download to get the manifest. If set to auto it is assumed to be present in current classpath. Default value: auto


If set it will be added on REST calls to force a custom grace period (in seconds). Setting it to 0 enables to delete faster objects.


Manifest to load to start to find the alveolus. This optional setting mainly enables to use dependencies easily. Ignored if set to skip. Default value: skip


A pause (in ms) between delete and apply phases, this can some environment to release all resources related to deleted components. Default value: 0


Alveolus name to install as rollback. Default value: auto


Same as from but for the previous alveolus to install. Default value: auto


Same as manifest but for the previous alveolus to install. Default value: skip


If true, and previous alveolus is not defined on the CLI, we will query the release repository to find available versions. If the alveolus name does not match <groupId>:<artifactId>:<version>[:<type>:<classifier>] pattern then a heuristic is used instead. Default value: true

Inherited Global Configuration

for these configurations, don’t hesitate to use ~/.bundlebeerc or --config-file <path to config> (just remove the -- prefix from option keys).
--bundlebee.awaiter.retryInterval (BUNDLEBEE_AWAITER_RETRYINTERVAL)

How often to retry for a descriptor condition. Increasing it will reduce the pressure on the Kubernetes REST API (rate limiting for example). Default value: 500

--bundlebee.httpclient.threads (BUNDLEBEE_HTTPCLIENT_THREADS)

How many threads are allocated to async HTTP client, negative or zero value means to use common pool. Default value: -1

--bundlebee.kube.api (BUNDLEBEE_KUBE_API)

When kubeconfig is not set the base API endpoint. Default value: http://localhost:8080

--bundlebee.kube.context (BUNDLEBEE_KUBE_CONTEXT)

When kubeconfig (explicit or not) is used, the context to use. If not set it is taken from the kubeconfig itself.

--bundlebee.kube.customMetadataInjectionPoint (BUNDLEBEE_KUBE_CUSTOMMETADATAINJECTIONPOINT)

When using custom metadata (bundlebee ones or timestamp to force a rollout), where to inject them. Default uses labels since it enables to query them later on but you can switch it to annotations. Default value: labels

--bundlebee.kube.defaultPropagationPolicy (BUNDLEBEE_KUBE_DEFAULTPROPAGATIONPOLICY)

Default value for deletions of propagationPolicy. Values can be Orphan, Foreground and Background. Default value: Foreground

--bundlebee.kube.dryRun (BUNDLEBEE_KUBE_DRYRUN)

If true http requests/responses are skipped. Note that dry run implies verbose=true for the http client. Note that as of today, all responses are mocked by a HTTP 200 and an empty JSON payload. Default value: false

--bundlebee.kube.filters.statefuleset.spec.allowed (BUNDLEBEE_KUBE_FILTERS_STATEFULESET_SPEC_ALLOWED)

Should YAML/JSON be logged when it can’t be parsed. Default value: replicas,template,updateStrategy,persistentVolumeClaimRetentionPolicy,minReadySeconds,serviceName,selector

--bundlebee.kube.force (BUNDLEBEE_KUBE_FORCE)

By default a descriptor update is done using PATCH with strategic merge patch logic, if set to true it will use a plain PUT. Note that io.yupiik.bundlebee/putOnUpdate annotations can be set to true to force that in the descriptor itself and for cases it is not enough, you can set force to true to delete the descriptor before applying it again (move from clusterip to nodeport or the opposite in a serice for ex). Note that you can set it to true in a descriptor annotation io.yupiik.bundlebee/force too to not be global. Default value: false

--bundlebee.kube.implicitlyDroppedAttributes (BUNDLEBEE_KUBE_IMPLICITLYDROPPEDATTRIBUTES)

Enables to tolerate custom attributes in the descriptors. Typically used to drop /$schema attribute which enables a nice completion in editors. Values are | delimited and are either a JSON-Pointer (wrapped in a remove JSON-Patch) or directly a JSON-Patch. Default value: /$schema

--bundlebee.kube.logDescriptorOnParsingError (BUNDLEBEE_KUBE_LOGDESCRIPTORONPARSINGERROR)

Should YAML/JSON be logged when it can’t be parsed. Default value: true

--bundlebee.kube.namespace (BUNDLEBEE_KUBE_NAMESPACE)

When kubeconfig is not set the namespace to use. Default value: default

--bundlebee.kube.putOnUpdate (BUNDLEBEE_KUBE_PUTONUPDATE)

By default a descriptor update is done using PATCH with strategic merge patch logic, if set to true it will use a plain PUT. Note that io.yupiik.bundlebee/putOnUpdate annotations can be set to true to force that in the descriptor itself. Default value: false

--bundlebee.kube.resourceMapping (BUNDLEBEE_KUBE_RESOURCEMAPPING)

Enables to define resource mapping, syntax uses propeties one: <lowercased resource kind>s = /apis/…​.. Default value: ``

--bundlebee.kube.skipDryRunForGet (BUNDLEBEE_KUBE_SKIPDRYRUNFORGET)

If true GET http requests are not skipped when dryRun is true. Default value: false

--bundlebee.kube.skipUpdateForKinds (BUNDLEBEE_KUBE_SKIPUPDATEFORKINDS)

List of kind of descriptors updates can be skipped, it is often useful for PersistentVolumeClaim. Default value: PersistentVolumeClaim

--bundlebee.kube.token (BUNDLEBEE_KUBE_TOKEN)

When kubeconfig is set to explicit, the bearer token to use (if set).

--bundlebee.kube.validateSSL (BUNDLEBEE_KUBE_VALIDATESSL)

Should SSL connector be validated or not. Default value: true

--bundlebee.kube.verbose (BUNDLEBEE_KUBE_VERBOSE)

If true http requests/responses to Kubernetes will be logged. Default value: false

--bundlebee.maven.cache (BUNDLEBEE_MAVEN_CACHE)

Where to cache maven dependencies. If set to auto, $HOME/.m2/repository is used. Default value: auto

--bundlebee.maven.forceCustomSettingsXml (BUNDLEBEE_MAVEN_FORCECUSTOMSETTINGSXML)

If true we only use cache value and never fallback on default maven settings.xml location. Default value: false

--bundlebee.maven.http.connectTimeout (BUNDLEBEE_MAVEN_HTTP_CONNECTTIMEOUT)

When fetching a dependency using HTTP, the connection timeout for this dependency. Default value: 30000

--bundlebee.maven.preferCustomSettingsXml (BUNDLEBEE_MAVEN_PREFERCUSTOMSETTINGSXML)

If false we first try to read settings.xml file(s) in cache location before the default one. Default value: true

--bundlebee.maven.repositories.downloads.enabled (BUNDLEBEE_MAVEN_REPOSITORIES_DOWNLOADS_ENABLED)

Enable the download, i.e. ensure it runs only with local maven repository. Default value: false

--bundlebee.maven.repositories.httpHeaders (BUNDLEBEE_MAVEN_REPOSITORIES_HTTPHEADERS)

Properties to define the headers to set per repository, syntax is host1=headerName headerValue and it supports as much lines as used repositories. Note that you can use maven ~/.m2/settings.xml servers (potentially ciphered) username/password pairs. In this last case the server id must be bundlebee.<server host>. Still in settings.xml case, if the username is null the password value is used as raw Authorization header else username/password is encoded as a basic header.

--bundlebee.maven.repositories.release (BUNDLEBEE_MAVEN_REPOSITORIES_RELEASE)

Default release repository. Default value:

--bundlebee.maven.repositories.snapshot (BUNDLEBEE_MAVEN_REPOSITORIES_SNAPSHOT)

Default snapshot repository, not set by default.

--kubeconfig (KUBECONFIG)

Kubeconfig location. If set to auto it will try to guess from your $HOME/.kube/config file until you set it so explicit where it will use other bundlebee.kube properties to create the client. The content can also be set inline!. Default value: auto