관리 메뉴

코딩 기록 저장소

[쿠버플로우] 화면 커스터마이징 본문

개인 공부/쿠버플로우

[쿠버플로우] 화면 커스터마이징

KimNang 2025. 8. 11. 09:14

목차


    1. Kubeflow 커스터마이징

    01. MLflow 설치 및 대시보드 추가하기

    - 두 가지 성격의 저장소가 필요함

    • DB (metadata 저장)
    • Storage (Artifact 저장)

    - DB를 위해 일반적으로 PostgreSQL을 사용하고, 아티팩트를 저장하기 위해 S3를 사용함

    - Kubeflow는 기본적으로 저장소로 MinIO를 사용하기에 여기에 mlflow용 버킷을 만들고 사용할 수 있음

     

    MLflow를 위한 Minio bucket 생성

    - Kubeflow를 위해 이미 설치된 minio 서비스에 접속해 버킷을 생성함

    kubectl port-forward -n kubeflow svc/minio-service 9000:9000

     

     

     

    - http://localhost:9000/ 에 접속한 뒤 아래 계정으로 로그인함

    • Access Key: minio
    • Secret Key: minio123

     

     

    - 이후 mlflow라는 이름으로 버킷을 생성함

    - mlflow를 위한 artifact 저장소가 준비됨

    - mlflow를 설치할 Helm 차트에서 설치를 제공해서 따로 설치를 하지 않음

     

     

    MLflow 설치

    - 아래 명령어로 설치를 함

    kubectl create ns mlflow
     
    kubectl create -n mlflow secret generic mlflow-secret \
        --from-literal=AWS_ACCESS_KEY_ID=minio \
        --from-literal=AWS_SECRET_ACCESS_KEY='minio123'
     
    helm repo add bitnami https://charts.bitnami.com/bitnami
    helm upgrade --install mlflow bitnami/mlflow -n mlflow --version 0.10.3 \
    --set minio.enabled=false \
    --set externalS3.host=minio-service.kubeflow \
    --set externalS3.port=9000 \
    --set externalS3.existingSecret=mlflow-secret \
    --set externalS3.existingSecretAccessKeyIDKey="AWS_ACCESS_KEY_ID" \
    --set externalS3.existingSecretKeySecretKey="AWS_SECRET_ACCESS_KEY" \
    --set externalS3.bucket="mlflow" \
    --set externalS3.protocol=http

     

     

     

     

    - http://localhost:32429에 접속하고 로그인하면 아래와 같은 화면이 나와야 함

    • username: user
    • password: kubectl get secret --namespace mlflow mlflow-tracking -o jsonpath="{.data.admin-password }" | base64 -d

     

     

    virtual service 생성

    - Kubeflow의 Central Dashboard에서 하나의 탭을 클릭할 때 다양한 엔드포인트로 라우팅 하기 위해 VirtualService를 사용 (Jupyter, Katib, pipeline 등)

    - MLflow 버튼을 클릭하면 mlflow tracker UI로 라우팅 해야 하므로 추가로 Virtual Service를 생성해야 함

    apiVersion: networking.istio.io/v1beta1
    kind: VirtualService
    metadata:
      name: mlflow
      namespace: kubeflow
    spec:
      gateways:
      - kubeflow/kubeflow-gateway
      hosts:
      - '*'
      http:
      - match:
        - uri:
            prefix: /mlflow/
        rewrite:
          uri: /
        route:
        - destination:
            host: mlflow-tracking.mlflow.svc.cluster.local
            port:
              number: 80
    kubectl apply -f mlflow_virtual_service.yaml

     

    - /mlflow/ 라는 라우터에 접근 시 mlflow-tracking.mlflow.svc.cluster.local:80로부터 요청을 받아옴

     

     

    Central Dashboard 수정

    - Central Dashboard에 버튼을 추가하기 위해, configmap에 정의된 것을 수정함

    kubectl edit cm centraldashboard-config -n kubeflow

     

     

    - 아래와 같은 내용을 추가함

    {
      "type": "item",
      "link": "/mlflow/",
      "text": "mlflow",
      "icon": "device:access-alarm"
    }

     

     

     

    - 그 후 Central Dashboard를 재시작함

    kubectl rollout restart deploy centraldashboard -n kubeflow

     

     

     

    - 다시 대시보드에 접근하여 확인함!

     

     

    02. Kubeflow 대시보드 탭 삭제하기 

    현재 탭 확인

    - 이중에서 'Endpoints'부터 'Executions'까지의 탭을 전부 삭제하고 확인해볼 예정

     

    configmap 수정

    - 'Volumes'부터 이전에 추가한 'mlflow' 사이의 탭을 전부 삭제함

    kubectl edit cm centraldashboard-config -n kubeflow

     

     

     

    - 그 후 Central Dashboard를 재시작함

    kubectl rollout restart deploy centraldashboard -n kubeflow

     

     

    - 다시 대시보드에 접근하면 탭이 삭제된 것을 확인할 수 있음!