⚠️ This service is currently not maintained - please reach out to the Keptn community via https://slack.keptn.sh if you want to take ownership of this repository and update it to make it work with the latest version of Keptn ⚠️
Please consider using Keptn's webhook-service to interact with Unleash instead.
This service allows to interact with the open source feature toggle system unleash.
Triggered by a Keptn CloudEvent of the type sh.keptn.event.action.triggered. After the features specified in the event
have been toggled, it sends out an sh.keptn.event.action.finished event.
Example payload for an action.triggered event:
{
"type": "sh.keptn.event.action.triggered",
"specversion": "1.0",
"source": "keptn-user",
"id": "f2b878d3-03c0-4e8f-bc3f-454bc1b3d79d",
"time": "2019-06-07T07:02:15.64489Z",
"contenttype": "application/json",
"shkeptncontext": "08735340-6f9e-4b32-97ff-3b6c292bc509",
"data": {
"action": {
"name": "FeatureToggle",
"action": "toggle-feature",
"description": "toggle a feature",
"values": {
"EnableItemCache": "on"
}
},
"problem": {
"ImpactedEntity": "carts-primary",
"PID": "93a5-3fas-a09d-8ckf",
"ProblemDetails": "Pod name",
"ProblemID": "762",
"ProblemTitle": "cpu_usage_sockshop_carts",
"State": "OPEN"
},
"project": "sockshop",
"stage": "staging",
"service": "carts",
"labels": {
"testid": "12345",
"buildnr": "build17",
"runby": "JohnDoe"
}
}
}
Please always double check the version of Keptn you are using compared to the version of this service, and follow the compatibility matrix below.
| Keptn Version* | Unleash Service Version |
|---|---|
| 0.8.4 (up to 0.13.x) | 0.3.2 |
| 0.14.2 | 0.4.0 |
| 0.14.2 - 0.16.0 | 0.4.1 |
* This is the Keptn version we aim to be compatible with. Other versions (especially newer ones) should work too, but there is no guarantee.
You can find more information and older releases on the Releases page.
The unleash-service can be installed as a part of Keptn's uniform.
You can deploy the current version of the unleash-service in your Kubernetes cluster into the same namespace as your Keptn control-plane (e.g., keptn):
helm -n keptn install unleash-service https://github.com/keptn-contrib/unleash-service/releases/download/0.4.0/unleash-service-0.4.0.tgzIf you're installing versions of 0.3.2 and older, please use
kubectl -n keptn apply -f https://raw.githubusercontent.com/keptn-contrib/unleash-service/release-0.3.2/deploy/service.yaml This should install the unleash-service into the keptn namespace, which you can verify using
kubectl -n keptn get deployment unleash-service -o wide
kubectl -n keptn get pods -l app.kubernetes.io/instance=unleash-serviceThe service account creation is enabled by default in the values.yaml file inside the Helm chart. If you do not want to create the default service account for any reason (like to create it manually, etc.), you can set the service account create variable to false.
Note: Creating no service account or a custom one can lead to unwanted behavior.
Adapt and use the following command in case you want to up- or downgrade your installed version (specified by the $VERSION placeholder):
helm upgrade -n keptn unleash-service https://github.com/keptn-contrib/unleash-service/releases/download/$VERSION/unleash-service-$VERSION.tgz --reuse-valuesTo delete a deployed unleash-service, use the file deploy/*.yaml files from this repository and delete the Kubernetes resources:
helm uninstall -n keptn unleash-serviceIf you're removing versions of 0.3.2 and older, please use
kubectl -n keptn delete -f https://raw.githubusercontent.com/keptn-contrib/unleash-service/release-0.3.2/deploy/service.yaml unleash-service by default reads the Kubernetes secret unleash, which should contain credentials and URL for your unleash server, e.g.:
kubectl -n keptn create secret generic unleash \
--from-literal="UNLEASH_SERVER_URL=http://your-unleash-server.dev/api" \
--from-literal="UNLEASH_USER=<UNLEASH-USERNAME>" \
--from-literal="UNLEASH_TOKEN=<UNLEASH-PASSWORD>"After changing this value, you might need to restart unleash-service, e.g.,
kubectl -n keptn delete pods -l app.kubernetes.io/instance=unleash-serviceDevelopment can be conducted using any GoLang compatible IDE/editor (e.g., Jetbrains GoLand, VSCode with Go plugins).
It is recommended to make use of branches as follows:
main/mastercontains the latest potentially unstable version- create a new branch for any changes that you are working on, e.g.,
feature/my-cool-stufforbug/overflow - once ready, create a pull request from that branch back to the
main/masterbranch - use semantic commits and Pull Request titles
When writing code, it is recommended to follow the coding style suggested by the Golang community.
To manually verify your changes, please follow the guide in the example/ folder.
It is assumed that the current development takes place in the main branch (either via Pull Requests or directly).
Creating a release is as simple as using the Create pre-release and Create release workflows.
Note: Creating a pre-release will actually create a GitHub pre-release and tag the latest commit on the specified branch. When creating a release, only a draft release as well as a pull request are created. You still need to publish the draft release and merge the Pull Request.