> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coreweave.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 튜토리얼: Kubernetes에서 W&B Launch 설정하기

> Helm 차트, Kaniko 이미지 빌드, Kubernetes 작업 사양을 사용하여 Kubernetes 클러스터에 W&B Launch를 설정합니다.

이 튜토리얼에서는 클러스터 관리자가 Kubernetes 클러스터에 W\&B Launch를 설정하는 과정을 안내합니다. 설정이 끝나면 ML 엔지니어가 W\&B에서 직접 트레이닝 워크로드를 제출하고 관리할 수 있습니다. W\&B Launch를 사용하면 ML 워크로드를 Kubernetes 클러스터로 푸시할 수 있으므로, ML 엔지니어는 Kubernetes로 이미 관리하고 있는 리소스를 W\&B 인터페이스에서 바로 사용할 수 있습니다.

W\&B는 [공식 Launch 에이전트 이미지](https://hub.docker.com/r/wandb/launch-agent)를 제공하며, W\&B가 관리하는 [Helm 차트](https://github.com/wandb/helm-charts/tree/main/charts/launch-agent)로 이 이미지를 클러스터에 배포할 수 있습니다.

W\&B는 [Kaniko](https://github.com/GoogleContainerTools/kaniko) 빌더를 사용하여 Launch 에이전트가 Kubernetes 클러스터 안에서 도커 이미지를 빌드할 수 있게 합니다. Launch 에이전트용 Kaniko 설정 방법이나, 작업 빌드를 끄고 사전 빌드된 도커 이미지만 사용하는 방법은 [고급 에이전트 설정](/ko/products/wandb/platform/launch/setup-agent-advanced)을 참조하세요.

<Note>
  Helm을 설치하고 W\&B Launch 에이전트 Helm 차트를 적용하거나 업그레이드하려면 클러스터에 대한 `kubectl` 액세스 권한과 함께 Kubernetes 리소스를 생성, 업데이트, 삭제할 수 있는 충분한 권한이 있어야 합니다. 일반적으로 `cluster-admin` 권한이나 이와 동등한 권한을 가진 커스텀 역할이 부여된 사용자여야 합니다.
</Note>

<h2 id="configure-a-queue-for-kubernetes">
  Kubernetes용 큐 설정하기
</h2>

Launch 큐는 에이전트가 각 작업을 실행할 때 사용하는 Kubernetes 워크로드 사양을 정의합니다. Kubernetes 대상 리소스용 Launch 큐 설정은 [Kubernetes 작업 사양](https://kubernetes.io/docs/concepts/workloads/controllers/job/) 또는 [Kubernetes custom resource 사양](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/)과 비슷한 형태입니다.

Launch 큐를 생성할 때 Kubernetes 워크로드 리소스 사양의 모든 항목을 제어할 수 있습니다.

<Tabs>
  <Tab title="Kubernetes job 사양">
    ```yaml theme={"system"}
    spec:
      template:
        spec:
          containers:
            - env:
                - name: MY_ENV_VAR
                  value: some-value
              resources:
                requests:
                  cpu: 1000m
                  memory: 1Gi
    metadata:
      labels:
        queue: k8s-test
    namespace: wandb
    ```
  </Tab>

  <Tab title="Custom resource 사양">
    경우에 따라 `CustomResource` 정의가 필요할 수 있습니다. 예를 들어 멀티 노드 분산 트레이닝을 수행하려는 경우 `CustomResource` 정의가 유용합니다. 예시 애플리케이션은 Volcano로 멀티 노드 작업에서 Launch를 사용하는 튜토리얼을 참조하세요. Kubeflow와 함께 Launch를 사용하려는 경우에도 활용할 수 있습니다.

    다음 YAML 스니펫은 Kubeflow를 사용하는 Launch 큐 설정 예시입니다.

    ```yaml theme={"system"}
    kubernetes:
      kind: PyTorchJob
      spec:
        pytorchReplicaSpecs:
          Master:
            replicas: 1
            template:
              spec:
                containers:
                  - name: pytorch
                    image: '${image_uri}'
                    imagePullPolicy: Always
            restartPolicy: Never
          Worker:
            replicas: 2
            template:
              spec:
                containers:
                  - name: pytorch
                    image: '${image_uri}'
                    imagePullPolicy: Always
            restartPolicy: Never
        ttlSecondsAfterFinished: 600
      metadata:
        name: '${run_id}-pytorch-job'
      apiVersion: kubeflow.org/v1
    ```
  </Tab>
</Tabs>

보안을 위해 다음 리소스를 지정하지 않으면 W\&B가 Launch 큐에 자동으로 주입합니다.

* `securityContext`
* `backOffLimit`
* `ttlSecondsAfterFinished`

다음 YAML 스니펫은 이러한 값이 Launch 큐에 어떻게 표시되는지 보여 줍니다.

```yaml title="example-spec.yaml" theme={"system"}
spec:
  template:
    backOffLimit: 0
    ttlSecondsAfterFinished: 60
    securityContext:
      allowPrivilegeEscalation: false
      capabilities:
        drop:
          - ALL
      seccompProfile:
        type: "RuntimeDefault"
```

<h2 id="create-a-queue">
  큐 생성하기
</h2>

W\&B App에서 Kubernetes를 컴퓨팅 리소스로 사용하는 큐를 생성하세요.

1. [Launch 페이지](https://forge.coreweave.com/wandb/launch)로 이동하세요.
2. **Create Queue** 버튼을 클릭하세요.
3. 큐를 생성할 **Entity**를 선택하세요.
4. **Name** 필드에 큐 이름을 입력하세요.
5. **Resource**에서 **Kubernetes**를 선택하세요.
6. **Configuration** 필드에 [Kubernetes용 큐 설정하기](#configure-a-queue-for-kubernetes)에서 설정한 Kubernetes 작업 워크플로 사양 또는 custom resource 사양을 입력하세요.

<h2 id="configure-a-launch-agent-with-helm">
  Helm으로 Launch 에이전트 설정하기
</h2>

큐가 준비되었으면 이제 큐에서 작업을 가져와 클러스터에서 실행하는 Launch 에이전트를 배포합니다. W\&B에서 제공하는 [Helm 차트](https://github.com/wandb/helm-charts/tree/main/charts/launch-agent)를 사용하여 Kubernetes 클러스터에 Launch 에이전트를 배포하세요. Launch 에이전트의 동작은 `values.yaml` [파일](https://github.com/wandb/helm-charts/blob/main/charts/launch-agent/values.yaml)로 제어합니다.

`values.yaml` 파일의 `launchConfig` 키에는 평소 Launch 에이전트 설정 파일(`~/.config/wandb/launch-config.yaml`)에 정의하던 내용을 지정하세요.

예를 들어 Kaniko 도커 이미지 빌더를 사용하는 Launch 에이전트를 EKS에서 실행하기 위한 Launch 에이전트 설정이 있다고 가정해 보겠습니다. `[QUEUE-NAME]`, `[MAX-CONCURRENT-JOBS]`, `[MY-REGISTRY-URI]`, `[S3-BUCKET-URI]`를 실제 값으로 바꾸세요.

```yaml title="launch-config.yaml" theme={"system"}
queues:
  - [QUEUE-NAME]
max_jobs: [MAX-CONCURRENT-JOBS]
environment:
  type: aws
  region: us-east-1
registry:
  type: ecr
  uri: [MY-REGISTRY-URI]
builder:
  type: kaniko
  build-context-store: [S3-BUCKET-URI]
```

`values.yaml` 파일에서는 다음과 같이 작성할 수 있습니다. `[QUEUE-NAME]`, `[MAX-CONCURRENT-JOBS]`, `[AWS-REGION]`, `[MY-REGISTRY-URI]`, `[S3-BUCKET-URI]`를 사용자 환경에 맞는 값으로 바꾸세요.

```yaml title="values.yaml" theme={"system"}
agent:
  labels: {}
  # W&B API 키
  apiKey: ''
  # 에이전트에 사용할 컨테이너 이미지
  image: wandb/launch-agent:latest
  # 에이전트 이미지의 이미지 풀 정책
  imagePullPolicy: Always
  # 에이전트 사양의 리소스 블록
  resources:
    limits:
      cpu: 1000m
      memory: 1Gi

# Launch 에이전트를 배포할 namespace
namespace: wandb

# W&B API URL (사용 중인 URL로 설정하세요)
baseUrl: https://api.wandb.ai

# Launch 에이전트가 배포할 수 있는 추가 대상 namespace
additionalTargetNamespaces:
  - default
  - wandb

# Launch 에이전트 설정 파일의 내용을 그대로 입력하세요.
launchConfig: |
  queues:
    - [QUEUE-NAME]
  max_jobs: [MAX-CONCURRENT-JOBS]
  environment:
    type: aws
    region: [AWS-REGION]
  registry:
    type: ecr
    uri: [MY-REGISTRY-URI]
  builder:
    type: kaniko
    build-context-store: [S3-BUCKET-URI]

# git 자격 증명 파일의 내용입니다. 이 내용은 k8s 시크릿에 저장되어
# 에이전트 컨테이너에 마운트됩니다. 비공개 저장소를 클론하려면
# 이 값을 설정하세요.
gitCreds: |

# wandb 서비스 계정의 어노테이션입니다. GCP에서 Workload Identity를 설정할 때 유용합니다.
serviceAccount:
  annotations:
    iam.gke.io/gcp-service-account:
    azure.workload.identity/client-id:

# Azure에서 kaniko를 사용하는 경우 Azure 저장소의 액세스 키로 설정하세요.
azureStorageAccessKey: ''
```

레지스트리, 환경, 에이전트에 필요한 권한에 대한 자세한 내용은 [고급 에이전트 설정](/ko/products/wandb/platform/launch/setup-agent-advanced)을 참조하세요.


## Related topics

- [튜토리얼: W&B Launch를 도커로 설정하기](/ko/products/wandb/platform/launch/setup-launch-docker.md)
