2.2. 자체 이미지에서 사용자 정의 이미지 생성
고유한 사용자 정의 이미지를 빌드할 수 있습니다. 그러나 이미지가 OpenShift 및 OpenShift AI와 호환되는지 확인해야 합니다.
추가 리소스
- OpenShift Container Platform 이미지 설명서의 일반 컨테이너 이미지 지침 섹션.
- Red Hat Universal Base Image: https://catalog.redhat.com/software/base-images
- Red Hat Ecosystem Catalog: https://catalog.redhat.com/
2.2.1. 자체 워크벤치 이미지 생성을 위한 기본 지침
다음 기본 지침은 자체 사용자 정의 워크벤치 이미지를 빌드할 때 고려해야 할 정보를 제공합니다.
USER 1001로 실행되도록 이미지 설계
OpenShift에서 컨테이너는 임의의 UID 및 GID 0
으로 실행됩니다. 특히 디렉터리에 대한 쓰기 권한이 필요한 경우 이미지가 이러한 사용자 및 그룹 요구 사항과 호환되는지 확인하십시오. 가장 좋은 방법은 USER 1001
로 실행되도록 이미지를 설계하는 것입니다.
$HOME에 아티팩트를 배치하지 마십시오.
워크벤치에 연결된 영구 볼륨은 /opt/app-root/src
에 마운트됩니다. 이 위치는 $HOME
의 위치이기도 합니다. 따라서 워크벤치 배포 후 볼 수 없고 영구 볼륨이 마운트된 후 파일 또는 기타 리소스를 $HOME
에 직접 배치하지 마십시오.
API 끝점 지정
OpenShift 준비 및 활성 프로브는 /api
엔드포인트를 쿼리합니다. sendpyter IDE의 경우 기본 끝점입니다. 다른 IDE의 경우 /api
끝점을 구현해야 합니다.
2.2.2. 자체 워크벤치 이미지 생성을 위한 고급 지침
다음 지침은 사용자 정의 워크벤치 이미지를 빌드할 때 고려해야 할 정보를 제공합니다.
이미지 크기 최소화
워크벤치 이미지는 "계층" 파일 시스템을 사용합니다. 워크벤치 이미지 파일에서 COPY 또는 RUN 명령을 사용할 때마다 새 계층이 생성됩니다. 아티팩트는 삭제되지 않습니다. 예를 들어 파일처럼 아티팩트를 제거할 때 다음 계층에서 "마스크링"됩니다. 따라서 워크벤치 이미지 파일을 만들 때 다음 지침을 고려하십시오.
dnf update
명령을 사용하지 마십시오.-
Red Hat 카탈로그의
ubi9/python-39
와 같이 지속적으로 업데이트되는 이미지에서 시작하는 경우dnf update
명령을 사용할 필요가 없습니다. 이 명령은 새 메타데이터를 가져오고 영향을 미치지 않을 수 있는 파일을 업데이트하고, 워크벤치 이미지 크기를 늘립니다. -
이전 버전에서
dnf 업데이트를
수행하는 대신 기본 이미지의 최신 버전을 가리킵니다.
-
Red Hat 카탈로그의
-
그룹
RUN
명령. 각 줄의 끝에&& \
를 추가하여 명령을 연결합니다. - 사용자 지정 이미지에 포함하려면 코드(예: 라이브러리 또는 애플리케이션)를 컴파일해야 하는 경우 최종 이미지에 빌드 아티팩트를 포함하지 않도록 다중 단계 빌드를 구현합니다. 즉, 중간 이미지로 라이브러리 또는 애플리케이션을 컴파일한 다음 결과를 최종 이미지에 복사하여 포함하지 않는 빌드 아티팩트 뒤에 둡니다.
파일 및 디렉터리에 대한 액세스 설정
파일 및 폴더의 소유권을
1001:0
(사용자 "기본", 그룹 "0")으로 설정합니다. 예를 들면 다음과 같습니다.COPY --chown=1001:0 os-packages.txt ./
OpenShift에서 모든 컨테이너는 표준 네임스페이스에 있습니다(보안을 수정하지 않는 경우). 컨테이너는 임의의 사용자 ID(uid)가 있고 그룹 ID(gid)가
0
인 사용자로 실행됩니다. 따라서 쓰기하려는 모든 폴더와 (임시적으로) 수정하려는 모든 파일은 이미지에서 임의의 사용자 ID(uid)가 있는 사용자가 액세스할 수 있어야 합니다. 또는 다음 예와 같이 모든 사용자에게 액세스를 설정할 수 있습니다.COPY --chmod=775 os-packages.txt ./
지속하려는 데이터의 기본 위치로
/opt/app-root/src
로 이미지를 빌드합니다. 예를 들면 다음과 같습니다.WORKDIR /opt/app-root/src
사용자가 OpenShift AI Applications
Enabled 페이지에서 워크벤치를 시작하면 사용자의 "개인" 볼륨이 /opt/app-root/src
에 마운트됩니다. 이 위치는 구성할 수 없으므로 사용자 정의 이미지를 빌드할 때 지속 가능한 데이터에 대해 이 기본 위치를 지정해야 합니다.OpenShift 환경에서 PIP(Python 패키지 관리자)를 지원하도록 권한을 수정합니다. 사용자 지정 이미지에 다음 명령을 추가합니다(필요한 경우
python3.9
를 사용 중인 Python 버전으로 변경합니다).chmod -R g+w /opt/app-root/lib/python3.9/site-packages && \ fix-permissions /opt/app-root -P
워크벤치 이미지 내의 서비스는
${NB_PREFIX}/api
에서 응답해야 합니다. 그러지 않으면 OpenShift 활성/읽기 상태 프로브가 실패하고 워크벤치 이미지의 Pod를 삭제합니다.NB_PREFIX
환경 변수는 컨테이너가 수신 대기할 것으로 예상되는 URL 경로를 지정합니다.다음은 Nginx 구성의 예입니다.
location = ${NB_PREFIX}/api { return 302 /healthz; access_log off; }
유휴 조각이 작동하려면 다음 예와 같이
${NB_PREFIX}/api/kernels
URL에서 특정 형식의 JSON 페이로드를 반환해야 합니다.다음은 Nginx 구성의 예입니다.
location = ${NB_PREFIX}/api/kernels { return 302 $custom_scheme://$http_host/api/kernels/; access_log off; } location ${NB_PREFIX}/api/kernels/ { return 302 $custom_scheme://$http_host/api/kernels/; access_log off; } location /api/kernels/ { index access.cgi; fastcgi_index access.cgi; gzip off; access_log off; }
반환된 JSON 페이로드는 다음과 같아야 합니다.
{"id":"rstudio","name":"rstudio","last_activity":(time in ISO8601 format),"execution_state":"busy","connections": 1}
CRB(CodeReady Builder) 및 EPEL(Extra Packages for Enterprise Linux) 활성화
CRB 및 EPEL은 표준 RHEL(Red Hat Enterprise Linux) 또는 UBI(Universal Base Image) 설치에 없는 패키지를 제공하는 리포지토리입니다. R Cryostat와 같이 일부 소프트웨어를 설치하는 데 유용하고 필요합니다.
UBI9 이미지에서 CRB는 기본적으로 활성화되어 있습니다. UBI9 기반 이미지에서 EPEL을 활성화하려면 다음 명령을 실행합니다.
RUN yum install -y https://download.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
Centos Stream 9 기반 이미지에서 CRB 및 EPEL을 활성화하려면 다음 명령을 실행합니다.
RUN yum install -y yum-utils && \ yum-config-manager --enable crb && \ yum install -y https://download.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
Elyra 호환성 추가
Red Hat OpenShift AI 버전 2.9 이상에서 데이터 과학 파이프라인 V2( odh-elyra
패키지로 제공)에 대한 지원을 사용할 수 있습니다. 이전 버전의 OpenShift AI는 데이터 사이언스 파이프라인 V1을 지원합니다( elyra
패키지와 함께 제공됨).
사용자 지정 이미지에서 데이터 사이언스 파이프라인 V2를 지원하려면 다음 요구 사항을 충족해야 합니다.
Data Science pipeline V2 (
elyra
패키지가 아님)를 지원하는odh-elyra
패키지를 포함합니다. 예를 들면 다음과 같습니다.USER 1001 RUN pip install odh-elyra
- 데이터 사이언스 파이프라인 구성을 런타임 구성으로 자동으로 포함하려면 사용자 정의 워크벤치 이미지를 가져올 때 주석을 추가합니다.