github.com/alibaba/sealer@v0.8.6-0.20220430115802-37a2bdaa8173/applications/cassandra/cassandra-manifest.yaml (about)

     1  ---
     2  apiVersion: v1
     3  kind: Namespace
     4  metadata:
     5    name: cassandra-system
     6    labels:
     7      app.kubernetes.io/name: cassandra
     8      app.kubernetes.io/instance: my-cassandra
     9  ---
    10  # Source: cassandra/templates/serviceaccount.yaml
    11  apiVersion: v1
    12  kind: ServiceAccount
    13  metadata:
    14    name: my-cassandra
    15    namespace: cassandra-system
    16    labels:
    17      app.kubernetes.io/name: cassandra
    18      app.kubernetes.io/instance: my-cassandra
    19  ---
    20  # Source: cassandra/templates/cassandra-secret.yaml
    21  apiVersion: v1
    22  kind: Secret
    23  metadata:
    24    name: my-cassandra
    25    namespace: cassandra-system
    26    labels:
    27      app.kubernetes.io/name: cassandra
    28      app.kubernetes.io/instance: my-cassandra
    29  
    30  type: Opaque
    31  data:
    32    cassandra-password: "dXd3YzdHSVlpZQ=="
    33  ---
    34  # Source: cassandra/templates/headless-svc.yaml
    35  apiVersion: v1
    36  kind: Service
    37  metadata:
    38    name: my-cassandra-headless
    39    namespace: cassandra-system
    40    labels:
    41      app.kubernetes.io/name: cassandra
    42      app.kubernetes.io/instance: my-cassandra
    43  
    44  spec:
    45    clusterIP: None
    46    publishNotReadyAddresses: true
    47    ports:
    48      - name: intra
    49        port: 7000
    50        targetPort: intra
    51      - name: tls
    52        port: 7001
    53        targetPort: tls
    54      - name: jmx
    55        port: 7199
    56        targetPort: jmx
    57      - name: cql
    58        port: 9042
    59        targetPort: cql
    60      - name: thrift
    61        port: 9160
    62        targetPort: thrift
    63    selector:
    64      app.kubernetes.io/name: cassandra
    65      app.kubernetes.io/instance: my-cassandra
    66  ---
    67  # Source: cassandra/templates/service.yaml
    68  apiVersion: v1
    69  kind: Service
    70  metadata:
    71    name: my-cassandra
    72    namespace: cassandra-system
    73    labels:
    74      app.kubernetes.io/name: cassandra
    75      app.kubernetes.io/instance: my-cassandra
    76  
    77  spec:
    78    type: ClusterIP
    79    ports:
    80      - name: cql
    81        port: 9042
    82        targetPort: cql
    83      - name: thrift
    84        port: 9160
    85        targetPort: thrift
    86      - name: metrics
    87        port: 8080
    88    selector:
    89      app.kubernetes.io/name: cassandra
    90      app.kubernetes.io/instance: my-cassandra
    91  ---
    92  # Source: cassandra/templates/statefulset.yaml
    93  apiVersion: apps/v1
    94  kind: StatefulSet
    95  metadata:
    96    name: my-cassandra
    97    namespace: cassandra-system
    98    labels:
    99      app.kubernetes.io/name: cassandra
   100      app.kubernetes.io/instance: my-cassandra
   101  spec:
   102    selector:
   103      matchLabels:
   104        app.kubernetes.io/name: cassandra
   105        app.kubernetes.io/instance: my-cassandra
   106    serviceName: my-cassandra-headless
   107    podManagementPolicy: OrderedReady
   108    replicas: 3
   109    updateStrategy:
   110      type: RollingUpdate
   111    template:
   112      metadata:
   113        labels:
   114          app.kubernetes.io/name: cassandra
   115          app.kubernetes.io/instance: my-cassandra
   116      spec:
   117        serviceAccountName: my-cassandra
   118        affinity:
   119          podAntiAffinity:
   120            preferredDuringSchedulingIgnoredDuringExecution:
   121              - podAffinityTerm:
   122                  labelSelector:
   123                    matchLabels:
   124                      app.kubernetes.io/name: cassandra
   125                      app.kubernetes.io/instance: my-cassandra
   126                  namespaces:
   127                    - "cassandra-system"
   128                  topologyKey: kubernetes.io/hostname
   129                weight: 1
   130        securityContext:
   131          fsGroup: 1001
   132        containers:
   133          - name: cassandra
   134            command:
   135              - bash
   136              - -ec
   137              - |
   138                # Node 0 is the password seeder
   139                if [[ $POD_NAME =~ (.*)-0$ ]]; then
   140                    echo "Setting node as password seeder"
   141                    export CASSANDRA_PASSWORD_SEEDER=yes
   142                else
   143                    # Only node 0 will execute the startup initdb scripts
   144                    export CASSANDRA_IGNORE_INITDB_SCRIPTS=1
   145                fi
   146                /opt/bitnami/scripts/cassandra/entrypoint.sh /opt/bitnami/scripts/cassandra/run.sh
   147            image: docker.io/bitnami/cassandra:4.0.0-debian-10-r0
   148            imagePullPolicy: "IfNotPresent"
   149            securityContext:
   150              runAsUser: 1001
   151            env:
   152              - name: BITNAMI_DEBUG
   153                value: "false"
   154              - name: CASSANDRA_CLUSTER_NAME
   155                value: cassandra
   156              - name: CASSANDRA_SEEDS
   157                value: "my-cassandra-0.my-cassandra-headless.cassandra-system.svc.cluster.local"
   158              - name: CASSANDRA_PASSWORD
   159                valueFrom:
   160                  secretKeyRef:
   161                    name: my-cassandra
   162                    key: cassandra-password
   163              - name: POD_IP
   164                valueFrom:
   165                  fieldRef:
   166                    fieldPath: status.podIP
   167              - name: POD_NAME
   168                valueFrom:
   169                  fieldRef:
   170                    fieldPath: metadata.name
   171              - name: CASSANDRA_USER
   172                value: "cassandra"
   173              - name: CASSANDRA_NUM_TOKENS
   174                value: "256"
   175              - name: CASSANDRA_DATACENTER
   176                value: dc1
   177              - name: CASSANDRA_ENDPOINT_SNITCH
   178                value: SimpleSnitch
   179              - name: CASSANDRA_KEYSTORE_LOCATION
   180                value: "/opt/bitnami/cassandra/certs/keystore"
   181              - name: CASSANDRA_TRUSTSTORE_LOCATION
   182                value: "/opt/bitnami/cassandra/certs/truststore"
   183              - name: CASSANDRA_RACK
   184                value: rack1
   185              - name: CASSANDRA_ENABLE_RPC
   186                value: "true"
   187              - name: CASSANDRA_TRANSPORT_PORT_NUMBER
   188                value: "7000"
   189              - name: CASSANDRA_JMX_PORT_NUMBER
   190                value: "7199"
   191              - name: CASSANDRA_CQL_PORT_NUMBER
   192                value: "9042"
   193            livenessProbe:
   194              exec:
   195                command:
   196                  - /bin/bash
   197                  - -ec
   198                  - |
   199                    nodetool status
   200              initialDelaySeconds: 60
   201              periodSeconds: 30
   202              timeoutSeconds: 5
   203              successThreshold: 1
   204              failureThreshold: 5
   205            readinessProbe:
   206              exec:
   207                command:
   208                  - /bin/bash
   209                  - -ec
   210                  - |
   211                    nodetool status | grep -E "^UN\\s+${POD_IP}"
   212              initialDelaySeconds: 60
   213              periodSeconds: 10
   214              timeoutSeconds: 5
   215              successThreshold: 1
   216              failureThreshold: 5
   217            ports:
   218              - name: intra
   219                containerPort: 7000
   220              - name: tls
   221                containerPort: 7001
   222              - name: jmx
   223                containerPort: 7199
   224              - name: cql
   225                containerPort: 9042
   226              - name: thrift
   227                containerPort: 9160
   228            resources:
   229              limits: {}
   230              requests: {}
   231            volumeMounts:
   232              - name: data
   233                mountPath: /bitnami/cassandra
   234    volumeClaimTemplates:
   235      - metadata:
   236          name: data
   237          labels:
   238            app.kubernetes.io/name: cassandra
   239            app.kubernetes.io/instance: my-cassandra
   240        spec:
   241          accessModes:
   242            - "ReadWriteOnce"
   243          resources:
   244            requests:
   245              storage: "50Gi"
   246          storageClassName: local-hostpath