말랑말랑제리스타일

Kyma에 Oracle DB 올리기 본문

프로그래밍/클라우드

Kyma에 Oracle DB 올리기

제리제리 2024. 5. 27. 09:39

Kyma에 Oracle DB를 올리는 방법입니다. 사실 Kyma도 쿠버네티스 환경이라 다른 쿠버네티스 환경에 Oracle DB를 올리는 것과 방식은 동일합니다.

따라서 Kyma를 비롯한 쿠버네티스 환경에 Oracle 19c DB를 올리는 방법을 한번 작성해봤습니다.

Oracle 공식 Github에서 docker image 다운로드

 

아래 Oracle 공식 Github 사이트에서 docker-image를 다운로드할 수 있습니다.

 

GitHub - oracle/docker-images: Official source of container configurations, images, and examples for Oracle products and project

Official source of container configurations, images, and examples for Oracle products and projects - oracle/docker-images

github.com

git bash를 실행하고 원하는 폴더를 생성한 뒤 해당 폴더로 이동해서  이렇게 명령을 입력해 줍니다.

git clone https://github.com/oracle/docker-images.git

 

Oracle DB 다운로드

Oracle 공식 홈페이지에서 Oracle DB를 버전에 맞게 다운로드합니다.

 

Database Software Downloads | Oracle

Oracle Database Software Downloads Whether you are a developer, a data scientist, a DBA, an educator, or just interested in databases, Oracle Database 23ai is the ideal way to get started. It provides native support for all modern data types, analytics, an

www.oracle.com

 

 

Oracle DB 다운로드 화면
Oracle DB 다운로드 화면

일단 저는 Oracle Database 19c for Linux를 zip으로 받았습니다.

다운로드한 zip 파일의 이름을 바꾸지 않고 git clone으로 내려받은 git 폴더의 하기 디렉터리에 붙여 넣어줍니다.

(압출 풀지 않은 상태로 붙여 넣는 겁니다.)

OracleDatabase\SingleInstance\dockerfiles\19.3.0

저는 19.3을 받았기에 19.3이고 다른 버전 사용자는 다른 버전에 넣어주면 됩니다.

Oracle DB Docker Image 생성

Docker Files 폴더로 돌아가서 git bash를 실행해 줍니다.

이 Docker Files 내부에는 buildContainerImage.sh 파일이 있는데요.

옵션을 주고 실행합니다.

[oracle@localhost dockerfiles]$ ./buildContainerImage.sh -h

Usage: buildContainerImage.sh -v [version] -t [image_name:tag] [-e | -s | -x | -f] [-i] [-p] [-b] [-o] [container build option]
Builds a container image for Oracle Database.

Parameters:
   -v: version to build
       Choose one of: 11.2.0.2  12.1.0.2  12.2.0.1  18.3.0  18.4.0  19.3.0  21.3.0 23.4.0
   -t: image_name:tag for the generated docker image
   -e: creates image based on 'Enterprise Edition'
   -s: creates image based on 'Standard Edition 2'
   -x: creates image based on 'Express Edition'
   -f: creates image based on Database 'Free'
   -i: ignores the MD5 checksums
   -p: creates and extends image using the patching extension
   -b: build base stage only (Used by extensions)
   -o: passes on container build option

* select one edition only: -e, -s, -x, or -f

LICENSE UPL 1.0

Copyright (c) 2014,2024 Oracle and/or its affiliates.

사용 가능한 옵션은 상단과 같이 ./buildContainerImage.sh -h 명령을 사용하면 확인이 가능한데요.

19c 버전의 enterprise 에디션을 받았다면 가장 간단한 명령은 아래와 같겠네요.

./buildContainerImage.sh  -v 19.3.0 -t docker계정/repository:태그 -e

생각보다 시간이 오래 걸리는데 완료되면 아래와 같은 문구가 나옵니다.

Build completed in 1946 seconds.

Oracle DB Docker Image 실행 테스트

이미지 크기가 자그마치 6.53기가나 되네요. 생성된 Oracle DB Docker Image를 테스트 삼아 실행해 봅시다.

아래 명령어로 실행 가능합니다.

docker run --name 컨테이너이름(임의지정) -d -p 9000:8080 -p 1521:1521 docker계정/dockerimage:태그

여기부터는 docker desktop에서 컨테이너를 클릭해 진행 상태를 확인할 수 있는데 오라클 DB가 완전히 실행되기까지는 약간 시간이 걸립니다.

docker desktop 컨테이너 생성 진행상태 화면
docker desktop 컨테이너 생성 진행상태 화면

적당히 시간이 흘렀다면 다시 커맨드 창을 열어줍시다.

oracle container 실행 확인 화면

제일 먼저 해야 될 일은 bash로 붙는 겁니다.

docker exec -it 컨테이너명 bash

명령을 실행시키면 bash-4.2로 바뀌죠.

sqlplus / as sysdba

이렇게 쳐줍니다.

뭐가 막 나오다가 오라클에 붙었다는 말이 나옵니다.

다음으로 sys라는 유저로 로그인해 줍시다.

conn sys as sysdba;

패스워드를 입력하라고 하는데 초기 패스워드는 oracle입니다.

연결이 되었으면 간단한 쿼리로 동작하는지 테스트를 해봅시다.

Docker 파일 배포하기

제대로 컨테이너 생성이 되는지 확인했다면 이제 배포를 할 차례입니다.

Docker 사이트로 가서 생성한 Image와 동일한 이름의 Repository를 생성해 줍니다.

그리고 다시 커맨드 창이나 파워쉘로 돌아와서 아래 명령어를 입력합니다.

docker push Docker계정/DockerImage명:태그

태그는 "0.0.1" 뭐 이런 식으로 써주면 됩니다.

아무래도 용량이 크다 보니까 엄청나게 오래 걸리네요.

Kyma에 컨테이너 올리기

마지막으로 Kyma에 오라클 컨테이너를 올려봅시다.

Kyma dashboard로 가줍니다.

네임 스페이스를 열고 Deployments 탭으로 이동해서 Create 버튼을 눌러줍니다.

Form 모드에서 이름을 oracle-19c로 하고 image에 도커 파일 이미지를 넣어줍니다.

Docker계정/DockerImage명:태그

이런 식이 되겠죠.

다음으로 yaml로 열어서 image 아래에 항목을 추가해 줍니다.

          env:
            - name: ORACLE_EDITION
              value: enterprise
          ports:
            - name: main-port
              containerPort: 1521
            - name: em-port
              containerPort: 5500

그리고 create 버튼을 누르면 정상적으로 Deployments가 생성이 됩니다.

 

다음은 Services 탭으로 이동해 Create 버튼을 눌러줍니다.

apiVersion: v1
kind: Service
metadata:
  name: oradb-svc
  labels:
    app: oracle-19c
  annotations: {}
  namespace: dev
spec:
  selector:
    app: oracle-19c
  ports:
    - port: 1521
  type: ClusterIP

yaml 형태에 이렇게 넣고 생성해 줍니다.

여기까지 하면 쿠버네티스에 DB 생성이 완료된 겁니다.

 

Kubernetes DB 생성 완료 테스트

마지막으로 Kubernetes에 DB가 생성이 되었는지 테스트해 봅시다.

파워쉘이나 커맨드창을 열어서 kubectl 명령을 이용할 겁니다.

kubectl get pods -o wide -n 네임스페이스

이걸 확인하면 oracle-19c에 대한 pod가 하나 있을 겁니다.

이 이름을 pod명이라고 하겠습니다.

kubectl exec -it pod명 -n 네임스페이스명 bash

명령을 입력하면 bash로 바뀝니다.

sqlplus / as sysdba

명령어로 sql을 열어줍시다.

그리고 로컬에서 테스트했던 것과 같이 테스트를 해봅시다.

kyma에 oracle sql 올리고 실행한 화면
kyma에 oracle sql 올리고 실행한 화면

정상적으로 SQL 실행이 되었습니다.

이미지가 워낙 크다 보니 혹시 잘 안되면 몇 시간 기다려보면 될 수 있습니다.

 

Comments