This site will be decommissioned on January 30th 2025. After that date content will be available at techdocs.broadcom.com.

예시 애플리케이션 배포

이 자습서에서는 TKG(Tanzu Kubernetes Grid) 워크로드 클러스터에 간단한 hello-world 애플리케이션을 배포하고 외부 IP 주소를 통해 노출한 다음 브라우저를 통해 온라인으로 액세스하는 방법을 안내합니다.

사전 요구 사항

예시 애플리케이션을 배포하려면 다음이 필요합니다.

워크로드 클러스터에 애플리케이션 배포

예시 구성 YAML 파일을 복사하고 워크로드 클러스터에 적용하여 hello-world 애플리케이션을 배포합니다.

참고

VMware 다음과 같은 이유로 워크로드를 독립형 관리 클러스터 자체에 배포하지 않는 것이 좋습니다.

  • 독립형 관리 클러스터와 워크로드 클러스터는 별개의 문제가 있습니다.
  • 독립형 관리 클러스터는 워크로드 클러스터처럼 백업되지 않습니다. 복원력을 보장하기 위해 독립형 관리 클러스터 구성은 코드로 가장 잘 관리됩니다.
  1. 다음 구성을 사용하여 hello-world 애플리케이션에 YAML 파일을 생성합니다.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
     labels:
       app.kubernetes.io/name: load-balancer-example
     name: hello-world
    spec:
     replicas: 5
     selector:
       matchLabels:
         app.kubernetes.io/name: load-balancer-example
     template:
       metadata:
         labels:
           app.kubernetes.io/name: load-balancer-example
       spec:
         containers:
         - image: gcr.io/google-samples/node-hello:1.0
           name: hello-world
           ports:
           - containerPort: 8080
    

    워크로드 클러스터가 Windows 사용자 지정 시스템 이미지에서 자세히 설명된 대로 Windows 이미지를 사용하는 경우, 다음 spec.template.spec.tolerations를 추가하고 위의 containers와 같이 인라인으로 들여 씁니다.

         tolerations:
         - value: "windows"
           key: os
           operator: Equal
           effect: "NoSchedule"
         nodeSelector:
           kubernetes.io/os: windows
    
  2. 이름을 load-balancer-example.yaml로 하여 YAML 파일을 저장합니다.

  3. 다음을 실행하여 워크로드 클러스터의 컨텍스트로 kubectl을 설정합니다.

    kubectl config use-context CLUSTER-admin@CLUSTER
    

    여기서 CLUSTER는 워크로드 클러스터의 이름입니다.

  4. 워크로드 클러스터에 애플리케이션을 배포합니다.

    kubectl apply -f load-balancer-example.yaml
    

    출력은 다음과 비슷합니다.

    deployment.apps/hello-world created
    

애플리케이션 노출

브라우저에서 애플리케이션에 액세스할 수 있도록 애플리케이션의 외부 IP 주소를 노출하는 서비스 개체를 생성합니다.

  1. my-service라는 서비스 개체를 생성합니다.

    kubectl expose deployment hello-world --type=LoadBalancer --name=my-service
    

    출력은 다음과 비슷합니다.

    service/my-service exposed
    

온라인으로 애플리케이션 액세스

브라우저에서 외부 IP 주소를 사용하여 hello-world 애플리케이션에 액세스합니다.

  1. 그 다음 단계에서 사용할 다음 명령의 출력에서 LoadBalancer IngressTargetPort 값을 기록합니다.

    kubectl describe services my-service
    

    출력은 다음과 비슷합니다.

    Name:                     my-service
    Namespace:                default
    Labels:                   app.kubernetes.io/name=load-balancer-example
    Annotations:              <none>
    Selector:                 app.kubernetes.io/name=load-balancer-example
    Type:                     LoadBalancer
    IP Families:              <none>
    IP:                       100.67.254.91
    IPs:                      100.67.254.91
    LoadBalancer Ingress:     10.186.21.200
    Port:                     <unset>  8080/TCP
    TargetPort:               8080/TCP
    NodePort:                 <unset>  32202/TCP
    Endpoints:                100.96.1.15:8080,100.96.1.16:8080,100.96.1.17:8080 + 2 more...
    Session Affinity:         None
    External Traffic Policy:  Cluster
    
    참고

    LoadBalancer Ingress가 표시되지 않는 경우 이 워크로드 클러스터에 로드 밸런서가 구성되어 있는지 확인합니다.

  2. 브라우저에서 https://IP:PORT로 이동합니다. 여기서 IPLoadBalancer Ingress의 값이고, PORT는 이전 단계에서 기록한 포트 번호 값 TargetPort입니다. 예: https://10.186.21.200:8080.

    hello-world 애플리케이션에 다음이 표시됩니다.

    Hello Kubernetes!
    

후속 작업

이제 애플리케이션이 배포되면 트래픽을 관리하고, 로그를 보고, Contour, Fluent Bit, Prometheus, Grafana와 같은 패키지로 해당 작업을 모니터링할 수 있습니다. 이러한 패키지를 설치하려면 Tanzu CLI를 사용하여 패키지 제거 및 관리를 참조하십시오.

Velero를 사용하여 워크로드를 백업 및 복원하거나 마이그레이션하려면 클러스터 워크로드 백업 및 복원을 참조하십시오.

check-circle-line exclamation-circle-line close-line
Scroll to top icon