글 순서
#5. 도커 이미지 OCIR에 등록, OKE 클러스터에 컨테이너 배포
도커 이미지 OCIR에 등록
docker tag 명령으로 생성된 로컬 이미지 python-mysql-sample에 태그를 부여합니다.
[opc@bastion python-mysql-sample]$ docker tag python-mysql-sample iad.ocir.io/idzaf7d76gjx/demo-python-mysql-sample-data:1.0
[opc@bastion python-mysql-sample]$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
iad.ocir.io/idzaf7d76gjx/demo-python-mysql-sample-data 1.0 077655efba8c 4 minutes ago 913MB
python-mysql-sample latest 077655efba8c 4 minutes ago 913MB
python 3.6 54260638d07c 5 months ago 902MB
OCI 레지스트리에 로컬 이미지를 업로드합니다.
[opc@bastion python-mysql-sample]$ docker push iad.ocir.io/idzaf7d76gjx/demo-python-mysql-sample-data:1.0
The push refers to repository [iad.ocir.io/idzaf7d76gjx/demo-python-mysql-sample-data]
c6d6762bf6b8: Pushed
a80303fe4eb2: Pushed
2451f86ac45a: Pushed
aa4c808c19f6: Pushed
8ba9f690e8ba: Pushed
3e607d59ef9f: Pushed
1e18e7e1fcc2: Pushed
c3a0d593ed24: Pushed
26a504e63be4: Pushed
8bf42db0de72: Pushed
31892cc314cb: Pushed
11936051f93b: Pushed
1.0: digest: sha256:da3a218226ae33fb145a703ff019538234f91e76e1571e91a2942f4d15816e0a size: 2845
이미지 업로드가 성공하면 OCI 웹 콘솔에서도 확인할 수 있습니다.
OKE 클러스터에 컨테이너 배포
이제 OKE 레지스트리에 업로드된 도커 이미지를 OKE 클러스터에 배포할 차례입니다. 클러스터에 배포는 yaml 형식의 매니페스트 파일의 정의된 내용을 기반으로 수행됩니다. 아래와 같이 배포 이름, 파드 수, 이미지 위치, 사용할 포트, 사용할 시크릿 파일, 서비스 노출 방식 등을 기술하고 있습니다.
[opc@bastion python-mysql-sample]$ cat python-mysql-sample.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: python-mysql-sample-deployment
spec:
selector:
matchLabels:
app: python-mysql-sample
replicas: 3
template:
metadata:
labels:
app: python-mysql-sample
spec:
containers:
- name: python-mysql-sample
image: iad.ocir.io/idzaf7d76gjx/demo-python-mysql-sample-data:1.0
ports:
- containerPort: 5000
imagePullSecrets:
- name: ocirsecret
---
apiVersion: v1
kind: Service
metadata:
name: python-mysql-sample-service
spec:
type: LoadBalancer
ports:
- port: 5001
protocol: TCP
targetPort: 5000
selector:
app: python-mysql-sample
yaml 파일을 가지고 클러스터에 배포합니다.
[opc@bastion python-mysql-sample]$ kubectl create -f ./python-mysql-sample.yaml
deployment.apps/python-mysql-sample-deployment created
service/python-mysql-sample-service created
배포가 완료되면, 디플로이먼트, 파드, 서비스를 확인할 수 있습니다. 서비스 노출을 로드밸런서를 통해 할 것으로 설정했기 때문에 서비스에서 퍼블릭 IP가 할당된 로드 밸런서 타입의 서비스가 생성된 것을 알 수 있습니다.
[opc@bastion python-mysql-sample]$ kubectl get deploy,po,svc
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/python-mysql-sample-deployment 3/3 3 3 107s
NAME READY STATUS RESTARTS AGE
pod/python-mysql-sample-deployment-78f66b498c-n2kfb 1/1 Running 0 107s
pod/python-mysql-sample-deployment-78f66b498c-n7sl7 1/1 Running 0 107s
pod/python-mysql-sample-deployment-78f66b498c-zj49d 1/1 Running 0 107s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 28h
service/python-mysql-sample-service LoadBalancer 10.96.185.13 129.80.228.63 5001:32473/TCP 107s
OCI 웹 콘솔에서 확인해 보면 로드 밸런서가 신규로 생성된 것을 알 수 있습니다.
이제 로드밸런서의 퍼블릭 IP로 yaml 파일에서 지정한 서비스 포트 5001로 웹 브라우저를 통해 접속해 보면 아래와 같이 어플리케이션이 정상적으로 데이터베이스 정보를 가져오는 것을 알 수 있습니다.
<END>
'Cloud > Oracle Cloud Infrastructure (OCI)' 카테고리의 다른 글
OCI상에서 ISTIO를 활용하여 구현한 Service Mesh - #2. 이스티오 작동 방식 (0) | 2022.07.26 |
---|---|
OCI상에서 ISTIO를 활용하여 구현한 Service Mesh - #1. Overview (0) | 2022.07.26 |
OCI Kubernetes와 MySQL 서비스를 활용한 어플리케이션 배포 데모 - #4. OCI 레지스트리 설정, 도커 이미지 빌드 (0) | 2022.05.27 |
OCI Kubernetes와 MySQL 서비스를 활용한 어플리케이션 배포 데모 - #3. 쿠버네티스 접속 환경 구성 (0) | 2022.05.27 |
OCI Kubernetes와 MySQL 서비스를 활용한 어플리케이션 배포 데모 - #1. OKE 클러스터 설치 (0) | 2022.05.27 |