-- awaiterRetryInterval (
long
)
--
-
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
. Property: ${bundlebee.awaiter.retryInterval}
.
-
- customPlaceholders (
Map
)
-
Custom properties injected in the main, it is often used for placeholders. If the key (tag in pom) starts with bundlebee-placeholder-import
then the value is resolved as a properties file which is injected in the resulting placeholders (indirect placeholders). Property: ${bundlebee.list-lint-rules.customPlaceholders}
.
-- httpclientConnectTimeout (
String
)
--
-
The HTTP client connect timeout (in java Duration format), none
can be used to ignore this setting. Default value: none
. Property: ${bundlebee.httpclient.connectTimeout}
.
-
-- httpclientFollowRedirects (
String
)
--
-
The HTTP client redirect policy. Default to NORMAL
, can be set to ALWAYS
or NEVER
. Default value: NORMAL
. Property: ${bundlebee.httpclient.followRedirects}
.
-
-- httpclientForcedHttpVersion (
String
)
--
-
The HTTP client version, none
mean the JVM default (v2), HTTP_1_1
v1.1 and HTTP_2
v2.0. Default value: none
. Property: ${bundlebee.httpclient.forcedHttpVersion}
.
-
-- httpclientThreads (
int
)
--
-
How many threads are allocated to async HTTP client, negative or zero value means to use common pool. Default value: -1
. Property: ${bundlebee.httpclient.threads}
.
-
-- kubeApi (
String
)
--
-
When kubeconfig is not set the base API endpoint. Default value: http://localhost:8080
. Property: ${bundlebee.kube.api}
.
-
-- kubeContext (
String
)
--
-
When kubeconfig (explicit or not) is used, the context to use. If not set it is taken from the kubeconfig itself. Default value: <unset>
. Property: ${bundlebee.kube.context}
.
-
-- kubeCustomMetadataInjectionPoint (
String
)
--
-
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
. Property: ${bundlebee.kube.customMetadataInjectionPoint}
.
-
-- kubeDefaultPropagationPolicy (
String
)
--
-
Default value for deletions of propagationPolicy
. Values can be Orphan
, Foreground
and Background
. Default value: Foreground
. Property: ${bundlebee.kube.defaultPropagationPolicy}
.
-
-- kubeDryRun (
boolean
)
--
-
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
. Property: ${bundlebee.kube.dryRun}
.
-
-- kubeFiltersStatefulesetSpecAllowed (
Set
)
--
-
Should YAML/JSON be logged when it can’t be parsed. Default value: replicas,template,updateStrategy,persistentVolumeClaimRetentionPolicy,minReadySeconds,serviceName,selector
. Property: ${bundlebee.kube.filters.statefuleset.spec.allowed}
.
-
-- kubeForce (
boolean
)
--
-
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
. Property: ${bundlebee.kube.force}
.
-
-- kubeHttpTimeout (
long
)
--
-
HTTP timeout in ms, ignored if ⇐ 0. Default value: 60000
. Property: ${bundlebee.kube.http.timeout}
.
-
-- kubeImplicitlyDroppedAttributes (
String
)
--
-
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
. Property: ${bundlebee.kube.implicitlyDroppedAttributes}
.
-
-- kubeLogDescriptorOnParsingError (
boolean
)
--
-
Should YAML/JSON be logged when it can’t be parsed. Default value: true
. Property: ${bundlebee.kube.logDescriptorOnParsingError}
.
-
-- kubeNamespace (
String
)
--
-
When kubeconfig is not set the namespace to use. Default value: default
. Property: ${bundlebee.kube.namespace}
.
-
-- kubePutOnUpdate (
boolean
)
--
-
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
. Property: ${bundlebee.kube.putOnUpdate}
.
-
-- kubeResourceMapping (
String
)
--
-
Enables to define resource mapping, syntax uses propeties one: ` s = /apis/….. Default value: `
. Property: ${bundlebee.kube.resourceMapping}
.
-
-- kubeSkipDryRunForGet (
boolean
)
--
-
If true
GET http requests are not skipped when dryRun
is true. Default value: false
. Property: ${bundlebee.kube.skipDryRunForGet}
.
-
-- kubeSkipUpdateForKinds (
String
)
--
-
List of kind of descriptors updates can be skipped, it is often useful for PersistentVolumeClaim
. Default value: PersistentVolumeClaim
. Property: ${bundlebee.kube.skipUpdateForKinds}
.
-
-- kubeToken (
String
)
--
-
When kubeconfig
is set to explicit
, the bearer token to use (if set). Default value: <unset>
. Property: ${bundlebee.kube.token}
.
-
-- kubeValidateSSL (
boolean
)
--
-
Should SSL connector be validated or not. Default value: true
. Property: ${bundlebee.kube.validateSSL}
.
-
-- kubeVerbose (
boolean
)
--
-
If true
http requests/responses to Kubernetes will be logged. Default value: false
. Property: ${bundlebee.kube.verbose}
.
-
-- kubeconfig (
String
)
--
-
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
. Property: ${kubeconfig}
.
-
-- mavenCache (
String
)
--
-
Where to cache maven dependencies. If set to auto
, $HOME/.m2/repository
is used. Default value: auto
. Property: ${bundlebee.maven.cache}
.
-
-- mavenForceCustomSettingsXml (
boolean
)
--
-
If true
we only use cache
value and never fallback on default maven settings.xml location. Default value: false
. Property: ${bundlebee.maven.forceCustomSettingsXml}
.
-
-- mavenHttpConnectTimeout (
int
)
--
-
When fetching a dependency using HTTP, the connection timeout for this dependency. Default value: 30000
. Property: ${bundlebee.maven.http.connectTimeout}
.
-
-- mavenPreferCustomSettingsXml (
boolean
)
--
-
If false
we first try to read settings.xml
file(s) in cache
location before the default one. Default value: true
. Property: ${bundlebee.maven.preferCustomSettingsXml}
.
-
-- mavenRepositoriesDownloadsEnabled (
boolean
)
--
-
Enable the download, i.e. ensure it runs only with local maven repository. Default value: false
. Property: ${bundlebee.maven.repositories.downloads.enabled}
.
-
-- mavenRepositoriesHttpHeaders (
String
)
--
-
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. `. 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. Default value: <unset>
. Property: ${bundlebee.maven.repositories.httpHeaders}
.
-
-- mavenRepositoriesRelease (
String
)
--
-
Default release repository. Default value: https://repo.maven.apache.org/maven2/
. Property: ${bundlebee.maven.repositories.release}
.
-
-- mavenRepositoriesSnapshot (
String
)
--
-
Default snapshot repository, not set by default. Default value: <unset>
. Property: ${bundlebee.maven.repositories.snapshot}
.
-
- packaging (
String
)
-
Current module packaging. Default value: ${project.packaging}
. Property: ``.
diff --git a/maven/process.html b/maven/process.html
index 4bccc84a..33025820 100644
--- a/maven/process.html
+++ b/maven/process.html
@@ -219,7 +219,7 @@ Configuration
- kubeImplicitlyDroppedAttributes (
String
)
-
-
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
. Property: ${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|/$bundlebeeIgnoredLintingRules
. Property: ${bundlebee.kube.implicitlyDroppedAttributes}
.
- kubeLogDescriptorOnParsingError (
boolean
)
-
diff --git a/maven/rollback.html b/maven/rollback.html
index c9a1b7c5..758518c9 100644
--- a/maven/rollback.html
+++ b/maven/rollback.html
@@ -207,7 +207,7 @@
Configuration
- kubeImplicitlyDroppedAttributes (
String
)
-
-
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
. Property: ${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|/$bundlebeeIgnoredLintingRules
. Property: ${bundlebee.kube.implicitlyDroppedAttributes}
.
- kubeLogDescriptorOnParsingError (
boolean
)
-
diff --git a/maven/versions.html b/maven/versions.html
index dda5759d..426107bc 100644
--- a/maven/versions.html
+++ b/maven/versions.html
@@ -195,7 +195,7 @@
Configuration
- kubeImplicitlyDroppedAttributes (
String
)
-
-
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
. Property: ${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|/$bundlebeeIgnoredLintingRules
. Property: ${bundlebee.kube.implicitlyDroppedAttributes}
.
- kubeLogDescriptorOnParsingError (
boolean
)
-
diff --git a/maven/yaml2json.html b/maven/yaml2json.html
index 6b2de0a3..a6668436 100644
--- a/maven/yaml2json.html
+++ b/maven/yaml2json.html
@@ -191,7 +191,7 @@
Configuration
- kubeImplicitlyDroppedAttributes (
String
)
-
-
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
. Property: ${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|/$bundlebeeIgnoredLintingRules
. Property: ${bundlebee.kube.implicitlyDroppedAttributes}
.
- kubeLogDescriptorOnParsingError (
boolean
)
-
diff --git a/operator.html b/operator.html
index e6db5596..c48809b1 100644
--- a/operator.html
+++ b/operator.html
@@ -247,7 +247,7 @@
Global configuration
- 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
+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|/$bundlebeeIgnoredLintingRules
- BUNDLEBEE_KUBE_LOGDESCRIPTORONPARSINGERROR
-
diff --git a/search.json b/search.json
index b45f3406..cccc940f 100644
--- a/search.json
+++ b/search.json
@@ -1 +1 @@
-[{"lang":"en","lvl2":"Configuration","text":"Name: add-alveolus.\nAdds a service to the alveoli available in the defined folder. It is a skaffolding command.\nAlveolus name.\nDeployment image.\nManifest to add the aveolus inside. Default value: ./bundlebee/manifest.json\nIf false, generated files already existing will be skipped. Default value: false\nAlveolus/template type. web will create a ConfigMap, Deployment and Service. Default value: web","title":"Add-alveolus","url":"//www.yupiik.io/bundlebee/commands/add-alveolus.configuration.html"},{"lang":"en","text":"elasticsearch-local (io.yupiik.alveoli:elasticsearch-local:1.0.21-SNAPSHOT): setup \"elasticsearch-local\" which runs an Elasticsearch instance usable by other applications.\ngrafana-simple (io.yupiik.alveoli:grafana-simple:1.0.21-SNAPSHOT): simple Grafana instance, note we preconfigure it with Loki, Prometheus and grafana alveoli, ensure to override the configuration if you don’t use them.\nloki-simple (io.yupiik.alveoli:loki-simple:1.0.21-SNAPSHOT): loki setup to aggregate service logs using promtail, the prometheus for logs.\nStarting from 1.0.20, the Promtail descriptor moved from Deployment to DaemonSet.\nminio-local (io.yupiik.alveoli:minio-local:1.0.21-SNAPSHOT): setup \"minio-local\" which runs a MinIO instance usable by other applications.\nmonitoring-alveolus (io.yupiik.alveoli:monitoring-alveolus:1.0.21-SNAPSHOT): includes loki+prometheus+zipkin+grafana at once.\nYou can set --monitoring.namespace to deploy the full stack in a dedicated namespace.\nStarting from 1.0.20, we added the resource request/limit placeHolder with default in all the dependencies. You can remove them by patching the descriptor like:\nYou need to add this in all the descriptor dependencies.\npostgres-local (io.yupiik.alveoli:postgres-local:1.0.21-SNAPSHOT): setup \"postgres-local\" which runs a PostgreSQL instance usable by other applications.\nprometheus-simple (io.yupiik.alveoli:prometheus-simple:1.0.21-SNAPSHOT): prometheus local/dev setup. Will be available on http://$(PROMETHEUS_SERVICE_SERVICE_HOST):$(PROMETHEUS_SERVICE_SERVICE_PORT).\nzipkin-simple (io.yupiik.alveoli:zipkin-simple:1.0.21-SNAPSHOT): zipkin in memory setup. Will be available on http://$(ZIPKIN_SERVICE_SERVICE_HOST):$(ZIPKIN_SERVICE_SERVICE_PORT). For example http://$(ZIPKIN_SERVICE_SERVICE_HOST):$(ZIPKIN_SERVICE_SERVICE_PORT)/api/v2/spans to push spans through HTTP.","title":"Alveoli","url":"//www.yupiik.io/bundlebee/alveoli.html"},{"lang":"en","lvl2":"Configuration","lvl3":"Inherited Global Configuration","text":"Name: apply.\nApply/deploy a set of descriptors from a root one.\nAlveolus name to deploy. When set to auto, it will deploy all manifests found in the classpath. 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\nFor descriptors with await = true the max duration the test can last. Default value: 60000\nEnables to exclude descriptors from the command line. none to ignore. Value is comma separated. Note that using this setting, location is set to * so only the name is matched. Default value: none\nEnables to exclude locations (descriptor is set to *) from the command line. none to ignore. Value is comma separated. Default value: none\nRoot dependency to download to get the manifest. If set to auto it is assumed to be present in current classpath. Default value: auto\nIf true, bundlebee.* labels will be injected into the descriptors. This is required for rollback command to work. Default value: true\nIf true, a bundlebee.timestamp label will be injected into the descritors with current date before applying the descriptor. Default value: true\nManifest to load to start to deploy (a file path or inline). This optional setting mainly enables to use dependencies easily. Ignored if set to skip. Default value: skip\nIf true, each descriptor installation awaits previous ones instead of being concurrent. Enable an easier debugging for errors. Default value: false\nfor these configurations, don’t hesitate to use ~/.bundlebeerc or --config-file (just remove the -- prefix from option keys).\nHow 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\nThe HTTP client connect timeout (in java Duration format), none can be used to ignore this setting. Default value: none\nThe HTTP client redirect policy. Default to NORMAL, can be set to ALWAYS or NEVER. Default value: NORMAL\nThe HTTP client version, none mean the JVM default (v2), HTTP_1_1 v1.1 and HTTP_2 v2.0. Default value: none\nHow many threads are allocated to async HTTP client, negative or zero value means to use common pool. Default value: -1\nWhen kubeconfig is not set the base API endpoint. Default value: http://localhost:8080\nWhen kubeconfig (explicit or not) is used, the context to use. If not set it is taken from the kubeconfig itself.\nWhen 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\nDefault value for deletions of propagationPolicy. Values can be Orphan, Foreground and Background. Default value: Foreground\nIf 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\nShould YAML/JSON be logged when it can’t be parsed. Default value: replicas,template,updateStrategy,persistentVolumeClaimRetentionPolicy,minReadySeconds,serviceName,selector\nBy 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\nHTTP timeout in ms, ignored if ⇐ 0. Default value: 60000\nEnables 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\nShould YAML/JSON be logged when it can’t be parsed. Default value: true\nWhen kubeconfig is not set the namespace to use. Default value: default\nBy 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\nEnables to define resource mapping, syntax uses propeties one: s = /apis/….. Default value: ``\nIf true GET http requests are not skipped when dryRun is true. Default value: false\nList of kind of descriptors updates can be skipped, it is often useful for PersistentVolumeClaim. Default value: PersistentVolumeClaim\nWhen kubeconfig is set to explicit, the bearer token to use (if set).\nShould SSL connector be validated or not. Default value: true\nIf true http requests/responses to Kubernetes will be logged. Default value: false\nWhere to cache maven dependencies. If set to auto, $HOME/.m2/repository is used. Default value: auto\nIf true we only use cache value and never fallback on default maven settings.xml location. Default value: false\nWhen fetching a dependency using HTTP, the connection timeout for this dependency. Default value: 30000\nIf false we first try to read settings.xml file(s) in cache location before the default one. Default value: true\nEnable the download, i.e. ensure it runs only with local maven repository. Default value: false\nProperties 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.. 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.\nDefault release repository. Default value: https://repo.maven.apache.org/maven2/\nDefault snapshot repository, not set by default.\nKubeconfig 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","title":"Apply","url":"//www.yupiik.io/bundlebee/commands/apply.configuration.html"},{"lang":"en","lvl2":"Configuration","text":"Name: build.\nBuild a project.\nBundle artifactId.\nProject to build. Default value: target\nIf true it will be added to your local maven repository. Default value: true\nProject to build. Default value: .\nBundle groupId.\nBundle version.","title":"Build","url":"//www.yupiik.io/bundlebee/commands/build.configuration.html"},{"lang":"en","lvl2":"Installation\nConfiguration\nDelete/Apply an alveolus\nAppendix, all in one installation","lvl3":"Global configuration","text":"this module is new and can change.\nBundlebee operator provides a Kubernetes operator which creates a custom resource of type Alveolus. This way you can deploy directly an alveolus and the operator will take care to deploy it. Similarly, if you delete the alveolus, the operator will delete it all.\nin current version there is no catch up logic so if the deletion fails you should re-run it or finish to clean up the data manually (this is on the roadmap).\nas of today, the image is not yet available on docker hub (>= 1.0.14) so you will need to build it yourself. This can be done 1. cloning the project, 2. building it with mvn install -DskipTests -Pdocker, 3. push the yupiik/bundlebee/operator: on your kubernetes image registry.\nYou can install the Bundlebee operator using bundlebee client on your machine (or the maven plugin/fat jar if you prefer): bundlebee --from io.yupiik:bundlebee-operator: --alveolis io.yupiik:bundlebee-operator:. See all in one descriptor.\nif you don’t install it in default namespace, don’t hesitate to customize KUBECONFIG value in the all in one descriptor or use placeholders for the bundlebee installation. You can also desire to customize the roles affected to the ServiceAccount mounted in the operator Deployment to give it more or less permissions on what it can deploy/delete.\nThe operator configuration is globally the same than standard Bundlebee with a small difference: the global configuration is configured once - in the Deployment of the installation part - and only command configuration can be set in the Alveolus descriptors.\nWhere to store the internal operator state to not restart from scratch when restarting. Default value: /opt/yupiik/state/bundlebee-operator.\nHow 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\nThe HTTP client connect timeout (in java Duration format), none can be used to ignore this setting. Default value: none\nThe HTTP client redirect policy. Default to NORMAL, can be set to ALWAYS or NEVER. Default value: NORMAL\nThe HTTP client version, none mean the JVM default (v2), HTTP_1_1 v1.1 and HTTP_2 v2.0. Default value: none\nHow many threads are allocated to async HTTP client, negative or zero value means to use common pool. Default value: -1\nWhen kubeconfig is not set the base API endpoint. Default value: http://localhost:8080\nWhen kubeconfig (explicit or not) is used, the context to use. If not set it is taken from the kubeconfig itself.\nWhen 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\nDefault value for deletions of propagationPolicy. Values can be Orphan, Foreground and Background. Default value: Foreground\nIf 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\nShould YAML/JSON be logged when it can’t be parsed. Default value: replicas,template,updateStrategy,persistentVolumeClaimRetentionPolicy,minReadySeconds,serviceName,selector\nBy 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\nHTTP timeout in ms, ignored if ⇐ 0. Default value: 60000\nEnables 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\nShould YAML/JSON be logged when it can’t be parsed. Default value: true\nWhen kubeconfig is not set the namespace to use. Default value: default\nBy 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\nEnables to define resource mapping, syntax uses propeties one: s = /apis/….. Default value: ``\nIf true GET http requests are not skipped when dryRun is true. Default value: false\nList of kind of descriptors updates can be skipped, it is often useful for PersistentVolumeClaim. Default value: PersistentVolumeClaim\nWhen kubeconfig is set to explicit, the bearer token to use (if set).\nShould SSL connector be validated or not. Default value: true\nIf true http requests/responses to Kubernetes will be logged. Default value: false\nWhere to cache maven dependencies. If set to auto, $HOME/.m2/repository is used. Default value: auto\nIf true we only use cache value and never fallback on default maven settings.xml location. Default value: false\nWhen fetching a dependency using HTTP, the connection timeout for this dependency. Default value: 30000\nIf false we first try to read settings.xml file(s) in cache location before the default one. Default value: true\nEnable the download, i.e. ensure it runs only with local maven repository. Default value: false\nProperties 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.. 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.\nDefault release repository. Default value: https://repo.maven.apache.org/maven2/\nDefault snapshot repository, not set by default.\nKubeconfig 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\nTo apply a custmo Alveolus you can write a descriptor like:\nUse apiVersion bundlebee.yupiik.io/v1,\nUse kind Alveolus,\nmetadata object is a standard one so you can set a name, labels, etc…,\nargs are the options of the apply command for this deployment (without the global configuration indeed).\nyou can check apply documentation to see all the options available.","title":"Bundlebee K8s Operator","url":"//www.yupiik.io/bundlebee/operator.html"},{"lang":"en","lvl2":"Goals","text":"BundleBee command executable from Maven environment.\nadd-alveolus: adds a service to the alveoli available in the defined folder. It is a skaffolding command.\napply: apply/deploy a set of descriptors from a root one.\nbuild: build a project.\ncheck-update: check if a new version is available. IMPORTANT: this command only works for amd64 linux machines.\ncipher-password: cipher a password to put it in ~/.m2/settings.xml servers (useful for deploy command for example).\ncompletion: execute bash completion. Should be setup in your ~/.bashrc or ~/.profile file to be active. The result will be the list of proposal you can inject into COMPREPLY array. To set it up you can add this snippet to your .bashrc (assumes you uses the bundlebee linux binary and it is in your $PATH otherwise replace bundlebee by your own launching script): [source,bash] ---- complete -o default -o nospace -C \"bundlebee completion\" bundlebee ----\ncreate-master-password: generate a master password if none exist (in ~/.m2/settings-security.xml)\ndelete: delete an alveolus deployment by deleting all related descriptors. bundlebee.delete.propagationPolicy can be set in descriptor(s) metadata to force default CLI behavior for this descriptor.\ndeploy: build and deploy a project. It inherits from most configuration of build command and adds remote repository settings.\nhttp: execute a HTTP request over Kubernetes client. This is mainly for not yet existing commands and to reuse all the client auto-configuration.\ninspect: inspect an alveolus, i.e. list the descriptors to apply.\nlint: do common validations on descriptors. As of today mainly cpu/memory resources definition.\nlist-lint-rules: list available linting rules (ease exclusions for ex).\nnew: creates a new project.\nprocess: process all descriptors - as in an apply command - from a root descriptor. If output is set, it dumps the descriptors in this directory. Don’t forget to set --kubeconfig explicit to ignore kube setup.\nrollback: rollback an alveolus deployment. The strategy is the following one:\nLoad current alveolus (recursively) to list all descriptors in \"current\" version\nFind previous version if not explicit (by choosing the first previous on in the list of available version on maven repository)\nRun delete command for current version\nRun apply command for previous version IMPORTANT: 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. TIP: this is equivalent to apply and delete commands successfully. For now it is recommended to do both manually.\nversion: shows the application version.\nversions: list versions for an artifact to know which ones are available.\nyaml2json: convert yaml files of a directory to json. This command is useful to transform Kubernetes yaml files to json to write Bundlebee descriptors.","title":"Bundlebee Maven Plugin","url":"//www.yupiik.io/bundlebee/maven/bundlebee-maven-plugin.html"},{"lang":"en","lvl2":"Configuration","lvl3":"Inherited Global Configuration","text":"Name: check-update.\nCheck if a new version is available.\nthis command only works for amd64 linux machines.\nBundlebee binary artifactId. Default value: bundlebee-core\nBundlebee binary classifier. Default value: Linux-amd64\nBundlebee binary groupId. Default value: io.yupiik\nWhere to install bundlebee if update is true. Default value: {{user.home}}/.yupiik/bundlebee/bin/bundlebee\nRepository bundlebee is supposed to be, generally Apache Maven central. Default value: https://repo.maven.apache.org/maven2\nBundlebee binary type (extension) in maven coordinates. Default value: bin\nIf a new version is available, should it update installLocation. Default value: false\nfor these configurations, don’t hesitate to use ~/.bundlebeerc or --config-file (just remove the -- prefix from option keys).\nHow 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\nThe HTTP client connect timeout (in java Duration format), none can be used to ignore this setting. Default value: none\nThe HTTP client redirect policy. Default to NORMAL, can be set to ALWAYS or NEVER. Default value: NORMAL\nThe HTTP client version, none mean the JVM default (v2), HTTP_1_1 v1.1 and HTTP_2 v2.0. Default value: none\nHow many threads are allocated to async HTTP client, negative or zero value means to use common pool. Default value: -1\nWhen kubeconfig is not set the base API endpoint. Default value: http://localhost:8080\nWhen kubeconfig (explicit or not) is used, the context to use. If not set it is taken from the kubeconfig itself.\nWhen 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\nDefault value for deletions of propagationPolicy. Values can be Orphan, Foreground and Background. Default value: Foreground\nIf 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\nShould YAML/JSON be logged when it can’t be parsed. Default value: replicas,template,updateStrategy,persistentVolumeClaimRetentionPolicy,minReadySeconds,serviceName,selector\nBy 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\nHTTP timeout in ms, ignored if ⇐ 0. Default value: 60000\nEnables 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\nShould YAML/JSON be logged when it can’t be parsed. Default value: true\nWhen kubeconfig is not set the namespace to use. Default value: default\nBy 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\nEnables to define resource mapping, syntax uses propeties one: s = /apis/….. Default value: ``\nIf true GET http requests are not skipped when dryRun is true. Default value: false\nList of kind of descriptors updates can be skipped, it is often useful for PersistentVolumeClaim. Default value: PersistentVolumeClaim\nWhen kubeconfig is set to explicit, the bearer token to use (if set).\nShould SSL connector be validated or not. Default value: true\nIf true http requests/responses to Kubernetes will be logged. Default value: false\nWhere to cache maven dependencies. If set to auto, $HOME/.m2/repository is used. Default value: auto\nIf true we only use cache value and never fallback on default maven settings.xml location. Default value: false\nWhen fetching a dependency using HTTP, the connection timeout for this dependency. Default value: 30000\nIf false we first try to read settings.xml file(s) in cache location before the default one. Default value: true\nEnable the download, i.e. ensure it runs only with local maven repository. Default value: false\nProperties 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.. 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.\nDefault release repository. Default value: https://repo.maven.apache.org/maven2/\nDefault snapshot repository, not set by default.\nKubeconfig 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","title":"Check-update","url":"//www.yupiik.io/bundlebee/commands/check-update.configuration.html"},{"lang":"en","lvl2":"Configuration","text":"Name: cipher-password.\nCipher a password to put it in ~/.m2/settings.xml servers (useful for deploy command for example).\nPassword value to cipher (auto generates a random one). Default value: auto","title":"Cipher-password","url":"//www.yupiik.io/bundlebee/commands/cipher-password.configuration.html"},{"lang":"en","text":"add-alveolus: adds a service to the alveoli available in the defined folder. It is a skaffolding command.\napply: apply/deploy a set of descriptors from a root one.\nbuild: build a project.\ncheck-update: check if a new version is available.\ncipher-password: cipher a password to put it in ~/.m2/settings.xml servers (useful for deploy command for example).\ncompletion: execute bash completion. Should be setup in your ~/.bashrc or ~/.profile file to be active.\ncreate-master-password: generate a master password if none exist (in ~/.m2/settings-security.xml).\ndelete: delete an alveolus deployment by deleting all related descriptors.\ndeploy: build and deploy a project. It inherits from most configuration of build command and adds remote repository settings.\nhelm: converts an alveolus deployment to a simple helm chart.\"// end of short description Note you will loose some features doing that but in case some rigid rules force to use helm it enables to still rely on bundlebee setup and share a helm chart to ops. Note that this conversion has some limitation in placeholder syntax for example (ensure no conflict under a key).\nhelp: print help for all available commands.\nhttp: execute a HTTP request over Kubernetes client. This is mainly for not yet existing commands and to reuse all the client auto-configuration.\ninspect: inspect an alveolus, i.e. list the descriptors to apply.\nlint: do common validations on descriptors. As of today mainly cpu/memory resources definition.\nlist-lint-rules: list available linting rules (ease exclusions for ex).\nnew: creates a new project.\nprocess: process all descriptors - as in an apply command - from a root descriptor. If output is set, it dumps the descriptors in this directory. Don’t forget to set --kubeconfig explicit to ignore kube setup.\nrollback: rollback an alveolus deployment.\nrun: tries to run the recipe as plain forks on the host. In this mode, Bundlebee is used as the orchestrator. It is highly recommended to only do that with application matching the bundlebee command environment.\nversion: shows the application version.\nversions: list versions for an artifact to know which ones are available.\nyaml2json: convert yaml files of a directory to json. This command is useful to transform Kubernetes yaml files to json to write Bundlebee descriptors.","title":"Commands","url":"//www.yupiik.io/bundlebee/commands.html"},{"lang":"en","lvl2":"Configuration","lvl3":"Inherited Global Configuration","text":"Name: completion.\nExecute bash completion. Should be setup in your ~/.bashrc or ~/.profile file to be active. The result will be the list of proposal you can inject into COMPREPLY array.\nTo set it up you can add this snippet to your .bashrc (assumes you uses the bundlebee linux binary and it is in your $PATH otherwise replace bundlebee by your own launching script):\nMatches bash COMP_LINE environment variable, represents the current command line.\nMatches bash COMP_POINT environment variable, represents the index of the cursor position. Default value: -1\nIf true logger will be used instead of stdout. Default value: false\nfor these configurations, don’t hesitate to use ~/.bundlebeerc or --config-file (just remove the -- prefix from option keys).\nHow 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\nThe HTTP client connect timeout (in java Duration format), none can be used to ignore this setting. Default value: none\nThe HTTP client redirect policy. Default to NORMAL, can be set to ALWAYS or NEVER. Default value: NORMAL\nThe HTTP client version, none mean the JVM default (v2), HTTP_1_1 v1.1 and HTTP_2 v2.0. Default value: none\nHow many threads are allocated to async HTTP client, negative or zero value means to use common pool. Default value: -1\nWhen kubeconfig is not set the base API endpoint. Default value: http://localhost:8080\nWhen kubeconfig (explicit or not) is used, the context to use. If not set it is taken from the kubeconfig itself.\nWhen 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\nDefault value for deletions of propagationPolicy. Values can be Orphan, Foreground and Background. Default value: Foreground\nIf 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\nShould YAML/JSON be logged when it can’t be parsed. Default value: replicas,template,updateStrategy,persistentVolumeClaimRetentionPolicy,minReadySeconds,serviceName,selector\nBy 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\nHTTP timeout in ms, ignored if ⇐ 0. Default value: 60000\nEnables 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\nShould YAML/JSON be logged when it can’t be parsed. Default value: true\nWhen kubeconfig is not set the namespace to use. Default value: default\nBy 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\nEnables to define resource mapping, syntax uses propeties one: s = /apis/….. Default value: ``\nIf true GET http requests are not skipped when dryRun is true. Default value: false\nList of kind of descriptors updates can be skipped, it is often useful for PersistentVolumeClaim. Default value: PersistentVolumeClaim\nWhen kubeconfig is set to explicit, the bearer token to use (if set).\nShould SSL connector be validated or not. Default value: true\nIf true http requests/responses to Kubernetes will be logged. Default value: false\nWhere to cache maven dependencies. If set to auto, $HOME/.m2/repository is used. Default value: auto\nIf true we only use cache value and never fallback on default maven settings.xml location. Default value: false\nWhen fetching a dependency using HTTP, the connection timeout for this dependency. Default value: 30000\nIf false we first try to read settings.xml file(s) in cache location before the default one. Default value: true\nEnable the download, i.e. ensure it runs only with local maven repository. Default value: false\nProperties 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.. 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.\nDefault release repository. Default value: https://repo.maven.apache.org/maven2/\nDefault snapshot repository, not set by default.\nKubeconfig 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","title":"Completion","url":"//www.yupiik.io/bundlebee/commands/completion.configuration.html"},{"lang":"en","lvl2":"Create your first template\nUse your first template","text":"feature available since Bundlebee 1.0.14.\nA template is an alveolus which is not intended to be installed by itself in general - even if it is possible. It relies on placeholders to be contextualized and, in general, placeholders are provided in the context if a contextual alveolus which represents the consumer.\nBut why using templates? Most of the time, the Kubernetes flavor you are using (OpenShift for example or a cloud specific instance or with a particular service mesh stack) is relying on specific metadata/labels etc… Your company can also standardize the way to write kubernetes descriptors. All that make it quite hard to define generic and maintainable descriptors generally speaking but it also makes it quite repetitive to write it for each microservice in your own context.\nTo solve that issue, Bundlebee enables you to write a generic contextual alveolus (a deployment, a service etc…) and bind placeholders from another alveolus.\nthe context is the alveolus and not the dependency to ensure the binding is more obvious and not ultra nested. it can require you to split a bit the definition in the manifest.json but it is to simplify the maintenance.\nTo create a template, just define a standard alveolus with placeholders in descriptors. For example:\nHere we can see we just defined an alveolus requiring the placeholders:\nservice.name,\nservice.app,\nservice.type,\nservice.port.\nthis is a valid alveolus, if you provide all the placeholders you can install it directly but it is not recommended to ensure it is reproducible.\nTo use the template previously defined, just define another alveolus which binds the required placeholders in its definition:\nimport the template in the alveolus,\nBinds the placeholders of the imported template.\nif your alveolus imports a dependency reimporting the template, the placeholders nesting will be respected which means the context is always the deepest one.","title":"Create your own templates","url":"//www.yupiik.io/bundlebee/template.html"},{"lang":"en","lvl2":"Configuration","text":"Name: create-master-password.\nGenerate a master password if none exist (in ~/.m2/settings-security.xml)\nMaster password value, if auto it will be generated. Default value: auto","title":"Create-master-password","url":"//www.yupiik.io/bundlebee/commands/create-master-password.configuration.html"},{"lang":"en","lvl2":"Configuration","lvl3":"Inherited Global Configuration","text":"Name: delete.\nDelete an alveolus deployment by deleting all related descriptors. bundlebee.delete.propagationPolicy can be set in descriptor(s) metadata to force default CLI behavior for this descriptor.\nAlveolus 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\nIf an integer > 0, how long (ms) to await for the actual deletion of components, default does not await.\nFor descriptors with await = true the max duration the test can last. It is per descriptor with await true and independent of awaitTimeout. Default value: 60000\nEnables to exclude descriptors from the command line. none to ignore. Value is comma separated. Note that using this setting, location is set to * so only the name is matched. Default value: none\nEnables to exclude locations (descriptor is set to *) from the command line. none to ignore. Value is comma separated. Default value: none\nRoot dependency to download to get the manifest. If set to auto it is assumed to be present in current classpath. Default value: auto\nIf 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.\nManifest 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\nfor these configurations, don’t hesitate to use ~/.bundlebeerc or --config-file (just remove the -- prefix from option keys).\nHow 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\nThe HTTP client connect timeout (in java Duration format), none can be used to ignore this setting. Default value: none\nThe HTTP client redirect policy. Default to NORMAL, can be set to ALWAYS or NEVER. Default value: NORMAL\nThe HTTP client version, none mean the JVM default (v2), HTTP_1_1 v1.1 and HTTP_2 v2.0. Default value: none\nHow many threads are allocated to async HTTP client, negative or zero value means to use common pool. Default value: -1\nWhen kubeconfig is not set the base API endpoint. Default value: http://localhost:8080\nWhen kubeconfig (explicit or not) is used, the context to use. If not set it is taken from the kubeconfig itself.\nWhen 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\nDefault value for deletions of propagationPolicy. Values can be Orphan, Foreground and Background. Default value: Foreground\nIf 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\nShould YAML/JSON be logged when it can’t be parsed. Default value: replicas,template,updateStrategy,persistentVolumeClaimRetentionPolicy,minReadySeconds,serviceName,selector\nBy 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\nHTTP timeout in ms, ignored if ⇐ 0. Default value: 60000\nEnables 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\nShould YAML/JSON be logged when it can’t be parsed. Default value: true\nWhen kubeconfig is not set the namespace to use. Default value: default\nBy 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\nEnables to define resource mapping, syntax uses propeties one: s = /apis/….. Default value: ``\nIf true GET http requests are not skipped when dryRun is true. Default value: false\nList of kind of descriptors updates can be skipped, it is often useful for PersistentVolumeClaim. Default value: PersistentVolumeClaim\nWhen kubeconfig is set to explicit, the bearer token to use (if set).\nShould SSL connector be validated or not. Default value: true\nIf true http requests/responses to Kubernetes will be logged. Default value: false\nWhere to cache maven dependencies. If set to auto, $HOME/.m2/repository is used. Default value: auto\nIf true we only use cache value and never fallback on default maven settings.xml location. Default value: false\nWhen fetching a dependency using HTTP, the connection timeout for this dependency. Default value: 30000\nIf false we first try to read settings.xml file(s) in cache location before the default one. Default value: true\nEnable the download, i.e. ensure it runs only with local maven repository. Default value: false\nProperties 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.. 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.\nDefault release repository. Default value: https://repo.maven.apache.org/maven2/\nDefault snapshot repository, not set by default.\nKubeconfig 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","title":"Delete","url":"//www.yupiik.io/bundlebee/commands/delete.configuration.html"},{"lang":"en","lvl2":"Configuration","lvl3":"Inherited Global Configuration","text":"Name: deploy.\nBuild and deploy a project. It inherits from most configuration of build command and adds remote repository settings.\nBundle artifactId.\nWhere to build (for build/temp files). Default value: target\nIf true it will be added to your local maven repository too. Default value: true\nProject to build. Default value: .\nIf true it enables to upload an artifact even if already present. When auto it enables it for snapshots but not for releases. Default value: auto\nBundle groupId.\nIf not skip it will deploy the artifact on a remote repository (nexus v2 or v3). Syntax must be a URL pointing to the REST API (base URL). If you don’t set the userinfo (username:password) in the URL it will be looked up in your settings.xml - potentially ciphered - using the hostname as serverId until you force it with --serverId. Default value: skip\nNexus repository. It is the repository name the artifact(s) will be uploaded to. If auto, it will be maven-releases if the version is a release one and maven-snapshots otherwise. Default value: auto\nServerId to lookup from your maven settings.xml for remote deployment if enabled (nexus authentication).\nBundle version.\nfor these configurations, don’t hesitate to use ~/.bundlebeerc or --config-file (just remove the -- prefix from option keys).\nHow 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\nThe HTTP client connect timeout (in java Duration format), none can be used to ignore this setting. Default value: none\nThe HTTP client redirect policy. Default to NORMAL, can be set to ALWAYS or NEVER. Default value: NORMAL\nThe HTTP client version, none mean the JVM default (v2), HTTP_1_1 v1.1 and HTTP_2 v2.0. Default value: none\nHow many threads are allocated to async HTTP client, negative or zero value means to use common pool. Default value: -1\nWhen kubeconfig is not set the base API endpoint. Default value: http://localhost:8080\nWhen kubeconfig (explicit or not) is used, the context to use. If not set it is taken from the kubeconfig itself.\nWhen 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\nDefault value for deletions of propagationPolicy. Values can be Orphan, Foreground and Background. Default value: Foreground\nIf 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\nShould YAML/JSON be logged when it can’t be parsed. Default value: replicas,template,updateStrategy,persistentVolumeClaimRetentionPolicy,minReadySeconds,serviceName,selector\nBy 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\nHTTP timeout in ms, ignored if ⇐ 0. Default value: 60000\nEnables 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\nShould YAML/JSON be logged when it can’t be parsed. Default value: true\nWhen kubeconfig is not set the namespace to use. Default value: default\nBy 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\nEnables to define resource mapping, syntax uses propeties one: s = /apis/….. Default value: ``\nIf true GET http requests are not skipped when dryRun is true. Default value: false\nList of kind of descriptors updates can be skipped, it is often useful for PersistentVolumeClaim. Default value: PersistentVolumeClaim\nWhen kubeconfig is set to explicit, the bearer token to use (if set).\nShould SSL connector be validated or not. Default value: true\nIf true http requests/responses to Kubernetes will be logged. Default value: false\nWhere to cache maven dependencies. If set to auto, $HOME/.m2/repository is used. Default value: auto\nIf true we only use cache value and never fallback on default maven settings.xml location. Default value: false\nWhen fetching a dependency using HTTP, the connection timeout for this dependency. Default value: 30000\nIf false we first try to read settings.xml file(s) in cache location before the default one. Default value: true\nEnable the download, i.e. ensure it runs only with local maven repository. Default value: false\nProperties 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.. 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.\nDefault release repository. Default value: https://repo.maven.apache.org/maven2/\nDefault snapshot repository, not set by default.\nKubeconfig 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","title":"Deploy","url":"//www.yupiik.io/bundlebee/commands/deploy.configuration.html"},{"lang":"en","lvl2":"Installation\nCreate your first alveolus\nGoing futher (K8s operator)\nDefine custom templates\nTesting your alveoli with JUnit 5","lvl3":"Java Mode\nBinary\nPre-requisite\nStart with a maven project\nStart from scratch (without Java and Maven)","text":"Ensure to use java >= 11.0.7 (previous Java 11 versions can work but have an issue with TLS HTTP client you can hit).\nDownload the bundlebee-core fat jar on https://repo.maven.apache.org/maven2/io/yupiik/bundlebee-core/ (ensure to take -fat.jar artifact).\nYou can now run it with the command: java -jar bundlebee-core--fat.jar.\nas of today, no release of BundleBee are on central yet so this script does not yet work.\nthis only works for linux amd64 computers.\nsince 1.0.3, once installed this way (and your PATH variable updated to include bundlebee) you can use check-update command to check if a new version is available: bundlebee check-update [--update true]. The --update true option enables to automatically replace the binary if needed, not specifying it will just log if a new version can be downloaded.\nBundleBee assumes it is installed itself indeed but depending how you package your alveolus it can require Java (>= 8) and Maven. If they are not installed on your system, we encourage you to use sdkman to do so.\nthis can be replaced by any zip packager and is not a strong requirement.\nThere are a ton of ways to create a maven projects but here is the simplest one:\nThen you can go in my-app-alveolus/. You can run mvn package to ensure your java/maven setup is correct.\nAt that stage we can start working on our alveolus but if you want to be \"purist\" you can clean up the default skaffolded project: rm -Rf src/test/ src/main/java/.\nTo start working on our alveolus, we will create src/main/resources/bundlebee folder: mkdir -p src/main/resources/bundlebee.\nAt that stage your project should look like:\nTo describe an application, you have to create a manifest.json file in this bundlebee folder:\nCreates an alveolus named \"hello\",\n\"hello\" alveolus will use as descriptor (.yaml) \"hello-world.yaml\" which will be found in src/main/resources/bundlebee/kubernetes,\nReferences Bundlebee base folder because we are deploying in exploded mode (and not in a packaged jar).\nThen add the referenced Kubernetes descriptor in kubernetes subfolder:\nHere nothing changes from a \"normal\" .yaml used with kubectl.\nNow you can deploy this executing bundlebee apply --alveolus hello --manifest ./src/main/resources/bundlebee/manifest.json.\nAnd that’s it, now hello world application should be up and running in your Kubernetes cluster.\nit is more than encouraged to name the kubernetes descriptor based on the project unique identifier. For example ...yaml. It will avoid conflicts when multiple alveolus are in the same classpath using native java mode and not file driven mode.\nYou could also have used the bundlebee-maven-plugin, simply add it in the plugins section of the pom.xml :\nThen you can deploy this executing mvn bundlebee:apply@hello-world.\nIn this part we will reuse the descriptors of Start with maven section so we will just show how to bundle without Java/Maven the alveolus.\nThe overall goal is to create a zip containing the manifest.json and the Kubernetes descriptor. Here is a small script helping to do that:\nThe name of the project (will create a root directory with this name)\nCreate the alveolus structure\nNow you can copy the descriptors as in Start with maven section in my-app-alveolus/bundlebee/ folder.\nOnce done we just have to bundle it as a zip. One option on UNIx system is to use this command:\nReuse the same setup than in previous script\nCreate a zip containing the alveolus structure using zip command\nAnd that’s it.\nthis trick to create a zip can be adapted to any language (javascript, typescript, go, python, ruby, …) and enables to bundle an alveolus in any build tool very easily.\nTo learn how to deploy directly an Alveolus on Kubernetes you can check out our Operator documentation.\nYou can use an alveolus as a template for others providing contextual placeholders. Learn more about this in template documentation.\nBundlebee provides a light testing framework integrated with JUnit 5 to ease the validation of alveoli. Learn more about this in junit5 documentation.","title":"Getting Started","url":"//www.yupiik.io/bundlebee/getting-started.html"},{"lang":"en","lvl2":"Configuration","lvl3":"Inherited Global Configuration","text":"Name: helm.\nConverts an alveolus deployment to a simple helm chart.\"// end of short description Note you will loose some features doing that but in case some rigid rules force to use helm it enables to still rely on bundlebee setup and share a helm chart to ops. Note that this conversion has some limitation in placeholder syntax for example (ensure no conflict under a key).\nAlveolus name to deploy. When set to auto, it will deploy all manifests found in the classpath. 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\nHelm chart app version.\nHelm chart description.\nShould -SNAPSHOT be removed from the version if present. Default value: true\nHelm chart name, if auto it will be the alveolus name if a single one is selected else it is alveolus. Default value: auto\nHelm chart version.\nEnables to exclude descriptors from the command line. none to ignore. Value is comma separated. Note that using this setting, location is set to * so only the name is matched. Default value: none\nEnables to exclude locations (descriptor is set to *) from the command line. none to ignore. Value is comma separated. Default value: none\nRoot dependency to download to get the manifest. If set to auto it is assumed to be present in current classpath. Default value: auto\nManifest to load to start to deploy (a file path or inline). This optional setting mainly enables to use dependencies easily. Ignored if set to skip. Default value: skip\nWhere to create helm chart. Default value: none\nAn optional file path to a properties file where the keys are placeholders and the value some description to inject in values.yaml. Default value: true\nfor these configurations, don’t hesitate to use ~/.bundlebeerc or --config-file (just remove the -- prefix from option keys).\nHow 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\nThe HTTP client connect timeout (in java Duration format), none can be used to ignore this setting. Default value: none\nThe HTTP client redirect policy. Default to NORMAL, can be set to ALWAYS or NEVER. Default value: NORMAL\nThe HTTP client version, none mean the JVM default (v2), HTTP_1_1 v1.1 and HTTP_2 v2.0. Default value: none\nHow many threads are allocated to async HTTP client, negative or zero value means to use common pool. Default value: -1\nWhen kubeconfig is not set the base API endpoint. Default value: http://localhost:8080\nWhen kubeconfig (explicit or not) is used, the context to use. If not set it is taken from the kubeconfig itself.\nWhen 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\nDefault value for deletions of propagationPolicy. Values can be Orphan, Foreground and Background. Default value: Foreground\nIf 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\nShould YAML/JSON be logged when it can’t be parsed. Default value: replicas,template,updateStrategy,persistentVolumeClaimRetentionPolicy,minReadySeconds,serviceName,selector\nBy 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\nHTTP timeout in ms, ignored if ⇐ 0. Default value: 60000\nEnables 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\nShould YAML/JSON be logged when it can’t be parsed. Default value: true\nWhen kubeconfig is not set the namespace to use. Default value: default\nBy 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\nEnables to define resource mapping, syntax uses propeties one: s = /apis/….. Default value: ``\nIf true GET http requests are not skipped when dryRun is true. Default value: false\nList of kind of descriptors updates can be skipped, it is often useful for PersistentVolumeClaim. Default value: PersistentVolumeClaim\nWhen kubeconfig is set to explicit, the bearer token to use (if set).\nShould SSL connector be validated or not. Default value: true\nIf true http requests/responses to Kubernetes will be logged. Default value: false\nWhere to cache maven dependencies. If set to auto, $HOME/.m2/repository is used. Default value: auto\nIf true we only use cache value and never fallback on default maven settings.xml location. Default value: false\nWhen fetching a dependency using HTTP, the connection timeout for this dependency. Default value: 30000\nIf false we first try to read settings.xml file(s) in cache location before the default one. Default value: true\nEnable the download, i.e. ensure it runs only with local maven repository. Default value: false\nProperties 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.. 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.\nDefault release repository. Default value: https://repo.maven.apache.org/maven2/\nDefault snapshot repository, not set by default.\nKubeconfig 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","title":"Helm","url":"//www.yupiik.io/bundlebee/commands/helm.configuration.html"},{"lang":"en","lvl2":"Configuration","lvl3":"Inherited Global Configuration","text":"Name: help.\nPrint help for all available commands.\nIf false args are not shown, enable a lighter output. Default value: true\nWhich command to show help for. If not set it will show all commands.\nIf false shared configuration (by all commands) is not shown. Default value: true\nfor these configurations, don’t hesitate to use ~/.bundlebeerc or --config-file (just remove the -- prefix from option keys).\nHow 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\nThe HTTP client connect timeout (in java Duration format), none can be used to ignore this setting. Default value: none\nThe HTTP client redirect policy. Default to NORMAL, can be set to ALWAYS or NEVER. Default value: NORMAL\nThe HTTP client version, none mean the JVM default (v2), HTTP_1_1 v1.1 and HTTP_2 v2.0. Default value: none\nHow many threads are allocated to async HTTP client, negative or zero value means to use common pool. Default value: -1\nWhen kubeconfig is not set the base API endpoint. Default value: http://localhost:8080\nWhen kubeconfig (explicit or not) is used, the context to use. If not set it is taken from the kubeconfig itself.\nWhen 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\nDefault value for deletions of propagationPolicy. Values can be Orphan, Foreground and Background. Default value: Foreground\nIf 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\nShould YAML/JSON be logged when it can’t be parsed. Default value: replicas,template,updateStrategy,persistentVolumeClaimRetentionPolicy,minReadySeconds,serviceName,selector\nBy 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\nHTTP timeout in ms, ignored if ⇐ 0. Default value: 60000\nEnables 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\nShould YAML/JSON be logged when it can’t be parsed. Default value: true\nWhen kubeconfig is not set the namespace to use. Default value: default\nBy 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\nEnables to define resource mapping, syntax uses propeties one: s = /apis/….. Default value: ``\nIf true GET http requests are not skipped when dryRun is true. Default value: false\nList of kind of descriptors updates can be skipped, it is often useful for PersistentVolumeClaim. Default value: PersistentVolumeClaim\nWhen kubeconfig is set to explicit, the bearer token to use (if set).\nShould SSL connector be validated or not. Default value: true\nIf true http requests/responses to Kubernetes will be logged. Default value: false\nWhere to cache maven dependencies. If set to auto, $HOME/.m2/repository is used. Default value: auto\nIf true we only use cache value and never fallback on default maven settings.xml location. Default value: false\nWhen fetching a dependency using HTTP, the connection timeout for this dependency. Default value: 30000\nIf false we first try to read settings.xml file(s) in cache location before the default one. Default value: true\nEnable the download, i.e. ensure it runs only with local maven repository. Default value: false\nProperties 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.. 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.\nDefault release repository. Default value: https://repo.maven.apache.org/maven2/\nDefault snapshot repository, not set by default.\nKubeconfig 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","title":"Help","url":"//www.yupiik.io/bundlebee/commands/help.configuration.html"},{"lang":"en","lvl2":"Overall architecture\nManifest\nDeployment and Dependency Management\nCustomize descriptors\nDeploy a dependency (or descriptor) conditionally\nFilter manifest at command time\nWindows and CLI","lvl3":"Manifest Descriptor\nJSON-Schema\nMore placeholders","text":"One of the BundleBee goals is to inherit from the well known and supported Apache Maven infrastructure. In other words, the goal is to be able to reuse Maven registries (central, custom nexus, artifactory, …) to store application descriptors. It also leverage the well know java packaging (jar or zip) to ensure a strong storage reliability in these systems.\nOne direct benefit is that it becomes very easy to have an immutable system once deployed and therefore a better tracability of what is deployed.\nOverall, BundleBee will manipulate what we call alveolus which are basically just a set of descriptors. An alveolus is a zip or a jar which is structured this way:\nA bundlebee folder contains all the descriptors\nA manifest.json contains the list of application or library this alveolus provides\nA kubenetes folder contains the list of descriptors used by alveoli\nManifest is the central point of the system. It provides the unique identifier of your recipe (application/library) and what to do to set it up.\nHere is its configuration specification:\nBundleBee manifest descriptor.\nName\nJSON Name\nType\nDescription\ninterpolateAlveoli\nbool\nEnables to consider all alveoli have their interpolateDescriptors descriptor set to true, you can still set it to false if you want to disable it for one.\nManifest.alveoli\nalveoli\narray of object\nList of described applications/libraries.\nManifest.references\nreferences\nList of files referenced as other manifests. They are merged with this (main) manifest by appending requirements and alveoli. It is relative to this manifest location. Important: it is only about the same module references, external references are dependencies in an alveoli. It enables to split a huge manifest.json for an easier maintenance.\nManifest.requirements\nrequirements\nPre manifest execution checks (bundlebee version typically). Avoids to install using a bundlebee version not compatible with the alveoli. Can be fully omitted.\nchainDependencies\nShould dependencies be installed one after the other or in parallel (default). It is useful when you install a namespace for example which must be awaited before next dependencies are installed.\ninterpolateDescriptors\nEnables to consider all descriptors have their interpolate descriptor set to true, you can still set it to false if you want to disable it for one. If not set, interpolateAlveoli flag from the manifest.\nname\nstring\nName of the alveolus (recipe). It must be unique accross the whole classpath. Using maven style identifier, it is recommended to name it :: using maven filtering but it is not enforced.\nversion\nIf name does not follow :: naming (i.e. version can’t be extracted from the name) then you can specify the version there. Note that if set, this is used in priority (explicit versus deduced).\nAlveolus.dependencies\ndependencies\nDependencies of this alveolus. It is a way to import transitively a set of descriptors.\nAlveolus.descriptors\ndescriptors\nList of descriptors to install for this alveolus. This is required even if an empty array.\nAlveolus.excludedDescriptors\nexcludedDescriptors\nList of descriptors to ignore for this alveolus (generally coming from dependencies).\nAlveolus.patches\npatches\nPatches on descriptors. It enables to inject configuration in descriptors by patching (using JSON-Patch or plain interpolation with ${key} values) their JSON representation. The key is the descriptor name and each time the descriptor is found it will be applied.\nplaceholders\nobject\nLocal placeholders for this particular alveolus and its dependencies. It is primarly intended to be able to create a template alveolus and inject the placeholders inline.\nlocation\nWhere to find the alveolus. Note it will ensure the jar is present on the local maven repository.\nAlveolus name.\nDescriptor.includeIf\nincludeIf\nConditions to include this dependency. Enables for example to have an environment variable enabling part of the stack (ex: MONITORING=true)\nawait\nIf set to true, apply/delete commands will await the actual creation of the resource (GET /x returns a HTTP 200) before continuing to process next resources. It is useful for namespaces for example to ensure applications can be created in the newly created namespace. It avoids to run and rerun apply command in practise. For more advanced tests, use awaitConditions.\nawaitOnDelete\nOn delete we rarely want to check the resource exists before but in these rare case you can set this toggle to true.\ninterpolate\nIf set to true, it will interpolate the descriptor just before applying it - i.e. after it had been patched if needed. You can use -- to inject bindings set as {{config-key:-default value}}. If not set, interpolateDescriptors flag from the alveolus will be used.\nOptional, if coming from another manifest, the dependency to download to get the alveolus.\nName of the descriptor to install. For kubernetes descriptors you can omit the .yaml extension.\ntype\nType of this descriptor. For now only kubernetes is supported. It also defines in which folder under bundlebee the descriptor(s) are looked for from its name.\nDescriptor.awaitConditions\nawaitConditions\nTest to do on created/destroyed resources, enables to synchronize and await kubernetes actually starts some resource. For apply and delete commands, descriptorAwaitTimeout is still applied. Note that if you use multiple array entries for the same command it will be evaluated with an AND.\nConditions to include this descriptor.\noperator\nOperator to combine the conditions. Potential values: ANY (At least one condition must match.),ALL (All conditions must match.).\nConditions.conditions\nconditions\nList of condition to match according operator.\nkey\nExpected key. If empty/null condition is ignored. If read value is null it defaults to an empty string.\nnegate\nShould the condition be reversed (ie \"not in this case\").\nType of condition. Potential values: ENV (Key is read is process environment variables.),SYSTEM_PROPERTY (Key is read is process system properties.).\nvalue\nExpected value. If empty/null, true is assumed. Note that empty is allowed.\ncommand\nCommand to apply these conditions to, if not set it will be applied on apply command only. Note that for now only apply and delete commands are supported, others will be ignored.\nAwaitConditions.conditions\nconditionType\nWhen condition type is STATUS_CONDITION it is the expected type of the condition. This is ignored when condition type is JSON_POINTER.\noperatorType\nThe operation to evaluate if this condition is true or not. (for type=JSON_POINTER). Potential values: EXISTS (JSON Pointer exists model.),MISSING (JSON Pointer does not exist in the resource model.),EQUALS (JSON Pointer value is equal to (stringified comparison) value.),NOT_EQUALS (JSON Pointer is different from the provided value.),EQUALS_IGNORE_CASE (JSON Pointer value is equal (ignoring case) to (stringified comparison) value.),NOT_EQUALS_IGNORE_CASE (JSON Pointer is different (ignoring case) from the provided value.),CONTAINS (JSON Pointer contains the configured value.).\npointer\nJSON Pointer to read from the resource. It can for example be on /status/phase to await a namespace creation. (for type=JSON_POINTER).\nType of condition. Potential values: JSON_POINTER (JSON Pointer evaluation (fully custom).),STATUS_CONDITION (Evaluate items in /status/conditions.).\nWhen condition type is JSON_POINTER and operatorType needs a value (EQUALS for example), the related value. It can be Active if you test namespace /status/phase for example. When condition type is STATUS_CONDITION it is the expected status.\nThe container of the descriptor (maven coordinates generally).\nName of the descriptor (as declared, ie potentially without the extension).\ndescriptorName\nThe descriptor to patch. It can be any descriptor, including transitive ones. It can be * to patch all descriptors (/metadata/label/app for example) or regex: to match descriptor names with a regex.\nIf set to true, it will interpolate the patch from the execution configuration which means you can use -- to inject bindings too. An interesting interpolation is the ability to extract the ip/host of the host machine (minikube ip equivalent) using the kubeconfig file. Syntax is the following one: {{kubeconfig.cluster.minikube.ip}} or more generally {{kubeconfig.cluster..ip}}. You can also await for some secret with this syntax {{kubernetes..serviceaccount..secrets..data.[.]}}. This is particular useful to access freshly created service account tokens for example.\npatch\nJSON-Patch to apply on the JSON representation of the descriptor. It enables to inject configuration in descriptors for example, or changing some name/application.\nConditions to include this patch. Enables for example to have an environment variable enabling part of the stack (ex: MONITORING=true)\npath\nRelative or absolute - starting by a / - location (referenced to the base directory of manifest.json). For example my-manifest.json will resolve to /path/to/bundlebee/my-manifest.json in a folder and /bundlebee/my-manifest.json in a jar. Important: for resources (jar/classpath), the classloader is used so ensure your name is unique accross your classpath (we recommend you to prefix it with the module name, ex :`/bundlebee/my-module.sub-manifest.json` or use a dedicated subfolder (/bundlebee/my-module/sub.json).\nmaxBundlebeeVersion\nMinimum bundlebee version, use `*`to replace any digit in a segment. Note that snapshot is ignored in the comparison for convenience. It is an inclusive comparison.\nminBundlebeeVersion\nMinimum bundlebee version, use * to replace any digit in a segment. Note that snapshot is ignored in the comparison for convenience. It is an inclusive comparison.\nforbiddenVersions\narray of string\nList of forbidden version (due to a bug or equivalent). Here too snapshot suffix is ignored. is usable there too to replace any digit in a segment (ex: 1..). Note that 1. would NOT match 1.., version are always 3 segments.\nmanifest content can be wrapped in a bundlebee key (you wrap the whole content) which enables you to add other metadata in the manifest and still reuse BundleeBee JSON-Schema for the validation (by composition).\nIf you use JSON-Schema facilities in your preferred editor, here is the raw JSON-Schema for the manifest descriptor:\nyou can also use last version from this link.\nA manifest can reference descriptors in other alveoli, it just requires to reference them to let bundlebee find them.\nThere are mainly two ways to deploy an alveolus:\nClasspath mode: you put all your zip/jar in the classpath. This mode requires there is no conflict between descriptor names (which is the recommended practise) and it will never look for external descriptors. It is typically a recommended mode to avoid network I/O except with the Kubernetes cluster.\nFetch mode: in this mode, a missing descriptor in the classpath will look for descriptor.location and lookup the jar/zip referenced by this location (generally a maven coordinate in the form groupId:artifactId:version). It will first use your local Maven repository but can download the jar/zip if missing locally. Then the jar/zip is read and descriptors are looked up from there. This mode is nicer when depending on a lot of external alveoli but requires I/O to grab the dependencies.\nIndeed, you can bundle all your stack and hardcode your configuration or create one alveolus per environment. This is one option which works well and enable to version its configuration.\nHowever, for testing purposes, it is also neat to be able to patch descriptors on the fly. For that you can use descriptor.patches in the manifest which will transitively enable to patch the descriptors - even the ones you don’t own - using JSON-Patch and interpolations.\nHere are some examples.\nWe add to the alveolus a list of patches to apply on some descriptors\nWe reference the descriptor to patch\nWe enable interpolation from Microprofile Config (which include CLI args)\nWe define the JSON-Patch to use (optional, interpolation will also interpolate the descriptor if designed to be interpolated)\nWe use an interpolation in the configuration in the JSON-Patch replace operation which replaces the data of the referenced ConfigMap\nthis mecanism is very useful for ConfigMap descriptors but also PersistenceVolume since you can now patch `/spec/hostPath `easily too.\nIn some case it can be neat to be able to not deploy part of the stack. It is typically the case when you wrote a monitoring-full alveolus (ie with some optional services functionally). In such a case you can condition dependencies and descriptor deployment:\nused on descriptors and using a complete set of conditions for descriptors you can handle environments this way (ENV=preprod for descriptor preprod.configmap for example).\nIn some case it can be needed to evaluate some values of the manifest when executing the command. Even if not recommended it can be done using {{xxx}} placeholders - read from environment variables and system properties.\nWith this manifest you can value project.version and bundlebee.version using the command line:\nPlaceholders can use some keywords to get some particular values:\nbundlebee-strip:: strips the provided value,\nbundlebee-strip-leading:: strips the provided value at the beginning,\nbundlebee-strip-trailing:: strips the provided value at the end,\nbundlebee-indent::: indents a value with the provided space size, it is generally combined with another interpolation (file ones in particular) as value, ex {{bundlebee-indent:8:{{bundlebee-inline-file:myfile.txt}}}},\nbundlebee-inline-file:: load the file content as value,\nbundlebee-base64-file:: converts the file in base64 (useful to write data:xxxx, values for ex keeping the raw file in the filesystem, very helpful for images),\nbundlebee-base64:: encodes in base64 the text,\nbundlebee-digest:BASE64|HEX,,: computes the digest of the text encoded in base64 or hexa format (useful to read files like ConfigMap or Secret and inject their digest value in a Deployment annotations to force its reload for example),\nbundlebee-quote-escaped-inline-file:: load the file content as a quoted value,\nbundlebee-json-inline-file:: load the file content as a JSON string value - without quotes,\nbundlebee-json-string:content: escapes a string to be a JSON string (useful when you inject with bundlebee-json-inline-file a string in another string like in JSON ConfigMap in a JSON configuration),\nbundlebee-maven-server-username:: extract from your maven settings.xml a server username (see configuration for a custom settings.xml location),\nbundlebee-maven-server-password:: extract from your maven settings.xml a server password (potentially deciphered),\nbundlebee-kubernetes-namespace: the Kubernetes namespace defined in the HttpKubeClient,\nkubeconfig.cluster..ip: extract cluster IP from your kubeconfig,\ntimestamp: current time in milliseconds (since epoch),\ntimestampSec: current time in seconds (since epoch),\nnow: OffsetDateTime.now() value,\ndate:: format OffsetDateTime.now() value using the provided pattern,\nnowUTC: OffsetDateTime.now() value with UTC ZoneId,\nkubernetes..serviceaccount..secrets..data.[.]: secret value looked up through Kubernetes API.\njsr223: