Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save patsevanton/a8abf9af71ece54f1a72973b0802f64a to your computer and use it in GitHub Desktop.
Save patsevanton/a8abf9af71ece54f1a72973b0802f64a to your computer and use it in GitHub Desktop.
---
# Source: loggenerator/templates/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: loggenerat-loggenerator
labels:
helm.sh/chart: loggenerator-0.1.0
app.kubernetes.io/name: loggenerator
app.kubernetes.io/instance: loggenerat
app.kubernetes.io/managed-by: Helm
---
# Source: loggenerator/templates/service.yaml
apiVersion: v1
kind: Service
metadata:
name: loggenerat-loggenerator
labels:
helm.sh/chart: loggenerator-0.1.0
app.kubernetes.io/name: loggenerator
app.kubernetes.io/instance: loggenerat
app.kubernetes.io/managed-by: Helm
spec:
type: ClusterIP
ports:
- port: 80
targetPort: http
protocol: TCP
name: http
selector:
app.kubernetes.io/name: loggenerator
app.kubernetes.io/instance: loggenerat
---
# Source: loggenerator/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: loggenerat-loggenerator
labels:
helm.sh/chart: loggenerator-0.1.0
app.kubernetes.io/name: loggenerator
app.kubernetes.io/instance: loggenerat
app.kubernetes.io/managed-by: Helm
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: loggenerator
app.kubernetes.io/instance: loggenerat
template:
metadata:
labels:
app.kubernetes.io/name: loggenerator
app.kubernetes.io/instance: loggenerat
spec:
serviceAccountName: loggenerat-loggenerator
securityContext:
{}
containers:
- name: loggenerator
securityContext:
{}
image: "liubin/loggenerator:latest"
imagePullPolicy: IfNotPresent
env:
- name: MAX
value: "9"
- name: SPEED
value: "9"
ports:
- name: http
containerPort: 80
protocol: TCP
resources:
{}
---
# Source: loggenerator/charts/cassandra/templates/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: loggenerat-cassandra
namespace: "loggenerator"
labels:
app.kubernetes.io/name: cassandra
helm.sh/chart: cassandra-9.7.3
app.kubernetes.io/instance: loggenerat
app.kubernetes.io/managed-by: Helm
annotations:
helm.sh/hook: pre-upgrade,pre-install
helm.sh/hook-weight: "-10"
automountServiceAccountToken: true
---
# Source: loggenerator/charts/cassandra/templates/cassandra-secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: loggenerat-cassandra
namespace: "loggenerator"
labels:
app.kubernetes.io/name: cassandra
helm.sh/chart: cassandra-9.7.3
app.kubernetes.io/instance: loggenerat
app.kubernetes.io/managed-by: Helm
annotations:
helm.sh/hook: pre-upgrade,pre-install
helm.sh/hook-weight: "-10"
type: Opaque
data:
cassandra-password: "SFFJUFBVeVFlcg=="
---
# Source: loggenerator/charts/cassandra/templates/metrics-configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: loggenerat-cassandra-metrics-conf
namespace: "loggenerator"
labels:
app.kubernetes.io/name: cassandra
helm.sh/chart: cassandra-9.7.3
app.kubernetes.io/instance: loggenerat
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/part-of: cassandra
app.kubernetes.io/component: cassandra-exporter
annotations:
helm.sh/hook: pre-upgrade,pre-install
helm.sh/hook-weight: "-10"
data:
config.yml: |-
host: localhost:5555
ssl: False
user:
password:
listenPort: 8080
blacklist:
# To profile the duration of jmx call you can start the program with the following options
# > java -Dorg.slf4j.simpleLogger.defaultLogLevel=trace -jar cassandra_exporter.jar config.yml --oneshot
#
# To get intuition of what is done by cassandra when something is called you can look in cassandra
# https://github.com/apache/cassandra/tree/trunk/src/java/org/apache/cassandra/metrics
# Please avoid to scrape frequently those calls that are iterating over all sstables
# Unaccessible metrics (not enough privilege)
- java:lang:memorypool:.*usagethreshold.*
# Leaf attributes not interesting for us but that are presents in many path
- .*:999thpercentile
- .*:95thpercentile
- .*:fifteenminuterate
- .*:fiveminuterate
- .*:durationunit
- .*:rateunit
- .*:stddev
- .*:meanrate
- .*:mean
- .*:min
# Path present in many metrics but uninterresting
- .*:viewlockacquiretime:.*
- .*:viewreadtime:.*
- .*:cas[a-z]+latency:.*
- .*:colupdatetimedeltahistogram:.*
# Mostly for RPC, do not scrap them
- org:apache:cassandra:db:.*
# columnfamily is an alias for Table metrics
# https://github.com/apache/cassandra/blob/8b3a60b9a7dbefeecc06bace617279612ec7092d/src/java/org/apache/cassandra/metrics/TableMetrics.java#L162
- org:apache:cassandra:metrics:columnfamily:.*
# Should we export metrics for system keyspaces/tables ?
- org:apache:cassandra:metrics:[^:]+:system[^:]*:.*
# Don't scrap us
- com:criteo:nosql:cassandra:exporter:.*
maxScrapFrequencyInSec:
50:
- .*
# Refresh those metrics only every hour as it is costly for cassandra to retrieve them
3600:
- .*:snapshotssize:.*
- .*:estimated.*
- .*:totaldiskspaceused:.*
---
# Source: loggenerator/charts/cassandra/templates/headless-svc.yaml
apiVersion: v1
kind: Service
metadata:
name: loggenerat-cassandra-headless
namespace: "loggenerator"
labels:
app.kubernetes.io/name: cassandra
helm.sh/chart: cassandra-9.7.3
app.kubernetes.io/instance: loggenerat
app.kubernetes.io/managed-by: Helm
annotations:
helm.sh/hook: pre-upgrade,pre-install
helm.sh/hook-weight: "-10"
spec:
clusterIP: None
publishNotReadyAddresses: true
ports:
- name: intra
port: 7000
targetPort: intra
- name: tls
port: 7001
targetPort: tls
- name: jmx
port: 7199
targetPort: jmx
- name: cql
port: 9042
targetPort: cql
selector:
app.kubernetes.io/name: cassandra
app.kubernetes.io/instance: loggenerat
---
# Source: loggenerator/charts/cassandra/templates/service.yaml
apiVersion: v1
kind: Service
metadata:
name: loggenerat-cassandra
namespace: "loggenerator"
labels:
app.kubernetes.io/name: cassandra
helm.sh/chart: cassandra-9.7.3
app.kubernetes.io/instance: loggenerat
app.kubernetes.io/managed-by: Helm
annotations:
helm.sh/hook: pre-upgrade,pre-install
helm.sh/hook-weight: "-10"
spec:
type: ClusterIP
sessionAffinity: None
ports:
- name: cql
port: 9042
targetPort: cql
nodePort: null
- name: metrics
port: 8080
nodePort: null
selector:
app.kubernetes.io/name: cassandra
app.kubernetes.io/instance: loggenerat
---
# Source: loggenerator/templates/tests/test-connection.yaml
apiVersion: v1
kind: Pod
metadata:
name: "loggenerat-loggenerator-test-connection"
labels:
helm.sh/chart: loggenerator-0.1.0
app.kubernetes.io/name: loggenerator
app.kubernetes.io/instance: loggenerat
app.kubernetes.io/managed-by: Helm
annotations:
"helm.sh/hook": test
spec:
containers:
- name: wget
image: busybox
command: ['wget']
args: ['loggenerat-loggenerator:80']
restartPolicy: Never
---
# Source: loggenerator/charts/cassandra/templates/statefulset.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: loggenerat-cassandra
namespace: "loggenerator"
labels:
app.kubernetes.io/name: cassandra
helm.sh/chart: cassandra-9.7.3
app.kubernetes.io/instance: loggenerat
app.kubernetes.io/managed-by: Helm
annotations:
helm.sh/hook: pre-upgrade,pre-install
helm.sh/hook-weight: "-10"
spec:
selector:
matchLabels:
app.kubernetes.io/name: cassandra
app.kubernetes.io/instance: loggenerat
serviceName: loggenerat-cassandra-headless
podManagementPolicy: OrderedReady
replicas: 1
updateStrategy:
type: RollingUpdate
template:
metadata:
labels:
app.kubernetes.io/name: cassandra
helm.sh/chart: cassandra-9.7.3
app.kubernetes.io/instance: loggenerat
app.kubernetes.io/managed-by: Helm
spec:
serviceAccountName: loggenerat-cassandra
affinity:
podAffinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- podAffinityTerm:
labelSelector:
matchLabels:
app.kubernetes.io/name: cassandra
app.kubernetes.io/instance: loggenerat
namespaces:
- "loggenerator"
topologyKey: kubernetes.io/hostname
weight: 1
nodeAffinity:
securityContext:
fsGroup: 1001
containers:
- name: cassandra
command:
- bash
- -ec
- |
# Node 0 is the password seeder
if [[ $POD_NAME =~ (.*)-0$ ]]; then
echo "Setting node as password seeder"
export CASSANDRA_PASSWORD_SEEDER=yes
else
# Only node 0 will execute the startup initdb scripts
export CASSANDRA_IGNORE_INITDB_SCRIPTS=1
fi
/opt/bitnami/scripts/cassandra/entrypoint.sh /opt/bitnami/scripts/cassandra/run.sh
image: docker.io/bitnami/cassandra:4.0.7-debian-11-r0
imagePullPolicy: "IfNotPresent"
securityContext:
runAsNonRoot: true
runAsUser: 1001
env:
- name: BITNAMI_DEBUG
value: "false"
- name: CASSANDRA_CLUSTER_NAME
value: cassandra
- name: CASSANDRA_SEEDS
value: "loggenerat-cassandra-0.loggenerat-cassandra-headless.loggenerator.svc.cluster.local"
- name: CASSANDRA_PASSWORD
valueFrom:
secretKeyRef:
name: loggenerat-cassandra
key: cassandra-password
- name: POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: CASSANDRA_USER
value: "cassandra"
- name: CASSANDRA_NUM_TOKENS
value: "256"
- name: CASSANDRA_DATACENTER
value: dc1
- name: CASSANDRA_ENDPOINT_SNITCH
value: SimpleSnitch
- name: CASSANDRA_KEYSTORE_LOCATION
value: "/opt/bitnami/cassandra/certs/keystore"
- name: CASSANDRA_TRUSTSTORE_LOCATION
value: "/opt/bitnami/cassandra/certs/truststore"
- name: CASSANDRA_RACK
value: rack1
- name: CASSANDRA_TRANSPORT_PORT_NUMBER
value: "7000"
- name: CASSANDRA_JMX_PORT_NUMBER
value: "7199"
- name: CASSANDRA_CQL_PORT_NUMBER
value: "9042"
envFrom:
livenessProbe:
exec:
command:
- /bin/bash
- -ec
- |
nodetool info | grep "Native Transport active: true"
initialDelaySeconds: 60
periodSeconds: 30
timeoutSeconds: 30
successThreshold: 1
failureThreshold: 5
readinessProbe:
exec:
command:
- /bin/bash
- -ec
- |
nodetool status | grep -E "^UN\\s+${POD_IP}"
initialDelaySeconds: 60
periodSeconds: 10
timeoutSeconds: 30
successThreshold: 1
failureThreshold: 5
lifecycle:
preStop:
exec:
command:
- bash
- -ec
- nodetool drain
ports:
- name: intra
containerPort: 7000
- name: tls
containerPort: 7001
- name: jmx
containerPort: 7199
- name: cql
containerPort: 9042
resources:
limits: {}
requests: {}
volumeMounts:
- name: data
mountPath: /bitnami/cassandra
volumes:
- name: metrics-conf
configMap:
name: loggenerat-cassandra-metrics-conf
volumeClaimTemplates:
- metadata:
name: data
labels:
app.kubernetes.io/name: cassandra
app.kubernetes.io/instance: loggenerat
spec:
accessModes:
- "ReadWriteOnce"
resources:
requests:
storage: "8Gi"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment