Kubernetes��N���E�h�l�C�e�B�u�����֗��ɗ��p����Z�p��c�[���̊T�v�A�g�������Ïk���ďЉ��A�ځB����́AOperator�𗘗p���āAKubernetes��Ńf�[�^�x�[�X�삳������@�Ƃ��̗��_���Љ�܂��B
���̋L���͉������ł��B����o�^�i�����j����ƑS�Ă������������܂��B
�@Kubernetes��N���E�h�l�C�e�B�u�����֗��ɗ��p����Z�p��c�[���̊T�v�A�g�������Ïk���ďЉ��{�A�ځuCloud Native�`�[�g�V�[�g�v�B�A�ڑ�8���ł́A�uOperator�v�𗘗p����Kubernetes���g��������@���Љ�܂����B
�@����͂���Operator�𗘗p���āAKubernetes��ŁuPostgreSQL�v�삳������@�Ƃ��̗��_���Љ�܂��B
DB�}�X�^�[�F���AKubernetes�Ńf�[�^�x�[�X�iDB�j���������ƂȂ��́H
DB���S�ҁFKubernetes���DB�����Ă�����ł����H�@���������́uKubernetes���DB�͐�Γ������ȁv���Č����Ă܂�����B
DB�}�X�^�[�F����́A������������ɏ�Â��ˁB���́AOperator���Ă����֗��Ȃ������āA���S���S��DB���^�p�ł����B
�@���āA���������Ȃ�DB��Kubernetes��œ������̂ł��傤���H
�@���낢��ȃ��`�x�[�V����������Ƃ͎v���܂����A�I���v���~�X��Kubernetes�𗘗p���Ă���ꍇ�A�uAmazon Relational Database Service�v�iRDS�j�̂悤�ȃN���E�h�x���_�[������DB�T�[�r�X�𗘗p�ł��Ȃ��̂ŁA������PostgreSQL�̂悤�ȃI�[�v���\�[�X�\�t�g�E�F�A�iOSS�j��DB���\�z�������Ƃ����P�[�X������ł��傤�B
�@�������PostgreSQL��Pod���N�����邾���Ȃ�ADB�̃R���e�i�C���[�W�𗘗p�ł��܂����A�Ϗ�Q����X�P�[���r���e�B�A�o�b�N�A�b�v��j�^�����O�܂ōl����ƁAPostgreSQL�{�̈ȊO�ɂ����܂��܂ȃv���_�N�g��A���̐v�ƊǗ����K�v�ɂȂ�܂��B
�@�܂��A�A�v���P�[�V�����̃}�C�N���T�[�r�X�����i�ނɂ�āA�P��̋����DB�ł͂Ȃ��A�T�[�r�X���Ƃɏ������ɂ���DB���쐬����\���������悤�ɂȂ�܂��B���̏ꍇ�A������DB���Ǘ�����K�v������܂����A�]���̉^�p�ł�DB�̐�����������ɂ�ĉ^�p�R�X�g�������������ł��B
�@���̂悤�Ȕw�i�̉��A������DB�������I�ɊǗ����邽�߂ɁADB���uDeployment�v�uStatefulSet�v�Ȃǂ̂悤��Kubernetes�̃��\�[�X�Ƃ��Ĉ��������Ƃ����̂����ɂ���P�[�X�ł��B
�@���̓_�A�uPostgreSQL Operator�v�𗘗p����A�^�p�ɕK�v�Ȃ��̂���ʂ肻�����PostgreSQL�N���X�^���ȒP�ɍ\�z�ł��A���̃A�v���P�[�V�������lKubernetes��̃��\�[�X�Ƃ��ĉ^�p�ł��܂��B
�@�{�L���ł́APostgreSQL Operator�����ėᎦ���Ȃ���A���̎�y����Kubernetes���DB�������_�����Ă����܂��B
�@2022�N7�����݁APostgreSQL Operator�́APostgreSQL�J���R�~���j�e�B�[�������ɊJ���A���Ă�����̂͂���܂���B���܂��܂Ȋ�Ƃ�R�~���j�e�B�[�����ꂼ��J������PostgreSQL Operator����Ă���ł��i��1�j�B
��1�FPostgreSQL Operator�̔�r�ɂ��ẮANTT�f�[�^�����J���Ă����X���C�h������̂ŁAPostgreSQL Operator���Ƃ̋@�\�̈Ⴂ��APGO�ȊO��Operator�ɋ����̂�����͂���������Q�Ƃ��������B
�@����͐�����PostgreSQL Operator�̒��ł��APostgreSQL�R�A�J���҂������ݐЂ�����Crunchy Data���J�����哱���Ă���uPGO�v�����グ�܂��B
�@���p����@�\�͈̔͂ŁAPGO���쐬����PostgreSQL�N���X�^�̊T�v��}�����܂��B
�@PostgreSQL�̃C���X�^���X�ɂ́A�Q�Ɓ^�X�V�����̃��N�G�X�g�������\�ȃv���C�}���ƁA�Q�Ƃ̂ݏ����\�ȃ��[�h���v���J�iPostgreSQL�ł͒ʏ�u�z�b�g�X�^���o�C�v�Ƃ����܂��j������܂����A��̐}�ł́A�v���C�}���ƃ��[�h���v���J�p��Pod�����ꂼ��1�C���X�^���X���N�����Ă����Ԃ������Ă��܂��B��قlj������悤�ɁAPGO�ł�2��ȏ�̃��[�h���v���J��lj����邱�Ƃ��\�ł��B
�@PostgreSQL�����삷��Pod���ɂ́APostgreSQL��database�R���e�i�̑��A�ݒ�t�@�C����ؖ������X�V����R���e�i�A�o�b�N�A�b�v�T�[�o�ƒʐM����T�C�h�J�[�R���e�i���N�����܂��B�I�v�V�����Ń��j�^�����O�p�̏����G�N�X�|�[�g����T�C�h�J�[�R���e�i���N���ł��܂��B
�@PostgreSQL��Pod��StatefulSet����Ǘ�����܂��B���[�h���v���J��lj������ꍇ�A�V����StatefulSet���쐬���܂��B�ʏ�1��StatefulSet�̃��v���J���𑝂₷�Ƃ���ł����APGO�ł͂��ꂼ��Ɨ�����StatefulSet���쐬���܂��B�������قnj���悤�ɁAPGO���eStatefulSet���Ǘ����邱�ƂŁAStatefulSet�g�ݍ��݂̃��[�����O�A�b�v�f�[�g�����APostgreSQL�̏�Ԃ܂����_��ȃA�b�v�f�[�g�ɂȂ�܂��B
�@�v���C�}���ƃ��[�h���v���J���ꂼ��ɃA�N�Z�X����Service���쐬����܂��B���[�U�[�͂�����Service�ɃA�N�Z�X���邱�ƂŁA�n��ւ��Ȃ�PostgreSQL�N���X�^�����̏�Ԃ��ω����Ă��A������ӎ����邱�ƂȂ�PostgreSQL�ɃA�N�Z�X�ł��܂��B
�@�o�b�N�A�b�v�T�[�o�p��StatefulSet���쐬����܂��B�o�b�N�A�b�v�ɂ�PostgreSQL�p�̃o�b�N�A�b�v�\�t�g�E�F�A�upgBackRest�v���g�ݍ��܂�Ă��܂��B
�@����m�F�p��Kubernetes�N���X�^���������܂��B
�@PGO��Kubernetes�AOpenShift�ARancher�AGoogle Kubernetes Engine�iGKE�j�AAmazon Elastic Kubernetes Service�iEKS�j�Ƃ������v���b�g�t�H�[����œ���m�F����Ă��܂��BKubernetes�́A1.20�ȏ�̃o�[�W�������T�|�[�g�ΏۂƂȂ��Ă��܂��B�T�|�[�g����Ă���e�v���b�g�t�H�[���̃o�[�W�����������T�C�g���Q�Ƃ��Ă��������B
�@�����̃v���b�g�t�H�[���̑��A�uminikube�v�ukind�v�Ȃǂł����p�\�ł��B
�@�p�ӂ������Ńf�t�H���g�́uStorage Class�v�����݂��邱�Ƃ��m�F���܂��B����́APostgreSQL�N���X�^���쐬����Ƃ��ȂǁA�{�����[���I�ɕ����o�����߂ɗ��p����܂��B�Ȃ��A�J�X�^�����\�[�X�̃}�j�t�F�X�g�Ŏw�肷��A�f�t�H���g�ȊO��Storage Class�𗘗p���邱�Ƃ��ł��܂��B
�@�������minikube�𗘗p�����ꍇ�̗�ł��B
$ kubectl get sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE standard (default) k8s.io/minikube-hostpath Delete Immediate false 54s
�@PGO�͎��M���_�̍ŐV�o�[�W�����A5.1.1�𗘗p���܂��BCrunchy Data��PGO�̃C���X�g�[�����ނ�APostgreSQL�N���X�^���쐬����uKustomize�v�̃T���v���Ȃǂ�GitHub��Ɍ��J���Ă���̂ŁA��������N���[�����܂��B
$ git clone https://github.com/CrunchyData/postgres-operator-examples.git
�@�N���[�������f�B���N�g���Ɉړ����܂��B�ȍ~�̍�Ƃ͖{�f�B���N�g�����Ŏ��{���܂��B
$ cd postgres-operator-examples
�@�{�L�������M�������_�̃R�~�b�gID���w�肵�ău�����`���쐬�A�`�F�b�N�A�E�g���܂��B
�@HEAD�𗘗p����ꍇ�A�{�L���Ƃ͓��삪�ς��\��������̂ŁA�����h�L�������g���Q�Ƃ��Ă��������B
$ git checkout -b pgotest 12085b73c85f3c30f0a0b1d3f5fe17b22c3eede3
�@Kustomize�ɂ����Operator�̃C���X�g�[����PostgreSQL�N���X�^�̍\�����e���v���[�g������Ă���̂ŁA����𗘗p���܂��B���̒ʂ���s���邱�ƂŁAPGO�p��Namespace�upostgres-operator�v���쐬����APGO���C���X�g�[������܂��B
$ kubectl apply -k kustomize/install/namespace $ kubectl apply --server-side -k kustomize/install/default
�@�ukubectl apply�v�R�}���h�����s����ƁA�����ł̓}�j�t�F�X�g��Kubernetes�N���X�^�̍������m�F���A����������ꍇ���̕�����ύX���܂����A���̏����͏]��kubectl�ł̂݉\�ł����B
�@���̂��߁A�����̒m��Ȃ��Ƃ���ŕʂ̐l��Kubernetes��ύX�����ꍇ�A���̕ύX�ɋC�t�����ƂȂ�kubectl apply�ŏ㏑�����Ă��܂�����Akubectl�ȊO�̃N���C�A���g���炱�̎d�g�݂𗘗p���悤�Ƃ����肷��ƁAkubectl�̃R�[�h�𗘗p����Ƃ������Ή����K�v�ƂȂ��肪����܂����B
�@�{���̑Ή��Ƃ��āA���̏�����kubectl�ł͂Ȃ�Kubernetes�Ŏ��{����d�g�݂��J������܂����B�����L��������I�v�V������--server-side�ł��B
�@Operator��Pod�́uSTATUS�v���uRunning�v�ɂȂ�܂ő҂��܂��B
$ kubectl -n postgres-operator get pods \ --selector=postgres-operator.crunchydata.com/control-plane=postgres-operator \ --field-selector=status.phase=Running NAME READY STATUS RESTARTS AGE pgo-548fdd84bd-8hkhw 1/1 Running 0 12m
�@PGO��������J�n������APostgreSQL�N���X�^���쐬�ł��܂��B��̓I�ɂ́A�J�X�^�����\�[�X�Ƃ��āuPostgresCluster�v�𗘗p�ł���悤�ɂȂ�܂��B����𗘗p���邱�ƂŁAPostgreSQL�̃N���X�^���쐬���܂��B
�@�T���v���Ƃ��Ċ����PostgreSQL�N���X�^�̍\�����p�ӂ���Ă��܂����A����͍ł��V���v����PostgreSQL1��\����Kustomize�ukustomize/postgres�v�𗘗p���܂��B
�@�}�j�t�F�X�g��K�p����O�ɁA���g���m�F���Ă݂܂��傤�B�ȉ��ukustomize/postgres/postgres.yaml�v�ɊȒP�Ȑ�����NjL���Ă��܂����A�ڍׂ₻�̑��ɐݒ�\�ȍ��ڂɂ��ẮAPGO��CRD Reference���Q�Ƃ��Ă��������B
1 apiVersion: postgres-operator.crunchydata.com/v1beta1 2 kind: PostgresCluster # �J�X�^�����\�[�X�� 3 metadata: 4 name: hippo # PostgreSQL�N���X�^�̖��O 5 spec: 6 image: registry.developers.crunchydata.com/crunchydata/crunchy-postgres:ubi8-14.3-0 # PostgreSQL�̃R���e�i�C���[�W 7 postgresVersion: 14 # PostgreSQL�̃o�[�W���� 8 instances: # PostgreSQL Pod�̐ݒ� 9 - name: instance1 10 dataVolumeClaimSpec: # PostgreSQL�̃f�[�^��ۑ�����PVC�iPersistent Volume Claim�j�̐ݒ�B�{�L�q�̏ꍇ�Adefault��Storage Class�𗘗p����PVC�I�ɍ쐬 11 accessModes: 12 - "ReadWriteOnce" 13 resources: 14 requests: 15 storage: 1Gi 16 backups: 17 pgbackrest: # PostgreSQL�̃o�b�N�A�b�v�\�t�g�E�F�A�ApgBackRest�̐ݒ� 18 image: registry.developers.crunchydata.com/crunchydata/crunchy-pgbackrest:ubi8-2.38-1 # pgBackRest�̃R���e�i�C���[�W 19 repos: # �o�b�N�A�b�v�̕ۑ�����w�� 20 - name: repo1 21 volume: 22 volumeClaimSpec: # �o�b�N�A�b�v��ۑ�����PVC�̐ݒ�B�{�L�q�̏ꍇ�Adefault��Storage Class�𗘗p����PVC�I�ɍ쐬 23 accessModes: 24 - "ReadWriteOnce" 25 resources: 26 requests: 27 storage: 1Gi
�@PostgresCluster���\�[�X��Kubernetes��ɍ쐬���܂��BKustomize��YAML����`����Ă���̂ŁA���̂悤�Ɂu-k�v�I�v�V�����𗘗p���ēK�p���܂��B
$ kubectl apply -k kustomize/postgres
�@PostgreSQL��Pod��STATUS��Running�ɂȂ�܂ő҂��܂��BYAML�t�@�C���Ŋm�F�����R���e�i�C���[�W�̃T�C�Y��1GB���x�Ƃ���Ȃ�ɑ傫���̂ŁA�����Pod�N���܂łɎ��Ԃ������邱�Ƃ�����܂��i��2�j���A�C���ɑ҂��܂��傤�B
��2�F�M�҂̊��ł�1���Ԃقǂ����邱�Ƃ�����܂����B
�@PostgreSQL�̃T�[�r�X�����R���e�i�̑��A��q�����ݒ�t�@�C����ؖ����̍X�V�A�o�b�N�A�b�v�T�[�o�ƒʐM����R���e�i���N�����A���v4�̃R���e�i���N�����܂��B
�@���̃R�}���h�ł́A�uhippo�v�Ƃ������O��PostgreSQL�N���X�^�ɂ��āAPostgreSQL�C���X�^���X�̏����擾���Ă��܂��B
$ kubectl -n postgres-operator get pods \ --selector=postgres-operator.crunchydata.com/cluster=hippo,postgres-operator.crunchydata.com/instance NAME READY STATUS RESTARTS AGE hippo-instance1-w7sc-0 4/4 Running 0 85m $ kubectl -n postgres-operator get pod hippo-instance1-w7sc-0 \ -o jsonpath="{.spec.containers[*].name}" database replication-cert-copy pgbackrest pgbackrest-config
�@PostgreSQL�̃f�[�^�ۑ��p�A����уo�b�N�A�b�v�f�[�^�ۑ��p��PVC�������o����Ă��邱�Ƃ��m�F�ł��܂��B
$ kubectl -n postgres-operator get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE hippo-instance1-w7sc-pgdata Bound pvc-d56cff2f-da29-4e0f-b317-0632c49d8731 1Gi RWO standard 47s hippo-repo1 Bound pvc-94850c1e-ab9f-4f5e-aa22-d7cda2b60266 1Gi RWO standard 47s
�@�����PostgreSQL�̃T�[�r�X�����p�\�ɂȂ�܂����B
�@�쐬����PostgreSQL�ɐڑ����āA�T�[�r�X�����p�ł��邱�Ƃ��m�F���܂��B�ڑ����Ƀp�X���[�h�F���K�v�ɂȂ�̂ŁA�uSecret�v����p�X���[�h���m�F���܂��B���̗�p�X���[�h�����ϐ��uHIPPO_CLIENT_PGPASSWORD�v�ɕۑ����Ă��܂��B
$ HIPPO_CLIENT_PGPASSWORD=`kubectl -n postgres-operator get secret hippo-pguser-hippo -o json | jq -r .data.password | base64 --decode`
�@�N���C�A���g�Ƃ���Docker�����C���[�W�́upostgres�R���e�i�v�𗘗p���āA�e�X�g�p�Ƀe�[�u���ut1�v���쐬���āA1���f�[�^�𓊓����Ă݂܂��B�ڑ���́A�uhippo-ha�v�Ƃ���Service�������o����Ă���̂ŁA����𗘗p���܂��B
$ kubectl -n postgres-operator run --image=postgres:14 --restart=Never --rm -it client --env="PGPASSWORD=${HIPPO_CLIENT_PGPASSWORD}" --command -- bash If you don't see a command prompt, try pressing enter. root@client:/# psql -h hippo-ha -U hippo -d postgres psql (14.4 (Debian 14.4-1.pgdg110+1)) SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off) Type "help" for help. postgres=> CREATE TABLE t1(t TEXT); CREATE TABLE postgres=> INSERT INTO t1 VALUES ('test'); INSERT 0 1 postgres=> \q root@client:/# exit exit
�@����PostgreSQL�ɐڑ����A�T�[�r�X�𗘗p�ł��邱�Ƃ��m�F�ł��܂����B
�@�@�\�I��PostgreSQL�̓�����m�F�ł��܂������A���ꂾ�����ƁAPGO�𗘗p�����A���ʂ�PostgreSQL�̃R���e�i�𗧂��グ���̑傫�ȈႢ�͂���܂���B
�@��������̓��j�^�����O��[�h���v���J�̒lj��A�o�[�W�����A�b�v�Ȃ�PGO�Œ����^�p�@�\�����Ă����܂��傤�B
�@��������}�j�t�F�X�g��ҏW���ēK�p���邱�ƂŁAPostgreSQL�N���X�^�̍\���ύX��^�p����������ł��܂��B
�@kustomize/postgres/postgres.yaml��ҏW���܂��B28�`31�s�ڂ�V�K�ɒlj����Ă��܂��B
1 apiVersion: postgres-operator.crunchydata.com/v1beta1 2 kind: PostgresCluster 3 metadata: 4 name: hippo 5 spec: ...(��)... 16 backups: ...(��)... 28 monitoring: 29 pgmonitor: 30 exporter: 31 image: registry.developers.crunchydata.com/crunchydata/crunchy-postgres-exporter:ubi8-5.1.1-0
�@�ύX��K�p���܂��B
$ kubectl apply -k kustomize/postgres
�@��قǂ܂ł́u4/4�v�������uREADY�v���A�u5/5�v�ɂȂ�A�R���e�i��1�lj����ꂽ���Ƃ��m�F���܂��B�lj����ꂽ�R���e�i�́APrometheus�T�[�o����̃��N�G�X�g�ɉ�����PostgreSQL�̃��g���N�X��Ԃ��uExporter�v�ł��B
$ kubectl -n postgres-operator get pods --selector=postgres-operator.crunchydata.com/cluster=hippo,postgres-operator.crunchydata.com/instance NAME READY STATUS RESTARTS AGE hippo-instance1-w7sc-0 5/5 Running 0 28m
�@���g���N�X���擾�A�\������ɂ́A���j�^�����O�c�[�����K�v�ł��BPGO�ɂ́A�g�ݍ��݂̃��j�^�����O�c�[�����p�ӂ���Ă���̂ŁA�����ł́APGO�g�ݍ��݂̃��j�^�����O�c�[���i�uPrometheus�v�uGrafana�v�uAlertmanager�v�j���C���X�g�[�����܂��B
$ kubectl apply -k kustomize/monitoring
�@��������ePod��STATUS��Running�ɂȂ�܂ő҂��܂��B
$ kubectl -n postgres-operator get pods --selector=app.kubernetes.io/name=postgres-operator-monitoring NAME READY STATUS RESTARTS AGE crunchy-alertmanager-5fdb768b96-zf46n 1/1 Running 0 10m crunchy-grafana-85799958b8-cbw8q 1/1 Running 0 10m crunchy-prometheus-67b84d64b9-b29c6 1/1 Running 0 10m
�@�����Prometheus�AGrafana�AAlertmanager�����p�\�ɂȂ�܂����B�����Ƀ|�[�g�t�H���[�h�𗘗p���ă��[�J���[���̃u���E�U����Grafana�ɃA�N�Z�X���Ă݂܂��B
�@���L�̃R�}���h�����[�J���[����Ŏ��s���A���[�J����3000�ԃ|�[�g��Grafana���N�����Ă���Pod��3000�ԃ|�[�g�Ƀ|�[�g�t�H���[�h���܂��B
$ GRAFANA=$(kubectl -n postgres-operator get pods -o name --selector=name=crunchy-grafana) $ kubectl -n postgres-operator port-forward ${GRAFANA} 3000:3000
�@�u���E�U�Łuhttp://localhost:3000�v�ɃA�N�Z�X����ƁA���O�C����ʂ��\������܂��B�������[�U�[���ƃp�X���[�h�́A��������uadmin�v�ł����A���O�C����p�X���[�h�̕ύX�𑣂����̂ŕύX���Ă����܂��B
��Web�u���E�U���痘�p���Ă���N���E�h�R���\�[�����kubectl�R�}���h�����s���Ă���ꍇ�́A�|�[�g�t�H���[�h���ă��[�J����Web�u���E�U�ʼn�ʂ�\���ł��܂���B���[�J���̒[����kubectl�����ăR�}���h�����s���Ă��������B
�@�_�b�V���{�[�h��������Ă݂܂��傤�B
�@�uPostgreSQLDetails�v�_�b�V���{�[�h�ł́APostgreSQL�̓����̏��m�F�ł��܂��B�Ⴆ�APostgreSQL�ւ̐ڑ��̏iActive Connections�AIdle In Transaction�Ȃǁj�A�L���b�V���q�b�g���iCache Hit Ratio�j�ADB�T�C�Y�idatabase size�j�A���b�N�̎擾�iLocks�j�Ȃǂ��m�F�\�ł��B
�@�uQuery Statistics�v�_�b�V���{�[�h�ł́APostgreSQL�����s�����N�G���̏����m�F�ł��܂��B�Ⴆ�ADB�N���X�^�S�̂̃N�G�������s�iQueries Executed�j����s���ԁiQuery Runtime�j�Ȃǂ̃}�N���ȏ��̑��ASQL�N�G�����Ƃ̕��ρ^�ő�^�����s���ԁiQuery Mean Runtime�AQuery Max Runtime�AQuery Total Runtime�j���m�F�ł��܂��B
�@���̑��ɂ�����_�b�V���{�[�h���p�ӂ���Ă���A�o�b�N�A�b�v�̏�Pod�̃��\�[�X���p�Ȃǂ��m�F�\�ł��B
�@�����܂�PostgreSQL��1�䂾���ł������A���[�h���v���J��lj����A�Q�Ɛ��\���X�P�[���A�E�g���Ă݂܂��傤�B
�@��قNJm�F�����ʂ�A����PostgreSQL�C���X�^���X��Pod��1�����ł��B����̓v���C�}����1�䂾�����삵�Ă��邱�Ƃ��Ӗ����܂��B
$ kubectl -n postgres-operator get pods \ --selector=postgres-operator.crunchydata.com/cluster=hippo,postgres-operator.crunchydata.com/instance NAME READY STATUS RESTARTS AGE hippo-instance1-w7sc-0 5/5 Running 0 15m
�@kustomize/postgres/postgres.yaml��ҏW���A�v���C�}��1��A���[�h���v���J1��̍��v2��\���ɕύX���Ă݂܂��B10�s�ڂ�V�K�ɒlj����Ă��܂��B
1 apiVersion: postgres-operator.crunchydata.com/v1beta1 2 kind: PostgresCluster 3 metadata: 4 name: hippo 5 spec: 6 image: registry.developers.crunchydata.com/crunchydata/crunchy-postgres:ubi8-14.3-0 7 postgresVersion: 14 8 instances: 9 - name: instance1 10 replicas: 2 11 dataVolumeClaimSpec: ...(��)...
�@�ύX��K�p���܂��B
$ kubectl apply -k kustomize/postgres
�@���炭����ƃ��[�h���v���J���N�����APod��2�N�����܂��B
$ kubectl -n postgres-operator get pods \ --selector=postgres-operator.crunchydata.com/cluster=hippo,postgres-operator.crunchydata.com/instance NAME READY STATUS RESTARTS AGE hippo-instance1-w7sc-0 5/5 Running 0 16m hippo-instance1-f8m4-0 5/5 Running 0 22s
�@�N���������[�h���v���J��SQL�N�G���s���Ă݂܂��B���[�h���v���J�ڑ��p�ɁA�uhippo-replicas�v�Ƃ���Service���p�ӂ���Ă���̂ŁA����𗘗p���܂��B
$ kubectl -n postgres-operator run --image=postgres:14 --restart=Never \ --rm -i client --env="PGPASSWORD=${HIPPO_CLIENT_PGPASSWORD}" \ --command -- psql -h hippo-replicas -U hippo -d postgres -c "SELECT * FROM t1" t ------ test (1 row)
�@���[�h���v���J�͂��̖��̒ʂ�A�ǂݍ��ݐ�p�C���X�^���X�Ȃ̂ŁA�Q�ƃ��N�G�X�g�̃X�P�[���A�E�g�ɂ͗L���ł����A�X�V�n�̃N�G�������s�ł��܂���B���L�̗�ł̓e�[�u����V�K�쐬���悤�Ƃ��Ă��܂����A���s���Ă��܂��B
$ kubectl -n postgres-operator run --image=postgres:14 --restart=Never \ --rm -i client --env="PGPASSWORD=${HIPPO_CLIENT_PGPASSWORD}" \ --command -- psql -h hippo-replicas -U hippo -d postgres \ -c "CREATE TABLE t2(t TEXT)" ERROR: cannot execute CREATE TABLE in a read-only transaction
�@���[�h���v���J�̑䐔��2��ȏ�ɑ��₵����A�C�ӂ̑䐔�Ɍ��炵���肷�邱�Ƃ��A�}�j�t�F�X�g��ύX���邱�ƂŊȒP�Ɏ����ł��܂��B�Ⴆ�A��قǃ}�j�t�F�X�g�ɒlj������ureplicas�v���u3�v�ɕύX���āi���L�R�[�h��10�s�ځj�}�j�t�F�X�g��K�p����ƁA�v���C�}��1��A���[�h���v���J2��̍��v3���PostgreSQL�N���X�^�Ɋg������܂��B
1 apiVersion: postgres-operator.crunchydata.com/v1beta1 2 kind: PostgresCluster 3 metadata: 4 name: hippo 5 spec: 6 image: registry.developers.crunchydata.com/crunchydata/crunchy-postgres:ubi8-14.3-0 7 postgresVersion: 14 8 instances: 9 - name: instance1 10 replicas: 3 11 dataVolumeClaimSpec: ...(��)...
�@���[�h���v���J���쐬����ɂ́A��ʓI�ɂ͎��̂悤�ȍ�Ƃ��K�v�ɂȂ�܂��B
�@Kubernetes��Operator�𗘗p���邱�ƂŁA�}�j�t�F�X�g��ҏW�A�K�p���邾���ŊȒP�Ƀ��[�h���v���J��lj��A�폜�ł��܂����B
�@��Q�Ȃǂɂ���āA�錾������ԂƎ��ۂ̏�Ԃ������i������j�����ꍇ�AKubernetes��Operator���錾������ԂɏC�����Ă���܂��B���̎��ȏC���̗l�q���A���炩�̏�Q�����������Ƒz�肵�A�v���C�}����PostgreSQL���~���Ċm�F���Ă݂܂��B
�@�upg_ctl stop -m immediate�v�R�}���h�����s���APostgreSQL����~���܂��B
$ PG_CLUSTER_PRIMARY_POD=`kubectl get pod -n postgres-operator -o name \ -l postgres-operator.crunchydata.com/cluster=hippo,postgres-operator.crunchydata.com/role=master` $ kubectl -n postgres-operator exec ${PG_CLUSTER_PRIMARY_POD} -- /usr/pgsql-14/bin/pg_ctl stop -m immediate waiting for server to shut down.... done server stopped
�@��~����Ƀv���C�}���ɐڑ�����ƁA�G���[�ɂȂ�܂��B
$ kubectl -n postgres-operator run --image=postgres:14 --restart=Never \ --rm -i client --env="PGPASSWORD=${HIPPO_CLIENT_PGPASSWORD}" \ --command -- psql -h hippo-ha -U hippo -d postgres -c "select 1" psql: error: connection to server at "hippo-ha" (10.96.72.178), port 5432 failed: Connection refused Is the server running on that host and accepting TCP/IP connections?
�@���炭����ƒʏ�ʂ�ڑ��\�ɂȂ�A���ȏC������Ă��邱�Ƃ��m�F�ł��܂��B
$ kubectl -n postgres-operator run --image=postgres:14 --restart=Never \ --rm -i client --env="PGPASSWORD=${HIPPO_CLIENT_PGPASSWORD}" \ --command -- psql -h hippo-ha -U hippo -d postgres -c "select 1" ?column? ---------- 1 (1 row)
�@���̂悤�Ȏ��ȏC���́AKubernetes�����ł��\�Ȃ悤�ɂ��v���܂����AHA�i�n�C�A�x�C���r���e�B�j�\�t�g�E�F�A�uPatroni�v�����Ă��܂��B�����̂�����͉��L�R�������������������B
�@Patroni�́AOSS��PostgreSQL����HA�\�t�g�E�F�A�ł��B
�@3�m�[�h�ȏ��PostgreSQL�N���X�^���e�Ղɍ쐬�\�ŁA�I���v���~�X��Kubernetes��ł����삷�邱�Ƃ���A�uStackGres�v�Ȃ�PGO�ȊO��PostgreSQL Operator�ł����p����Ă��܂��B
�@Patroni�̑�܂��Ȏd�g�݂́A���̒ʂ�ł��B
�@Kubernetes�����ȏC���\�͂����邱�Ƃ���APatroni�܂ŕK�v���ǂ����^��Ɋ�����������邩������܂���B�������ADB�̉p�������߂�ɂ́ADBMS�����̏������܂�����ŁA���퐫��n��ւ��f����K�v������̂ŁAKubernetes�����ł͏\���ȑΉ�������̂ł��B
�@�Ⴆ�A�v���C�}���̃_�E����A�����䑶�݂��郊�[�h���v���J����V�v���C�}����I�o����ꍇ�A���̏����������Ȃ�A�e���[�h���v���J�̂����ł����v���P�[�V�����̒x�������������̂�V�v���C�}���Ƃ��đI�o���ׂ��ł��傤�B���̂悤�Ȕ��f��Patroni�ɂ���Ď�������܂��B
�@PostgreSQL�͔N�Ɉ�x�̃��W���[�o�[�W�����A�b�v�ŐV�@�\���lj�����鑼�A�}�C�i�[�o�[�W���������Ȃ��Ƃ�3�J���Ɉ�x�����[�X���܂��B�o�[�W�����̕\�L�́AX.Y�̌`�����Ƃ�AX�����W���[�o�[�W�����ԍ��AY���}�C�i�[�o�[�W�����ł��B�u14.3�v�̏ꍇ�A���W���[�o�[�W������14�A�}�C�i�[�o�[�W������3�ł��B
�@�}�C�i�[�o�[�W�����̓o�O��Z�L�����e�B��̖����C�����郊���[�X�Ȃ̂ŁA��{�I�ɗ��p���Ă��郁�W���[�o�[�W�������̍ŐV�̃}�C�i�[�o�[�W�����ɃA�b�v�f�[�g���Ă������Ƃ��]�܂����ł��B
�@���̃}�C�i�[�o�[�W�����A�b�v�Ή����}�j�t�F�X�g����ȒP�ɂł��܂��i��3�j�B��̓I�ɂ́A�}�j�t�F�X�g���PostgreSQL�̃R���e�i�C���[�W��ύX����APGO�����[�����O�A�b�v�f�[�g�����Ă���܂��B���[�����O�A�b�v�f�[�g���͌n��ւ�����������̂ŁAPostgreSQL�̃T�[�r�X���ꎞ�I�ɒ�~���܂��B
��3�F���W���[�o�[�W�����A�b�v��PGO 5.1����T�|�[�g����Ă��܂��B�}�C�i�[�o�[�W�����A�b�v�ɔ�ׂ�Ǝ菇�������܂����A�����̂������Crunchy Data�̃u���O���Q�Ƃ��Ă��������B
�@PGO�����p�\�ȃR���e�i�C���[�W��Crunchy Data�����J���Ă��܂��B�����܂ŁA2022�N7���̎��M���_�Ń��W���[�A�}�C�i�[�Ƃ��ɃR���e�i�C���[�W�����݂���ŐV�o�[�W����14.3�𗘗p���Ă���̂ŁA��������14.2�ɕύX������A14.3�ɃA�b�v�f�[�g���܂��B
�@kustomize/postgres/postgres.yaml��6�s�ڂ�ҏW���A�R���e�i�C���[�W���uubi8-14.3-0�v����uubi8-14.2-1�v�ɕύX���܂��i��4�j�B
��4�F2022�N7���̎��M���_�ł́A14.2-1�R���e�i�C���[�W�����p�\�Ȃ��Ƃ��m�F���Ă��܂����A�C���[�W�̃_�E�����[�h�Ɏ��s����Ȃǂ����ꍇ�ACrunchy Data�Ђ����J���Ă���ŐV��PostgreSQL14�̃R���e�i�C���[�W�������T�C�g����m�F���A�K�X���p�\�ȃC���[�W��I�����Ă��������B
�@�n�C�t�����O��PostgreSQL�̃o�[�W�����A�n�C�t���̌�̐�����PGO�̃R���e�i�C���[�W�̃o�[�W�����ł��B6�s�ڂ�ύX���Ă��܂��B
1 apiVersion: postgres-operator.crunchydata.com/v1beta1 2 kind: PostgresCluster 3 metadata: 4 name: hippo 5 spec: 6 image: registry.developers.crunchydata.com/crunchydata/crunchy-postgres:ubi8-14.2-1 ...(��)...
�@�ύX��K�p���܂��B
$ kubectl apply -k kustomize/postgres
�@���L�R�}���h�����s���A�R���e�i�C���[�W��ubi8-14.2-1�ɕύX���ꂽ���Ƃ��m�F���܂��B
$ kubectl -n postgres-operator get pods \ --selector=postgres-operator.crunchydata.com/cluster=hippo,postgres-operator.crunchydata.com/instance \ -o=jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.metadata.labels.postgres-operator\.crunchydata\.com/role}{"\t"}{.status.phase}{"\t"}{.spec.containers[].image}{"\n"}{end}' hippo-instance1-w7sc-0 replica Running registry.developers.crunchydata.com/crunchydata/crunchy-postgres:ubi8-14.2-1 hippo-instance1-f8m4-0 master Running registry.developers.crunchydata.com/crunchydata/crunchy-postgres:ubi8-14.2-1
�@�N���X�^�����\�z�����l�R���e�i�C���[�W�̃T�C�Y������Ȃ�ɑ傫���̂ŁAPod�N���܂łɎ��Ԃ������邱�Ƃ�����܂����A��͂�C���ɑ҂��܂��傤�B
�@���āA��قǕύX����kustomize/postgres/postgres.yaml��6�s�ڂ̃R���e�i�C���[�W��ubi8-14.3-0�ɖ߂��A�}�j�t�F�X�g��K�p���Ă݂܂��傤�B���x�̓R���e�i�C���[�W�����Ƀ_�E�����[�h�ς݂Ȃ̂ŁA�Z���ԂŊ�������͂��ł��B
�@���[�����O�A�b�v�f�[�g�́A�܂����v���J������{����܂��B���̌�X�C�b�`�I�[�o���A���v���C�}�����A�b�v�f�[�g���ꊮ���ƂȂ�܂��B�A�b�v�f�[�g����������ƁA�ȉ��̂悤�ɃR���e�i�C���[�W�̃o�[�W������ubi8-14.3-0�ɍX�V����܂��B
$ kubectl -n postgres-operator get pods \ --selector=postgres-operator.crunchydata.com/cluster=hippo,postgres-operator.crunchydata.com/instance \ -o=jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.metadata.labels.postgres-operator\.crunchydata\.com/role}{"\t"}{.status.phase}{"\t"}{.spec.containers[].image}{"\n"}{end}' hippo-instance1-w7sc-0 master Running registry.developers.crunchydata.com/crunchydata/crunchy-postgres:ubi8-14.3-0 hippo-instance1-f8m4-0 replica Running registry.developers.crunchydata.com/crunchydata/crunchy-postgres:ubi8-14.3-0
�@���[�����O�A�b�v�f�[�g�ɂ���ăv���C�}���imaster�j�ƃ��[�h���v���J�ireplica�j������ւ���Ă��邱�Ƃ��m�F�ł��܂��B
�@PostgreSQL�Ɋi�[�����f�[�^�̃o�b�N�A�b�v�̉^�p���A�}�j�t�F�X�g��ɐ錾���邱�ƂŎ����ł��܂��B�Ⴆ�A�J�n�������w�肵�������o�b�N�A�b�v�̒�`��A�擾�����o�b�N�A�b�v�f�[�^�𗘗p���ĐV�K��PostgreSQL�N���X�^���쐬�ł��܂��B
�@����͎����o�b�N�A�b�v�̐ݒ�ƃ��X�g�A�̎菇���m�F���Ă݂܂��B�o�b�N�A�b�v�̕ۑ���́AAmazon S3��S3�݊��̃I�u�W�F�N�g�X�g���[�W�Ȃǂ��I���\�ł��i��5�j�B�����default��Storage Class���V�K�ɍ쐬����PVC�𗘗p���܂��B
��5�F���̑��Ή����Ă���X�g���[�W�́A�����h�L�������g���Q�Ƃ��Ă��������B
�@kustomize/postgres/postgres.yaml��ҏW���A����5���Ƀt���o�b�N�A�b�v���擾����悤�ɐݒ肵�܂��i��6�j�B
��6�F1���Ԃ�1��Ƃ������p�x�ł̃t���o�b�N�A�b�v���擾���邱�ƂɂȂ�܂����A����͓�����m�F���邽�߂̐ݒ�ł��B���p����ۂ́A�o�b�N�A�b�v�v���܂��Đݒ肵�Ă��������B
�@���s�����̎w��l����cron�Ɠ��l�ł��B22�`23�s�ڂ�V�K�ɒlj����Ă��܂��B�茳�̊��Ŋm�F����ۂ́A������Ƀo�b�N�A�b�v���J�n����悤�ɐݒ肷��Ƃ悢�ł��傤�B
1 apiVersion: postgres-operator.crunchydata.com/v1beta1 2 kind: PostgresCluster ..(��).. 17 backups: 18 pgbackrest: 19 image: registry.developers.crunchydata.com/crunchydata/crunchy-pgbackrest:ubi8-2.38-1 20 repos: 21 - name: repo1 22 schedules: 23 full: "5 * * * *"
�@�ύX��K�p����ƁA�Ή�����cronjob���lj�����܂��B
$ kubectl apply -k kustomize/postgres $ kubectl -n postgres-operator get cronjobs NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE hippo-repo1-full 5 * * * * False 0 <none> 8s
�@�w�肵�������ɂȂ�ƃo�b�N�A�b�v�����s����Pod���N�����܂��B���炭����ƃo�b�N�A�b�v���������ASTATUS��Completed�ɕω����܂��B
$ kubectl -n postgres-operator get pods --selector=postgres-operator.crunchydata.com/pgbackrest-cronjob=full NAME READY STATUS RESTARTS AGE hippo-repo1-full-27617165-kl87w 0/1 Completed 0 9m16s
�@����Ńo�b�N�A�b�v���擾�ł��܂����B�����ă��X�g�A���܂��傤�B�o�b�N�A�b�v�f�[�^�𗘗p���āA�V����PostgreSQL�N���X�^���\�z���邽�߂ɁA���L�́urestore.yaml�v�Ƃ����}�j�t�F�X�g��V�K�ɍ쐬���܂��B4�`10�s�ڂŁA�uelephant�v�Ƃ���PostgreSQL�N���X�^���쐬���A�f�[�^�Ƃ��Đ�قǎ擾�����o�b�N�A�b�v�𗘗p����悤��`���Ă��܂��B
1 apiVersion: postgres-operator.crunchydata.com/v1beta1 2 kind: PostgresCluster 3 metadata: 4 name: elephant # PostgreSQL�N���X�^�̖��O 5 namespace: postgres-operator 6 spec: 7 dataSource: 8 postgresCluster: 9 clusterName: hippo 10 repoName: repo1 11 image: registry.developers.crunchydata.com/crunchydata/crunchy-postgres:ubi8-14.3-0 12 postgresVersion: 14 13 instances: 14 - dataVolumeClaimSpec: 15 accessModes: 16 - "ReadWriteOnce" 17 resources: 18 requests: 19 storage: 1Gi 20 backups: 21 pgbackrest: 22 image: registry.developers.crunchydata.com/crunchydata/crunchy-pgbackrest:ubi8-2.38-1 23 repos: 24 - name: repo1 25 volume: 26 volumeClaimSpec: 27 accessModes: 28 - "ReadWriteOnce" 29 resources: 30 requests: 31 storage: 1Gi
�@�}�j�t�F�X�g��K�p���܂��B
$ kubectl apply -f restore.yaml
�@���炭����ƃ��X�g�A���������A�V����PostgreSQL�N���X�^���N�����܂��B���L��selector�Ŏw�肵��Pod��STATUS��Running�ɂȂ�܂ő҂��܂��傤�B
$ kubectl -n postgres-operator get pods --selector=postgres-operator.crunchydata.com/cluster=elephant,postgres-operator.crunchydata.com/instance NAME READY STATUS RESTARTS AGE elephant-00-79cc-0 4/4 Running 0 2m16s
�@���X�g�A����PostgreSQL�N���X�^�p��Service�ł���uelephant-ha�v�ɐڑ�����ƁA�o�b�N�A�b�v���擾����PostgreSQL�N���X�^�ɓ��������f�[�^�����݂��邱�Ƃ��m�F�ł��܂��B
$ kubectl -n postgres-operator run --image=postgres:14 --restart=Never \ --rm -i client --env="PGPASSWORD=${HIPPO_CLIENT_PGPASSWORD}" \ --command -- psql -h elephant-ha -U hippo -d postgres \ -c 'select * FROM t1' t ------ test (1 row)
�@�o�b�N�A�b�v�^���X�g�A�ɂ��ẮA����Љ�����e�ȊO�ɂ����̂悤�ȋ@�\���T�|�[�g����Ă��܂��B
�@�����̂�����͂�����������h�L�������g�́u�o�b�N�A�b�v�v�u���X�g�A�v���Q�Ƃ��Ă��������B
�@�ȉ��A���PGO�𗘗p����ۂ̒��ӓ_���L�ڂ��܂��B
�@���[�h���v���J�͊ȒP�ɒlj��ł��܂������A��قNJm�F�����ʂ�A����͂����܂ŎQ�ƃ��N�G�X�g�̂݉\�ȃC���X�^���X�ł��B�X�V���N�G�X�g�������ł���v���C�}����1��̂܂܂Ȃ̂ŁA�������ݐ��\���X�P�[���A�E�g�����邱�Ƃ͂ł��܂���B
�@Kubernetes�̃}�j�t�F�X�g��ҏW�A�K�p���邱�Ƃł��܂��܂ȉ^�p���ł��邱�Ƃ����Ă��܂������A�}�j�t�F�X�g����͎��{�ł��Ȃ����������܂��B�Ⴆ�A�擾�����o�b�N�A�b�v�̈ꗗ���m�F���鑀��́A�}�j�t�F�X�g�o�R�ł͂ł��܂���B���L�̂悤�ɃR���e�i��Œ��ڃo�b�N�A�b�v�c�[���̃R�}���h�Ŏ��s����Ȃǂ��K�v�ł��B
$ kubectl -n postgres-operator exec hippo-repo-host-0 -c pgbackrest -- pgbackrest info stanza: db status: ok cipher: none db (current) wal archive min/max (14): 000000010000000000000001/00000003000000000000005D full backup: 20220705-115307F timestamp start/stop: 2022-07-07 11:53:07 / 2022-07-07 11:53:51 wal start/stop: 000000010000000000000004 / 000000010000000000000004 database size: 33.9MB, database backup size: 33.9MB repo1: backup set size: 4.3MB, backup size: 4.3MB ..(��) full backup: 20220705-120802F timestamp start/stop: 2022-07-07 12:08:02 / 2022-07-05 12:08:10
�@�Ď��^HA�Ȃǂ��܂��܂Ȏ��Ӄ\�t�g�E�F�A��@�\�������i�ǂ�����j����Ă���PGO�ł����A�X�g���[�W�ɂ��Ă͓��ɗp�ӂ���Ă��܂���BDB�����p����X�g���[�W�̐��\��M�����́A�T�[�r�X�i���ɒ������܂��B����default��storage class�𗘗p���܂������APGO�ł͔C�ӂ�storage class���w��ł���̂ŁADB�̗p�r�◘�p������ɉ����ēK�ȃX�g���[�W��I�����܂��傤�B
�@����́APostgreSQL Operator�Ƃ���PGO���Љ�A�����v�ȋ@�\��������܂����BKubernetes���PostgreSQL�삳���邱�ƂŁA�錾�I��PostgreSQL�N���X�^���Ǘ��\�ɂȂ�A�^�p�������シ�邱�Ƃ������ł����̂ł͂Ȃ��ł��傤���B
�@���ӓ_�����܂�����ŁA�I���v���~�X��Kubernetes�ł�DB�\�z��AKubernetes�̃��\�[�X�Ƃ���DB���^�p�����i�Ƃ��āAPostgreSQL Operator�̗��p���������Ă݂ł͂������ł��傤���B
Copyright © ITmedia, Inc. All Rights Reserved.