2.8. S2I 배포
통합된 S2I(Source-to-Image) 빌더는 OpenShift에 애플리케이션을 배포하는 방법 중 하나입니다. S2I는 재현 가능한 Docker 형식의 컨테이너 이미지를 빌드하는 툴입니다. 자세한 내용은 OpenShift 개념을 참조하십시오.
사전 요구 사항
- ROSA 클러스터
2.8.1. 로그인 명령 검색 링크 복사링크가 클립보드에 복사되었습니다!
프로세스
다음 명령을 실행하여 CLI(명령줄 인터페이스)에 로그인했는지 확인합니다.
rosa whoami
rosa whoami
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 명령줄 인터페이스에 로그인한 경우 "새 프로젝트 생성"으로 건너뜁니다. 명령줄 인터페이스에 로그인하지 않은 경우 이 절차를 계속합니다.
OpenShift Cluster Manager 에서 CLI(명령줄 인터페이스)에 로그인하지 않은 경우 오른쪽 상단에 있는 이름 옆에 있는 드롭다운 화살표를 클릭하고 로그인 명령 복사를 선택합니다.
- 새 탭이 열립니다. 사용자 이름과 암호를 입력하고 인증 방법을 선택합니다.
- 토큰 표시를클릭합니다.
- "이 토큰을 사용하여 로그인"에서 명령을 복사합니다.
터미널에서 복사한 명령을 실행하여 CLI에 로그인합니다.
입력 예
oc login --token=RYhFlXXXXXXXXXXXX --server=https://api.osd4-demo.abc1.p1.openshiftapps.com:6443
$ oc login --token=RYhFlXXXXXXXXXXXX --server=https://api.osd4-demo.abc1.p1.openshiftapps.com:6443
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Logged into "https://api.myrosacluster.abcd.p1.openshiftapps.com:6443" as "rosa-user" using the token provided. You don't have any projects. You can try to create a new project, by running oc new-project <project name>
Logged into "https://api.myrosacluster.abcd.p1.openshiftapps.com:6443" as "rosa-user" using the token provided. You don't have any projects. You can try to create a new project, by running oc new-project <project name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.8.2. 새 프로젝트 생성 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령을 실행하여 CLI에서 새 프로젝트를 생성합니다.
oc new-project ostoy-s2i
$ oc new-project ostoy-s2i
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.8.3. OSToy 리포지토리 분기 링크 복사링크가 클립보드에 복사되었습니다!
소스 코드 변경에 따라 자동화된 빌드를 트리거하려면 GitHub Webhook를 설정해야 합니다. GitHub 리포지토리로 코드를 내보낼 때 Webhook에서 S2I 빌드를 트리거합니다. Webhook를 설정하려면 먼저 리포지토리를 분기해야 합니다.
이 가이드에서 < UserName
>을 다음 URL의 고유한 GitHub 사용자 이름으로 바꿉니다.
2.8.4. S2i를 사용하여 클러스터에 OSToy 배포 링크 복사링크가 클립보드에 복사되었습니다!
프로세스
OpenShift에 시크릿을 추가합니다.
이 예제에서는
.env
파일을 에뮬레이션합니다. 파일은 OpenShift 환경으로 직접 이동할 수 있으며 시크릿에서 이름을 변경할 수도 있습니다.다음 명령을 실행하여 <
UserName>을
GitHub 사용자 이름으로 교체합니다.oc create -f https://raw.githubusercontent.com/<UserName>/ostoy/master/deployment/yaml/secret.yaml
$ oc create -f https://raw.githubusercontent.com/<UserName>/ostoy/master/deployment/yaml/secret.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
OpenShift에 ConfigMap을 추가합니다.
이 예제에서는 일반적으로 OpenShift 애플리케이션에서 기본 구성을 재정의하는 데 사용되는 HAProxy 구성 파일을 에뮬레이션합니다. ConfigMap에서 파일의 이름을 변경할 수 있습니다.
다음 명령을 실행하여 <
UserName>을
GitHub 사용자 이름으로 교체합니다.oc create -f https://raw.githubusercontent.com/<UserName>/ostoy/master/deployment/yaml/configmap.yaml
$ oc create -f https://raw.githubusercontent.com/<UserName>/ostoy/master/deployment/yaml/configmap.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
마이크로 서비스를 배포합니다.
UI 애플리케이션에서 서비스 환경 변수를 사용할 수 있도록 마이크로 서비스를 배포해야 합니다.
--context-dir
은 Git 리포지토리의마이크로 서비스
디렉터리에 정의된 애플리케이션을 빌드합니다.app
레이블을 사용하면 UI(사용자 인터페이스) 애플리케이션 및 마이크로 서비스가 모두 OpenShift UI로 그룹화됩니다.다음 명령을 실행하여 마이크로 서비스를 생성하고 <
UserName&
gt;을 GitHub 사용자 이름으로 교체합니다.oc new-app https://github.com/<UserName>/ostoy \ --context-dir=microservice \ --name=ostoy-microservice \ --labels=app=ostoy
$ oc new-app https://github.com/<UserName>/ostoy \ --context-dir=microservice \ --name=ostoy-microservice \ --labels=app=ostoy
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
마이크로 서비스의 상태를 확인합니다.
다음 명령을 실행하여 마이크로 서비스가 생성되었고 올바르게 실행되고 있는지 확인합니다.
oc status
$ oc status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 마이크로 서비스가 성공적으로 배포될 때까지 기다립니다. 웹 UI를 통해 이를 확인할 수도 있습니다.
프런트 엔드 UI를 배포합니다.
애플리케이션은 여러 환경 변수를 사용하여 외부 설정을 정의합니다.
보안 및 ConfigMap을 연결하고 다음 명령을 실행하여 PersistentVolume을 생성합니다.
oc new-app https://github.com/<UserName>/ostoy \ --env=MICROSERVICE_NAME=OSTOY_MICROSERVICE
$ oc new-app https://github.com/<UserName>/ostoy \ --env=MICROSERVICE_NAME=OSTOY_MICROSERVICE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
다음 명령을 실행하여 배포를 업데이트합니다.
oc patch deployment ostoy --type=json -p \ '[{"op": "replace", "path": "/spec/strategy/type", "value": "Recreate"}, {"op": "remove", "path": "/spec/strategy/rollingUpdate"}]'
$ oc patch deployment ostoy --type=json -p \ '[{"op": "replace", "path": "/spec/strategy/type", "value": "Recreate"}, {"op": "remove", "path": "/spec/strategy/rollingUpdate"}]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 활성 프로브를 설정합니다.
활성 프로브를 생성하여 애플리케이션에서 문제가 발생하면 포드가 다시 시작되는지 확인합니다.
다음 명령을 실행합니다.
oc set probe deployment ostoy --liveness --get-url=http://:8080/health
$ oc set probe deployment ostoy --liveness --get-url=http://:8080/health
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
시크릿, ConfigMap 및 영구 볼륨을 배포에 연결합니다.
다음 명령을 실행하여 보안을 연결합니다.
oc set volume deployment ostoy --add \ --secret-name=ostoy-secret \ --mount-path=/var/secret
$ oc set volume deployment ostoy --add \ --secret-name=ostoy-secret \ --mount-path=/var/secret
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 ConfigMap을 연결합니다.
oc set volume deployment ostoy --add \ --configmap-name=ostoy-config \ -m /var/config
$ oc set volume deployment ostoy --add \ --configmap-name=ostoy-config \ -m /var/config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 영구 볼륨을 생성하고 연결합니다.
oc set volume deployment ostoy --add \ --type=pvc \ --claim-size=1G \ -m /var/demo_files
$ oc set volume deployment ostoy --add \ --type=pvc \ --claim-size=1G \ -m /var/demo_files
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
UI 애플리케이션을 OpenShift 경로로 노출합니다.
다음 명령을 실행하여 포함된 TLS 와일드카드 인증서를 사용하는 HTTPS 애플리케이션으로 애플리케이션을 배포합니다.
oc create route edge --service=ostoy --insecure-policy=Redirect
$ oc create route edge --service=ostoy --insecure-policy=Redirect
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
다음 방법을 사용하여 애플리케이션을 찾습니다.
다음 명령을 실행하여 OSToy 애플리케이션으로 웹 브라우저를 엽니다.
python -m webbrowser "$(oc get route ostoy -o template --template='https://{{.spec.host}}')"
$ python -m webbrowser "$(oc get route ostoy -o template --template='https://{{.spec.host}}')"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 애플리케이션의 경로를 가져오고 브라우저에 경로를 복사하여 붙여넣습니다.
oc get route
$ oc get route
Copy to Clipboard Copied! Toggle word wrap Toggle overflow