Red Hat OpenShift on IBM Cloud에서 확장 가능 웹 애플리케이션
이 튜토리얼에서는 비용이 발생할 수 있습니다. Cost Estimator를 사용하여 예상 사용량을 기반으로 비용 추정값을 생성하십시오.
이 튜토리얼에서는 애플리케이션을 클러스터에 배포하는 방법을 안내합니다 Red Hat OpenShift on IBM CloudGit 클러스터에 애플리케이션을 배포하고, 경로에 애플리케이션을 노출하고, 환경의 상태를 모니터링하고, 애플리케이션을 확장하는 방법을 안내합니다. 또한 비공개 컨테이너 레지스트리를 사용하고, 비공개 Git 리포지토리에서 애플리케이션을 배포하고, 사용자 지정 도메인을 애플리케이션에 바인딩하는 방법을 배우게 됩니다.
Red Hat OpenShift on IBM Cloud을 사용하여 OpenShift Container Platform과 함께 설치되어 제공되는 작업자 노드가 있는 Kubernetes 클러스터를 작성할 수 있습니다. OpenShift Container Platform 아키텍처에 대한 자세한 내용은 Red Hat OpenShift 문서를 참조하세요. 클러스터에 대한 모든 관리 서비스의 장점 을 얻을 수 있습니다.
목표
- 웹 애플리케이션을 Red Hat OpenShift on IBM Cloud 클러스터에 배치합니다.
- 사용자 정의 도메인을 바인드합니다.
- 클러스터의 상태 및 로그를 모니터합니다.
- Red Hat OpenShift on IBM Cloud 팟(Pod)을 스케일링합니다.
- 개발자는 원격 Git 저장소의 코드를 사용하여 웹 애플리케이션을 배치합니다. 선택적으로 개발자는 IBM Cloud 의 비공개 리포지토리( Git )에 코드를 푸시할 수도 있습니다.
- 컨테이너 이미지는 코드에서 빌드됩니다.
- 이미지는 클러스터와 함께 제공되는 로컬 컨테이너 레지스트리 또는 IBM Cloud Container Registry 의 네임스페이스에 푸시됩니다.
- 애플리케이션은 이미지를 가져와서 Red Hat OpenShift on IBM Cloud 클러스터에 배포됩니다.
- 사용자는 공용 라우트를 통해 애플리케이션에 액세스합니다.
시작하기 전에
이 튜토리얼에는 다음 항목이 필요합니다.
- IBM Cloud CLI
- IBM Cloud Kubernetes Service 플러그인(
kubernetes-service) - (선택사항) Container Registry 플러그인(
container-registry)
- IBM Cloud Kubernetes Service 플러그인(
- Docker 엔진
- Red Hat OpenShift on IBM Cloud과(와) 상호작용하는 데 필요한
oc. - 소스 코드 저장소를 복제하는 데 필요한
git, - (선택 사항) IBM Cloud GitLab SSH 키로 구성. 여기 의
Generate an SSH key pair및Add an SSH key to your GitLab account절에 있는 지시사항을 확인하십시오.
튜토리얼 시작하기 안내서에는 사용자 운영 체제에 맞게 이 도구를 다운로드하고 설치하기 위한 지시사항이 있습니다.
이러한 도구가 설치되지 않도록 하려면 Cloud ShellIBM Cloud 콘솔에서 oc version을(를) 사용하여 Red Hat OpenShift on IBM Cloud CLI의 버전이 자신의 클러스터 버전(4.13.x)에 대응하는지 확인하십시오. 대응하지 않는 경우에는 이러한 지시사항에
따라 대응하는 버전을 설치하십시오.
또한 레지스트리 네임스페이스를 설정하십시오.
Red Hat OpenShift on IBM Cloud 클러스터 작성
Red Hat OpenShift on IBM Cloud 을 사용하면 Kubernetes 클러스터에서 엔터프라이즈 워크로드를 컨테이너화하고 배포하는 빠르고 안전한 방법이 있습니다. Red Hat OpenShift on IBM Cloud 클러스터는 개발 수명 주기 운영에 일관성과 유연성을 제공하는 Kubernetes 컨테이너 오케스트레이션을 기반으로 구축됩니다.
이 절에서는 2개의 작업자 노드로 구성된 1개의 구역에 Red Hat OpenShift on IBM Cloud 클러스터를 프로비저닝합니다.
- IBM Cloud® 카탈로그 에서 Red Hat OpenShift on IBM Cloud 클러스터를 작성하십시오.
- 인프라 에서 VPC 또는 클래식을 선택하십시오.
- VPC 인프라에서 Red Hat OpenShift on IBM Cloud 의 경우 클러스터를 생성하기 전에 VPC와 서브넷 하나를 만들어야 합니다. 다음 요구사항을 염두에 두고 기존 VPC를 작성하거나 사용하십시오.
- 이 튜토리얼을 위해 사용할 수 있는 하나의 서브넷. 이 서브넷의 구역 및 이름을 기록해 두십시오.
- 퍼블릭 게이트웨이가 서브넷에 연결되어 있습니다. 자세한 정보는 VPC 클러스터 작성 을 참조하십시오.
- VPC 인프라에서 Red Hat OpenShift on IBM Cloud 의 경우 클러스터를 생성하기 전에 VPC와 서브넷 하나를 만들어야 합니다. 다음 요구사항을 염두에 두고 기존 VPC를 작성하거나 사용하십시오.
- 위치 아래에서,
- VPC 인프라에 있는 Red Hat OpenShift on IBM Cloud의 경우
- 적용 불가능한 구역 및 서브넷을 선택 취소하십시오.
- 원하는 구역에서 원하는 서브넷 이름을 확인하고, 없는 경우 편집 연필을 클릭하여 원하는 서브넷 이름을 선택하십시오.
- 클래식 인프라의 Red Hat OpenShift on IBM Cloud 의 경우:
- 리소스 그룹을 선택하십시오.
- 지역을 선택하십시오.
- 단일 구역을 가용성으로 선택하십시오.
- 작업자 영역을 선택합니다.
- 자세한 정보는 클래식 클러스터 작성 지시사항을 참조하십시오.
- VPC 인프라에 있는 Red Hat OpenShift on IBM Cloud의 경우
- OpenShift 버전 을 4.13.x 로 설정하십시오 (참고: 4.15.xx 이상의 버전을 사용하도록 선택하는 경우 아웃바운드 트래픽 보호를 꺼야 함).
- OpenShift Container Platform (OCP) 라이센스를 선택하십시오.
- 작업자 풀에서 다음을 수행하십시오.
- 유형으로 4개 vCPU 16GB 메모리를 선택하십시오.
- 이 튜토리얼에서는 데이터 센터당 2개의 작업자 노드를 선택합니다(클래식 인프라를 선택한 경우: 로컬 디스크 암호화 그대로 두기).
- 클러스터 세부사항에서 다음을 수행하십시오.
- 클러스터 이름을
myopenshiftcluster로 설정합니다. - 리소스 그룹 을 선택하십시오 (VPC 인프라를 선택한 경우).
- 클러스터 이름을
- 작성을 클릭하여 Red Hat OpenShift on IBM Cloud 클러스터를 프로비저닝하십시오.
앞에서 선택한 리소스 그룹을 기록해 두십시오. 이 실습의 모든 리소스에 동일한 이 리소스 그룹이 사용됩니다.
CLI 구성
이 단계에서는 새로 작성되는 클러스터를 가리키도록 oc를 구성합니다. Red Hat OpenShift on IBM Cloud 컨테이너 플랫폼 CLI는 애플리케이션 관리를 위한 명령어와 시스템의 각 구성 요소와 상호 작용할 수 있는 하위 수준의 도구를 제공합니다. CLI는 oc 명령을 통해 사용 가능합니다.
- 클러스터가 준비되면 OpenShift 웹 콘솔을 클릭하여 콘솔을 엽니다.
- 웹 콘솔의 페이지 오른쪽 상단에 있는 드롭 다운 메뉴에서 로그인 명령 복사를 클릭한 후 토큰 표시 링크를 클릭하십시오.
- 이 토큰으로 로그인 아래에 있는 텍스트를 복사합니다.
oc login명령어를 사용하여 로그인한 후 아래 명령을 실행하여 클러스터의 모든 네임스페이스를 확인합니다.oc get ns
새 Red Hat OpenShift on IBM Cloud 애플리케이션 작성
이 섹션에서는 Red Hat OpenShift on IBM Cloud 프로젝트를 작성한 후 GitHub 저장소에서 애플리케이션을 배치합니다. 이 애플리케이션의 코드는 시작하기 위한 단순 Node.js 랜딩 페이지 및 두 개의 API 엔드포인트입니다. 사용자 고유의 탐색 요구사항을 기반으로 항상 이 애플리케이션을 확장할 수 있습니다.
프로젝트 작성
Kubernetes 네임스페이스는 클러스터에서 리소스 범위를 지정하는 메커니즘을 제공합니다. Red Hat OpenShift on IBM Cloud에서 프로젝트는 추가 어노테이션이 있는 Kubernetes 네임스페이스입니다.
- 이름이
MYPROJECT인 환경 변수를 정의하고<your-initials>을(를) 자신의 이니셜로 대체하여 애플리케이션 이름을 설정하십시오.export MYPROJECT=<your-initials>-openshiftapp - 새 프로젝트 작성
위의 명령을 사용하여 프로젝트를 작성하면 자동으로 해당 프로젝트로 전환되고 다음에 오는 모든 명령이 해당 프로젝트의 컨텍스트에서 실행됩니다. 프로젝트를 전환하거나 나중 단계에서 해당 프로젝트로 돌아가야 하는 경우oc new-project $MYPROJECToc project $MYPROJECT명령을 사용하십시오.
애플리케이션을 배치합니다.
oc new-app 명령을 사용하면 로컬 또는 원격 Git 저장소에 있는 소스 코드로부터 애플리케이션을 작성할 수 있습니다.
-
docker빌드 전략을 사용해 애플리케이션을 작성하여, 저장소에 있는 Dockerfile로부터 컨테이너 이미지를 빌드하십시오. 작업을 단순하게 하기 위해 애플리케이션 이름을 프로젝트 이름으로 설정합니다.oc new-app https://github.com/IBM-Cloud/openshift-node-app --name=$MYPROJECT --strategy=docker --as-deployment-config새 애플리케이션을 작성할 때 소스 저장소의 루트 또는 지정된 컨텍스트 디렉토리에 Jenkins 파일이 있는 경우에는 Red Hat OpenShift on IBM Cloud에서
pipeline빌드 전략을 생성합니다. 그렇지 않으면source빌드 전략을 생성합니다.--strategy플래그를 설정하여 항상 빌드 전략을 대체할 수 있습니다. -
빌더 컨테이너 이미지 생성 및 내부 Red Hat OpenShift on IBM Cloud Container Registry (OCR)로 푸시되는 것을 확인하려면 아래 명령을 실행하세요.
oc logs -f buildconfig/$MYPROJECT클러스터는 Red Hat OpenShift on IBM Cloud이(가) 클러스터 내에서 애플리케이션 라이프사이클을 자동으로 빌드, 배치 및 관리할 수 있도록 내부 Red Hat OpenShift on IBM Cloud Container Registry를 사용하여 설정됩니다.
-
빌드가 성공하고 이미지가 푸시될 때까지 기다립니다. 아래 명령을 실행하여 배치 및 서비스의 상태를 확인할 수 있습니다.
oc status
IBM 제공된 도메인을 통해 애플리케이션에 액세스합니다
애플리케이션에 액세스하려면 경로를 만들어야 합니다. 라우트는 사용자의 서비스를 전세계에 알립니다.
-
터미널에서 아래 명령을 실행하여 경로를 생성합니다.
oc expose service/$MYPROJECT -
IBM 제공 도메인을 통해 애플리케이션에 액세스할 수 있습니다. 아래의 명령어를 실행하여 URL 얻으십시오.
oc get route/$MYPROJECT -
호스트/포트 값 아래에 호스트 이름 값을 복사하고 URL 을 브라우저에 붙여넣으면
http://<hostname>에서 애플리케이션이 작동하는 것을 확인할 수 있습니다. URLhttp를 사용해야 합니다. -
호스트 이름을 가리키는 환경 변수를 설정합니다.
export HOST=<hostname>
기본 IBM 제공 도메인 라우트 보안
- Red Hat OpenShift on IBM Cloud에 대한 기본 인증서로 암호화된 보안 HTTPS 라우트를 작성하려면
create route명령을 사용하십시오.oc create route edge $MYPROJECT-https --service=$MYPROJECT --port=3000 - HTTPS HOST URL의 경우,
oc get routes를 실행하십시오. HTTPS가 있는 URL(https://<HOST>)을 복사한 후 브라우저에서 경로 $MYPROJECT-https 옆에 붙여넣으십시오. 이번에는 URLhttps를 사용할 수 있습니다.
앱 모니터
이 절에서는 애플리케이션의 상태 및 성능을 모니터하는 방법을 학습합니다. OpenShift Container Platform 은 사전 구성되고 자체 업데이트되는 모니터링 및 경보 스택과 함께 제공됩니다.
- 터미널에서 URL 사용하여 명령을 실행하여 로드를 생성합니다. 이 명령은 애플리케이션에 요청을 무한정 전송합니다.
while sleep 1; do curl --max-time 2 -s http://$HOST/load/50; done - OpenShift 웹 콘솔에서 관리자 보기로 전환하십시오.
- 관찰에서 메트릭을 선택하십시오.
- 표현식 상자에서 아래 표현식을 입력하고
<MYPROJECT>를 프로젝트 이름으로 바꾸고 조회 실행 을 클릭하여 그래프에서 총 컨테이너 CPU 사용량 (초) 을 확인하십시오.sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{namespace="<MYPROJECT>"}) by (container) - 관찰아래에서 대시보드를 선택하십시오.
- 대시보드 드롭 다운을 클릭하고 Kubernetes /컴퓨팅 자원/네임스페이스 (워크로드) 를 선택하십시오.
- 네임스페이스 를 프로젝트로 변경하십시오.
- 시간 범위 를 마지막 5분으로 설정하십시오.
- CPU 및 메모리 사용량을 확인하십시오.
control+C를 사용하여 위의 스크립트를 중지하십시오.- 로깅하려면 내장
oc logs명령을 사용하십시오.oc logs의 사용에 대해 알아보려면 보기 로그에서 리소스를 확인하십시오.
또한 IBM Cloud Logs 및 IBM Cloud Monitoring 서비스를 프로비저닝하고 사용하여 Red Hat OpenShift on IBM Cloud 애플리케이션을 로깅하고 모니터할 수 있습니다. 이 링크에서 언급한 지시사항에 따라 로깅 및 모니터링 추가 기능을 설정하여 클러스터 상태를 모니터하십시오.
앱 스케일링
이 절에서는 애플리케이션을 자동 및 수동으로 스케일링하는 방법을 모두 학습합니다.
수동 스케일링
oc scale명령을 사용하여 팟(Pod)을 수동으로 스케일링할 수 있습니다. 이 명령은 배치 구성 또는 복제 제어기의 새 크기를 설정합니다.oc scale dc/$MYPROJECT --replicas=2oc get pods명령을 실행하여 프로비저닝되고 있는 새 팟(Pod)을 볼 수 있습니다.- 모니터링 단계를 다시 실행하여 업데이트된 메트릭을 확인하십시오.
자동 스케일링
HPA(Horizontal Pod Autoscaler)를 사용하여, Red Hat OpenShift on IBM Cloud가 배치 구성(dc) 또는 복제 제어기(rc)에 속한 팟(Pod)에서 수집한 메트릭에 따라 dc 또는 rc의 스케일을 자동으로 늘리고 줄이는 방식을 지정할 수 있습니다.
- 팟에 대한 자동 스케일링을 설정하려면 먼저 클러스터에서 실행 중인 팟(Pod)의 리소스 한계를 설정해야 합니다. 한계는 팟의 CPU 및 메모리의 최소 및 최대 사용량을 선택할 수 있게 해 줍니다.
oc set resources명령을 사용하여 컨테이너의 한계 및 요청을 설정할 수 있습니다.확인하려면oc set resources dc/$MYPROJECT --limits=cpu=250m,memory=512Mi --requests=cpu=100m,memory=256Mioc describe dc/$MYPROJECT를 실행하고Limits및Requests를 찾으십시오. - autoscaler를 작성하려면 autoscaler가 설정할 수 있는 팟(Pod) 수에 대한 하한(최소값) 및 상한(최대값)과 모든 팟(Pod)에서의 목표 평균 CPU 사용률(요청된 CPU의 백분율로 표시됨)로
oc autoscale명령을 실행해야 합니다. 테스트를 위해--cpu-percent을(를) 5%로 설정하십시오.oc autoscale dc/$MYPROJECT \ --min=1 \ --max=5 \ --cpu-percent=5 - 모니터링 단계를 다시 실행하여 애플리케이션에 대한 로드를 생성하십시오.
oc get pods --watch명령을 실행하거나 웹 콘솔에서 애플리케이션을 확인하여 프로비저닝되는 새 팟 (Pod) 을 볼 수 있습니다.- 자동 스케일러를 제거하십시오.
oc delete hpa/$MYPROJECT
(선택사항) 컨테이너 이미지를 빌드하여 Container Registry에 푸시
이 절에서는 원격 개인용 Container Registry을(를) 사용하여 작성된 컨테이너 이미지를 저장하는 방법을 학습합니다.
IBM Cloud Container Registry에서는 IBM에서 호스팅하고 관리하는 멀티 테넌트의 높은 가용성과 확장성을 갖춘 암호화된 개인용 이미지 레지스트리를 제공합니다. 고유 이미지 네임스페이스를 설정하고 컨테이너 이미지를 네임스페이스에 푸시하여 IBM Cloud Container Registry을 사용할 수 있습니다.
-
Container Registry URL 을 실행합니다:
ibmcloud cr region -
다음과 같이 레지스트리를 가리키는
MYREGISTRY이라는 환경 변수를 정의합니다:export MYREGISTRY=us.icr.io -
기존 레지스트리 네임스페이스 중 하나를 선택하거나 새 네임스페이스를 작성하십시오. 기존 네임스페이스를 나열하려면 다음을 사용하십시오.
ibmcloud cr namespaces새 네임스페이스를 작성하려면 다음을 수행하십시오.
ibmcloud cr namespace-add <REGISTRY_NAMESPACE> -
레지스트리 네임스페이스를 가리키는
MYNAMESPACE라는 환경 변수를 정의하십시오.export MYNAMESPACE=<REGISTRY_NAMESPACE> -
IBM Cloud IAM API 키를 가리키는 환경 변수 이름
API_KEY을 정의합니다:export API_KEY=<YOUR_API_KEY>API 키를 작성하려면 이 링크를 참조하십시오.
-
레지스트리 네임스페이스에 대한 액세스를 자동화하고 생성된 빌더 컨테이너 이미지를 Container Registry에 푸시하려면 시크릿을 작성하십시오.
oc create secret docker-registry push-secret --docker-username=iamapikey --docker-password=$API_KEY --docker-server=$MYREGISTRY -
default프로젝트의 이미지 풀 시크릿을 복사하여 프로젝트에 패치합니다:oc get secret all-icr-io -n default -o yaml | sed 's/default/'$MYPROJECT'/g' | oc -n $MYPROJECT create -f - -
이미지 풀 시크릿을 적용하려면
default서비스 계정에서 이미지 풀 시크릿을 추가해야 합니다:oc secrets link serviceaccount/default secrets/all-icr-io --for=pull
샘플 애플리케이션 복제
이 섹션에서는 템플리트 파일 및 쉘 스크립트와 함께 제공되는 GitHub 저장소를 복제하여 이전에 작성된 환경 변수에서 yaml 파일을 생성합니다. 생성된 파일은 컨테이너 이미지를 빌드하고, 이미지를 비공개 컨테이너 레지스트리에 푸시하고, 새 애플리케이션을 배포하는 데 사용됩니다.
- 터미널에서 아래 명령을 실행하여 GitHub 리포지토리를 내 컴퓨터에 복제합니다:
git clone https://github.com/IBM-Cloud/openshift-node-app - 애플리케이션 디렉터리로 변경합니다:
cd openshift-node-app
BuildConfig를 업데이트하고 빌더 이미지를 Container Registry에 푸시
이 단계에서는 스크립트를 실행하여 openshift.template.yaml 파일의 섹션을 업데이트하고 Container Registry 네임스페이스를 가리키는 새 yaml 파일을 생성합니다.
-
아래 bash 스크립트를 실행하여
openshift.template.yaml파일의 플레이스홀더를 업데이트하고 openshift_private_registry.yaml 파일을 생성하십시오../generate_yaml.sh use_private_registry -
출력에서 내보내기 명령을 실행하여 기존
MYPROJECT환경 변수를 새 애플리케이션 이름으로 설정하십시오.echo $MYPROJECT를 실행하여 새 애플리케이션 이름을 확인하십시오. -
선택적으로, 생성된
openshift_private_registry.yaml파일을 확인하여 모든 플레이스홀더가 해당 환경 변수로 업데이트되었는지 확인하십시오. 아래는 빠르게 확인할 수 있는 세 가지 장소입니다. 다음 절로 건너뛸 수 있습니다.. -
선택 사항 프로젝트에 설정된 이름 속성이 있는 ImageStream 개체를 찾습니다.
$MYPROJECT) 그리고 플레이스홀더가 있는지 확인하세요$MYREGISTRY,$MYNAMESPACE, 그리고$MYPROJECT아래에dockerImageRepository정의spec업데이트되었습니다- apiVersion: image.openshift.io/v1 kind: ImageStream metadata: annotations: openshift.io/generated-by: OpenShiftNewApp creationTimestamp: null labels: app: $MYPROJECT app.kubernetes.io/component: $MYPROJECT app.kubernetes.io/instance: $MYPROJECT name: $MYPROJECT spec: dockerImageRepository: $MYREGISTRY/$MYNAMESPACE/$MYPROJECT lookupPolicy: local: false status: dockerImageRepository: ""이미지 스트림 및 연관된 태그는 Red Hat OpenShift on IBM Cloud 컨테이너 플랫폼 내에서 컨테이너 이미지를 참조하기 위한 추상을 제공합니다.
-
선택사항
spec섹션 아래의BuildConfig에서 출력이DockerImage유형으로 설정되었고name아래의 플레이스홀더가 업데이트되었는지 확인하십시오.spec: nodeSelector: null output: to: kind: DockerImage name: $MYREGISTRY/$MYNAMESPACE/$MYPROJECT:latest pushSecret: name: push-secret빌드는 입력 매개변수를 결과 오브젝트로 변환하는 프로세스입니다. 대부분의 경우 프로세스는 입력 매개변수 또는 소스 코드를 실행 가능한 이미지로 변환하는 데 사용됩니다.
BuildConfig오브젝트는 전체 빌드 프로세스의 정의입니다. -
선택사항
containers를 검색하고image및name을 확인하십시오.containers: - image: $MYREGISTRY/$MYNAMESPACE/$MYPROJECT:latest name: $MYPROJECT -
업데이트된 경우 YAML 파일을 저장하십시오.
IBM Cloud Container Registry을(를) 사용한 애플리케이션 배치
이 절에서는 생성된 openshift_private_registry.yaml 파일을 사용하여 애플리케이션을 클러스터에 배치합니다. 일단 배치되면 라우트를 작성하여 애플리케이션에 액세스합니다.
-
업데이트된 yaml을 사용하여 빌드 구성(bc), 배포 구성(dc), 서비스(svc), 이미지 스트림(is)과 함께 새 OpenShift 애플리케이션을 만듭니다.
oc apply -f openshift_private_registry.yaml -
빌더 컨테이너 이미지 생성 및 푸시를 확인하려면 Container Registry, 아래 명령을 실행하세요.
oc logs -f bc/$PRIVREG컨테이너 이미지가 비공개 컨테이너 레지스트리에 푸시된 경우 로그에 아래와 같은 메시지가 표시됩니다.
Pushing image us.icr.io/mods15/vmac-openshift-app-registry:latest ... Getting image source signatures Copying blob sha256:9d038e1c7afbe92c29313557c02110e8fb796818ebb78441c68929381103a94b Copying blob sha256:61c671f49591a059c9b6728a9f84c16f5b00126470112ee9c9f9e01dbbfcc3ea Copying blob sha256:e2787650308235c87eff7d2b88c3ab217e84b74a3fa9696103bd46bb99068c7a Copying blob sha256:dcef409117430ed9906a59ad0a3ea0752061fbf8a9e544f4edd77667a25d85ae Copying blob sha256:a1f889dd610c6510c7fc091a51c247463f3cc9a7c67bdc397c9632168808f7d2 Copying blob sha256:bd278801acd18ada10f43b732113a6fffc163011862ea6cde729f8dc59e64222 Copying blob sha256:2d6c03ed5d15be86cdef7d9c0c9fea40a3f6b89662bca59680d037074f52bb38 Copying blob sha256:fa2ef7f80d6fc9543f6eb472846931ed1cec2b5f776d1b67bcb1b9942e1a947e Copying blob sha256:ff5a4e4d3690ccc931900b63714d326cc53a58e644f8d0a4f06bf8c62f11c5c7 Copying config sha256:01aa1ebb7be74529867106100c4e699ca2ae87f8242460771527f772e6a3d174 Writing manifest to image destination Storing signatures Successfully pushed us.icr.io/mods15/vmac-openshift-app-registry@sha256:6847b889397704b9fb8c3122c84b505c3dc5f99a0669fb69f534d3504eec385d Push successful -
배포 및 서비스 상태를 확인할 수 있습니다.
oc status -
최신 이미지 스트림을 수동으로 가져와서 최대한 빨리 배포할 수 있도록 합니다.
oc import-image $PRIVREG배포에 시간이 더 걸리는 경우 이 명령을 사용할 수도 있습니다. 자세한 내용은 이 링크를 참조하세요.
-
서비스를 노출하여 새 라우트를 작성하십시오.
oc expose service/$PRIVREG -
IBM 제공된 도메인을 통해 애플리케이션에 액세스할 수 있습니다. 아래의 명령어를 실행하여 URL 얻으십시오.
oc get route/$PRIVREG -
호스트/포트 값 아래에 호스트 이름 값을 복사하고 URL 을 브라우저에 붙여넣으면
http://<hostname>에서 애플리케이션이 작동하는 것을 확인할 수 있습니다. URLhttp를 사용해야 합니다.동일한 애플리케이션이 다른 라우트에 노출되어 있으며 개인용 컨테이너 레지스트리에 저장된 컨테이너 이미지를 사용하여 배치된 것으로 표시되어야 합니다.
(선택사항) 코드를 개인용 IBM Cloud Git 저장소로 푸시
이 단계에서는 비공개 IBM Cloud Git 리포지토리를 만들고 샘플 애플리케이션 코드를 푸시합니다. 애플리케이션이 업데이트될 때 자동으로 빌드하고 재배포하는 방법도 배웁니다.
푸시가 성공하려면 SSH 키를 구성해야 하며, 여기 문서의 Generate an SSH key pair 및 Add an SSH key to your GitLab account 섹션에 있는 지침을 검토하세요
-
브라우저에서 IBM Cloud Git 를 여십시오.
위 링크는
us-south지역에 해당됩니다. 기타 지역의 경우,ibmcloud regions를 실행하고 지역 이름으로 URL의us-south를 대체하십시오. -
새 프로젝트를 클릭하고 비어 있는 프로젝트 작성을 클릭한 후
openshiftapp을 프로젝트 이름으로 제공하십시오. -
가시성 레벨 을 개인용으로 설정하십시오.
-
프로젝트 구성 에서 README를 사용하여 저장소 초기화옆에 있는 체크 표시를 제거하십시오.
-
프로젝트 만들기를 클릭합니다,
-
Git 글로벌 설정 및 기존 Git 저장소 푸시 섹션의 지침에 따라 Git 설정하고 샘플 애플리케이션 코드를 푸시합니다.
-
코드를 비공개 리포지토리에 푸시하면 프로젝트에서 샘플 코드를 볼 수 있습니다.
Git 배치 토큰 작성
이 절에서는 저장소에 대한 읽기 전용 액세스를 허용하는 Git 배치 옵션을 작성합니다.
배치 토큰을 생성하려면 다음을 수행하십시오.
- Git 저장소 페이지의 탐색 패널에서 설정 > 저장소를 클릭합니다.
- 배치 토큰 옆의 펼치기를 클릭하십시오.
- 이름 필드에
foropenshift를 입력한 후 범위아래에서 read_repository 를 선택하십시오. 마지막으로 배치 토큰 작성을 클릭하십시오. - 나중에 참조할 수 있도록 생성된 사용자 이름 및 비밀번호를 저장하십시오.
- 이름 필드에
- 탐색 패널에서 프로젝트 개요를 클릭한 다음 복제를 클릭하고 HTTPS URL 로 복제를 복사합니다. 나중에 참조할 수 있도록 URL을 저장하십시오.
- 이 튜토리얼의 뒷부분에서 YAML 파일과 함께 사용될 사용자 이름, 비밀번호 및 개인용 Git 저장소 URL에 대한 환경 변수를 정의하십시오.
export GIT_TOKEN_USERNAME=<PRIVATE_GIT_DEPLOY_TOKEN_USERNAME> export GIT_TOKEN_PASSWORD=<PRIVATE_GIT_DEPLOY_TOKEN_PASSWORD> export REPO_URL=<PRIVATE_GIT_REPO_URL>
개인용 레지스트리 및 개인용 저장소의 코드를 사용한 새 애플리케이션 배치
-
아래 bash 스크립트를 실행하여
openshift.template.yaml파일의 플레이스홀더를 업데이트하고 openshift_private_repository.yaml 파일을 생성하십시오../generate_yaml.sh use_private_repository -
출력에서 내보내기 명령을 실행하여 기존
MYPROJECT환경 변수를 새 프로젝트 이름으로 설정하십시오. -
개인용 컨테이너 레지스트리 플레이스홀더 외에, 이 스크립트는
REPO_URL스펙의BuildConfig또한 위 단계에서 설정한 환경 변수로 바꿉니다.source: git: uri: $REPO_URL type: Git -
업데이트된 yaml을 사용하여 빌드 구성(bc), 배포 구성(dc), 서비스(svc), 이미지 스트림(is)과 함께 새 오픈시프트 애플리케이션을 생성합니다
oc apply -f openshift_private_repository.yaml -
빌더 로그를 확인할 수 있습니다.
oc logs -f bc/$PRIVREPO -
다음을 사용하여 배포 및 서비스 상태를 확인할 수 있습니다.
oc status -
최신 이미지 스트림을 수동으로 가져와서 최대한 빨리 배포할 수 있도록 합니다.
oc import-image $PRIVREPO -
서비스를 노출하여 새 라우트를 작성하십시오.
oc expose service/$PRIVREPO -
IBM 제공된 도메인을 통해 애플리케이션에 액세스할 수 있습니다. 아래의 명령어를 실행하여 URL 얻으십시오.
oc get route/$PRIVREPO -
호스트/포트 값 아래에 호스트 이름 값을 복사하고 URL 을 브라우저에 붙여넣으면
http://<hostname>에서 애플리케이션이 작동하는 것을 확인할 수 있습니다. URLhttp를 사용해야 합니다.개인용 Git 저장소의 코드 및 개인용 레지스트리 네임스페이스의 컨테이너 이미지를 사용하여 새 애플리케이션이 배치됩니다.
애플리케이션 업데이트 및 재배포
이 단계에서는 빌드 및 배치 프로세스를 자동화합니다. 애플리케이션을 업데이트하고 변경사항을 개인용 저장소에 푸시할 때마다 새 빌드가 실행되어 컨테이너 이미지의 새 버전을 생성합니다. 그러면 이 이미지가 자동으로 배치됩니다.
-
새 GitLab 웹훅 트리거를 작성합니다. 웹훅 트리거를 사용하면 요청을 Red Hat OpenShift on IBM Cloud 컨테이너 플랫폼 API 엔드포인트로 전송하여 새 빌드를 트리거할 수 있습니다. GitHub, GitLab, Bitbucket 또는 일반 웹훅을 사용하여 해당 트리거를 정의할 수 있습니다.
oc set triggers bc $PRIVREPO --from-gitlab -
GitLab 저장소에 웹훅을 추가하려면 URL 및 비밀 정보가 필요합니다.
- 웹훅 GitLab URL의 경우,
oc describe bc/$PRIVREPO | grep -A 1 "GitLab" - 웹훅 URL에서 전달해야 하는 시크릿의 경우,
oc get bc/$PRIVREPO -o yaml | grep -A 3 "\- gitlab" - Webhook GitLab URL의
<secret>을(를) 위의 명령 출력에 있는 gitlab 아래의 시크릿 값으로 대체하십시오.
- 웹훅 GitLab URL의 경우,
-
Git repo HTTPS 링크를 사용하여 브라우저에서 비공개 git 리포지토리를 연 다음 설정을 클릭하고 웹훅을 클릭합니다.
-
URL 붙여넣고, 푸시 이벤트를 트리거로 선택한 다음, 웹훅 추가 버튼을 클릭합니다.
Webhook was created메시지가 표시되어야 합니다. -
이미지 스트림의 ImagePolicy를 업데이트하여 스케줄된 간격으로 Container Registry를 조회하여 태그 및 이미지 메타데이터를 동기화하십시오. 그러면
tags정의가 업데이트됩니다.oc tag $MYREGISTRY/$MYNAMESPACE/${PRIVREPO}:latest ${PRIVREPO}:latest --scheduled=true -
IDE에서 복제된 리포지토리를 열어 로컬의
h1태그를 업데이트합니다 public/index.html 파일의 태그를Congratulations! <insert your name>로 변경합니다. -
코드를 저장하고 리포지토리에 푸시합니다.
git add public/index.htmlgit commit -m "Updated with my name"git push -u origin master -
빌드의 진행상태를 확인하고
oc status명령을 사용하여 배치할 수 있습니다. 배치가 성공하면 라우트 HOST 주소를 새로 고쳐서 업데이트된 웹 앱을 확인하십시오.최신 이미지 스트림을 가져오기 위해 배치에 최대 15분이 소요될 수 있습니다. 기다리거나
oc import-image $PRIVREPO명령을 사용하여 수동으로 가져올 수 있습니다. 자세한 내용은 이 링크를 참조하세요.
(선택사항) 사용자 고유의 사용자 정의 도메인 사용
이 절에서는 사용자 정의 도메인을 소유하고 해당 도메인의 DNS 레코드를 수정할 수 있어야 합니다. IBM 제공 도메인을 가리키는 CNAME 레코드를 작성해야 합니다.
CNAME 레코드를 설정하기 위한 단계는 DNS 제공자에 따라 다릅니다. 도메인의 DNS 관리/구역에서 새 CNAME 레코드를 추가하고 **호스트(이름)**를 openshiftapp 또는 원하는 하위 도메인으로 설정하고 지정 대상을 HTTP 또는 HTTPS가 없는 IBM 제공 도메인으로 설정하십시오.
HTTP 사용
- 외부 클라이언트가 이름을 사용하여 도달할 수 있도록,
<HOSTNAME>을(를) 자신의 호스트 이름(예: www.example.com 또는 openshiftapp.example.com)으로 대체하여 호스트 이름에서 서비스를 노출하는 경로를 작성하십시오.oc expose svc/$PRIVREPO --hostname=<HOSTNAME> --name=$PRIVREPO-domain --port=3000 http://<HOSTNAME>/에서 애플리케이션에 액세스하십시오.
HTTPS 사용
- 보안 설정된 HTTPS 경로를 작성하려는 경우에는 Let's Encrypt와 같은 CA로부터 획득한 자신의 인증서 및 키 파일을 사용하거나, Secrets Manager을(를)
통해 이러한 항목을 주문할 수 있습니다.
create route명령으로 전달하십시오.여기서는 에지 종료를 사용했습니다. 패스스루 및 재암호화와 같은 기타 보안 라우트 및 종료 유형에 대해 알아보려면oc create route edge $PRIVREPO-httpsca --service=$PRIVREPO --cert=example.pem --key=example.key --hostname=<www.HOSTNAME> --port=3000oc create route --help명령을 실행하십시오.
자원 제거
-
애플리케이션에 고유한 모든 리소스 오브젝트를 삭제하십시오.
oc delete all --selector app=$PRIVREPO oc delete all --selector app=$PRIVREG oc delete all --selector app=$MYPROJECT프로젝트에 있는 애플리케이션 이름을 나열하려면 다음 명령을 실행하십시오.
oc get svc | awk '{print $1}' -
프로젝트를 삭제하십시오.
oc delete project $MYPROJECT -
애플리케이션 저장소를 삭제하십시오.
- Git 저장소 페이지의 탐색 패널에서 설정 > 일반을 클릭하십시오.
- 고급옆에 있는 펼치기 를 클릭하십시오.
- 프로젝트 삭제 를 클릭하고 프로젝트 삭제를 확인하십시오.
-
Container Registry에서 컨테이너 이미지를 삭제하십시오.
- 브라우저를 사용하여 Container Registry 의 저장소 페이지로 이동하십시오.
- 이 학습서의 일부로 작성된 이미지를 선택하고 삭제하십시오.
-
작성한 클러스터를 삭제하십시오.