스테이트리스(Stateless) 워크로드 만들기

이 문서에서는 Google Distributed Cloud(GDC) 에어 갭 Kubernetes 클러스터 내에서 스테이트리스(Stateless) 워크로드를 만들고 관리하는 방법을 설명합니다. 스테이트리스(Stateless) 워크로드를 사용하면 Kubernetes 클러스터에서 영구 스토리지를 관리하여 데이터 또는 애플리케이션 상태를 저장하지 않고도 워크로드 요구사항에 따라 애플리케이션 배포를 확장할 수 있습니다. 이 문서는 애플리케이션의 가용성을 효율적으로 최적화하고 조정할 수 있도록 시작하는 데 도움이 됩니다.

이 문서는 조직의 애플리케이션 워크로드를 만드는 애플리케이션 운영자 그룹 내 개발자를 대상으로 합니다. 자세한 내용은 다음 자료를 참조하세요. GDC 에어 갭 문서의 대상 독자

시작하기 전에

이 문서의 작업을 완료하려면 필요한 권한을 요청해야 합니다.

IAM 역할 요청

스테이트리스(Stateless) 워크로드를 만드는 데 필요한 권한을 얻으려면 특정 역할이 있어야 합니다. 필요한 역할은 조직 범위 공유 클러스터 또는 프로젝트 범위 표준 클러스터 내에서 작업하는지 여부에 따라 다릅니다. 자세한 내용은 Kubernetes 클러스터 구성을 참조하세요.

공유 클러스터 역할

공유 클러스터에서 스테이트리스(Stateless) 워크로드를 만들거나 삭제하거나 수정하거나 보려면 프로젝트 IAM 관리자에게 네임스페이스 관리자(namespace-admin) 역할을 부여해 달라고 요청하세요. 이 역할은 프로젝트 네임스페이스에 바인딩됩니다.

표준 클러스터 역할

표준 클러스터에서 스테이트리스(Stateless) 워크로드를 만들거나 삭제하거나 수정하거나 보려면 프로젝트 IAM 관리자에게 클러스터 개발자(cluster-developer) 역할을 부여해 달라고 요청하세요. 이 역할은 프로젝트 네임스페이스에 바인딩됩니다.

개발 환경 준비

API를 사용하여 Kubernetes 클러스터 에 대해 명령어를 실행하려면 다음 리소스가 있어야 합니다.

  • Kubernetes 클러스터 이름을 찾거나 플랫폼 관리자 그룹의 구성원에게 클러스터 이름이 무엇인지 물어봅니다.

  • 로그인하고 생성합니다 Kubernetes 클러스터의 kubeconfig 파일.

  • Kubernetes 클러스터의 kubeconfig 경로를 사용하여 이 안내의 KUBERNETES_CLUSTER_KUBECONFIG를 바꿉니다.

배포 만들기

Deployment 매니페스트를 작성하고 kubectl apply를 실행하여 리소스를 만들면 배포가 생성됩니다. 이 메서드는 또한 변경사항을 매니페스트 파일에 다시 병합하지 않고도 실시간 리소스에 적용된 업데이트를 보관합니다.

매니페스트 파일에서 Deployment를 만들려면 다음을 실행합니다.

kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG -n NAMESPACE \
    apply -f - <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
  name: DEPLOYMENT_NAME
spec:
  replicas: NUMBER_OF_REPLICAS
  selector:
    matchLabels:
      run: APP_NAME
  template:
    metadata:
      labels: # The labels given to each pod in the deployment, which are used
              # to manage all pods in the deployment.
        run: APP_NAME
    spec: # The pod specification, which defines how each pod runs in the deployment.
      containers:
      - name: CONTAINER_NAME
        image: CONTAINER_IMAGE
EOF

다음을 바꿉니다.

  • KUBERNETES_CLUSTER_KUBECONFIG: 컨테이너 워크로드를 배포하는 Kubernetes 클러스터의 kubeconfig 파일입니다.

  • NAMESPACE: 컨테이너 워크로드를 배포할 네임스페이스입니다. 공유 클러스터의 경우 프로젝트 네임스페이스여야 합니다. 표준 클러스터의 경우 모든 네임스페이스일 수 있습니다.

  • DEPLOYMENT_NAME: Deployment 객체의 이름입니다.

  • APP_NAME: 배포 내에서 실행할 애플리케이션의 이름입니다.

  • NUMBER_OF_REPLICAS: 배포가 관리하는 복제된 Pod 객체의 수입니다.

  • CONTAINER_NAME: 컨테이너의 이름입니다.

  • CONTAINER_IMAGE: 컨테이너 이미지의 이름입니다. 컨테이너 레지스트리 경로와 이미지 버전(예: REGISTRY_PATH/hello-app:1.0)을 포함해야 합니다. 컨테이너 레지스트리 경로 설정에 대한 자세한 내용은 관리형 Harbor 서비스 개요를 참조하세요.

예를 들면 다음과 같습니다.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      run: my-app
  template:
    metadata:
      labels:
        run: my-app
    spec:
      containers:
      - name: hello-app
        image: REGISTRY_PATH/hello-app:1.0

컨테이너에 GPU 워크로드를 배포하는 경우 GPU 컨테이너 워크로드 관리 를 참조하세요.

다음 단계