github.com/1aal/kubeblocks@v0.0.0-20231107070852-e1c03e598921/deploy/apecloud-postgresql/templates/clusterdefinition.yaml (about)

     1  apiVersion: apps.kubeblocks.io/v1alpha1
     2  kind: ClusterDefinition
     3  metadata:
     4    name: apecloud-postgresql
     5    labels:
     6      {{- include "apecloud-postgresql.labels" . | nindent 4 }}
     7  spec:
     8    type: postgresql
     9    connectionCredential:
    10      username: postgres
    11      password: "$(RANDOM_PASSWD)"
    12      endpoint: "$(SVC_FQDN):$(SVC_PORT_tcp-postgresql)"
    13      host: "$(SVC_FQDN)"
    14      port: "$(SVC_PORT_tcp-postgresql)"
    15    componentDefs:
    16      - name: postgresql
    17        characterType: postgresql
    18        workloadType: Consensus
    19        probes:
    20          roleProbe:
    21            failureThreshold: {{ .Values.roleProbe.failureThreshold }}
    22            periodSeconds: {{ .Values.roleProbe.periodSeconds }}
    23            timeoutSeconds: {{ .Values.roleProbe.timeoutSeconds }}
    24        service:
    25          ports:
    26            - name: tcp-postgresql
    27              port: 5432
    28              targetPort: tcp-postgresql
    29        configSpecs:
    30          - name: postgresql-consensusset-configuration
    31            templateRef: apecloud-postgresql12-configuration
    32            constraintRef: apecloud-postgresql12-cc
    33            keys:
    34              - postgresql.conf
    35            namespace: {{ .Release.Namespace }}
    36            volumeName: postgresql-config
    37            defaultMode: 0777
    38        volumeTypes:
    39          - name: data
    40            type: data
    41        scriptSpecs:
    42          - name: apecloud-postgresql-scripts
    43            templateRef: apecloud-postgresql-scripts
    44            namespace: {{ .Release.Namespace }}
    45            volumeName: scripts
    46            defaultMode: 0777
    47        consensusSpec:
    48          leader:
    49            name: leader
    50            accessMode: ReadWrite
    51          followers:
    52            - name: follower
    53              accessMode: Readonly
    54          learner:
    55            name: learner
    56            accessMode: Readonly
    57        podSpec:
    58          initContainers:
    59            - name: init-permissions
    60              image: busybox
    61              securityContext:
    62                runAsUser: 0
    63              command: [ "chmod", "a+w", "/postgresql" ]
    64              volumeMounts:
    65                - name: data
    66                  mountPath: /postgresql
    67          containers:
    68            - name: postgresql
    69              imagePullPolicy: {{ default .Values.image.pullPolicy "IfNotPresent" }}
    70              securityContext:
    71                runAsUser: 999
    72              command:
    73                - /kb-scripts/setup.sh
    74              volumeMounts:
    75                - name: dshm
    76                  mountPath: /dev/shm
    77                - name: data
    78                  mountPath: /postgresql
    79                - name: postgresql-config
    80                  mountPath: /var/lib/postgresql/conf
    81                - name: scripts
    82                  mountPath: /kb-scripts
    83              ports:
    84                - name: tcp-postgresql
    85                  containerPort: 5432
    86                - name: paxos
    87                  containerPort: 15432
    88              env:
    89                - name: CONSENSUS_MODE
    90                  value: "data"
    91                - name: KUBERNETES_USE_CONFIGMAPS
    92                  value: "true"
    93                - name: ALLOW_NOSSL
    94                  value: "true"
    95                - name: POD_IP
    96                  valueFrom:
    97                    fieldRef:
    98                      apiVersion: v1
    99                      fieldPath: status.podIP
   100                - name: POD_NAMESPACE
   101                  valueFrom:
   102                    fieldRef:
   103                      apiVersion: v1
   104                      fieldPath: metadata.namespace
   105                - name: POSTGRES_USER
   106                  valueFrom:
   107                    secretKeyRef:
   108                      name: $(CONN_CREDENTIAL_SECRET_NAME)
   109                      key: username
   110                      optional: false
   111                - name: POSTGRES_PASSWORD
   112                  valueFrom:
   113                    secretKeyRef:
   114                      name: $(CONN_CREDENTIAL_SECRET_NAME)
   115                      key: password
   116                      optional: false
   117                - name: PGUSER
   118                  valueFrom:
   119                    secretKeyRef:
   120                      name: $(CONN_CREDENTIAL_SECRET_NAME)
   121                      key: username
   122                      optional: false
   123                - name: PGPASSWORD
   124                  valueFrom:
   125                    secretKeyRef:
   126                      name: $(CONN_CREDENTIAL_SECRET_NAME)
   127                      key: password
   128                      optional: false
   129                - name: POSTGRESQL_PORT_NUMBER
   130                  value: "5432"
   131                - name: PGDATA
   132                  value: postgresql/pgconsensus_data
   133        systemAccounts:
   134          cmdExecutorConfig:
   135            image: {{ .Values.image.registry | default "docker.io" }}/{{ .Values.image.repository }}:{{ default .Values.image.tag .Chart.AppVersion }}
   136            command:
   137              - psql
   138            args:
   139              - -h$(KB_ACCOUNT_ENDPOINT)
   140              - -Upostgres
   141              - -c
   142              - $(KB_ACCOUNT_STATEMENT)
   143            env:
   144              - name: PGUSER
   145                valueFrom:
   146                  secretKeyRef:
   147                    name: $(CONN_CREDENTIAL_SECRET_NAME)
   148                    key: username
   149              - name: PGPASSWORD
   150                valueFrom:
   151                  secretKeyRef:
   152                    name: $(CONN_CREDENTIAL_SECRET_NAME)
   153                    key: password
   154          passwordConfig:
   155            length: 10
   156            numDigits: 5
   157            numSymbols: 0
   158            letterCase: MixedCases
   159          accounts:
   160            - name: kbadmin
   161              provisionPolicy:
   162                type: CreateByStmt
   163                scope: AnyPods
   164                statements:
   165                  creation: CREATE USER $(USERNAME) SUPERUSER PASSWORD '$(PASSWD)';
   166                  deletion: DROP USER IF EXISTS $(USERNAME);