github.com/1aal/kubeblocks@v0.0.0-20231107070852-e1c03e598921/deploy/polardbx/templates/clusterDefintion.yaml (about) 1 apiVersion: apps.kubeblocks.io/v1alpha1 2 kind: ClusterDefinition 3 metadata: 4 name: polardbx 5 labels: 6 {{- include "polardbx.labels" . | nindent 4 }} 7 spec: 8 connectionCredential: 9 username: "polardbx_root" 10 password: "$(RANDOM_PASSWD)" 11 endpoint: "$(SVC_FQDN):$(SVC_PORT_mysql)" 12 host: "$(SVC_FQDN)" 13 port: "$(SVC_PORT_mysql)" 14 metaDbPasswd: "$(RANDOM_PASSWD)" 15 componentDefs: 16 - name: gms 17 scriptSpecs: 18 - name: polardbx-scripts 19 templateRef: polardbx-scripts 20 volumeName: scripts 21 namespace: {{ .Release.Namespace }} 22 defaultMode: 0555 23 workloadType: Consensus 24 characterType: polardbx 25 rsmSpec: 26 roles: 27 - name: "leader" 28 accessMode: ReadWrite 29 isLeader: true 30 canVote: true 31 - name: "follower" 32 accessMode: Readonly 33 canVote: true 34 roleProbe: 35 roleUpdateMechanism: DirectAPIServerEventUpdate 36 customHandler: 37 - image: "arey/mysql-client:latest" 38 command: 39 - mysql 40 - "-h127.0.0.1" 41 - "-P3306" 42 - "-uroot" 43 - "-N" 44 - "-B" 45 - "-e" 46 - "\"select role from information_schema.alisql_cluster_local\"" 47 - "|" 48 - "xargs echo -n" 49 memberUpdateStrategy: Serial 50 service: 51 ports: 52 - name: mysql 53 port: 3306 54 targetPort: 3306 55 - name: metrics 56 port: 9104 57 targetPort: 9104 58 monitor: 59 builtIn: false 60 exporterConfig: 61 scrapePort: 9104 62 scrapePath: "/metrics" 63 podSpec: 64 volumes: &xstoreVolumes 65 - emptyDir: {} 66 name: xstore-tools 67 - downwardAPI: 68 defaultMode: 420 69 items: 70 - fieldRef: 71 apiVersion: v1 72 fieldPath: metadata.labels 73 path: labels 74 - fieldRef: 75 apiVersion: v1 76 fieldPath: metadata.annotations 77 path: annotations 78 - fieldRef: 79 apiVersion: v1 80 fieldPath: metadata.annotations['runmode'] 81 path: runmode 82 - fieldRef: 83 apiVersion: v1 84 fieldPath: metadata.name 85 path: name 86 - fieldRef: 87 apiVersion: v1 88 fieldPath: metadata.namespace 89 path: namespace 90 name: podinfo 91 initContainers: &xsotreInitContainers 92 - name: tools-updater 93 command: ["/bin/ash"] 94 args: ["-c", "./hack/update.sh /target"] 95 env: 96 - name: NODE_NAME 97 valueFrom: 98 fieldRef: 99 apiVersion: v1 100 fieldPath: spec.nodeName 101 volumeMounts: 102 - name: xstore-tools 103 mountPath: /target 104 containers: 105 - name: engine 106 command: ["/scripts/xstore-setup.sh"] 107 lifecycle: 108 postStart: 109 exec: 110 command: 111 - /scripts/xstore-post-start.sh 112 - GMS 113 env: &xstoreEngineEnv 114 - name: LANG 115 value: en_US.utf8 116 - name: LC_ALL 117 value: en_US.utf8 118 - name: ENGINE 119 value: galaxy 120 - name: ENGINE_HOME 121 value: /opt/galaxy_engine 122 - name: NODE_ROLE 123 value: candidate 124 - name: NODE_IP 125 valueFrom: 126 fieldRef: 127 apiVersion: v1 128 fieldPath: status.hostIP 129 - name: NODE_NAME 130 valueFrom: 131 fieldRef: 132 apiVersion: v1 133 fieldPath: spec.nodeName 134 - name: POD_IP 135 valueFrom: 136 fieldRef: 137 apiVersion: v1 138 fieldPath: status.podIP 139 - name: POD_NAME 140 valueFrom: 141 fieldRef: 142 apiVersion: v1 143 fieldPath: metadata.name 144 - name: LIMITS_CPU 145 valueFrom: 146 resourceFieldRef: 147 containerName: engine 148 resource: limits.cpu 149 divisor: "1m" 150 - name: LIMITS_MEM 151 valueFrom: 152 resourceFieldRef: 153 containerName: engine 154 resource: limits.memory 155 - name: PORT_MYSQL 156 value: "3306" 157 - name: PORT_PAXOS 158 value: "11306" 159 - name: PORT_POLARX 160 value: "31600" 161 - name: KB_SERVICE_USER 162 value: "polardbx_root" 163 - name: KB_SERVICE_PASSWORD 164 valueFrom: 165 secretKeyRef: 166 name: $(CONN_CREDENTIAL_SECRET_NAME) 167 key: password 168 optional: false 169 - name: RSM_COMPATIBILITY_MODE 170 value: "true" 171 ports: &xstoreEnginePorts 172 - name: mysql 173 containerPort: 3306 174 - name: paxos 175 containerPort: 11306 176 - name: polarx 177 containerPort: 31600 178 startupProbe: 179 failureThreshold: 60 180 tcpSocket: 181 port: mysql 182 initialDelaySeconds: 5 183 periodSeconds: 10 184 successThreshold: 1 185 timeoutSeconds: 30 186 volumeMounts: &xstoreEngineVolumeMounts 187 - name: data 188 mountPath: /data/mysql 189 - name: data-log 190 mountPath: /data-log/mysql 191 - name: xstore-tools 192 mountPath: /tools/xstore 193 - name: scripts 194 mountPath: /scripts/xstore-post-start.sh 195 subPath: xstore-post-start.sh 196 - name: scripts 197 mountPath: /scripts/xstore-setup.sh 198 subPath: xstore-setup.sh 199 - name: podinfo 200 mountPath: /etc/podinfo 201 - name: exporter 202 imagePullPolicy: IfNotPresent 203 ports: 204 - name: metrics 205 containerPort: 9104 206 protocol: TCP 207 env: 208 - name: "MYSQL_MONITOR_USER" 209 valueFrom: 210 secretKeyRef: 211 name: $(CONN_CREDENTIAL_SECRET_NAME) 212 key: username 213 - name: "MYSQL_MONITOR_PASSWORD" 214 valueFrom: 215 secretKeyRef: 216 name: $(CONN_CREDENTIAL_SECRET_NAME) 217 key: password 218 - name: "DATA_SOURCE_NAME" 219 value: "$(MYSQL_MONITOR_USER):$(MYSQL_MONITOR_PASSWORD)@(localhost:3306)/" 220 - name: dn 221 scriptSpecs: 222 - name: polardbx-scripts 223 templateRef: polardbx-scripts 224 volumeName: scripts 225 namespace: {{ .Release.Namespace }} 226 defaultMode: 0555 227 workloadType: Consensus 228 characterType: polardbx 229 componentDefRef: 230 - &gmsRef 231 componentDefName: gms 232 componentRefEnv: 233 - name: GMS_SVC_PORT 234 valueFrom: 235 type: FieldRef 236 fieldPath: $.componentDef.service.ports[?(@.name == "mysql")].port 237 - name: GMS_SVC_NAME 238 valueFrom: 239 type: ServiceRef 240 rsmSpec: 241 roles: 242 - name: "leader" 243 accessMode: ReadWrite 244 isLeader: true 245 canVote: true 246 - name: "follower" 247 accessMode: Readonly 248 canVote: true 249 roleProbe: 250 roleUpdateMechanism: DirectAPIServerEventUpdate 251 customHandler: 252 - image: "arey/mysql-client:latest" 253 command: 254 - mysql 255 - "-h127.0.0.1" 256 - "-P3306" 257 - "-uroot" 258 - "-N" 259 - "-B" 260 - "-e" 261 - "\"select role from information_schema.alisql_cluster_local\"" 262 - "|" 263 - "xargs echo -n" 264 memberUpdateStrategy: Serial 265 service: 266 ports: 267 - name: mysql 268 port: 3306 269 targetPort: 3306 270 monitor: 271 builtIn: false 272 exporterConfig: 273 scrapePort: 9104 274 scrapePath: "/metrics" 275 podSpec: 276 volumes: *xstoreVolumes 277 initContainers: *xsotreInitContainers 278 containers: 279 - name: engine 280 command: [ "/scripts/xstore-setup.sh" ] 281 lifecycle: 282 postStart: 283 exec: 284 command: 285 - /scripts/xstore-post-start.sh 286 - DN 287 env: *xstoreEngineEnv 288 ports: *xstoreEnginePorts 289 startupProbe: 290 failureThreshold: 60 291 tcpSocket: 292 port: mysql 293 initialDelaySeconds: 20 294 periodSeconds: 10 295 successThreshold: 1 296 timeoutSeconds: 30 297 volumeMounts: *xstoreEngineVolumeMounts 298 - name: exporter 299 imagePullPolicy: IfNotPresent 300 ports: 301 - name: metrics 302 containerPort: 9104 303 protocol: TCP 304 env: 305 - name: "MYSQL_MONITOR_USER" 306 valueFrom: 307 secretKeyRef: 308 name: $(CONN_CREDENTIAL_SECRET_NAME) 309 key: username 310 - name: "MYSQL_MONITOR_PASSWORD" 311 valueFrom: 312 secretKeyRef: 313 name: $(CONN_CREDENTIAL_SECRET_NAME) 314 key: password 315 - name: "DATA_SOURCE_NAME" 316 value: "$(MYSQL_MONITOR_USER):$(MYSQL_MONITOR_PASSWORD)@(localhost:3306)/" 317 - name: cn 318 scriptSpecs: 319 - name: polardbx-scripts 320 templateRef: polardbx-scripts 321 volumeName: scripts 322 namespace: {{ .Release.Namespace }} 323 defaultMode: 0555 324 workloadType: Stateless 325 characterType: mysql 326 componentDefRef: 327 - *gmsRef 328 - componentDefName: dn 329 componentRefEnv: 330 - name: DN_SVC_PORT 331 valueFrom: 332 type: FieldRef 333 fieldPath: $.componentDef.service.ports[?(@.name == "mysql")].port 334 - name: DN_HEADLESS_SVC_NAME 335 valueFrom: 336 type: HeadlessServiceRef 337 format: $(POD_FQDN){{ .Values.clusterDomain }} 338 joinWith: "," 339 service: 340 ports: 341 - name: mysql 342 port: 3306 343 targetPort: 3306 344 - name: metrics 345 port: 9104 346 targetPort: 9104 347 monitor: 348 builtIn: false 349 exporterConfig: 350 scrapePort: 9104 351 scrapePath: "/metrics" 352 podSpec: 353 shareProcessNamespace: true # For jmx collector 354 volumes: 355 - name: shared 356 emptyDir: {} 357 initContainers: 358 - name: metadb-init 359 command: ["/scripts/metadb-setup.sh"] 360 env: 361 - name: metaDbAddr 362 value: "$(GMS_SVC_NAME):$(GMS_SVC_PORT)" 363 - name: metaDbName 364 value: "polardbx_meta_db" 365 - name: metaDbUser 366 valueFrom: 367 secretKeyRef: 368 name: $(CONN_CREDENTIAL_SECRET_NAME) 369 key: username 370 optional: false 371 - name: metaDbNonEncPasswd 372 valueFrom: 373 secretKeyRef: 374 name: $(CONN_CREDENTIAL_SECRET_NAME) 375 key: password 376 optional: false 377 - name: dnPasswordKey 378 value: "$(metaDbNonEncPasswd)$(metaDbNonEncPasswd)" 379 - name: switchCloud 380 value: aliyun 381 - name: metaDbConn 382 value: "mysql -h$(GMS_SVC_NAME) -P3306 -u$(metaDbUser) -p$(metaDbNonEncPasswd) -D$(metaDbName)" 383 volumeMounts: 384 - name: scripts 385 mountPath: /scripts/metadb-setup.sh 386 subPath: metadb-setup.sh 387 - name: scripts 388 mountPath: /scripts/gms-init.sql 389 subPath: gms-init.sql 390 - name: scripts 391 mountPath: /scripts/gms-metadata.tpl 392 subPath: gms-metadata.tpl 393 - name: shared 394 mountPath: /shared 395 - name: init 396 command: [ "sh" ] 397 args: [ "-c", 'source /shared/env.sh && /polardbx-init' ] 398 env: &cnEngineEnv 399 - name: POD_ID 400 valueFrom: 401 fieldRef: 402 apiVersion: v1 403 fieldPath: metadata.name 404 - name: POD_IP 405 valueFrom: 406 fieldRef: 407 apiVersion: v1 408 fieldPath: status.podIP 409 - name: HOST_IP 410 valueFrom: 411 fieldRef: 412 apiVersion: v1 413 fieldPath: status.hostIP 414 - name: NODE_NAME 415 valueFrom: 416 fieldRef: 417 apiVersion: v1 418 fieldPath: spec.nodeName 419 - name: metaDbAddr 420 value: "$(GMS_SVC_NAME):$(GMS_SVC_PORT)" 421 - name: metaDbName 422 value: "polardbx_meta_db" 423 - name: metaDbUser 424 valueFrom: 425 secretKeyRef: 426 name: $(CONN_CREDENTIAL_SECRET_NAME) 427 key: username 428 optional: false 429 - name: metaDbNonEncPasswd 430 valueFrom: 431 secretKeyRef: 432 name: $(CONN_CREDENTIAL_SECRET_NAME) 433 key: password 434 optional: false 435 - name: switchCloud 436 value: aliyun 437 - name: metaDbConn 438 value: "mysql -h$(GMS_SVC_NAME) -P3306 -u$(metaDbUser) -p$(metaDbPasswd) -D$(metaDbName)" 439 - name: dnPasswordKey 440 value: "$(metaDbNonEncPasswd)$(metaDbNonEncPasswd)" 441 - name: metaDbXprotoPort 442 value: "0" 443 - name: storageDbXprotoPort 444 value: "0" 445 - name: instanceId 446 value: "$(KB_CLUSTER_NAME)" 447 - name: instanceType 448 value: "0" 449 - name: serverPort 450 value: "3306" 451 - name: mgrPort 452 value: "3406" 453 - name: mppPort 454 value: "3506" 455 - name: htapPort 456 value: "3606" 457 - name: logPort 458 value: "8507" 459 - name: ins_id 460 value: dummy 461 - name: polarx_dummy_log_port 462 value: "$(logPort)" 463 - name: polarx_dummy_ssh_port 464 value: "-1" 465 - name: cpuCore 466 valueFrom: 467 resourceFieldRef: 468 containerName: engine 469 resource: limits.cpu 470 - name: memSize 471 valueFrom: 472 resourceFieldRef: 473 containerName: engine 474 resource: limits.memory 475 - name: cpu_cores 476 valueFrom: 477 resourceFieldRef: 478 containerName: engine 479 resource: limits.cpu 480 - name: memory 481 valueFrom: 482 resourceFieldRef: 483 containerName: engine 484 resource: limits.memory 485 - name: galaxyXProtocol 486 value: "1" 487 - name: processorHandler 488 value: "1" 489 - name: processors 490 value: "1" 491 - name: serverExecutor 492 value: "1024" 493 - name: TDDL_OPTS 494 value: -Dpod.id=$(POD_ID) -XX:+UnlockExperimentalVMOptions -XX:+UseWisp2 -Dio.grpc.netty.shaded.io.netty.transport.noNative=true 495 -Dio.netty.transport.noNative=true -DinstanceVersion=8.0.3 496 volumeMounts: 497 - name: shared 498 mountPath: /shared 499 containers: 500 - name: engine 501 command: 502 - /bin/bash 503 - -c 504 args: 505 - "source /shared/env.sh && /home/admin/entrypoint.sh 20" 506 env: *cnEngineEnv 507 ports: 508 - containerPort: 3306 509 name: mysql 510 protocol: TCP 511 - containerPort: 3406 512 name: mgr 513 protocol: TCP 514 - containerPort: 3506 515 name: mpp 516 protocol: TCP 517 - containerPort: 3606 518 name: htap 519 protocol: TCP 520 - containerPort: 8507 521 name: log 522 protocol: TCP 523 startupProbe: 524 failureThreshold: 60 525 tcpSocket: 526 port: mysql 527 initialDelaySeconds: 5 528 periodSeconds: 10 529 successThreshold: 1 530 timeoutSeconds: 30 531 livenessProbe: 532 failureThreshold: 60 533 tcpSocket: 534 port: mysql 535 initialDelaySeconds: 5 536 periodSeconds: 10 537 successThreshold: 1 538 timeoutSeconds: 30 539 readinessProbe: 540 failureThreshold: 60 541 tcpSocket: 542 port: mysql 543 initialDelaySeconds: 5 544 periodSeconds: 10 545 successThreshold: 1 546 timeoutSeconds: 30 547 volumeMounts: 548 - name: tmp 549 mountPath: /tmp 550 - name: polardbx-log 551 mountPath: /home/admin/drds-server/logs 552 - name: polardbx-spill 553 mountPath: /home/admin/drds-server/spill 554 - name: shared 555 mountPath: /shared 556 - name: exporter 557 args: 558 - -collectors.process 559 - -collectors.jvm 560 - -target.type=CN 561 - -target.port=3406 562 - -web.listen-addr=:9104 563 - -web.metrics-path=/metrics 564 env: 565 - name: GOMAXPROCS 566 value: "1" 567 ports: 568 - containerPort: 9104 569 name: metrics 570 protocol: TCP 571 volumeMounts: 572 - name: tmp 573 mountPath: /tmp 574 - name: cdc 575 scriptSpecs: 576 - name: polardbx-scripts 577 templateRef: polardbx-scripts 578 volumeName: scripts 579 namespace: {{ .Release.Namespace }} 580 defaultMode: 0555 581 workloadType: Stateless 582 characterType: mysql 583 componentDefRef: 584 - *gmsRef 585 - componentDefName: cn 586 componentRefEnv: 587 - name: CN_SVC_PORT 588 valueFrom: 589 type: FieldRef 590 fieldPath: $.componentDef.service.ports[?(@.name == "mysql")].port 591 - name: CN_SVC_NAME 592 valueFrom: 593 type: ServiceRef 594 service: 595 ports: 596 - name: mysql 597 port: 3306 598 targetPort: 3306 599 - name: metrics 600 port: 9104 601 targetPort: 9104 602 monitor: 603 builtIn: false 604 exporterConfig: 605 scrapePort: 9104 606 scrapePath: "/metrics" 607 podSpec: 608 initContainers: 609 - name: wait-cn-ready 610 command: 611 - bin/sh 612 - -c 613 - | 614 until mysql -h$CN_SVC_NAME -P$CN_SVC_PORT -u$polarx_username -p$polarx_password -e 'select 1'; do 615 sleep 1; 616 echo "cn is not ready" 617 done 618 env: 619 - name: polarx_username 620 valueFrom: 621 secretKeyRef: 622 name: $(CONN_CREDENTIAL_SECRET_NAME) 623 key: username 624 optional: false 625 - name: polarx_password 626 valueFrom: 627 secretKeyRef: 628 name: $(CONN_CREDENTIAL_SECRET_NAME) 629 key: password 630 optional: false 631 containers: 632 - name: engine 633 env: 634 - name: switchCloud 635 value: aliyun 636 - name: cluster_id 637 value: "$(KB_CLUSTER_NAME)" 638 - name: ins_id 639 valueFrom: 640 fieldRef: 641 apiVersion: v1 642 fieldPath: metadata.name 643 - name: daemonPort 644 value: "3300" 645 - name: common_ports 646 value: '{"cdc1_port":"3009","cdc3_port":"3011","cdc2_port":"3010","cdc6_port":"3014","cdc5_port":"3013","cdc4_port":"3012"}' 647 - name: metaDb_url 648 value: "jdbc:mysql://$(GMS_SVC_NAME):$(GMS_SVC_PORT)/polardbx_meta_db?useSSL=false" 649 - name: polarx_url 650 value: "jdbc:mysql://$(CN_SVC_NAME):$(CN_SVC_PORT)/__cdc__?useSSL=false" 651 - name: metaDb_username 652 valueFrom: 653 secretKeyRef: 654 name: $(CONN_CREDENTIAL_SECRET_NAME) 655 key: username 656 optional: false 657 - name: metaDb_password 658 valueFrom: 659 secretKeyRef: 660 name: $(CONN_CREDENTIAL_SECRET_NAME) 661 key: password 662 optional: false 663 - name: polarx_username 664 valueFrom: 665 secretKeyRef: 666 name: $(CONN_CREDENTIAL_SECRET_NAME) 667 key: username 668 optional: false 669 - name: polarx_password 670 valueFrom: 671 secretKeyRef: 672 name: $(CONN_CREDENTIAL_SECRET_NAME) 673 key: password 674 optional: false 675 - name: metaDbNonEncPasswd 676 valueFrom: 677 secretKeyRef: 678 name: $(CONN_CREDENTIAL_SECRET_NAME) 679 key: password 680 optional: false 681 - name: dnPasswordKey 682 value: "$(metaDbNonEncPasswd)$(metaDbNonEncPasswd)" 683 - name: cpu_cores 684 valueFrom: 685 resourceFieldRef: 686 containerName: engine 687 resource: limits.cpu 688 - name: mem_size 689 valueFrom: 690 resourceFieldRef: 691 containerName: engine 692 resource: limits.memory 693 divisor: "1M" 694 - name: disk_size 695 value: "10240" 696 - name: disk_quota 697 value: "10240" 698 volumeMounts: 699 - name: binlog 700 mountPath: /home/admin/binlog 701 - name: log 702 mountPath: /home/admin/logs 703 - name: exporter 704 args: 705 - -web.listen-addr=:9104 706 - -web.metrics-path=/metrics 707 - -target.port=3007 708 - -target.type=CDC 709 env: 710 - name: GOMAXPROCS 711 value: "1" 712 ports: 713 - containerPort: 9104 714 name: metrics 715 protocol: TCP 716