튜토리얼: OpenShift에서 GitLab Runner Operator를 사용하여 rootless 컨테이너에서 Buildah 사용
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
이 튜토리얼은 OpenShift 클러스터에서 GitLab Runner Operator를 사용하여 배포된 GitLab Runner로 buildah 도구를 사용하여 이미지를 성공적으로 빌드하는 방법을 가르쳐 줍니다. 이 가이드는 GitLab Runner Operator에 대한 rootless OpenShift 컨테이너에서 Buildah를 사용하여 이미지 빌드 문서를 수정한 것입니다.
이 튜토리얼은 OpenShift 클러스터에서 GitLab Runner Operator를 사용하여 배포된 GitLab Runner로 buildah 도구를 사용하여 이미지를 성공적으로 빌드하는 방법을 가르쳐 줍니다.
이 가이드는 GitLab Runner Operator에 대한 rootless OpenShift 컨테이너에서 Buildah를 사용하여 이미지 빌드 문서를 수정한 것입니다.
이 튜토리얼을 완료하려면:
- Buildah 이미지를 구성합니다.
- 서비스 계정을 구성합니다.
- job을 구성합니다.
시작하기 전에#
이 튜토리얼을 완료하기 전에 다음이 있는지 확인합니다:
gitlab-runner네임스페이스에 이미 배포된 러너.
Buildah 이미지 구성#
quay.io/buildah/stable:v1.23.1 이미지를 기반으로 커스텀 이미지를 준비하는 것부터 시작합니다.
-
Containerfile-buildah파일을 만듭니다:cat > Containerfile-buildah < /etc/subuid \ && echo build:10000:65536 > /etc/subgid # Use chroot because the default runc does not work when running rootless RUN echo "export BUILDAH_ISOLATION=chroot" >> /home/build/.bashrc # Use VFS because fuse does not work RUN mkdir -p /home/build/.config/containers \ && (echo '[storage]';echo 'driver = "vfs"') > /home/build/.config/containers/storage.conf # The buildah container will run as `build` user USER build WORKDIR /home/build EOF -
Buildah 이미지를 빌드하고 컨테이너 레지스트리에 푸시합니다. GitLab 컨테이너 레지스트리에 푸시합니다:
docker build -f Containerfile-buildah -t registry.example.com/group/project/buildah:1.23.1 . docker push registry.example.com/group/project/buildah:1.23.1
서비스 계정 구성#
이 단계들을 위해 OpenShift 클러스터에 연결된 터미널에서 명령을 실행해야 합니다.
-
이 명령을 실행하여
buildah-sa라는 서비스 계정을 만듭니다:oc create -f - < -
생성된 서비스 계정에
anyuidSCC로 실행할 수 있는 기능을 부여합니다:oc adm policy add-scc-to-user anyuid -z buildah-sa -n gitlab-runner -
러너 구성 템플릿을 사용하여 새 서비스 계정을 사용하도록 Operator를 구성합니다. 다음 내용이 포함된
custom-config.toml파일을 만듭니다:[[runners]] [runners.kubernetes] service_account_overwrite_allowed = "buildah-*" -
custom-config.toml파일에서custom-config-toml이라는ConfigMap을 만듭니다:oc create configmap custom-config-toml --from-file config.toml=custom-config.toml -n gitlab-runner -
Custom Resource Definition(CRD) 파일을 업데이트하여
Runner의config속성을 설정합니다:apiVersion: apps.gitlab.com/v1beta2 kind: Runner metadata: name: buildah-runner spec: gitlabUrl: https://gitlab.example.com token: gitlab-runner-secret config: custom-config-toml
job 구성#
마지막 단계는 프로젝트에서 GitLab CI/CD 구성 파일을 설정하여 새 Buildah 이미지와 구성된 서비스 계정을 사용하는 것입니다:
build:
stage: build
image: registry.example.com/group/project/buildah:1.23.1
variables:
STORAGE_DRIVER: vfs
BUILDAH_FORMAT: docker
BUILDAH_ISOLATION: chroot
FQ_IMAGE_NAME: "$CI_REGISTRY_IMAGE/test"
KUBERNETES_SERVICE_ACCOUNT_OVERWRITE: "buildah-sa"
before_script:
# Log in to the GitLab container registry
- buildah login -u "$CI_REGISTRY_USER" --password $CI_REGISTRY_PASSWORD $CI_REGISTRY
script:
- buildah images
- buildah build -t $FQ_IMAGE_NAME
- buildah images
- buildah push $FQ_IMAGE_NAME
job은 image 키워드의 값으로 빌드한 이미지를 사용해야 합니다.
KUBERNETES_SERVICE_ACCOUNT_OVERWRITE 변수에는 생성한 서비스 계정 이름의 값이 있어야 합니다.
축하합니다! rootless 컨테이너에서 Buildah로 이미지를 성공적으로 빌드했습니다!
트러블슈팅#
non-root로 실행할 때 알려진 문제가 있습니다. OpenShift 러너를 사용하는 경우 해결 방법을 사용해야 할 수 있습니다.
