Giter Site home page Giter Site logo

kubeshop / botkube Goto Github PK

View Code? Open in Web Editor NEW
2.0K 26.0 291.0 20.63 MB

An app that helps you monitor your Kubernetes cluster, debug critical deployments & gives recommendations for standard practices

Home Page: https://botkube.io

License: MIT License

Dockerfile 0.06% Shell 1.20% Go 98.33% Makefile 0.28% Mustache 0.13%
kubernetes kubernetes-monitoring kubernetes-controller chatops botops chatbot kubebot botkube bot kubernetes-bot

botkube's Introduction

Botkube Logo Light

Botkube is a messaging bot for monitoring and debugging Kubernetes clusters.

Latest Release License Slack CI Build Go Docs

Overview

Botkube is a troubleshooting and monitoring solution that empowers DevOps teams to work more efficiently, enables developers to troubleshoot their applications without special Kubernetes access or knowledge, and improves reliability by delivering timely, context-enhanced notifications about events in your Kubernetes environments. It integrates with multiple communication platforms, such as Slack, Microsoft Teams, Discord, or Mattermost. Botkube monitors events from various sources, allows you to securely run commands, and run automated actions triggered by any of the plugins Botkube supports or your own custom plugins.

You can also execute kubectl, helm and other commands on your K8s, which helps debugging an application or cluster.

Getting started

Follow the official Botkube installation guide to get started.

Features

๐Ÿ’ฌ Connect to your clusters from anywhere at any time

Botkube integrates with all common messaging platforms including:

  • Microsoft Teams
  • Slack
  • Discord
  • Mattermost

๐Ÿ’ก Elevate your troubleshooting workflow with intelligent insights

Supercharge your technical workflow with our seamless alert consolidation and filtering. Gain automated intelligent insights to troubleshoot with precision and efficiency. Get alerted by Kubernetes, Prometheus, and other tools.

๐Ÿš€ See alerts, Take action

Take your ChatOps experience to new heights and go beyond just monitoring. Seamlessly take action on your clusters with ease and efficiency. Access tools like kubectl and helm right from your collaboration workspace. Collaborate with other team members in real time.

๐Ÿ“– Wait, there's more!

Read more about Botkube features on the official website.

Documentation

For full documentation, visit docs.botkube.io. The documentation sources reside on the botkube-docs repository.

Licence

This project is currently licensed under the MIT License.

botkube's People

Contributors

akankshakumari393 avatar beefcheeks avatar bhavin192 avatar brampling avatar codenio avatar dependabot[bot] avatar divya063 avatar ezodude avatar girishg4t avatar hellozee avatar huseyinbabal avatar kartik-moolya avatar lion916 avatar madebyrogal avatar mszostok avatar mugdha-adhav avatar pkosiec avatar prasadg193 avatar rajinator avatar sanketsudake avatar sgandon avatar slalwani97 avatar sumit-tembe avatar sumitkharche avatar surbhidongaonkar avatar thijsdejong avatar vaibhavp avatar vaijab avatar vinayakshnd avatar vishal-biyani avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

botkube's Issues

Image tag in Helm chart should be configurable

Is your feature request related to a problem? Please describe.
If we build BotKube image for some bug fix or want to use image with a tag like latest then one should be able to set that image tag while installing BotKube with Helm chart.

Describe the solution you'd like
Changing the version from Chart.yaml is not a clean solution, also it won't allow to set it to tag values which are not according to sem ver 2. We should have .Values.image.tag

https://helm.sh/docs/developing_charts/#charts-and-versioning

Test cases missing

Describe the bug
The test cases for the code are missing which makes it harder to verify any change(s) made to the code making testing a slow and manual process.

To Reproduce
N/A

Expected behavior
There should be unit cases with at most coverage possible.

Screenshots
N/A

Additional context
N/A

Change of name

Change name from kubeops to botkube and all references in docs etc.

[BUG] crashloop for mattermost bot on new deploy

Describe the bug
I am unable to use botkube with mattermost, am facing the following error

To Reproduce
i have tried deploying from the helm chart and via the yaml file. all needed config for mattermost is configured correctly

INFO[2019-05-09T08:37:29Z] Allowed Events - map[{Resource:clusterrole Namespace:all}:true {Resource:configmap Namespace:all}:true {Resource:daemonset Namespace:all}:true {Resource:deployment Namespace:all}:true {Resource:ingress Namespace:all}:true {Resource:job Namespace:all}:true {Resource:namespace Namespace:all}:true {Resource:node Namespace:all}:true {Resource:persistentvolume Namespace:all}:true {Resource:persistentvolumeclaim Namespace:all}:true {Resource:pod Namespace:all}:true {Resource:role Namespace:all}:true {Resource:rolebinding Namespace:all}:true {Resource:secret Namespace:all}:true {Resource:service Namespace:all}:true]
INFO[2019-05-09T08:37:29Z] Starting controller
INFO[2019-05-09T08:37:29Z] Starting mattermost bot
panic: runtime error: invalid memory address or nil pointer dereference
	panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x30 pc=0x115de22]

goroutine 52 [running]:
github.com/infracloudio/botkube/vendor/github.com/mattermost/mattermost-server/model.(*WebSocketClient).Listen.func1.1(0x0)
	/go/src/github.com/infracloudio/botkube/vendor/github.com/mattermost/mattermost-server/model/websocket_client.go:101 +0x22
panic(0x1314c20, 0x2322130)
	/usr/local/go/src/runtime/panic.go:522 +0x1b5
github.com/infracloudio/botkube/vendor/github.com/mattermost/mattermost-server/model.(*WebSocketClient).Listen.func1(0x0)
	/go/src/github.com/infracloudio/botkube/vendor/github.com/mattermost/mattermost-server/model/websocket_client.go:109 +0x64
created by github.com/infracloudio/botkube/vendor/github.com/mattermost/mattermost-server/model.(*WebSocketClient).Listen
	/go/src/github.com/infracloudio/botkube/vendor/github.com/mattermost/mattermost-server/model/websocket_client.go:99 +0x3f

[BUG] Fresh deploy in Kubernetes 1.14.1 not working

Describe the bug
Installed Slack App in a channel, ran the kubernetes deploy both via kubectl apply and helm (same issue), the bot is in the channel, it sends notifications, it responds to ping but does not respond to any other command.

A look at the logs from the backend pod shows:
INFO[2019-04-30T18:49:54Z] Invalid request. Dumping the response

To Reproduce
Steps to reproduce the behavior:

  1. Follow installation instructions using a Kubernetes 1.14.1 cluster
  2. Try to do a @BotKube get pods

Expected behavior
Expected the bot respond with something.

Screenshots
image

Additional context
Kubernetes 1.14.1 cluster running in bare metal. Private Slack team

Restart BotKube pod if configmap is updated

Is your feature request related to a problem? Please describe.
BotKube pod should be automatically restarted if someone edits the botkube-configmap in runtime so that BotKube controller starts using with the updated config. This will reduce effort of redeploying complete BotKube stack just for minor configuration changes

Describe the solution you'd like
We already have informers registered to watch lifecycle events of resources, we can catch changes in botkube-configmap and exit if is is updated. Deployment controller will automatically create a new BotKube pod.

Add support for RocketChat

It would be a good addition if we can have RocketChat support as well.
https://rocket.chat/docs/bots/

Describe the solution you'd like
The Go SDK is still in very early stage. Once it has some releases we can try to use that to implement support for RocketChat.

https://github.com/RocketChat/Rocket.Chat.Go.SDK

About Rocket.Chat https://rocket.chat

Open Source Team Communication
Rocket.Chat is free, unlimited and open source. Replace email, HipChat & Slack with the ultimate team chat software solution.

[BUG] BotKube is sending older events when configured to watch update events

Describe the bug
A clear and concise description of what the bug is.

When BotKube is configured to watch update events of the resource. Each time when BotKube restarts, we are getting older update event for that pod

To Reproduce
Steps to reproduce the behavior:

  1. Deploy BotKube to watch updates on job resource:
  - name: jobs
    namespaces:
      - all
    events:
      - create
      - delete
      - error
      - update
  1. Create/delete jobs
  2. Restart BotKube and you should get notification of older events once BotKube starts

Expected behavior
BotKube should skip older update events on a resource

Telegram Support

Is your feature request related to a problem? Please describe.
Telegram support is missing from botkube

Describe the solution you'd like
Telegram support for Botkube
https://telegram.org/

[BUG] Do not dump auth token in `@BotKube notifier showconfig` command response

Describe the bug
As of now, @BotKube notifier showconfig command responds with BotKube config containing BotKube auth Token. We should hide the token in config body

To Reproduce
@BotKube notifier showconfig

Expected behavior
BotKube auth token should not be accessible via command responses as will as logs of the BotKube backend

Capability to disable specific filters

Is your feature request related to a problem? Please describe.
There should be a way to enable/disable running of particular filters.

Describe the solution you'd like
I configuration file, we should be able specify the list of filters we want to run

[BUG] mattermost self-signed certificate

Describe the bug
I have private mattermost server with self-signed certificate. I'm tried to add custom CA to docker container.

INFO[2019-04-16T06:44:07Z] Allowed Events - map[{Resource:clusterrole Namespace:all}:true {Resource:configmap Namespace:all}:true {Resource:daemonset Namespace:all}:true {Resource:deployment Namespace:all}:true {Resource:ingress Namespace:all}:true {Resource:job Namespace:all}:true {Resource:namespace Namespace:all}:true {Resource:node Namespace:all}:true {Resource:persistentvolume Namespace:all}:true {Resource:persistentvolumeclaim Namespace:all}:true {Resource:pod Namespace:all}:true {Resource:role Namespace:all}:true {Resource:rolebinding Namespace:all}:true {Resource:secret Namespace:all}:true {Resource:service Namespace:all}:true]
DEBU[2019-04-16T06:44:07Z] Registering the filter&{}
DEBU[2019-04-16T06:44:07Z] Registering the filter&{}
DEBU[2019-04-16T06:44:07Z] Registering the filter&{}
INFO[2019-04-16T06:44:07Z] Starting controller
INFO[2019-04-16T06:44:07Z] Starting mattermost bot
panic: runtime error: invalid memory address or nil pointer dereference
        panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x30 pc=0x115de22]

goroutine 53 [running]:
github.com/infracloudio/botkube/vendor/github.com/mattermost/mattermost-server/model.(*WebSocketClient).Listen.func1.1(0x0)
        /go/src/github.com/infracloudio/botkube/vendor/github.com/mattermost/mattermost-server/model/websocket_client.go:101 +0x22
panic(0x1314c20, 0x2322130)
        /usr/local/go/src/runtime/panic.go:522 +0x1b5
github.com/infracloudio/botkube/vendor/github.com/mattermost/mattermost-server/model.(*WebSocketClient).Listen.func1(0x0)
        /go/src/github.com/infracloudio/botkube/vendor/github.com/mattermost/mattermost-server/model/websocket_client.go:109 +0x64
created by github.com/infracloudio/botkube/vendor/github.com/mattermost/mattermost-server/model.(*WebSocketClient).Listen
        /go/src/github.com/infracloudio/botkube/vendor/github.com/mattermost/mattermost-server/model/websocket_client.go:99 +0x3f

To Reproduce
Steps to reproduce the behavior:

  1. Add custom CA certificate to /usr/local/share/ca-certificates
  2. Run docker container with /bin/sh -c "apk add --update --no-cache ca-certificates && update-ca-certificates --fresh && /go/bin/botkube"

Additional context
Run with defaults:

/bin/sh -c "/go/bin/botkube"
INFO[2019-04-16T06:57:01Z] Allowed Events - map[{Resource:clusterrole Namespace:all}:true {Resource:configmap Namespace:all}:true {Resource:daemonset Namespace:all}:true {Resource:deployment Namespace:all}:true {Resource:ingress Namespace:all}:true {Resource:job Namespace:all}:true {Resource:namespace Namespace:all}:true {Resource:node Namespace:all}:true {Resource:persistentvolume Namespace:all}:true {Resource:persistentvolumeclaim Namespace:all}:true {Resource:pod Namespace:all}:true {Resource:role Namespace:all}:true {Resource:rolebinding Namespace:all}:true {Resource:secret Namespace:all}:true {Resource:service Namespace:all}:true]
DEBU[2019-04-16T06:57:01Z] Registering the filter&{}
DEBU[2019-04-16T06:57:01Z] Registering the filter&{}
DEBU[2019-04-16T06:57:01Z] Registering the filter&{}
INFO[2019-04-16T06:57:01Z] Starting controller
INFO[2019-04-16T06:57:01Z] Starting mattermost bot
ERRO[2019-04-16T06:57:06Z] There was a problem pinging the Mattermost server URL: https://private.server
Error: https://private.server/api/v4/config/client?format=old: model.client.connecting.app_error, Get https://private.server/api/v4/config/client?format=old: x509: certificate signed by unknown authority
ERRO[2019-04-16T06:57:06Z] Error in connecting to Mattermost team TEAM
Error: https://private.server/api/v4/teams/name/TEAM: model.client.connecting.app_error, Get https://private.server/api/v4/teams/name/TEAM: x509: certificate signed by unknown authority

Add ElasticSearch support

BotKube should be able to send events to Elastic search

As of now, we have only Slack as a medium to send events. Since we already have sender interface implemented, it should be very straight forward to add new channels.

Describe the solution you'd like

  • User should be able to provide ELS credentials in the configuration file
  • User should be able to configure the events he/she is interested in
  • BotKube should forward events to the ELS collector if an event occurs

Make target for building BotKube binary

Should add a rule Makefile for this? As of now, make build builds docker image for Botkube. Instead of that we can have make build- to build binary and make image - to build docker image.

#79 (comment)

We can have something like make container-image as target to build container image

Add Helm Chart to helm/charts stable/incubator repo?

Helm Operates a "stable" and "incubator" repository of charts that are included without any additional configuration to the helm command. It appears that all that would be required to have the helm chart in this repo included in the default repository would be to open a pull request to helm/charts (assuming there were no objections to the chart). If the chart was in the stable or incubator repositories it would eliminate the git checkout step from the installation process.

I'd be happy to make a copy of the current state of the chart in this repo and make a PR from my fork of helm/charts but I thought I'd ask permission / guidance first.

Make develop as a default branch

Is your feature request related to a problem? Please describe.
We should make develop as a default branch.
There should be a CI job which builds :latest image once any PR gets merged into develop

[BUG] Add a way to set Log level

Describe the bug
Currently, there is no way to change logging level. We should be able to set logging level by setting LOG_LEVEL env var

Add "error" option to resource level BotKube config

Is your feature request related to a problem? Please describe.
As of now, if someone is interested in getting only error/failure events for particular resources, he/she has to add following configuration in BotKube:

  ## Resources you want to watch
  resources:
    - name: NAME_OF_THE_RESOURCE  
      namespaces: 
        - all

  # K8S error/warning events you want to receive for the configured resources
  events:
    types:
      - warning

This is quite difficult to read and understand. There should be an easier way to configure this.

Describe the solution you'd like
Instead of having events as a separate field in the BotKube configuration, we should have error as a additional field at resource level configuration

  ## Resources you want to watch
  resources:
    - name: NAME_OF_THE_RESOURCE  
      namespaces: 
        - all
      events:
        - create
        - update
        - delete
        - error

Customizable (or one-liner) notifications

Is your feature request related to a problem? Please describe.
Just a nitpick, but the notifications for events such as "deployment created" are pretty large in size.

Describe the solution you'd like
You could probably easily fit all the info on one (Kind/Name/Namespace/Message/Cluster) into a single line, e.g., "${cluster}/${namespace} - ${kind} ${name}: ${message}". If there are additional fields you could probably let the user customize this in the ConfigMap.

Describe alternatives you've considered

Additional context

Migrating to "Slash Commands" for `help`

After multicluster support, we are getting multiple responses for single "@botkube help" request. To handle this, we are planning to use Slash Commands in slack for BotKube help (/botkubehelp).
The following changes are needed in backend controller as well as docs side:

  • Change help command in documentation from @BotKube help to /botkubehelp
  • Update related screenshots in docs.
  • Remove support for @BotKube help command from controller

Include job status (succeeded/failed) with notification

Is your feature request related to a problem? Please describe.
Hi, I am trying BotKube but I am not sure if this is already possible. I would like to receive notifications when jobs are completed, including the status, so that I know whether the job failed or succeeded. This is particularly useful for scheduled backups.

Describe the solution you'd like
From what I can see, at the moment I receive a notification when a job is created, but I don't receive a notification when the job is completed that includes the status, so I would have to manually check if the job failed with kubectl. Also if I enable kubectl support for BotKube, commands like describing a pod or job don't seem to work. I get back Command not supported. Please run /botkubehelp to see supported commands.

Describe alternatives you've considered
The only alternative I know about is Kubewatch, but that also doesn't report the status of a completed job.

Thanks in advance!

Notify user to upgrade if newer version is available

Is your feature request related to a problem? Please describe.
BotKube user should be notified to upgrade BotKube backend if newer version released.

Describe the solution you'd like
As of now, we have decided to check and notify on the following events:

  • on BotKube backend startup
  • check for updates periodically and notify user once

[BUG] "Invalid Request. Dumping the Response" error when running command on slack

Hi - I am currently testing and playing around with this. Everytime I run "@botkube get pods" on slack, it does not give any response. I looked at the logs and I get below error:

INFO[2019-06-13T18:46:11Z] Invalid request. Dumping the response        
INFO[2019-06-13T18:51:43Z] Invalid request. Dumping the response        
INFO[2019-06-13T18:51:52Z] Invalid request. Dumping the response        
INFO[2019-06-13T18:53:53Z] Invalid request. Dumping the response        
INFO[2019-06-13T18:55:20Z] Invalid request. Dumping the response        
INFO[2019-06-13T18:55:31Z] Invalid request. Dumping the response  

I ran both helm and deploy all yaml file kubernetes manifests and both gave the same error. Am I missing anything? I setup the slack channel, the token, cluster name, and "allowkubectl: true" so I assume everything is setup?

If I enable events, I can see it populating in slack but slack can't seem to communicate correctly to the kubernetes cluster. Am I missing something?

Send clustername in the event message

botkube should read clustername provided in config file and send that name along with the events to slack so events from the multiple clusters can be differentiated

Add support for Discordapp

Is your feature request related to a problem? Please describe.
It would be nice if we can get support for discordapp.com
There is no software like this out there that has support for discord.
There are plenty of API Wrappers for discord out there
(Link to a wrapper for golang:) https://github.com/bwmarrin/discordgo

Describe the solution you'd like
Discord has a rich API and Role based secrurity (Eg limiting who can send/read/see channels etc.)

Additional context
discordapp.com
https://discordapp.com/developers/applications/

Segregate botkube commands in processors

Currently, we have two types of commands,

  1. Botkube commands - commands which are botkube specific
  2. Kubectl commands - kubectl commands which are executed on kubernetes cluster

We have a single parser code which is executing botkube commands. We can breakdown this code into processors so that we can easily add new commands in botkube commands set.

Basically something similar to filter engine for recommendations.

[BUG] unable to find service account in clusterrolebinding.

I installed botkube manifests using kubectl, all the resources created in default namespace. In clusterrolebinding serviceaccount namespace is botkube that's why it is unable to get that service account and I am getting this error.

apiVersion: v1
kind: ServiceAccount
metadata:
  name: botkube-sa
  labels:
    app: botkube
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: botkube-clusterrolebinding
  labels:
    app: botkube
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: botkube-clusterrole
subjects:
- kind: ServiceAccount
  name: botkube-sa
  namespace: botkube

Log of botkube pod

INFO[2019-06-10T11:17:27Z] Allowed Events - map[{Resource:clusterrole Namespace:all}:true {Resource:configmap Namespace:all}:true {Resource:daemonset Namespace:all}:true {Resource:deployment Namespace:all}:true {Resource:ingress Namespace:all}:true {Resource:job Namespace:all}:true {Resource:namespace Namespace:all}:true {Resource:node Namespace:all}:true {Resource:persistentvolume Namespace:all}:true {Resource:persistentvolumeclaim Namespace:all}:true {Resource:pod Namespace:all}:true {Resource:role Namespace:all}:true {Resource:rolebinding Namespace:all}:true {Resource:secret Namespace:all}:true {Resource:service Namespace:all}:true] 
INFO[2019-06-10T11:17:27Z] Starting controller                          
INFO[2019-06-10T11:17:27Z] Starting slack bot                           
INFO[2019-06-10T11:17:27Z] Registering resource lifecycle informer      
INFO[2019-06-10T11:17:27Z] Adding informer for resource:pods namespace:all 
INFO[2019-06-10T11:17:27Z] Adding informer for resource:services namespace:all 
INFO[2019-06-10T11:17:27Z] Adding informer for resource:deployments namespace:all 
INFO[2019-06-10T11:17:27Z] Adding informer for resource:ingresses namespace:all 
INFO[2019-06-10T11:17:27Z] Adding informer for resource:nodes namespace:all 
INFO[2019-06-10T11:17:27Z] Adding informer for resource:namespaces namespace:all 
INFO[2019-06-10T11:17:27Z] Adding informer for resource:persistentvolumes namespace:all 
INFO[2019-06-10T11:17:27Z] Adding informer for resource:secrets namespace:all 
INFO[2019-06-10T11:17:27Z] Adding informer for resource:configmaps namespace:all 
INFO[2019-06-10T11:17:27Z] Adding informer for resource:daemonsets namespace:all 
INFO[2019-06-10T11:17:27Z] Adding informer for resource:jobs namespace:all 
INFO[2019-06-10T11:17:27Z] Adding informer for resource:roles namespace:all 
INFO[2019-06-10T11:17:27Z] Adding informer for resource:rolebindings namespace:all 
INFO[2019-06-10T11:17:27Z] Adding informer for resource:clusterroles namespace:all 
INFO[2019-06-10T11:17:27Z] Adding informer for resource:nodes namespace:all 
INFO[2019-06-10T11:17:27Z] Registering kubernetes events informer for types: [warning] 
INFO[2019-06-10T11:17:27Z] Registering watcher on configfile /config/config.yaml 
E0610 11:17:27.170659       9 reflector.go:134] github.com/infracloudio/botkube/pkg/controller/controller.go:89: Failed to list *v1.ConfigMap: configmaps is forbidden: User "system:serviceaccount:default:botkube-sa" cannot list resource "configmaps" in API group "" at the cluster scope
E0610 11:17:27.174755       9 reflector.go:134] github.com/infracloudio/botkube/pkg/controller/controller.go:89: Failed to list *v1.Role: roles.rbac.authorization.k8s.io is forbidden: User "system:serviceaccount:default:botkube-sa" cannot list resource "roles" in API group "rbac.authorization.k8s.io" at the cluster scope
E0610 11:17:27.174849       9 reflector.go:134] github.com/infracloudio/botkube/pkg/controller/controller.go:89: Failed to list *v1beta1.Ingress: ingresses.extensions is forbidden: User "system:serviceaccount:default:botkube-sa" cannot list resource "ingresses" in API group "extensions" at the cluster scope
E0610 11:17:27.174992       9 reflector.go:134] github.com/infracloudio/botkube/pkg/controller/controller.go:89: Failed to list *v1.Node: nodes is forbidden: User "system:serviceaccount:default:botkube-sa" cannot list resource "nodes" in API group "" at the cluster scope
E0610 11:17:27.176454       9 reflector.go:134] github.com/infracloudio/botkube/pkg/controller/controller.go:89: Failed to list *v1.Job: jobs.batch is forbidden: User "system:serviceaccount:default:botkube-sa" cannot list resource "jobs" in API group "batch" at the cluster scope
E0610 11:17:27.176821       9 reflector.go:134] github.com/infracloudio/botkube/pkg/controller/controller.go:89: Failed to list *v1.PersistentVolume: persistentvolumes is forbidden: User "system:serviceaccount:default:botkube-sa" cannot list resource "persistentvolumes" in API group "" at the cluster scope
E0610 11:17:27.177342       9 reflector.go:134] github.com/infracloudio/botkube/pkg/controller/controller.go:89: Failed to list *v1.Secret: secrets is forbidden: User "system:serviceaccount:default:botkube-sa" cannot list resource "secrets" in API group "" at the cluster scope
E0610 11:17:27.177663       9 reflector.go:134] github.com/infracloudio/botkube/pkg/controller/controller.go:89: Failed to list *v1.RoleBinding: rolebindings.rbac.authorization.k8s.io is forbidden: User "system:serviceaccount:default:botkube-sa" cannot list resource "rolebindings" in API group "rbac.authorization.k8s.io" at the cluster scope
E0610 11:17:27.177689       9 reflector.go:134] github.com/infracloudio/botkube/pkg/controller/controller.go:130: Failed to list *v1.Event: events is forbidden: User "system:serviceaccount:default:botkube-sa" cannot list resource "events" in API group "" at the cluster scope
E0610 11:17:27.177730       9 reflector.go:134] github.com/infracloudio/botkube/pkg/controller/controller.go:89: Failed to list *v1.Node: nodes is forbidden: User "system:serviceaccount:default:botkube-sa" cannot list resource "nodes" in API group "" at the cluster scope
E0610 11:17:27.177777       9 reflector.go:134] github.com/infracloudio/botkube/pkg/controller/controller.go:89: Failed to list *v1.ClusterRole: clusterroles.rbac.authorization.k8s.io is forbidden: User "system:serviceaccount:default:botkube-sa" cannot list resource "clusterroles" in API group "rbac.authorization.k8s.io" at the cluster scope
E0610 11:17:27.177883       9 reflector.go:134] github.com/infracloudio/botkube/pkg/controller/controller.go:89: Failed to list *v1.Service: services is forbidden: User "system:serviceaccount:default:botkube-sa" cannot list resource "services" in API group "" at the cluster scope
E0610 11:17:27.177955       9 reflector.go:134] github.com/infracloudio/botkube/pkg/controller/controller.go:89: Failed to list *v1beta1.DaemonSet: daemonsets.extensions is forbidden: User "system:serviceaccount:default:botkube-sa" cannot list resource "daemonsets" in API group "extensions" at the cluster scope
E0610 11:17:27.178183       9 reflector.go:134] github.com/infracloudio/botkube/pkg/controller/controller.go:89: Failed to list *v1beta1.Deployment: deployments.extensions is forbidden: User "system:serviceaccount:default:botkube-sa" cannot list resource "deployments" in API group "extensions" at the cluster scope

To Reproduce
Steps to reproduce the behavior:

kubectl apply -f https://raw.githubusercontent.com/infracloudio/botkube/master/deploy-all-in-one.yaml

Reduce docker image size

Currently, docker image size is around 572 MB. The major reason behind that is, we are coping source code into the docker base image and building the binary there (https://github.com/infracloudio/botkube/blob/develop/build/Dockerfile). Instead we should be generating binary on local env and copy that binary into the docker image.
So we should have architecture specific build scripts (atleast linux/amd64 for now) which will generate binary and we should modify Dockerfile to just copy generated binary to docker image.
Something like this: https://github.com/fission/fission-workflows/tree/master/build

Add Skip field BotKube Event

Describe the bug
We need to add Skip field in BotKube struct so that if any of filters ask to skip the reporting of the event to slack, we should be able to that.
Filter Engine should not pass event further if it observes Skip fieldset.

Expected behaviour
Filter sets Skip field in BotKube Struct, FilterEngine should stop processing event.

Additional context
We had a use case where a BotKube user reported a lot of pods where getting created through CronJob and he was not interested in Create/Delete events for them. The filter could not allow skipping of events currently.

Publish messages when bot started/stopped

We should notify on communication channel for following scenarios

  1. Bot starts initially
  2. Bot goes under graceful shutdown, or bot is aware of its shutdown

Any kubernetes actions which result in starting or stopping of bot should be considered.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.