OpenShift on IBM Cloud에서 DB2를 StatefulSet으로 설정
1. 개요
OpenShift on IBM Cloud에서 StatefulSet을 사용하여 Db2 컨테이너를 만들 때의 단계입니다.
사전 준비를 위해 아래에서 OpenShift 클러스터를 만듭니다.
htps : // c ぉ d. 이 bm. 코 m / 쿠베 r 네 s / 가타 ぉ g / 오펜시 ftc ぅ s r
2. 구성
검증을 위해 Worker Node와 Pod는 최소한의 단일 구성입니다.
3. 절차
3-1.Db2 컨테이너 준비
Db2 컨테이너는 아래의 Docker Hub 버전 11.5 버전을 사용합니다.
htps : // 후 b. 도 c r. 코 m/r/이 bm 코 m/db2
기존 DB에서 뽑아 온 DDL을 흘리고 싶기 때문에 컨테이너 내에 DDL 파일류를 복사하고 있습니다.
DockerfileFROM ibmcom/db2
RUN mkdir /work
COPY DDL/ /work/DDL/
IBM Cloud Container Registry에 build&push합니다.
CLI에서 IBM Cloud에 로그인하고 Docker 파일과 DDL이 있는 디렉토리에서 다음 명령을 실행하십시오.
ibmcloud cr build -t jp.icr.io/<namespace>/db2:v1.0 .
3-2.imagePullSecret 만들기
이전 단계에서 이미지는 클러스터 외부의 IBM Cloud Container Registry(ICCR)에 배치되므로 OpenShift 클러스터가 ICCR에서 이미지를 풀링할 수 있도록 보안을 준비합니다.
ibmcloud oc cluster pull-secret apply --cluster <cluster_name>
참조 : h tps : // c ぉ d. 이 bm. 코 m/도 cs/오페시 ft? 토피 c = 오펜시 ft 쿠 베 r 네 s r r
3-3.Service Account 만들기
3−1 링크처의 Db2 Docker는 특권 모드로 기동하고 있습니다만, OpenShift에서는 디폴트로 SCC(Security Context Constraints)가 restricted로 설정되어 있기 때문에, 그대로는 기동할 수 없습니다. 여기서는 Db2의 StatefulSet에 대한 서비스 계정을 만들고 권한 모드를 허용하도록 SCC를 구성합니다.
또한 사전에 OpenShift 클러스터에 CLI로 로그인하여 프로젝트를 만들었습니다.
oc create serviceaccount <sa_name>
oc adm policy add-scc-to-user privileged -n <project_name> -z <sa_name>
참조 : htps : // c ぉ d. 이 bm. 코 m/도 cs/오페시 ft? 토피 c = 오펜시 ft 오페 시 ft_ 아 ps & ぉ 카 ぇ = 그럼 # 오 페 시 ft_
3-4.StatefulSet의 yaml 작성
StatefulSet의 yaml을 준비합니다.
PV(Persistent Volume)가 필요하지만 여기에서는 IBM Cloud의 BlockStorage를 StatefulSet 배포 시 동적 프로비저닝합니다.
※사전에 PVC/PVC를 작성하는 경우, StatefulSet에서는 PVC의 이름에 명명 규칙이 있으므로 주의가 필요합니다. <volume_name>-<statefulset_name>-<replica_number>
참조 : htps : // c ぉ d. 이 bm. 코 m/도 cs/오페시 ft? 토피 c = 오펜시 ftb ぉ ck_s 가시 # b ぉ ck_s 들 c_s
※Storage Class의 선택사항은 아래를 참조. 여기에서는 검증을 위해, 2IOPS의 bronze의, 또한 pvc의 삭제시에도 데이터를 보관 유지하는 retain의 Storage Class를 선택하고 있습니다.
참조 : h tps : // c ぉ d. 이 bm. 코 m/도 cs/오페시 ft? 토피 c = 오페시 ftb ぉ ck_s 토레 케
db2_statefulset.yamlapiVersion: v1
kind: Service
metadata:
name: db2
labels:
app: db2
spec:
ports:
- port: 50000
selector:
app: db2
clusterIP: None
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: db2
spec:
selector:
matchLabels:
app: db2
serviceName: "db2"
replicas: 1
# podManagementPolicy: Parallel
template:
metadata:
labels:
app: db2
billingType: "monthly" # storageプロビジョニング用ラベル。"monthly" or "hourly"
region: "jp-tok" # storageプロビジョニング用ラベル。region指定
zone: "tok02" # storageプロビジョニング用ラベル。zone指定
spec:
serviceAccount: <sa_name> # SCC設定用ServiceAccount
containers:
- name: db2
securityContext:
privileged: true # 特権モード
image: jp.icr.io/<namespace>/db2:v1.0
env:
- name: LICENSE
value: accept
- name: DB2INSTANCE
value: db2inst1
- name: DB2INST1_PASSWORD
value: <password>
- name: DBNAME
value: <DB_name>
ports:
- containerPort: 50000
name: db2
imagePullPolicy: IfNotPresent
volumeMounts:
- mountPath: /database
name: db2vol
imagePullSecrets:
- name: <project_name>-jp-icr-io # 作成済みimagePullSecret名を指定
volumeClaimTemplates:
- metadata:
name: db2vol # コンテナ内VolumeMountsのnameと揃える
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi # PVのサイズを指定
storageClassName: ibmc-block-retain-bronze # Storage Classを指定
참조 : h tps : // c ぉ d. 이 bm. 코 m/도 cs/오페시 ft? 토피 c = 오펜시 ftb ぉ ck_s 가시 # b ぉ ck_s 갓
3-5.StatefulSet 배포
StatefulSet을 OpenShift 클러스터에 배포합니다.
oc apply -f db2_statefulset.yaml
3-6.가동 확인
배포 + PV의 동적 프로비저닝이 완료되면 Db2 컨테이너에 로그인하고 DDL을 흘립니다.
# pv/pvcの確認
oc get pv
oc get pvc
# project内のリソース(pod/service/statefulset)の確認
oc get all
# コンテナログイン
oc exec -it db2-0 /bin/bash
4. 정리
IBM Cloud의 OpenShift 클러스터에서 StatefulSet의 Db2 컨테이너를 단일 구성으로 구축해 볼 수 있었습니다. 가용성과 운영을 고려한 구성은 Db2의 Operator 대응에 기대하고 싶습니다.
Reference
이 문제에 관하여(OpenShift on IBM Cloud에서 DB2를 StatefulSet으로 설정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/bata12/items/a1352ab538b703311de2
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
검증을 위해 Worker Node와 Pod는 최소한의 단일 구성입니다.
3. 절차
3-1.Db2 컨테이너 준비
Db2 컨테이너는 아래의 Docker Hub 버전 11.5 버전을 사용합니다.
htps : // 후 b. 도 c r. 코 m/r/이 bm 코 m/db2
기존 DB에서 뽑아 온 DDL을 흘리고 싶기 때문에 컨테이너 내에 DDL 파일류를 복사하고 있습니다.
DockerfileFROM ibmcom/db2
RUN mkdir /work
COPY DDL/ /work/DDL/
IBM Cloud Container Registry에 build&push합니다.
CLI에서 IBM Cloud에 로그인하고 Docker 파일과 DDL이 있는 디렉토리에서 다음 명령을 실행하십시오.
ibmcloud cr build -t jp.icr.io/<namespace>/db2:v1.0 .
3-2.imagePullSecret 만들기
이전 단계에서 이미지는 클러스터 외부의 IBM Cloud Container Registry(ICCR)에 배치되므로 OpenShift 클러스터가 ICCR에서 이미지를 풀링할 수 있도록 보안을 준비합니다.
ibmcloud oc cluster pull-secret apply --cluster <cluster_name>
참조 : h tps : // c ぉ d. 이 bm. 코 m/도 cs/오페시 ft? 토피 c = 오펜시 ft 쿠 베 r 네 s r r
3-3.Service Account 만들기
3−1 링크처의 Db2 Docker는 특권 모드로 기동하고 있습니다만, OpenShift에서는 디폴트로 SCC(Security Context Constraints)가 restricted로 설정되어 있기 때문에, 그대로는 기동할 수 없습니다. 여기서는 Db2의 StatefulSet에 대한 서비스 계정을 만들고 권한 모드를 허용하도록 SCC를 구성합니다.
또한 사전에 OpenShift 클러스터에 CLI로 로그인하여 프로젝트를 만들었습니다.
oc create serviceaccount <sa_name>
oc adm policy add-scc-to-user privileged -n <project_name> -z <sa_name>
참조 : htps : // c ぉ d. 이 bm. 코 m/도 cs/오페시 ft? 토피 c = 오펜시 ft 오페 시 ft_ 아 ps & ぉ 카 ぇ = 그럼 # 오 페 시 ft_
3-4.StatefulSet의 yaml 작성
StatefulSet의 yaml을 준비합니다.
PV(Persistent Volume)가 필요하지만 여기에서는 IBM Cloud의 BlockStorage를 StatefulSet 배포 시 동적 프로비저닝합니다.
※사전에 PVC/PVC를 작성하는 경우, StatefulSet에서는 PVC의 이름에 명명 규칙이 있으므로 주의가 필요합니다. <volume_name>-<statefulset_name>-<replica_number>
참조 : htps : // c ぉ d. 이 bm. 코 m/도 cs/오페시 ft? 토피 c = 오펜시 ftb ぉ ck_s 가시 # b ぉ ck_s 들 c_s
※Storage Class의 선택사항은 아래를 참조. 여기에서는 검증을 위해, 2IOPS의 bronze의, 또한 pvc의 삭제시에도 데이터를 보관 유지하는 retain의 Storage Class를 선택하고 있습니다.
참조 : h tps : // c ぉ d. 이 bm. 코 m/도 cs/오페시 ft? 토피 c = 오페시 ftb ぉ ck_s 토레 케
db2_statefulset.yamlapiVersion: v1
kind: Service
metadata:
name: db2
labels:
app: db2
spec:
ports:
- port: 50000
selector:
app: db2
clusterIP: None
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: db2
spec:
selector:
matchLabels:
app: db2
serviceName: "db2"
replicas: 1
# podManagementPolicy: Parallel
template:
metadata:
labels:
app: db2
billingType: "monthly" # storageプロビジョニング用ラベル。"monthly" or "hourly"
region: "jp-tok" # storageプロビジョニング用ラベル。region指定
zone: "tok02" # storageプロビジョニング用ラベル。zone指定
spec:
serviceAccount: <sa_name> # SCC設定用ServiceAccount
containers:
- name: db2
securityContext:
privileged: true # 特権モード
image: jp.icr.io/<namespace>/db2:v1.0
env:
- name: LICENSE
value: accept
- name: DB2INSTANCE
value: db2inst1
- name: DB2INST1_PASSWORD
value: <password>
- name: DBNAME
value: <DB_name>
ports:
- containerPort: 50000
name: db2
imagePullPolicy: IfNotPresent
volumeMounts:
- mountPath: /database
name: db2vol
imagePullSecrets:
- name: <project_name>-jp-icr-io # 作成済みimagePullSecret名を指定
volumeClaimTemplates:
- metadata:
name: db2vol # コンテナ内VolumeMountsのnameと揃える
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi # PVのサイズを指定
storageClassName: ibmc-block-retain-bronze # Storage Classを指定
참조 : h tps : // c ぉ d. 이 bm. 코 m/도 cs/오페시 ft? 토피 c = 오펜시 ftb ぉ ck_s 가시 # b ぉ ck_s 갓
3-5.StatefulSet 배포
StatefulSet을 OpenShift 클러스터에 배포합니다.
oc apply -f db2_statefulset.yaml
3-6.가동 확인
배포 + PV의 동적 프로비저닝이 완료되면 Db2 컨테이너에 로그인하고 DDL을 흘립니다.
# pv/pvcの確認
oc get pv
oc get pvc
# project内のリソース(pod/service/statefulset)の確認
oc get all
# コンテナログイン
oc exec -it db2-0 /bin/bash
4. 정리
IBM Cloud의 OpenShift 클러스터에서 StatefulSet의 Db2 컨테이너를 단일 구성으로 구축해 볼 수 있었습니다. 가용성과 운영을 고려한 구성은 Db2의 Operator 대응에 기대하고 싶습니다.
Reference
이 문제에 관하여(OpenShift on IBM Cloud에서 DB2를 StatefulSet으로 설정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/bata12/items/a1352ab538b703311de2
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
FROM ibmcom/db2
RUN mkdir /work
COPY DDL/ /work/DDL/
ibmcloud cr build -t jp.icr.io/<namespace>/db2:v1.0 .
ibmcloud oc cluster pull-secret apply --cluster <cluster_name>
oc create serviceaccount <sa_name>
oc adm policy add-scc-to-user privileged -n <project_name> -z <sa_name>
apiVersion: v1
kind: Service
metadata:
name: db2
labels:
app: db2
spec:
ports:
- port: 50000
selector:
app: db2
clusterIP: None
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: db2
spec:
selector:
matchLabels:
app: db2
serviceName: "db2"
replicas: 1
# podManagementPolicy: Parallel
template:
metadata:
labels:
app: db2
billingType: "monthly" # storageプロビジョニング用ラベル。"monthly" or "hourly"
region: "jp-tok" # storageプロビジョニング用ラベル。region指定
zone: "tok02" # storageプロビジョニング用ラベル。zone指定
spec:
serviceAccount: <sa_name> # SCC設定用ServiceAccount
containers:
- name: db2
securityContext:
privileged: true # 特権モード
image: jp.icr.io/<namespace>/db2:v1.0
env:
- name: LICENSE
value: accept
- name: DB2INSTANCE
value: db2inst1
- name: DB2INST1_PASSWORD
value: <password>
- name: DBNAME
value: <DB_name>
ports:
- containerPort: 50000
name: db2
imagePullPolicy: IfNotPresent
volumeMounts:
- mountPath: /database
name: db2vol
imagePullSecrets:
- name: <project_name>-jp-icr-io # 作成済みimagePullSecret名を指定
volumeClaimTemplates:
- metadata:
name: db2vol # コンテナ内VolumeMountsのnameと揃える
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi # PVのサイズを指定
storageClassName: ibmc-block-retain-bronze # Storage Classを指定
oc apply -f db2_statefulset.yaml
# pv/pvcの確認
oc get pv
oc get pvc
# project内のリソース(pod/service/statefulset)の確認
oc get all
# コンテナログイン
oc exec -it db2-0 /bin/bash
IBM Cloud의 OpenShift 클러스터에서 StatefulSet의 Db2 컨테이너를 단일 구성으로 구축해 볼 수 있었습니다. 가용성과 운영을 고려한 구성은 Db2의 Operator 대응에 기대하고 싶습니다.
Reference
이 문제에 관하여(OpenShift on IBM Cloud에서 DB2를 StatefulSet으로 설정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/bata12/items/a1352ab538b703311de2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)