summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKatharine Berry <ktbry@google.com>2019-04-11 15:59:24 -0700
committerKatharine Berry <ktbry@google.com>2019-04-11 16:14:45 -0700
commit6021ede2d8db897adb106f3dc3e27f3296c3e6ca (patch)
treebd03ec653ba1c10d0e403bd755b53176e7306f80
parent3fe7999cbf04864ef2b5bd49c38f190648edddab (diff)
Add initial slack config
-rw-r--r--communication/slack-config/OWNERS14
-rw-r--r--communication/slack-config/README.md64
-rw-r--r--communication/slack-config/channels.yaml297
-rw-r--r--communication/slack-config/restrictions.yaml13
-rw-r--r--communication/slack-config/template.yaml8
-rw-r--r--communication/slack-config/usergroups.yaml5
-rw-r--r--communication/slack-config/users.yaml4
7 files changed, 405 insertions, 0 deletions
diff --git a/communication/slack-config/OWNERS b/communication/slack-config/OWNERS
new file mode 100644
index 00000000..3c7f7c07
--- /dev/null
+++ b/communication/slack-config/OWNERS
@@ -0,0 +1,14 @@
+# See the OWNERS docs at https://go.k8s.io/owners
+
+# These are the primary slack moderators.
+approvers:
+- katharine
+- castrojo
+- jeefy
+- mrbobbytables
+- alejandrox1
+- jdumars
+- parispitmann
+- coderanger
+- idvoretskyi
+- idealhack
diff --git a/communication/slack-config/README.md b/communication/slack-config/README.md
new file mode 100644
index 00000000..152ae321
--- /dev/null
+++ b/communication/slack-config/README.md
@@ -0,0 +1,64 @@
+# Slack Config
+
+YAML files in this directory control the state of Slack, via
+[Tempelis](Tempelis). Updating a configuration file will result in Slack being updated
+once the change merges. If a change is not legal, a presubmit will fail.
+
+## Users
+
+There is no safe, stable way to derive a specific Slack user from any
+human-readable identifier. Instead of using Slack IDs everywhere, a single
+mapping from GitHub usernames to Slack IDs is given in `users.yaml`. To reference
+a user, they must first be added to `users.yaml`.
+
+## Channels
+
+Channels can be created by adding a new channel in `channels.yaml`. Channels
+should be sorted alphabetically. New channels will be created in accordance
+with the template specified in `template.yaml`.
+
+Deleting channels is not permitted, but a channel can be archived by specifying
+`archived: true`, or unarchived by removing it (or specifying `false`).
+
+To rename a channel, set its `id` property to its current Slack ID, then change
+the name.
+
+A fully-specified channel looks like this:
+
+```yaml
+- name: slack-admins # mandatory
+ id: C4M06S5HS # optional except when renaming
+ archived: false # optional for unarchived channels
+```
+
+## Usergroups
+
+Usergroups are pingable Slack groups. All members of a usergroup can be
+automatically added to certain channels. A usergroup must have at least one
+member. A usergroup can be removed by deleting it from the configuration.
+
+Some usergroups (e.g. `@test-infra-oncall`) are managed by other tooling. To
+prevent Tempelis from trying to deactivate these usergroups, they can be included
+on the list and marked as `external: true`. Other usergroups should look like
+this:
+
+```yaml
+- name: slack-admins # mandatory, the pingable handle
+ long_name: Slack Admins # mandatory, the human-readable name
+ description: Slack Admin Group # mandatory, a description
+ channels: # optional, a list of channels for members to auto-join
+ - slack-admins
+ members: # mandatory, a list of at least one member.
+ - castrojo # member names must be listed in users.yaml.
+ - katharine
+ - jeefy
+ - mrbobbytables
+ - alejandrox1
+ - jdumars
+ - parispitmann
+ - coderanger
+ - idvoretskyi
+ - idealhack
+```
+
+[Tempelis]: https://github.com/kubernetes-sigs/slack-infra/tree/master/tempelis
diff --git a/communication/slack-config/channels.yaml b/communication/slack-config/channels.yaml
new file mode 100644
index 00000000..ef6ac18e
--- /dev/null
+++ b/communication/slack-config/channels.yaml
@@ -0,0 +1,297 @@
+# This list contains a list of all Slack channels in alphabetical order.
+# This includes archived channels, which are marked with `archived: true`.
+
+channels:
+ - name: airflow-operator
+ - name: announcements
+ - name: apisnoop
+ - name: archived-sig-release
+ archived: true
+ - name: argentina
+ - name: arm64
+ - name: aus-nz-users
+ - name: awesome-kubernetes
+ - name: aws-authenticator
+ - name: bazel
+ - name: bootkube
+ - name: brigade
+ - name: cdk
+ - name: cert-manager
+ - name: cert-manager-dev
+ - name: chairs-and-techleads
+ - name: chartmuseum
+ - name: charts
+ - name: cka-exam-prep
+ - name: ckad-exam-prep
+ - name: client-go-docs
+ - name: cluster-addons
+ - name: cluster-api
+ - name: cluster-api-aws
+ - name: cluster-api-azure
+ - name: cluster-api-baremetal
+ - name: cluster-api-openstack
+ - name: cn-dev
+ - name: cn-events
+ - name: cn-users
+ - name: community-sites
+ - name: compliance-hipaa
+ - name: contour
+ - name: contributor-summit
+ - name: crd-installation
+ - name: crio
+ - name: de-events
+ - name: de-users
+ - name: deis-dev
+ - name: deis-users
+ - name: devstats
+ - name: digitalocean-k8s
+ - name: diversity
+ - name: draft-dev
+ - name: draft-users
+ - name: eks
+ - name: elastickube
+ - name: elk-charts
+ - name: emea-dev
+ - name: emea-users
+ - name: es-users
+ - name: etcd
+ - name: etcdadm
+ - name: events
+ - name: external-dns
+ - name: fi-users
+ - name: fr-events
+ - name: fr-users
+ - name: gardener
+ - name: gimbal
+ - name: github
+ archived: true
+ - name: gitkube
+ - name: gitops
+ - name: gke
+ - name: gloo
+ - name: gsoc-apps
+ - name: helm-deprecated
+ archived: true
+ - name: helm-dev
+ - name: helm-users
+ - name: il-users
+ - name: in-dev
+ - name: in-events
+ - name: in-users
+ - name: ingress-nginx
+ - name: it-events
+ - name: it-users
+ - name: java
+ - name: jenkins-ci
+ - name: jenkins-x-dev
+ - name: jenkins-x-user
+ - name: jp-events
+ - name: jp-users
+ - name: jsonnet
+ - name: k14s
+ - name: k8s-code-organization
+ - name: k8s-conformance
+ - name: k8s-dual-stack
+ - name: k8s-release
+ archived: true
+ - name: kapitan
+ - name: keel
+ - name: kiam
+ - name: kind
+ - name: klog
+ - name: knative
+ - name: kompose
+ - name: kong
+ - name: kops-dev
+ - name: kops-users
+ - name: kr-users
+ - name: kraken
+ - name: krane
+ - name: krex
+ - name: kube-aws
+ - name: kube-deploy
+ - name: kube-monkey
+ - name: kube-router
+ - name: kube-spawn
+ - name: kubeadm
+ - name: kubeapps
+ - name: kubebuilder
+ - name: kubecon
+ - name: kubectl-trace
+ - name: kubedb
+ - name: kubekhan
+ archived: true
+ - name: kubeless
+ - name: kubepack
+ - name: kuberhealthy
+ - name: kubernetes-batch-jobs
+ - name: kubernetes-careers
+ - name: kubernetes-client
+ - name: kubernetes-dev
+ - name: kubernetes-docs-de
+ - name: kubernetes-docs-es
+ - name: kubernetes-docs-fr
+ - name: kubernetes-docs-it
+ - name: kubernetes-docs-ja
+ - name: kubernetes-docs-ko
+ - name: kubernetes-docs-zh
+ - name: kubernetes-novice
+ - name: kubernetes-operators
+ - name: kubernetes-ruby
+ - name: kubernetes-security
+ - name: kubernetes-teachers
+ - name: kubernetes-users
+ - name: kubespray
+ - name: kubespray-dev
+ - name: kubicorn
+ - name: kudo
+ - name: kustomize
+ - name: leadership-summit
+ - name: linode
+ - name: malaysia-users
+ - name: malta-users
+ - name: meet-our-contributors
+ - name: meetup-athens
+ - name: meetup-austin
+ - name: meetup-bayarea
+ - name: meetup-boston
+ - name: meetup-dfw
+ - name: meetup-guatemala
+ - name: meetup-hannover
+ - name: meetup-hongkong
+ - name: meetup-losangeles
+ - name: meetup-manchester
+ - name: meetup-minneapolis
+ - name: meetup-nyc
+ - name: meetup-pittsburgh
+ - name: meetup-sacramento
+ - name: meetup-sanantonio
+ - name: meetup-sandiego
+ - name: meetup-seattle
+ - name: meetup-trondheim
+ - name: meetup-tunisia
+ - name: metacontroller
+ - name: metallb
+ - name: microk8s
+ - name: minikube
+ - name: monitoring-mixins
+ - name: monolith
+ - name: multi-platform
+ - name: mysql-operator
+ - name: navigator
+ - name: nl-users
+ - name: norw-users
+ - name: office-hours
+ - name: opencontainers
+ - name: openshift-dev
+ - name: openshift-users
+ - name: openstack-helm
+ - name: openstack-kolla
+ - name: ops-status
+ - name: osbkit
+ - name: pharmer
+ - name: pl-users
+ - name: pr-reviews
+ - name: prometheus
+ - name: prometheus-operator
+ - name: provider-centurylink
+ - name: prow
+ - name: pt_br-users
+ - name: rancher
+ - name: random
+ archived: true
+ - name: rktnetes
+ - name: ro-users
+ - name: ru-users
+ - name: se-users
+ - name: ship
+ - name: shippable
+ - name: shipper
+ - name: shoutouts
+ - name: sig-api-machinery
+ - name: sig-apps
+ - name: sig-architecture
+ - name: sig-auth
+ - name: sig-autoscaling
+ - name: sig-aws
+ - name: sig-azure
+ - name: sig-big-data
+ - name: sig-cli
+ - name: sig-cloud-provider
+ - name: sig-clstr-life-leads
+ - name: sig-cluster-lifecycle
+ - name: sig-cluster-ops
+ archived: true
+ - name: sig-configuration
+ archived: true
+ - name: sig-contribex
+ - name: sig-docs
+ - name: sig-docs-maintainers
+ - name: sig-docs-modeling
+ - name: sig-docs-release
+ - name: sig-docs-security
+ - name: sig-docs-tools
+ - name: sig-gcp
+ - name: sig-high-availability
+ archived: true
+ - name: sig-ibmcloud
+ - name: sig-instrumentation
+ - name: sig-multicluster
+ - name: sig-network
+ - name: sig-node
+ - name: sig-node-rkt
+ - name: sig-openstack
+ - name: sig-pm
+ - name: sig-release
+ - name: sig-scalability
+ - name: sig-scheduling
+ - name: sig-service-catalog
+ - name: sig-storage
+ - name: sig-testing
+ - name: sig-ui
+ - name: sig-vmware
+ - name: sig-windows
+ - name: skaffold
+ - name: slack-admins
+ - name: sonobuoy
+ - name: spark-operator
+ - name: spinnaker
+ - name: sre
+ - name: summit-staff
+ - name: suse-caasp
+ - name: talk-proposals
+ - name: testing-commons
+ - name: testing-ops
+ - name: tilt
+ - name: tn-users
+ - name: tor-controller
+ - name: tr-events
+ - name: tr-users
+ - name: traefik
+ - name: travis-ci
+ - name: tw-users
+ - name: velero
+ - name: virtlet
+ - name: virtual-kubelet
+ - name: virtualization
+ - name: vsphere
+ archived: true
+ - name: wg-app-def
+ archived: true
+ - name: wg-apply
+ - name: wg-component-standard
+ - name: wg-csi
+ - name: wg-csi-migration
+ - name: wg-iot-edge
+ - name: wg-k8s-infra
+ - name: wg-lts
+ - name: wg-machine-learning
+ - name: wg-multitenancy
+ - name: wg-onprem
+ archived: true
+ - name: wg-policy
+ - name: wg-resource-mgmt
+ - name: wg-security-audit
+ - name: wg-virtual-kubelet
+ archived: true
+ - name: workshop-chat
diff --git a/communication/slack-config/restrictions.yaml b/communication/slack-config/restrictions.yaml
new file mode 100644
index 00000000..f30acbaa
--- /dev/null
+++ b/communication/slack-config/restrictions.yaml
@@ -0,0 +1,13 @@
+restrictions:
+ - path: users.yaml
+ users: true
+ - path: channels.yaml
+ channels:
+ - ".*"
+ template: true
+ - path: usergroups.yaml
+ usergroups:
+ - ".*"
+ - path: template.yaml
+ template: true
+ - path: "**/*" # prevent any other file from containing anything
diff --git a/communication/slack-config/template.yaml b/communication/slack-config/template.yaml
new file mode 100644
index 00000000..eeaee8c0
--- /dev/null
+++ b/communication/slack-config/template.yaml
@@ -0,0 +1,8 @@
+# This template will be used whenever Tempelis creates a new channel.
+channel_template:
+ # topic: none
+ # purpose: none
+ pins:
+ - >-
+ This channel abides to the Kubernetes Code of Conduct - http://git.k8s.io/community/code-of-conduct.md
+ Contact conduct@kubernetes.io or an admin in the #slack-admins channel if there is a problem.
diff --git a/communication/slack-config/usergroups.yaml b/communication/slack-config/usergroups.yaml
new file mode 100644
index 00000000..8506bbae
--- /dev/null
+++ b/communication/slack-config/usergroups.yaml
@@ -0,0 +1,5 @@
+# This file contains a list of all Slack usergroups that exist.
+
+usergroups:
+ - name: test-infra-oncall
+ external: true
diff --git a/communication/slack-config/users.yaml b/communication/slack-config/users.yaml
new file mode 100644
index 00000000..ab2540d7
--- /dev/null
+++ b/communication/slack-config/users.yaml
@@ -0,0 +1,4 @@
+# This file contains a mapping from lowercase GitHub usernames to Kubernetes
+# Slack user IDs.
+users:
+ katharine: UBTBNJ6GL