4.5. 첫 번째 이미지 배포


OpenShift Container Platform에서 애플리케이션을 배포하는 가장 간단한 방법은 기존 컨테이너 이미지를 실행하는 것입니다. 다음 절차에서는 national-parks-app이라는 애플리케이션의 프런트 엔드 구성 요소를 배포합니다. 웹 애플리케이션에 대화식 맵이 표시됩니다. 이 지도는 전 세계 주요 국립공원의 위치를 표시합니다.

사전 요구 사항

  • OpenShift Container Platform 클러스터에 대한 액세스 권한이 있어야 합니다.
  • OpenShift CLI(oc)를 설치합니다.

프로세스

  • 애플리케이션을 배포하려면 다음 명령을 입력합니다.

    $ oc new-app quay.io/openshiftroadshow/parksmap:latest --name=parksmap -l 'app=national-parks-app,component=parksmap,role=frontend,app.kubernetes.io/part-of=national-parks-app'

    출력 예

    --> Found container image 0c2f55f (12 months old) from quay.io for "quay.io/openshiftroadshow/parksmap:latest"
    
        * An image stream tag will be created as "parksmap:latest" that will track this image
    
    --> Creating resources with label app=national-parks-app,app.kubernetes.io/part-of=national-parks-app,component=parksmap,role=frontend ...
        imagestream.image.openshift.io "parksmap" created
        deployment.apps "parksmap" created
        service "parksmap" created
    --> Success

추가 리소스

4.5.1. 경로 생성

외부 클라이언트는 라우팅 계층과 경로인 데이터 오브젝트를 통해 OpenShift Container Platform에서 실행되는 애플리케이션에 액세스할 수 있습니다. 기본 OpenShift Container Platform 라우터(HAProxy)는 들어오는 요청의 HTTP 헤더를 사용하여 연결을 프록시할 위치를 결정합니다.

선택적으로 경로에 대해 TLS와 같은 보안을 정의할 수 있습니다.

사전 요구 사항

  • OpenShift Container Platform 클러스터에 대한 액세스 권한이 있어야 합니다.
  • OpenShift CLI(oc)가 설치되어 있어야 합니다.
  • 배포된 이미지가 있습니다.
  • cluster-admin 또는 project-admin 권한이 있어야 합니다.

프로세스

  1. 생성된 애플리케이션 서비스를 검색하려면 다음 명령을 입력합니다.

    $ oc get service

    출력 예

    NAME      TYPE       CLUSTER-IP         EXTERNAL-IP    PORT(S)   AGE
    parksmap  ClusterIP  <your-cluster-IP>  <123.456.789>  8080/TCP  8m29s

  2. 경로를 생성하려면 다음 명령을 입력합니다.

    $ oc create route edge parksmap --service=parksmap

    출력 예

    route.route.openshift.io/parksmap created

  3. 생성된 애플리케이션 경로를 검색하려면 다음 명령을 입력합니다.

    $ oc get route

    출력 예

    NAME        HOST/PORT                                                   PATH   SERVICES   PORT       TERMINATION   WILDCARD
    parksmap    parksmap-user-getting-started.apps.cluster.example.com             parksmap   8080-tcp   edge          None

추가 리소스

4.5.2. Pod 검사

OpenShift Container Platform은 하나의 호스트에 함께 배포되는 하나 이상의 컨테이너인 pod의 Kubernetes 개념과 정의, 배포 및 관리할 수 있는 최소 컴퓨팅 단위를 활용합니다. Pod는 컨테이너에 대한 머신 인스턴스, 물리 또는 가상과 대략적으로 동일합니다.

클러스터의 Pod를 보고 해당 Pod 및 클러스터의 상태를 전체적으로 확인할 수 있습니다.

사전 요구 사항

  • OpenShift Container Platform 클러스터에 대한 액세스 권한이 있어야 합니다.
  • OpenShift CLI(oc)가 설치되어 있어야 합니다.
  • 배포된 이미지가 있습니다.

프로세스

  1. 노드 이름이 있는 모든 Pod를 나열하려면 다음 명령을 입력합니다.

    $ oc get pods

    출력 예

    NAME                       READY   STATUS    RESTARTS   AGE
    parksmap-5f9579955-6sng8   1/1     Running   0          77s

  2. 모든 Pod 세부 정보를 나열하려면 다음 명령을 입력합니다.

    $ oc describe pods

    출력 예

    Name:         parksmap-848bd4954b-5pvcc
    Namespace:    user-getting-started
    Priority:     0
    Node:         ci-ln-fr1rt92-72292-4fzf9-worker-a-g9g7c/10.0.128.4
    Start Time:   Sun, 13 Feb 2022 14:14:14 -0500
    Labels:       app=national-parks-app
                  app.kubernetes.io/part-of=national-parks-app
                  component=parksmap
                  deployment=parksmap
                  pod-template-hash=848bd4954b
                  role=frontend
    Annotations:  k8s.v1.cni.cncf.io/network-status:
                    [{
                        "name": "ovn-kubernetes",
                        "interface": "eth0",
                        "ips": [
                            "10.131.0.14"
                        ],
                        "default": true,
                        "dns": {}
                    }]
                  k8s.v1.cni.cncf.io/network-status:
                    [{
                        "name": "ovn-kubernetes",
                        "interface": "eth0",
                        "ips": [
                            "10.131.0.14"
                        ],
                        "default": true,
                        "dns": {}
                    }]
                  openshift.io/generated-by: OpenShiftNewApp
                  openshift.io/scc: restricted
    Status:       Running
    IP:           10.131.0.14
    IPs:
      IP:           10.131.0.14
    Controlled By:  ReplicaSet/parksmap-848bd4954b
    Containers:
      parksmap:
        Container ID:   cri-o://4b2625d4f61861e33cc95ad6d455915ea8ff6b75e17650538cc33c1e3e26aeb8
        Image:          quay.io/openshiftroadshow/parksmap@sha256:89d1e324846cb431df9039e1a7fd0ed2ba0c51aafbae73f2abd70a83d5fa173b
        Image ID:       quay.io/openshiftroadshow/parksmap@sha256:89d1e324846cb431df9039e1a7fd0ed2ba0c51aafbae73f2abd70a83d5fa173b
        Port:           8080/TCP
        Host Port:      0/TCP
        State:          Running
          Started:      Sun, 13 Feb 2022 14:14:25 -0500
        Ready:          True
        Restart Count:  0
        Environment:    <none>
        Mounts:
          /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-6f844 (ro)
    Conditions:
      Type              Status
      Initialized       True
      Ready             True
      ContainersReady   True
      PodScheduled      True
    Volumes:
      kube-api-access-6f844:
        Type:                    Projected (a volume that contains injected data from multiple sources)
        TokenExpirationSeconds:  3607
        ConfigMapName:           kube-root-ca.crt
        ConfigMapOptional:       <nil>
        DownwardAPI:             true
        ConfigMapName:           openshift-service-ca.crt
        ConfigMapOptional:       <nil>
    QoS Class:                   BestEffort
    Node-Selectors:              <none>
    Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                                 node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
    Events:
      Type    Reason          Age   From               Message
      ----    ------          ----  ----               -------
      Normal  Scheduled       46s   default-scheduler  Successfully assigned user-getting-started/parksmap-848bd4954b-5pvcc to ci-ln-fr1rt92-72292-4fzf9-worker-a-g9g7c
      Normal  AddedInterface  44s   multus             Add eth0 [10.131.0.14/23] from ovn-kubernetes
      Normal  Pulling         44s   kubelet            Pulling image "quay.io/openshiftroadshow/parksmap@sha256:89d1e324846cb431df9039e1a7fd0ed2ba0c51aafbae73f2abd70a83d5fa173b"
      Normal  Pulled          35s   kubelet            Successfully pulled image "quay.io/openshiftroadshow/parksmap@sha256:89d1e324846cb431df9039e1a7fd0ed2ba0c51aafbae73f2abd70a83d5fa173b" in 9.49243308s
      Normal  Created         35s   kubelet            Created container parksmap
      Normal  Started         35s   kubelet            Started container parksmap

4.5.3. 애플리케이션 스케일링

Kubernetes에서 Deployment 오브젝트는 애플리케이션이 배포하는 방법을 정의합니다. 대부분의 경우 사용자는 Pod,Service,ReplicaSetsDeployment 리소스를 함께 사용합니다. 대부분의 경우 OpenShift Container Platform이 리소스를 생성합니다.

national-parks-app 이미지를 배포하면 배포 리소스가 생성됩니다. 예에서는 하나의 Pod만 배포됩니다.

다음 절차에서는 두 개의 인스턴스를 사용하도록 national-parks-image 크기를 조정합니다.

사전 요구 사항

  • OpenShift Container Platform 클러스터에 대한 액세스 권한이 있어야 합니다.
  • OpenShift CLI(oc)가 설치되어 있어야 합니다.
  • 배포된 이미지가 있습니다.

프로세스

  • 애플리케이션을 하나의 Pod 인스턴스에서 두 개의 Pod 인스턴스로 확장하려면 다음 명령을 입력합니다.

    $ oc scale --current-replicas=1 --replicas=2 deployment/parksmap

    출력 예

    deployment.apps/parksmap scaled

검증

  1. 애플리케이션이 올바르게 확장되도록 하려면 다음 명령을 입력합니다.

    $ oc get pods

    출력 예

    NAME                       READY   STATUS    RESTARTS   AGE
    parksmap-5f9579955-6sng8   1/1     Running   0          7m39s
    parksmap-5f9579955-8tgft   1/1     Running   0          24s

  2. 애플리케이션을 하나의 Pod 인스턴스로 다시 축소하려면 다음 명령을 입력합니다.

    $ oc scale --current-replicas=2 --replicas=1 deployment/parksmap

추가 리소스

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.