1 - Overview

서비스 개요

AI&MLOps Platform은 머신러닝 모델의 개발, 학습, 배포 과정 전체 파이프라인의 반복적인 작업을 자동화하는 머신러닝 플랫폼입니다. AI&MLOps Platform 서비스를 통해 Kubernetes 기반의 AI/MLOps 환경을 기반으로, 학습 데이터와 모델, 운영 데이터의 통합적인 관리가 가능합니다.

AI&MLOps Platform은 머신러닝 모델의 개발, 학습, 튜닝, 배포 기능을 활용할 수 있는 오픈소스 상품인 Kubeflow.Mini 서비스와 분산학습 Job 실행 및 모니터링 등 Add-on 기능을 추가한 Enterprise 서비스를 제공합니다.

참고
AI&MLOps Platform 관련 사이트는 Kubeflow를 참고하세요.

특장점

  • Cloud Native MLOps 환경 제공: AI&MLOps Platform은 클라우드에 최적화된 머신러닝 모델 개발 환경을 제공하며, Kubernetes 기반으로 다양한 오픈소스와의 연계가 편리합니다.

  • 머신 러닝 개발 및 운영 편의성: TensorFlow, PyTorch, scikit-learn, Keras 등 다양한 머신러닝 프레임워크를 지원하는 표준화된 환경을 제공합니다. 머신러닝 모델의 개발, 학습, 배포 과정의 전체 Pipeline을 자동화하여 제공함으로써 모델 구성 및 생성이 쉽고 재사용이 용이합니다.

  • GPU 연계 활용 강화: Bare Metal Server 기반의 Multi Node GPU 및 GPUDirect RDMA(Remote Direct Memory Access)를 통해 LLM(Large Language Model)과 자연어처리(NLP)의 Job 속도를 획기적으로 개선할 수 있습니다.

서비스 구성도

구성도
그림. AI&MLOps Platform 구성도

제공 기능

AI&MLOps Platform은 다음과 같은 기능을 제공하고 있습니다.

  • ML 모델 개발 환경 및 기능

    • Notebook 제공: ML Framework(Tensorflow, Pytorch 등)를 포함한 Jupyter Notebook과 VS Code를 생성합니다.
    • TensorBoard: TensorBoard(*ML 모델 학습과정 시각화/분석 도구) 서버를 생성하고 관리합니다.
    • Volumes: ML 모델 개발 시 데이터셋과 모델 저장, Jupyter Notebook 생성 시 Volume 연결하여 사용합니다.
  • ML 모델 분산훈련 Job 수행/관리

    • 분산학습 Job 실행 및 모니터링, 추론서비스 관리 및 분석을 지원합니다. (Add-on)
    • Job Queue 관리 등 MLOps 환경 구성을 위한 다양한 기능을 제공합니다. (Add-on)
    • Job Scheduler(FIFO, Bin-packing, Gang 기반), GPU Fraction, GPU 자원 모니터링 등 효율적인 GPU 자원 활용 기능을 제공합니다. (Add-on)
    • BM 기반의 Multi Node GPU 및 GPU Direct RDMA(Remote Direct Memory Access)를 통해LLM(Large Language Model)과 자연어처리(NLP)의 Job 속도를 획기적으로 개선하였습니다. (Add-on)
  • ML 모델 실험관리 및 파이프라인

    • ML 파이프라인 실험관리를 위한 Experiments(KFP)를 제공합니다.
    • ML Task를 단계적으로 구성하여 실행하기 위한 Pipeline 자동화 구성 기능을 지원합니다.

구성 요소

운영체제 버전

AI&MLOps Platform에서 지원하는 운영체제는 다음과 같습니다.

운영체제(OS)버전
RHELRHEL 8.3
UbuntuUbuntu 18.04, Ubuntu 20.04, Ubuntu 22.04
표. 지원하는 운영체제 버전

리전별 제공 현황

AI&MLOps Platform은 아래의 환경에서 제공 가능합니다.

리전제공 여부
한국 서부(kr-west1)제공
한국 동부(kr-east1)제공
한국 남부1(kr-south1)미제공
한국 남부2(kr-south2)미제공
한국 남부3(kr-south3)미제공
표. AI&MLOps Platform 리전별 제공 현황

선행 서비스

해당 서비스를 생성하기 전에 미리 구성되어 있어야 하는 서비스 목록입니다. 자세한 내용은 각 서비스 별로 제공되는 가이드를 참고하여 사전에 준비하세요.

서비스 카테고리서비스상세 설명
ContainerKubernetes EngineKubernetes 컨테이너 오케스트레이션 서비스
표. AI&MLOps Platform 선행 서비스

2 - How-to guides

AI&MLOps Platform 생성하기

사용자는 Samsung Cloud Platform Console을 통해 AI&MLOps Platform의 필수 정보를 입력하고, 상세 옵션을 선택하여 해당 서비스를 생성할 수 있습니다.

AI&MLOps Platform을 생성하려면 다음 절차를 따르세요.

  1. 모든 서비스 > AI/ML > AI&MLOps Platform 메뉴를 클릭하세요. AI&MLOps Platform의 Service Home 페이지로 이동합니다.
  2. Service Home 페이지에서 AI&MLOps Platform 생성 버튼을 클릭하세요. AI&MLOps Platform 생성 페이지로 이동합니다.
  3. AI&MLOps Platform 생성서비스 유형 선택 페이지에서 서비스 생성에 필요한 정보들을 입력하고, 상세 옵션을 선택하세요.
    • 서비스 유형 및 버전 선택 영역에서 서비스 유형을 선택하세요.
      구분
      필수 여부
      상세 설명
      서비스 유형필수사용자가 선택하는 서비스 유형
      • AI&MLOps Platform
      • Kubeflow Mini
      서비스 유형 버전필수선택한 서비스의 버전 선택
      • 제공하는 서비스의 버전 리스트 제공
      표. AI&MLOps Platform 서비스 유형 및 버전 선택 항목
    • 클러스터 배포 영역 구분 영역에서 서비스 생성에 필요한 옵션을 선택하세요.
      구분
      필수 여부
      상세 설명
      클러스터 배포 영역필수
      • Kubernetes Engine에서 배포: 기존에 생성한 Kubernetes Engine을 선택
      • 새 클러스터에 배포: AI&MLOps Platform 생성 시에 Kubernetes Engine을 함께 생성
      표. AI&MLOps Platform 서비스 클러스터 배포 영역 구분 항목
      참고
      해당 클러스터 배포 설정에 따라 다음 서비스 정보 입력 페이지의 설정 요소들이 달라집니다.
  4. AI&MLOps Platform 생성서비스 정보 입력 페이지에서 서비스 생성에 필요한 정보들을 입력하고, 상세 옵션을 선택하세요.
    • 클러스터 배포 영역을 선택할 수 있습니다.
    • 설치에 필요한 Kubernetes 클러스터 사양은 설치에 필요한 Kubernetes 클러스터 사양 가이드를 참고하세요.
  5. AI&MLOps Platform 생성생성 정보 확인 페이지에서 생성한 상세 정보와 예상 청구 금액을 확인하고, 완료 버튼을 클릭하세요.
    • 생성이 완료되면, AI&MLOps Platform 서비스 목록 페이지에서 생성한 자원을 확인하세요.

AI&MLOps Platform 상세 정보 확인하기

AI&MLOps Platform 서비스는 전체 자원 목록과 상세 정보를 확인하고 수정할 수 있습니다. AI&MLOps Platform 서비스 상세 페이지에서는 상세 정보, 태그, 작업 이력 탭으로 구성되어 있습니다.

AI&MLOps Platform 서비스의 상세 정보를 확인하려면 다음 절차를 따르세요.

  1. 모든 서비스 > AI/ML > AI&MLOps Platform 서비스 메뉴를 클릭하세요. AI&MLOps Platform 서비스의 Service Home 페이지로 이동합니다.
  2. Service Home 페이지에서 AI&MLOps Platform 메뉴를 클릭하세요. AI&MLOps Platform 서비스 목록 페이지로 이동합니다.
  3. AI&MLOps Platform 서비스 목록 페이지에서 상세 정보를 확인할 자원을 클릭하세요. AI&MLOps Platform 서비스 상세 페이지로 이동합니다.
    • AI&MLOps Platform 서비스 상세 페이지에는 상태 정보 및 부가 기능 정보가 표시되며, 상세 정보, 태그, 작업 이력 탭으로 구성됩니다.

상세 정보

AI&MLOps Platform 서비스 목록 페이지에서 선택한 자원의 상세 정보를 확인하고, 필요한 경우 정보를 수정할 수 있습니다.

구분
상세 설명
서비스서비스명
자원 유형자원 유형
SRNSamsung Cloud Platform에서의 고유 자원 ID
자원명자원 이름
  • AI&MLOps Platform 서비스에서는 클러스터명을 의미
자원 ID서비스에서의 고유 자원 ID
생성자서비스를 생성한 사용자
생성 일시서비스를 생성한 일시
수정자서비스 정보를 수정한 사용자
수정 일시서비스 정보를 수정한 일시
대시보드상태대시보드 상태값
서비스명서비스 이름
Admin Email Address관리자 이메일 주소
이미지명서비스 이미지 이름
버전이미지 버전
서비스 유형베포된 서비스 유형
표. AI&MLOps Platform 서비스 상세 정보 항목

태그

AI&MLOps Platform 서비스 목록 페이지에서 선택한 자원의 태그 정보를 확인하고, 추가하거나 변경 또는 삭제할 수 있습니다.

구분상세 설명
태그 목록태그 목록
  • 태그의 Key, Value 정보 확인 가능
  • 태그는 자원 당 최대 50개까지 추가 가능
  • 태그 입력 시 기존에 생성된 Key와 Value 목록을 검색하여 선택
표. 클러스터 태그 탭 항목

작업 이력

AI&MLOps Platform 서비스 목록 페이지에서 선택한 자원의 작업 이력을 확인할 수 있습니다.

구분상세 설명
작업 이력 목록자원 변경 이력
  • 작업 내역, 작업 일시, 자원 유형, 자원명, 작업 결과, 작업자 정보 확인이 가능
  • 작업 이력 목록 리스트에서 해당하는 자원을 클릭하세요. 작업 이력 상세 팝업창이 열립니다.
표. AI&MLOps Platform 서비스 작업 이력 탭 상세 정보 항목

AI&MLOps Platform 접속하기

AI&MLOps Platform 대시보드에 접속하려면 하시 사전작업이 선행되어야 합니다.

사전작업

해당 AI&MLOps Platform 접속하기 위해서 사전에 Security Group과 Firewall(방화벽 사용 시)에 관련 포트와 접속이 필요한 IP를 설정해야 합니다.

  • Kubeflow Mini: 31390 포트 (Security Group의 인바운드 룰, VPC 방화벽)

  • 클러스터 Worker Node에 접근하려면 Security Group과 Firewall (VPC 방화벽 사용 시)에 22 포트의 인바운드 룰을 설정해야 합니다.

대시보드 접속하기

AI&MLOps Platform 서비스에 접속하려면 다음 절차를 따르세요.

  1. 모든 서비스 > AI/ML > AI&MLOps Platform 서비스 메뉴를 클릭하세요. AI&MLOps Platform 서비스의 Service Home 페이지로 이동합니다.
  2. Service Home 페이지에서 AI&MLOps Platform 서비스 메뉴를 클릭하세요. AI&MLOps Platform 서비스 목록 페이지로 이동합니다.
  3. AI&MLOps Platform 서비스 목록 페이지에서 상세 정보를 확인할 자원을 클릭하세요. AI&MLOps Platform 상세 페이지로 이동합니다.
  4. AI&MLOps Platform 상세 페이지에서 접속 가이드 버튼을 클릭하세요. 접속 가이드 팝업창이 열립니다.
  5. 접속 가이드 팝업창에서 대시보드URL 링크 를 클릭하세요. 해당 대시보드 페이지로 이동합니다.
주의
Public Subnet 사용 및 공인 IP 할당 시 외부 해킹, 악성코드 감염 등의 보안 공격에 노출될 수 있습니다.

AI&MLOps Platform 해지하기

사용하지 않는 해당 서비스를 해지하여 운영 비용을 절감할 수 있습니다. 단, 서비스를 해지하면 운영 중인 서비스가 즉시 중단될 수 있으므로 서비스 중단 시 발생하는 영향을 충분히 고려한 후 해지 작업을 진행해야 합니다.

주의
서비스 해지 후에는 데이터를 복구할 수 없으므로 주의해주세요.

AI&MLOps Platform을 해지하려면 다음 절차를 따르세요.

  1. 모든 서비스 > AI/ML > AI&MLOps Platform 서비스 메뉴를 클릭하세요. AI&MLOps Platform 서비스의 Service Home 페이지로 이동합니다.
  2. Service Home 페이지에서 AI&MLOps Platform 서비스 메뉴를 클릭하세요. AI&MLOps Platform 서비스 목록 페이지로 이동합니다.
  3. AI&MLOps Platform 서비스 목록 페이지에서 상세 정보를 확인할 자원을 클릭하세요. AI&MLOps Platform 상세 페이지로 이동합니다.
  4. AI&MLOps Platform 상세 페이지에서 서비스 해지 버튼을 클릭하세요. 서비스 해지 팝업창이 열립니다.
  5. 확인을 위해 서비스명을 입력한 후 확인을 클릭하세요.
  6. 해지가 완료되면, AI&MLOps Platform 서비스 목록 페이지에서 자원이 해지되었는지 확인하세요.

2.1 - 클러스터 배포

클러스터 배포 영역

Samsung Cloud Platform에서 AI&MLOps Platform 생성서비스 유형 선택에서 2가지의 클라우드 배포 영역을 제공하고 있습니다.

공통

클러스터 배포 작업을 진행하기 전에 꼭 설치에 필요한 Kubernetes 클러스터 사양을 확인하세요.

  • 클러스터 배포 영역의 선택에 상관없이 사전에 Kubernetes 클러스터 사양을 확인해야 합니다.
  • 상세한 사양 정보는 클러스터 사양 가이드를 참고하세요.

클러스터 배포 영역의 선택에 따라 AI&MLOps Platform 생성서비스 정보 입력 페이지의 설치 내용이 달라집니다.

SCP Kubernetes Engine에서 배포

  1. 모든 서비스 > AI/ML > AI&MLOps Platform 메뉴를 클릭하세요. AI&MLOps Platform의 Service Home 페이지로 이동합니다.
  2. Service Home 페이지에서 AI&MLOps Platform 생성 버튼을 클릭하세요. AI&MLOps Platform 생성 페이지로 이동합니다.
  3. AI&MLOps Platform 생성서비스 유형 선택 페이지에서 서비스 생성에 필요한 정보들을 입력하고, 상세 옵션을 선택하세요.
    클러스터 배포
    SCP Kubernetes Engine에서 배포 옵션을 선택하세요.
  4. AI&MLOps Platform 생성서비스 정보 입력 페이지에서 서비스 생성에 필요한 정보들을 입력하고, 상세 옵션을 선택하세요.
    • 서비스 정보 입력 영역에서 서비스 생성에 필요한 정보들을 입력하거나 조회하세요.
      구분
      필수 여부
      상세 설명
      서비스명필수AI&MLOps Platform 이름 입력
      • AI&MLOps Platform 이름은 프로젝트 내에서 중복하여 사용 불가
      Storage Class필수Storage Class는 자동으로 등록
      설치 노드 정보조회선택한 Kubernetes Engine의 노드 정보를 확인
      Admin Email Address필수로그인 시 사용할 관리자(Admin)의 이메일 주소 입력
      비밀번호필수로그인 시 사용할 비밀번호를 입력
      비밀번호 확인필수비밀번호 오류를 방지하기 위해 비밀번호 재입력
      표. AI&MLOps Platform 서비스 정보 입력 항목
    • 추가 정보 입력 영역에서 서비스 생성에 필요한 정보들을 입력하거나 선택하세요.
      구분
      필수 여부
      상세 설명
      태그선택AI&MLOps Platform에 추가할 태그 선택
      • 태그 추가를 클릭하면 태그를 생성하여 추가하거나 기존 태그를 추가
      • 태그는 최대 50개까지 등록
      • 추가한 신규 태그는 서비스 생성 완료 후 적용
      표. AI&MLOps Platform 서비스 추가 정보 입력 항목

새 클러스터에 배포

  1. 모든 서비스 > AI/ML > AI&MLOps Platform 메뉴를 클릭하세요. AI&MLOps Platform의 Service Home 페이지로 이동합니다.
  2. Service Home 페이지에서 AI&MLOps Platform 생성 버튼을 클릭하세요. AI&MLOps Platform 생성 페이지로 이동합니다.
  3. AI&MLOps Platform 생성서비스 유형 선택 페이지에서 서비스 생성에 필요한 정보들을 입력하고, 상세 옵션을 선택하세요.
    클러스터 배포
    새 클러스터에 배포 옵션을 선택하세요.
  4. AI&MLOps Platform 생성서비스 정보 입력 페이지에서 서비스 생성에 필요한 정보들을 입력하고, 상세 옵션을 선택하세요.
    • 서비스 정보 입력 영역에서 서비스 생성에 필요한 정보들을 입력하거나 조회하세요.

      구분
      필수 여부
      상세 설명
      서비스명필수AI&MLOps Platform 이름 입력
      • AI&MLOps Platform 이름은 프로젝트 내에서 중복하여 사용 불가
      Storage Class필수Storage Class는 자동으로 등록
      설치 노드 정보조회선택한 Kubernetes Engine의 노드 정보를 확인
      Admin Email Address필수로그인 시 사용할 관리자(Admin)의 이메일 주소를 입력
      비밀번호필수로그인 시 사용할 비밀번호를 입력
      비밀번호 확인필수비밀번호 오류를 방지하기 위해 비밀번호 재입력
      표. AI&MLOps Platform 서비스 정보 입력 항목

    • Kubernetes Engine 정보입력 영역에서 필요한 정보를 입력 또는 선택하세요.

      구분
      필수 여부
      상세 설명
      클러스터명필수클러스터 이름
      • 영문으로 시작하며 영문, 숫자, 특수문자(-) 사용
      • 3~30자 이내로 입력
      제어 영역 설정 > Kubernetes 버전필수Kubernetes 버전 선택
      제어 영역 설정 > 제어 영역 로깅선택제어 영역 로깅 사용 여부 선택
      • 클러스터 제어 영역의 Audit/Event 로그를 Cloud Monitoring의 로그 분석에서 확인 가능
      • Account 내 전체 서비스 대상으로 1GB의 로그 저장은 무료로 제공되며, 1GB가 넘을 경우 순차적으로 삭제됨
      네트워크 설정필수노드 풀의 네트워크 연결 설정
      • VPC: 미리 생성한 VPC를 선택
      • Subnet: 선택한 VPC의 서브넷 중 사용할 일반 Subnet을 선택
      • Security Group: 검색 버튼을 클릭한 후 Security Group 선택 팝업창에서 Security Group을 선택
      • Load Balancer: Kubernetes Service 객체에서 type:LoadBalancer 기능 제공
        • 동일 네트워크 상의 로드 밸런서를 선택
        • 사용 여부를 선택
        • 설정 후에는 변경 불가
      File Storage 설정필수클러스터에서 사용할 파일 스토리지 볼륨을 선택
      • 기본 볼륨(NFS): 검색 버튼을 통해 File Storage를 선택
        • 기본 Volume 파일 스토리지는 NFS 형식만 제공
      표. Kubernetes Engine 서비스 정보 입력 항목

    • 노드 풀 정보 입력 영역에서 필요한 정보를 입력 또는 선택하세요.

      구분
      필수 여부
      상세 설명
      노드 풀 구성필수노드 풀 정보를 선택
      • * 표시된 항목은 필수 입력 항목이므로 반드시 입력
      • AI&MLOps Platform의 경우 사용에 따라 이미지 용량이 지속적으로 늘어날 수 있으므로 Block Storage를 최소 200GB 이상으로 설정 시 원활한 시스템 구성이 가능
      표. AI&MLOps Platform 서비스 정보 입력 항목
      참고
      • Windows OS의 노드 풀은 클러스터에서 추가 스토리지(CIFS) 볼륨이 사용 중인 경우에만 생성할 수 있습니다.
      • 노드 풀 Block Storage의 볼륨 암호화는 최초 생성 시에만 설정할 수 있습니다.
        • 암호화를 설정하면 일부 기능의 성능 저하가 발생할 수 있습니다.
      • 노드 풀 자동 확장 또는 축소 기능을 사용으로 선택한 경우에만 노드 수, 최소 노드 수, 최대 노드 수 를 입력할 수 있습니다.

    • 추가 정보 입력 영역에서 필요한 정보를 입력 또는 선택하세요.

      구분
      필수 여부
      상세 설명
      태그선택AI&MLOps Platform에 추가할 태그 선택
      • 태그 추가를 클릭하면 태그를 생성하여 추가하거나 기존 태그를 추가
      • 태그는 최대 50개까지 등록
      • 추가한 신규 태그는 서비스 생성 완료 후 적용
      표. AI&MLOps Platform 서비스 정보 입력 항목

클러스터 사양

AI&MLOps Platform을 이용하려면 AI&MLOps Platform을 설치할 Kubernetes Engine이 필요합니다. 기존에 생성한 Kubernetes Engine을 선택하거나, AI&MLOps Platform 생성 시 함께 Kubernetes Engine을 생성할 수 있습니다.

설치에 필요한 Kubernetes 클러스터의 사양은 다음과 같습니다.

  • 노드 풀 자원 규모 (2개 이상의 노드로 구성)

    • AI&MLOps Platfom : vCPU 32, Memory 128G 이상
    • Kubeflow Mini: vCPU 24, Memory 96G 이상
  • Kubernetes 버전

    • AI&MLOps Platform v1.9.1 (k8s v1.30)
    • Kubeflow Mini v1.9.1 (k8s v1.30)
안내
Kubernetes 클러스터 당 1대의 AI&MLOps Platform만 설치할 수 있으며, 다른 용도로 사용 중인 클러스터에는 AI&MLOps Platform을 설치할 수 없습니다.

2.2 - Kubeflow 사용 가이드

아래에서는 Kubeflow를 생성한 후, Kubeflow의 사용 방법에 대해 가이드합니다.

Kubeflow 사용자 추가

아래에서는 Kubeflow를 생성한 이후의 Kubeflow의 사용 방법에 대해 가이드합니다.

Kubeflow는 설치 초기 화면에서 입력한 Admin User 1명의 계정만 생성되어있습니다.

Kubeflow Dashboard 이용 시, 초기 사용자 이외에 사용자를 추가하기 위해서는 Dex(Kubeflow의 인증 연계 컴포넌트)의 설정을 변경해야 합니다.

  • Dex는 auth 네임스페이스(namespace)에 배포되며, 환경설정은 dex 라는 이름의 configmap 으로 저장되어 있습니다.
참고
kubeflow는 사용자별로 namespace가 분리되어 있습니다

다음은 Dex 환경 설정의 예시입니다.

배경색 변경
apiVersion: v1
kind: ConfigMap
metadata:
  name: dex
  namespace: auth
data:
  config.yaml: |
    issuer: http://dex.auth.svc.cluster.local:5556/dex
    storage:
      type: kubernetes
      config:
        inCluster: true
    web:
      http: 0.0.0.0:5556
    logger:
      level: "debug"
      format: text
    oauth2:
      skipApprovalScreen: true
    enablePasswordDB: true
    staticPasswords:
    - email: admin@kubeflow.org
      hash: $2y$10$Yb9WVbn8pzVSM6fBgKdFae1Bh6Z.XTihi7bNu3sB6/h5bt1JuUOgq
      username: admin
      userID: 9cb67307-fd6d-4441-9b59-52acd78f4c9e
    staticClients:
    - id: kubeflow-oidc-authservice
      redirectURIs: ["/login/oidc"]
      name: 'Dex Login Application'
      secret: pUBnBOY80SnXgjibTYM9ZWNzY2xreNGQok    
apiVersion: v1
kind: ConfigMap
metadata:
  name: dex
  namespace: auth
data:
  config.yaml: |
    issuer: http://dex.auth.svc.cluster.local:5556/dex
    storage:
      type: kubernetes
      config:
        inCluster: true
    web:
      http: 0.0.0.0:5556
    logger:
      level: "debug"
      format: text
    oauth2:
      skipApprovalScreen: true
    enablePasswordDB: true
    staticPasswords:
    - email: admin@kubeflow.org
      hash: $2y$10$Yb9WVbn8pzVSM6fBgKdFae1Bh6Z.XTihi7bNu3sB6/h5bt1JuUOgq
      username: admin
      userID: 9cb67307-fd6d-4441-9b59-52acd78f4c9e
    staticClients:
    - id: kubeflow-oidc-authservice
      redirectURIs: ["/login/oidc"]
      name: 'Dex Login Application'
      secret: pUBnBOY80SnXgjibTYM9ZWNzY2xreNGQok    
코드 블럭. Dex 환경 설정 예시

환경 설정에서 enablePasswordDB 값이 true인 경우, Dex는 서비스 기동 시 configmap 에서 staticPasswords 에 정의된 사용자 목록을 내부 저장소에 저장합니다. 따라서 staticPasswordsemail, hash, username, userID 로 구성된 신규 사용자 값을 추가하게 되면 초기 사용자 이외에도 사용자를 자유롭게 추가하여 Kubeflow 서비스 이용이 가능합니다.

사용자를 추가하기 위한 속성값은 다음과 같이 정의할 수 있습니다.

파라미터설명
email일반적인 E-mail 형식의 값
hashBcrypt 알고리즘으로 암호화 된 사용자 암호 값이며 Bcrypt 알고리즘으로 생성된 Hash 값을 직접 입력
username사용자 이름
  • kubernetes namespace 명명 규칙을 따름
  • 63자 제한, 소문자 숫자 및 - 문자만 사용 가능
userID유일하게 식별될 수 있는 ID 값
  • 초기 사용자의 userID는 uuidgen 커맨드를 이용하여 생성됨
표. 사용자를 추가하기 위한 속성값

kubectl을 사용할 수 있는 노드에서 다음 명령어를 이용해 dex configmap의 수정 화면으로 진입합니다.

배경색 변경
kubectl edit configmap dex -n auth
kubectl edit configmap dex -n auth
코드 블럭. kubectl - dex configmap 수정
배경색 변경
staticPasswords:
    - email: admin@kubeflow.org
      hash: $2y$10$Yb9WVbn8pzVSM6fBgKdFae1Bh6Z.XTihi7bNu3sB6/h5bt1JuUOgq
      username: admin
      userID: 9cb67307-fd6d-4441-9b59-52acd78f4c9e
    - email: sds@samsung.com
      hash: $2y$12$0g5.y86jnrt0v6In5NRCZ.YVuvrAUQ6j/RJYO3rV.kNulaDALOKfq
      username: sds
      userID: 8961d517-3498-4148-90c9-7e442ee91154
staticPasswords:
    - email: admin@kubeflow.org
      hash: $2y$10$Yb9WVbn8pzVSM6fBgKdFae1Bh6Z.XTihi7bNu3sB6/h5bt1JuUOgq
      username: admin
      userID: 9cb67307-fd6d-4441-9b59-52acd78f4c9e
    - email: sds@samsung.com
      hash: $2y$12$0g5.y86jnrt0v6In5NRCZ.YVuvrAUQ6j/RJYO3rV.kNulaDALOKfq
      username: sds
      userID: 8961d517-3498-4148-90c9-7e442ee91154
코드 블럭. dex configmap 수정

configmap의 staticPasswords 값은 Dex 서비스가 기동되는 시점에 반영되기 때문에 Dex 서비스를 다음 명령어로 재기동합니다.

배경색 변경
kubectl rollout restart deployment dex -n auth
kubectl rollout restart deployment dex -n auth
코드 블럭. kubectl - dex 재기동

신규 사용자 정보를 이용해 로그인을 시도합니다

그림1
신규 사용자 정보 로그인

정상적으로 로그인 되어 새로운 Namespace(profile)을 생성하는 화면으로 전환되는것을 확인합니다.

그림2
Namespace Name 생성

위 내용은 Kubeflow 공식 사이트를 참고하여 작성하였습니다. 자세한 내용은 Kubeflow Profiles 참고하세요.

Kubeflow Jupyter Notebook의 Custom Image 활용방법

Kubeflow의 Notebook Life Cycle을 관리하는 Kubeflow Notebook Controller에서 Custom Image를 사용하기 위해서는 몇 가지 요구사항을 만족해야 합니다.

Kubeflow는 Notebook 이미지가 실행되면 Jupyter가 자동으로 시작되는 것으로 인식합니다. 그래서 컨테이너 이미지에 Jupyter를 시작하는 기본 명령을 설정해야 합니다.

다음은 Dockerfile에 포함해야 하는 내용의 예시입니다.

배경색 변경
ENV NB_PREFIX /

CMD ["sh","-c", "jupyter notebook --notebook-dir=/home/${NB_USER} --ip=0.0.0.0 --no-browser --allow-root --port=8888 --NotebookApp.token='' --NotebookApp.password='' --NotebookApp.allow_origin='*' --NotebookApp.base_url=${NB_PREFIX}"]
ENV NB_PREFIX /

CMD ["sh","-c", "jupyter notebook --notebook-dir=/home/${NB_USER} --ip=0.0.0.0 --no-browser --allow-root --port=8888 --NotebookApp.token='' --NotebookApp.password='' --NotebookApp.allow_origin='*' --NotebookApp.base_url=${NB_PREFIX}"]
코드 블럭. Dockfile 예시

위 항목을 설명하면 아래와 같습니다.

파라미터설명
--notebook-dir=/home/jovyan작업 디렉토리 설정
  • /home/jovyan 디렉토리는 Kubernetes persistent volume(PV)에 Mount 됨
--ip=0.0.0.0Jupyter Notebook이 모든 IP에서 수신하도록 허용
--allow-rootJupyter Notebook을 사용자가 root로 실행하도록 허용
--port=8888Port 설정
--NotebookApp.token=’’ –NotebookApp.password=’’Jupyter 인증 비활성화
  • Kubeflow는 istio가 인증을 담당하기 때문에 Jupyter가 제공하는 인증 기능은 비활성화
  • 해당 설정을 사용하여 Jupyter Notebook Server에 비밀번호 없이 액세스 가능
--NotebookApp.allow_origin=’*’Allow origin
--NotebookApp.base_url=NB_PREFIXBase URL 설정
표. Dockerfile에 포함해야하는 설정

Custom Image 생성은 tesorflow notebook image를 생성하는 Dockerfile을 참고하여 생성할 수 있습니다.

참고
Custom Image는 Docker Hub와 같은 Public Registry 또는 Private Registry에 저장되어 Kubeflow에서 push/pull이 가능하여야 합니다.
  1. Notebook Servers 페이지에서 +NEW SERVER 버튼을 클릭하세요.

    그림3

  2. 일단 Custom Image를 생성했다면 kubeflow Notebook Server 화면에서 Custom Image를 체크하고, Custom Image의 주소 를 입력하여 새로운 Notebook Server를 생성합니다.

    그림4

안내

위 내용은 Kubeflow 공식 사이트를 참고하여 작성하였습니다.

3 - API Reference

API Reference

4 - CLI Reference

CLI Reference

5 - Release Note

AI&MLOps Platform

2025.07.01
FEATURE AI&MLOps Platform 오픈소스 버전 업그레이드
  • AI&MLOps Platform 오픈소스 버전 업그레이드하였습니다.
    • Kubeflow 1.9
2025.02.27
NEW AI&MLOps Platform 서비스 정식 버전 출시
  • 머신러닝 모델의 개발, 학습, 배포 과정 전체 파이프라인의 반복적인 작업을 자동화하는 AI&MLOps Platform 서비스가 출시되었습니다.
  • Kubernetes 기반의 머신 러닝 플랫폼 서비스를 제공합니다.