Skip to content

Instantly share code, notes, and snippets.

@darkhelmet
Last active January 21, 2021 19:23
Show Gist options
  • Save darkhelmet/9a61ecca6aaf7f4a4dd19ef0cfdccea0 to your computer and use it in GitHub Desktop.
Save darkhelmet/9a61ecca6aaf7f4a4dd19ef0cfdccea0 to your computer and use it in GitHub Desktop.
resource "kubernetes_namespace" "botkube" {
metadata {
name = "botkube"
}
}
resource "helm_release" "botkube" {
name = "botkube"
repository = "https://infracloudio.github.io/charts"
chart = "botkube"
version = "v0.11.0"
max_history = 10
namespace = kubernetes_namespace.botkube.metadata[0].name
set {
name = "communications.slack.enabled"
value = "true"
}
set {
name = "communications.slack.channel"
value = "k8s-${var.env}-${var.app}"
}
set_sensitive {
name = "communications.slack.token"
value = data.vault_generic_secret.devops.data["BOTKUBE_TOKEN"]
}
set {
name = "config.settings.clustername"
value = "${var.env}-${var.app}"
}
set {
name = "config.settings.kubectl.enabled"
value = "true"
}
set {
name = "config.settings.kubectl.restrictAccess"
value = "true"
}
set {
name = "image.tag"
value = "v0.11.0"
}
values = [
# If the directory is named botkube (same as the chart) you'll get `chart.metadata` is required errors.
# Hence why it's botkube.d
templatefile("${path.module}/botkube.d/values.yaml", { jenkins_agents_namespace = "devops-jenkins-agents" })
]
}
config:
## Resources you want to watch
resources:
- name: v1/pods # Name of the resource. Resource name must be in group/version/resource (G/V/R) format
# resource name should be plural (e.g apps/v1/deployments, v1/pods)
namespaces: # List of namespaces, "all" will watch all the namespaces
include:
- all
ignore: # List of namespaces to be ignored (omitempty), used only with include: all, can contain a wildcard (*)
- ${jenkins_agents_namespace} # example : include [all], ignore [x,y,secret-ns-*]
events: # List of lifecycle events you want to receive, e.g create, update, delete, error OR all
- create
- delete
- error
- name: v1/services
namespaces:
include:
- all
ignore:
-
events:
- create
- delete
- error
- name: apps/v1/deployments
namespaces:
include:
- all
ignore:
-
events:
- create
- update
- delete
- error
updateSetting:
includeDiff: true
fields:
- spec.template.spec.containers[*].image
- status.availableReplicas
- name: apps/v1/statefulsets
namespaces:
include:
- all
ignore:
-
events:
- create
- update
- delete
- error
updateSetting:
includeDiff: true
fields:
- spec.template.spec.containers[*].image
- status.readyReplicas
- name: networking.k8s.io/v1beta1/ingresses
namespaces:
include:
- all
ignore:
-
events:
- create
- delete
- error
- name: v1/nodes
namespaces:
include:
- all
ignore:
-
events:
- create
- delete
- error
- name: v1/namespaces
namespaces:
include:
- all
ignore:
-
events:
- create
- delete
- error
- name: v1/persistentvolumes
namespaces:
include:
- all
ignore:
-
events:
- create
- delete
- error
- name: v1/persistentvolumeclaims
namespaces:
include:
- all
ignore:
-
events:
- create
- delete
- error
- name: v1/configmaps
namespaces:
include:
- all
ignore:
-
events:
- create
- delete
- error
- name: apps/v1/daemonsets
namespaces:
include:
- all
ignore:
-
events:
- create
- update
- delete
- error
updateSetting:
includeDiff: true
fields:
- spec.template.spec.containers[*].image
- status.numberReady
- name: batch/v1/jobs
namespaces:
include:
- all
ignore:
-
events:
- create
- update
- delete
- error
updateSetting:
includeDiff: true
fields:
- spec.template.spec.containers[*].image
- status.conditions[*].type
- name: rbac.authorization.k8s.io/v1/roles
namespaces:
include:
- all
ignore:
-
events:
- create
- delete
- error
- name: rbac.authorization.k8s.io/v1/rolebindings
namespaces:
include:
- all
ignore:
-
events:
- create
- delete
- error
- name: rbac.authorization.k8s.io/v1/clusterrolebindings
namespaces:
include:
- all
ignore:
-
events:
- create
- delete
- error
- name: rbac.authorization.k8s.io/v1/clusterroles
namespaces:
include:
- all
ignore:
-
events:
- create
- delete
- error
# Custom resource example
#- name: velero.io/v1/backups
# namespaces:
# include:
# - all
# ignore:
# -
# events:
# - create
# - update
# - delete
# - error
# updateSetting:
# includeDiff: true
# fields:
# - status.phase
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment