18.11. 튜토리얼: S2I 배포


OpenShift에 애플리케이션을 배포하는 방법은 여러 가지가 있습니다. 이 튜토리얼에서는 통합된 S2I(Source-to-Image) 빌더를 사용하는 방법을 설명합니다. OpenShift 개념 섹션에서 언급했듯이 S2I는 재현 가능한 Docker 형식의 컨테이너 이미지를 빌드하는 툴입니다.

18.11.1. 사전 요구 사항

이 튜토리얼을 사용하려면 먼저 다음 요구 사항을 완료해야 합니다.

  1. ROSA 클러스터를 생성했습니다.
  2. 로그인 명령 검색

    1. CLI를 통해 로그인하지 않은 경우 OpenShift Cluster Manager 에서 오른쪽 상단에 있는 이름 옆에 있는 드롭다운 화살표를 클릭하고 로그인 명령 복사를 선택합니다.

      CLI 로그인
    2. 새 탭이 열립니다. 사용자 이름과 암호를 입력하고 인증 방법을 선택합니다.
    3. 토큰 표시를클릭합니다.
    4. "이 토큰을 사용하여 로그인"에서 명령을 복사합니다.
    5. 터미널에서 복사한 명령을 실행하여 CLI(명령줄 인터페이스)에 로그인합니다. 다음과 유사한 내용이 표시되어야 합니다.

      $ oc login --token=RYhFlXXXXXXXXXXXX --server=https://api.osd4-demo.abc1.p1.openshiftapps.com:6443

      출력 예

      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>

  3. 다음 명령을 실행하여 CLI에서 새 프로젝트를 생성합니다.

    $ oc new-project ostoy-s2i

18.11.2. OSToy 리포지토리 분기

다음 섹션에서는 소스 코드 변경 사항을 기반으로 자동화된 빌드를 트리거하는 데 중점을 둡니다. GitHub 리포지터리로 코드를 내보낼 때 S2I 빌드를 트리거하려면 GitHub Webhook를 설정해야 합니다. Webhook를 설정하려면 먼저 리포지터리를 분기 해야 합니다.

참고

이 가이드에서 < UserName >을 다음 URL의 고유한 GitHub 사용자 이름으로 바꿉니다.

18.11.3. S2i를 사용하여 클러스터에 OSToy 배포

  1. OpenShift에 시크릿 추가

    이 예제에서는 .env 파일을 에뮬레이션하고 이를 OpenShift 환경으로 직접 이동하는 것이 얼마나 쉬운지 보여줍니다. 시크릿에서 파일의 이름을 변경할 수도 있습니다. CLI에서 다음 명령을 입력하고 < UserName>을 GitHub 사용자 이름으로 바꿉니다.

    $ oc create -f https://raw.githubusercontent.com/<UserName>/ostoy/master/deployment/yaml/secret.yaml
  2. OpenShift에 ConfigMap 추가

    이 예제에서는 HAProxy 구성 파일을 에뮬레이션하며 일반적으로 OpenShift 애플리케이션의 기본 구성을 재정의하는 데 사용됩니다. ConfigMap에서 파일의 이름을 변경할 수도 있습니다.

    CLI에서 다음 명령을 입력하고 < UserName>을 GitHub 사용자 이름으로 바꿉니다.

    $ oc create -f https://raw.githubusercontent.com/<UserName>/ostoy/master/deployment/yaml/configmap.yaml
  3. 마이크로 서비스 배포

    UI 애플리케이션에서 SERVICE 환경 변수를 사용할 수 있도록 먼저 마이크로 서비스를 배포해야 합니다. --context-dir 은 git 리포지토리의 마이크로 서비스 디렉터리에 정의된 애플리케이션만 빌드하는 데 사용됩니다. app 레이블을 사용하면 UI 애플리케이션과 마이크로 서비스가 모두 OpenShift UI로 그룹화되었는지 확인할 수 있습니다. CLI에서 다음 명령을 실행하여 마이크로 서비스를 생성하고 < UserName >을 GitHub 사용자 이름으로 교체합니다.

    $ oc new-app https://github.com/<UserName>/ostoy \
        --context-dir=microservice \
        --name=ostoy-microservice \
        --labels=app=ostoy

    출력 예

    --> Creating resources with label app=ostoy ...
        imagestream.image.openshift.io "ostoy-microservice" created
        buildconfig.build.openshift.io "ostoy-microservice" created
        deployment.apps "ostoy-microservice" created
        service "ostoy-microservice" created
    --> Success
        Build scheduled, use 'oc logs -f buildconfig/ostoy-microservice' to track its progress.
        Application is not exposed. You can expose services to the outside world by executing one or more of the commands below:
         'oc expose service/ostoy-microservice'
        Run 'oc status' to view your app.

  4. 마이크로 서비스의 상태 확인

    다음 단계로 이동하기 전에 다음 명령을 실행하여 마이크로 서비스가 생성되었고 올바르게 실행되고 있는지 확인해야 합니다.

    $ oc status

    출력 예

    In project ostoy-s2i on server https://api.myrosacluster.g14t.p1.openshiftapps.com:6443
    
    svc/ostoy-microservice - 172.30.47.74:8080
      dc/ostoy-microservice deploys istag/ostoy-microservice:latest <-
        bc/ostoy-microservice source builds https://github.com/UserName/ostoy on openshift/nodejs:14-ubi8
        deployment #1 deployed 34 seconds ago - 1 pod

    성공적으로 배포될 때까지 기다립니다. 웹 UI를 통해 이를 확인할 수도 있습니다.

  5. 프런트 엔드 UI 배포

    애플리케이션은 여러 환경 변수를 사용하여 외부 설정을 정의하도록 설계되었습니다. 이전에 생성된 Secret 및 ConfigMap을 나중에 PersistentVolume 생성과 함께 연결합니다. CLI에 다음을 입력합니다.

    $ oc new-app https://github.com/<UserName>/ostoy \
        --env=MICROSERVICE_NAME=OSTOY_MICROSERVICE

    출력 예

    --> Creating resources ...
        imagestream.image.openshift.io "ostoy" created
        buildconfig.build.openshift.io "ostoy" created
        deployment.apps "ostoy" created
        service "ostoy" created
    --> Success
        Build scheduled, use 'oc logs -f buildconfig/ostoy' to track its progress.
        Application is not exposed. You can expose services to the outside world by executing one or more of the commands below:
         'oc expose service/ostoy'
        Run 'oc status' to view your app.

  6. 배포 업데이트

    영구 볼륨과의 일관된 배포를 위해 "Recreate" 배포 전략(기본값 RollingUpdate)을 사용하도록 배포를 업데이트합니다. 여기에서 추론하는 것은 PV가 EBS에 의해 지원되기 때문에 RWO 방법만 지원되기 때문입니다. 기존 Pod가 모두 종료되지 않고 배포를 업데이트하는 경우 기존 Pod에 바인딩되어도 PV에 대한 PVC를 생성하고 새 Pod를 예약할 수 없을 수 있습니다. EFS를 사용하는 경우 이를 변경할 필요가 없습니다.

    $ oc patch deployment ostoy --type=json -p \
        '[{"op": "replace", "path": "/spec/strategy/type", "value": "Recreate"}, {"op": "remove", "path": "/spec/strategy/rollingUpdate"}]'
  7. 활성 상태 프로브 설정

    배포 시 활성 상태 프로브를 생성하여 애플리케이션 내에서 정상이 아닌 경우 Pod가 다시 시작되었는지 확인합니다. CLI에 다음을 입력합니다.

    $ oc set probe deployment ostoy --liveness --get-url=http://:8080/health
  8. 배포에 Secret, ConfigMap, PersistentVolume 연결

    다음 명령을 실행하여 보안, ConfigMap 및 PersistentVolume을 연결합니다.

    1. 시크릿 연결

      $ oc set volume deployment ostoy --add \
          --secret-name=ostoy-secret \
          --mount-path=/var/secret
    2. 연결 ConfigMap

      $ oc set volume deployment ostoy --add \
          --configmap-name=ostoy-config \
          -m /var/config
    3. PersistentVolume 생성 및 연결

      $ oc set volume deployment ostoy --add \
          --type=pvc \
          --claim-size=1G \
          -m /var/demo_files
  9. UI 애플리케이션을 OpenShift 경로로 노출

    다음 명령을 실행하여 포함된 TLS 와일드카드 인증서를 사용하는 HTTPS 애플리케이션으로 배포합니다.

    $ oc create route edge --service=ostoy --insecure-policy=Redirect
  10. 다음 방법을 사용하여 애플리케이션을 찾습니다.

    • 다음 명령을 실행하면 OSToy 애플리케이션이 있는 웹 브라우저가 열립니다.

      $ python -m webbrowser "$(oc get route ostoy -o template --template='https://{{.spec.host}}')"
    • 다음 명령을 실행하여 애플리케이션의 경로를 가져오고 브라우저에 경로를 복사하여 붙여넣을 수 있습니다.

      $ oc get route
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.