botkube
botkube copied to clipboard
Release 0.13 and promote it
As this will be a first feature-packed release since ~1,5 years, it would be great to promote it and also gather feedback from the community. Here are some ideas:
Release
- [ ] Revert docs PR
- https://github.com/kubeshop/botkube-docs/pull/112/files
- [ ] Go through the release process instruction (https://github.com/infracloudio/botkube-docs/pull/74) and release 0.13
- Consider alpha/beta releases to gather community feedback
- [ ] Describe any breaking changes in the GitHub release
Community-related tasks (nice to have)
- prepare survey for BotKube users (to know how the community uses BotKube, and build priorities for future based on the feedback)
- Loosely related issue: #506
- create a blog post (target location: to discuss)
- cross-post the blog post (e.g. Medium, Dev.to)
- Share the news in social media (e.g. Reddit, Hacker News, LinkedIn, Twitter)
- Prepare an online meetup presentation based on 0.13 features
- Think about new places for where BotKube can be promoted.
- For example, awesome lists. Project is already mentioned in https://github.com/ramitsurana/awesome-kubernetes, but there might be additional lists where it can be promoted as well
Update Vault CI driver tutorial:
- https://github.com/infracloudio/botkube-docs/pull/82/files#diff-a7767b31519dcedfad251db2f28b9e7e3cc32fe99151d488bb32f7ba311fc523R133
Release activities
-
✅ Ensure that all security vulnerabilities are fixed or mitigated
- assignee: @pkosiec
- NOTE: We are not affected. PR with dependency bump waits for 0.14: https://github.com/kubeshop/botkube/pull/700
-
✅ Create the
0.13.0-rc.1
release (tag only)- assignee: @mszostok
-
✅ Create the
0.13.0
release (tag only)- assignee: @mszostok
-
✅ Test the release candidate
- assignee: team
-
✅ Prepare PR with updated BotKube documentation
- assignee: @pkosiec
- NOTE: Revert docs changes as described in the issue. Ensure that all docs are up-to-date. ✅ PR created, waiting for final 0.13: https://github.com/kubeshop/botkube-docs/pull/133
-
✅ Check if we described all breaking changes in the #614 release summary and if it's rendered correctly.
- assignee: @huseyinbabal
Descoped:
- Prepare the release notes
- assignee: @brampling
- Create a blog post and cross-post it (e.g. Medium, Dev.to)
- assignee: @brampling
- Share the news on social media (e.g. Reddit, Hacker News, LinkedIn, Twitter, Slack)
- assignee: @brampling
Testing
Tasks:
-
✅ Name: Slack
- assignee: @pkosiec
- NOTE: Tested just the filters and channel forwarding. Other stuff is tested via E2E tests.
-
✅ Name: Mattermost
- assignee: @madebyrogal
-
✅ Name: Discord
- assignee: @mszostok
- docs update: https://github.com/kubeshop/botkube-docs/pull/132
-
✅ Name: Elasticsearch
- assignee: @ezodude
- NOTE: works well (based on
main
).- docs update: PR Update Elasticsearch installation docs.
-
✅ Name: Webhook
- assignee: @huseyinbabal
- docs update: https://github.com/kubeshop/botkube-docs/pull/135
-
✅ Name: MS Teams
- assignee: @mszostok
- NOTE:
- Bugs fixes: https://github.com/kubeshop/botkube/pull/702
- docs update: https://github.com/kubeshop/botkube-docs/pull/132
Scenarios
Helm values YAML:
Click me
communications:
'default-group':
slack:
enabled: true
channels:
'default':
name: "team-a"
bindings:
executors:
- kubectl-read-only
- kubectl-wait-cmd
- kubectl-exec-cmd
- kubectl-allow-all
sources:
- k8s-events
'secondary':
name: "admin"
bindings:
executors:
- kubectl-read-only
sources:
- k8s-updates
discord:
channels:
'default':
id: ""
bindings:
executors:
- kubectl-read-only
- kubectl-wait-cmd
- kubectl-exec-cmd
- kubectl-allow-all
sources:
- k8s-events
'secondary':
id: ""
bindings:
executors:
- kubectl-read-only
sources:
- k8s-other
sources:
'k8s-events':
kubernetes:
resources:
- name: v1/configmaps
namespaces:
include:
- (botk.*|default)
events:
- create
- update
- delete
'k8s-other':
kubernetes:
namespaces:
include:
- botkube
exclude:
-
resources:
- name: v1/pods
namespaces:
include:
- ".*"
exclude:
- ".*-system"
- "default"
events:
- create
- delete
executors:
'kubectl-read-only':
kubectl:
enabled: true
namespaces:
include:
- (botk.*|default) # to ensure that the regex works properly and both 'botkube' and 'default' NS will be matched
'kubectl-wait-cmd':
kubectl:
enabled: true
namespaces:
include:
- ".*"
ignore:
- ".*-system" # to ensure that ignore regex works properly
commands:
verbs: [ "wait" ]
restrictAccess: false
'kubectl-exec-cmd':
kubectl:
enabled: false
namespaces:
include:
- botkube
- default
commands:
verbs: [ "exec" ]
restrictAccess: false
'kubectl-allow-all':
kubectl:
enabled: true
namespaces:
include:
- ".*"
commands:
verbs: [ "get" ]
resources: [ "deployments" ]
'kubectl-not-bound-to-any-channel':
kubectl:
enabled: true
namespaces:
include:
- ".*"
commands:
verbs: [ "port-forward" ]
resources: [ "deployments" ]
settings:
clusterName: sample
upgradeNotifier: false
extraAnnotations:
botkube.io/disable: "true"
e2eTest:
slack:
testerAppToken: "" # Provide a valid token for BotKube tester app
additionalContextMessage: "" # Optional additional context
Ping
@BotKube ping
Filters
-
List
@BotKube filters list
exp output:
FILTER ENABLED DESCRIPTION NodeEventsChecker true Sends notifications on node level critical events. ObjectAnnotationChecker true Checks if annotations <http://botkube.io/*|botkube.io/*> present in object specs and filters them.`
-
Test ObjectAnnotationChecker filter:
- Create Pod and no notification should be sent
apiVersion: v1 kind: Pod metadata: name: nginx namespace: botkube annotations: botkube.io/disable: "true" spec: containers: - name: nginx image: nginx:1.14.2 ports: - containerPort: 80
- Disable annotation checker
@BotKube filters disable ObjectAnnotationChecker
- Check that it is disabled
@BotKube filters list
- Recreate Pod and notification should be sent
Commands
- Test on
team
andadmin
channels
you should see different settings based on the channel bindings.@BotKube commands list
- With cluster name
@BotKube commands list --cluster-name={name}
Annotations
- Test
"botkube.io/channel": ""
custom routing
Create a Pod:
apiVersion: v1
kind: Pod
metadata:
name: nginx
namespace: botkube
annotations:
botkube.io/channel: "general" # different channel than the configured one by default
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
Delete it and see if all events are coming to the general
channel.
Kubectl executor
-
Get deployments from a
other
namespace (NS restriction)@BotKube get deploy -n other
This should work only on one channel. On the second one, you should get:
Sorry, the kubectl 'get' command cannot be executed in the 'other' Namespace on cluster 'dev'. Use 'commands list' to see allowed commands.
-
Get all deployments (all NS restriction)
@BotKube get deploy -A
This should work only on one channel. On the second one, you should get:
Sorry, the kubectl 'get' command cannot be executed for all Namespaces on cluster 'dev'. Use 'commands list' to see allowed commands.
-
Get Ingress (resource restriction)
@BotKube get ingress
This shouldn't work on both channels:
Sorry, the kubectl command is not authorized to work with 'ingress' resources in the 'default' Namespace on cluster 'dev'. Use 'commands list' to see allowed commands.
-
Run unknown command (verb restriction)
@BotKube drain
This shouldn't work on both channels:
Command not supported. Please run /botkubehelp to see supported commands.
-
Run invalid command
@BotKube get
This shouldn't work on both channels:
Cluster: dev You must specify the type of resource to get. Use "kubectl api-resources" for a complete list of supported resources. error: Required resource not specified. Use "kubectl explain <resource>" for a detailed description of that resource (e.g. kubectl explain pods). See 'kubectl get -h' for help and examples exit status 1
-
Run wait command (check binding merging)
@BotKube wait deployment -n botkube botkube --for condition=Available=True
This should work only on one channel. On the second one, you should get:
Command not supported. Please run /botkubehelp to see supported commands.
Recommendations
-
Create pod with
latest
image tag.kubectl run nginx --image nginx
You should get the recommendation
-
Disable recommendation
helm upgrade botkube --namespace botkube --reuse-values -f /tmp/values.yaml --set sources.k8s-events.kubernetes.recommendations.pod.noLatestImageTag=false --version 0.13.0-rc.1 botkube/botkube
-
Create pod with
latest
image tag.ubectl run nginx-other --image nginx
You shouldn't get the recommendation
-
Enable recommendation
helm upgrade botkube --namespace botkube --reuse-values -f /tmp/values.yaml --set sources.k8s-events.kubernetes.recommendations.pod.noLatestImageTag=true --version 0.13.0-rc.1 botkube/botkube
-
Create pod with
latest
image tag.ubectl run nginx-other-v2 --image nginx
You should get the recommendation
K8s source
- Check if namespace is properly
included
both with regex and exact name - Check if namespace is properly
excluded
both with regex and exact name
- Event ConfigMaps (only one channel)
- Should work for
(botk.*|default)
kubectl create configmap my-config-botkube --from-literal=key1=config1 -n botkube
kubectl create configmap my-config-def --from-literal=key1=config1 -n default
kubectl create ns botkubik && kubectl create configmap my-config-botkubik --from-literal=key1=config1 -n botkubik
- Shouldn't work for other that
(botk.*|default)
:kubectl create ns foo && kubectl create configmap my-config-foo --from-literal=key1=config1 -n foo
kubectl create ns xyz && kubectl create configmap my-config-xyz --from-literal=key1=config1 -n xyz
- Pods (only one channel)
- Should work for all NS except
(".*-system", "default")
:kubectl run nginx --image nginx -n foo
kubectl create ns baz && kubectl run nginx --image nginx -n baz
kubectl create ns test && kubectl run nginx --image nginx -n test
- Shouldn't work for
(".*-system", "default")
:kubectl create ns istio-system && kubectl run nginx --image nginx:1.23 -n istio-system
kubectl create ns botkube-system && kubectl run nginx --image nginx:1.23 -n botkube-system
kubectl create ns argo-system && kubectl run nginx --image nginx:1.23 -n argo-system
kubectl run nginx --image nginx:1.23 -n default
Is there a requirement for a 'Migrating to BotKube 0.13.0' guide?
Or is that what the upcoming Blog Post is designed to do? Also, found a related description in this issue.
Added myself to test two integrations, will start them on Thursday 25th.
But if someone else gets there faster (because of Timezone start time differences) feel free to grab them.