Skip to content

Executes "nodetool repair -pr" within annotated Cassandra Pods.

License

Notifications You must be signed in to change notification settings

jmkeyes/cassandra-repair

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cassandra Maintainer

This executes nodetool repair -pr inside every annotated Cassandra container.

When run, this application will:

  1. Connect to the Kubernetes API within the cluster.
  2. List the pods annotated with cassandra-repair.jmkeyes.ca/autorepair.
  3. Run nodetool repair -pr on each pod sequentially.

This avoids having to expose a raw JMX connector from each Cassandra container.

To apply it to the Pod template of a StatefulSet named cassandra:

$ kubectl patch sts/cassandra --patch-file=/dev/stdin <<EOF
{
  "spec": {
    "template": {
      "metadata": {
        "annotations": {
          "cassandra-repair.jmkeyes.ca/autorepair": "true"
        }
      }
    }
  }
}

Usage Instructions

$ kubectl apply -f <<EOF
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: cassandra-repair
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: cassandra-repair-role
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["get", "list"]
- apiGroups: [""]
  resources: ["pods/exec"]
  verbs: ["create"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: cassandra-repair-role-binding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: cassandra-repair-role
subjects:
- kind: ServiceAccount
  name: cassandra-repair
---
apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: cassandra-repair
spec:
  # Run at midnight UTC every day.
  schedule: "00 0 * * *"
  jobTemplate:
    spec:
      template:
        spec:
          serviceAccountName: cassandra-repair
          restartPolicy: OnFailure
          containers:
          - name: cassandra-repair
            image: cassandra-repair:1.0.0
            env:
            - name: POD_NAMESPACE
              valueFrom:
                fieldRef:
                  fieldPath: metadata.namespace
EOF

About

Executes "nodetool repair -pr" within annotated Cassandra Pods.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published