티스토리 뷰

상용제품/OCP

BuildConfig

Happy@Cloud 2020. 3. 29. 20:46

BuildConfig는 CI/CD Pipeline 없이 현재 k8s cluster에 컨테이너 어플리케이션을 배포할 수 있는 쉬운 방법입니다. 
CI/CD에 익숙하지 않은 개발자를 위해 언어에 맞는 Build와 Deploy를 거의 자동으로 해줍니다. 

아래와 같은 순서로 작업하십시오.

 

사전준비

1) 작업터미널에서 OCP cluster연결하기

https://happycloud-lee.tistory.com/110

2) visual studio code설치 및 code명령어 설치

https://happycloud-lee.tistory.com/111

 

1. Local IDE 또는 Web IDE(CodeReady-A.K.A Eclipse Che) 에서 개발하기

여기서는 sample로 https://gitlab.com/ocean4/mvp-jenkins-springboot-sample.git 에 있는 java springboot2 샘플을 이용하겠습니다.

터미널에서 git clone합니다.

$ git clone https://gitlab.com/ocean4/mvp-jenkins-springboot-sample.git

$ cd mvp-jenkins-springboot-sample

$ code .

vscode가 실행됩니다. main class를 수정합니다. 

소스를 수정하고 git commit합니다.

또는 terminal에서 push

$ git add . && git commit -m "change main class" && git push

2. BuildConfig 작성

1) OCP web console을 로그인합니다.  

2) 좌측 상단에서 'Developer'로 변경 -> +Add클릭 -> 우측에서 배포할 Project선택 -> 'From Git' 클릭

 

3) Git주소를 입력

 

4) 새로운 Application을 생성합니다. Application Name, 리소스 Name은 적절하게 변경하십시오. 

기존에 이미 Application이 있으면 선택하십시오.

* Pipeline을 체크하면 Tekton pipeline YAML을 자동으로 만들어줍니다. 

기본으로 만들어지는 Pipeline은 pipeline YAML을 조금 수정해야 합니다.

고칠 부분은 'MAVEN_MIRROR_URL'과, 'ARGS'입니다. ARGS에서는 ImageStream리소스를 쓰기 위해 --docker-image라는 옵션을 제거해야 합니다. 

아래 예제를 참조하세요.

 

https://happycloud-lee.tistory.com/112

 

Tekton pipeline on OCP sample

아래 git을 clone 하신 후 tekton디렉토리에 YAML이 있습니다. https://gitlab.com/ocean4/mvp-jenkins-springboot-sample.git ocean / mvp-jenkins-springboot-sample 젠킨스 스프링 부트 배포 샘플 gitlab.com g..

happycloud-lee.tistory.com

 

5) DeploymentConfig를 선택합니다. Create route를 체크하여 외부에서 접근할 수 있는 route주소를 자동으로 생성하도록 합니다.

 

5) 왼쪽 메뉴에서 'Topology'를 선택하면 DeploymentConfig를 볼 수 있습니다.

 

6) 또는 Builds메뉴에서도 확인할 수 있습니다. 

 

7) Build리소스의 Log를 볼 수도 있습니다.

 

8) 자동 생성된 Route를 통해 웹브라우저로 접근합니다.

Networking / Routes > 우측에서 Project선택 

라우터 주소를 클릭하면 웹브라우저에서 서비스를 연결합니다.

 

3. git과 webhook으로 연결

git에 소스를 push하면 자동으로 BuildConfig가 동작하여 배포가 되도록 할 수 있습니다. 

gitlab, github, bitbucket을 지원합니다. 

1) webhook URL을 구합니다.

또는 아래와 같이 CLI를 통해 구할 수도 있습니다. 

$ oc describe bc study-springboot-sample

여기서 secret부분은 아래와 같이 구하여 replace합니다. 

$ oc get bc study-springboot-sample -o yaml

$ oc get secret <secret name> 하여 얻은 WebHookSecretKey를 base64 decoding합니다. 

최종적으로 아래 예와 같은 webhook url을 구할 수 있습니다.

https://api.hcp.darumtech.net:6443/apis/build.openshift.io/v1/namespaces/kubepia/buildconfigs/study-springboot-sample/webhooks/b5d1c240f4597174/gitlab 

 

2) git에 webhook을 생성합니다.

- github : 

Payload URL에 webhook url을 붙여넣습니다. Secret은 비워두고, SSL은 disable합니다.(정식 ssl key로 cluster를 구성한 경우는 enable)

 

- gitlab

URL에 webhook URL을 붙여넣기합니다. 우측에서 맨 아래로 내려 SSL verification에서 disable합니다. 

 

4. 테스트

git에 소스를 push하였을 때 BuildConfig가 수행되어 잘 배포 되는지 확인합니다.

 

 

댓글