1장. Jenkins 이미지 구성
AWS의 Red Hat OpenShift Service는 Jenkins 실행을 위한 컨테이너 이미지를 제공합니다. 이 이미지는 Jenkins 서버 인스턴스를 제공하며, 지속적인 테스트, 통합 및 제공을 위한 기본 흐름을 설정하는 데 사용할 수 있습니다.
이미지는 Red Hat UBI(Universal Base Images)를 기반으로 합니다.
AWS의 Red Hat OpenShift Service는 Jenkins의 LTS 릴리스를 따릅니다. Red Hat OpenShift Service on AWS는 Jenkins 2.x가 포함된 이미지를 제공합니다.
AWS Jenkins 이미지의 Red Hat OpenShift Service는 Quay.io 또는 registry.redhat.io 에서 사용할 수 있습니다.
예를 들면 다음과 같습니다.
$ podman pull registry.redhat.io/ocp-tools-4/jenkins-rhel8:<image_tag>
이러한 이미지를 사용하려면 이러한 레지스트리에서 직접 이미지에 액세스하거나 AWS 컨테이너 이미지 레지스트리의 Red Hat OpenShift Service로 푸시할 수 있습니다. 컨테이너 이미지 레지스트리 또는 외부 위치에서 이미지를 가리키는 이미지 스트림을 생성할 수도 있습니다. 그런 다음 AWS 리소스에 있는 Red Hat OpenShift Service는 이미지 스트림을 참조할 수 있습니다.
그러나 편의를 위해 Red Hat OpenShift Service on AWS는 핵심 Jenkins 이미지의 openshift
네임스페이스에서 이미지 스트림과 Jenkins와 AWS 통합 시 Red Hat OpenShift Service에 제공되는 에이전트 이미지 예제를 제공합니다.
1.1. 구성 및 사용자 정의
Jenkins 인증은 다음 두 가지 방법으로 관리할 수 있습니다.
- AWS 로그인 플러그인의 Red Hat OpenShift Service에서 제공하는 AWS OAuth 인증의 Red Hat OpenShift Service.
- Jenkins에서 제공하는 표준 인증
1.1.1. Red Hat OpenShift Service on AWS OAuth 인증
OAuth 인증은 Jenkins UI의 글로벌 보안 구성 패널에서 옵션을 구성하거나 Jenkins 배포 구성에서 OPENSHIFT_ENABLE_OAUTH
환경 변수를 false
이외의 값으로 설정하면 활성화됩니다. 이렇게 하면 AWS 로그인 플러그인에서 Red Hat OpenShift Service가 활성화됩니다. 이 플러그인은 Pod 데이터에서 구성 정보를 검색하거나 AWS API 서버에서 Red Hat OpenShift Service와 상호 작용할 수 있습니다.
유효한 인증 정보는 AWS ID 공급자의 Red Hat OpenShift Service에서 제어합니다.
Jenkins는 브라우저 액세스 및 브라우저 이외의 액세스를 둘 다 지원합니다.
유효한 사용자는 로그인 시 Jenkins 권한 부여 매트릭스에 자동으로 추가됩니다. 여기서 Red Hat OpenShift Service on AWS 역할에 따라 사용자가 보유한 특정 Jenkins 권한이 지정됩니다. 기본적으로 사용되는 역할은 사전 정의된 admin
, edit
및 view
입니다. 로그인 플러그인은 Jenkins가 실행되는 네임스페이스 또는 프로젝트에서 해당 역할에 대해 자체AR 요청을 실행합니다.
admin
역할의 사용자에게는 기존 Jenkins 관리자 권한이 있습니다. edit
또는 view
역할의 사용자는 점차 더 적은 권한을 가지게 됩니다.
AWS 관리자
의 기본 Red Hat OpenShift Service,편집
및 보기
역할 및 Jenkins 인스턴스에서 해당 역할이 할당되는 Jenkins 권한은 구성할 수 있습니다.
AWS Pod의 Red Hat OpenShift Service에서 Jenkins를 실행하는 경우 로그인 플러그인은 Jenkins가 실행되는 네임스페이스에서 openshift-jenkins-login-plugin-config
라는 구성 맵을 찾습니다.
이 플러그인이 해당 구성 맵을 찾아서 읽을 수 있는 경우 Jenkins 권한 매핑에 대해 역할을 정의할 수 있습니다. 특히 다음 내용에 유의하십시오.
- 로그인 플러그인은 구성 맵의 키 및 값 쌍을 AWS 역할 매핑에서 Red Hat OpenShift Service에 대한 Jenkins 권한으로 처리합니다.
- 키는 Jenkins 권한 그룹 짧은 ID와 Jenkins 권한 짧은 ID이며 두 개가 하이픈 문자로 구분되어 있습니다.
-
AWS 역할의 Red Hat OpenShift Service에
Overall Jenkins Administer
권한을 추가하려면 키가Overall-Administer
여야 합니다. - 사용 가능한 권한 그룹 및 권한 ID를 파악하려면 Jenkins 콘솔 및 ID의 매트릭스 권한 부여 페이지로 이동하여 제공된 테이블의 그룹 및 개인 권한을 확인합니다.
- 키 및 값 쌍의 값은 AWS 역할의 Red Hat OpenShift Service 목록이며 권한이 적용해야 하며 각 역할은 쉼표로 구분됩니다.
-
기본
admin
및edit
역할과 생성한 새 jenkins 역할 모두에Overall Jenkins Administer
권한을 추가하려면 키Overall-Administer
의 값이admin,edit,jenkins
가 됩니다.
AWS OAuth에서 Red Hat OpenShift Service를 사용할 때 관리 권한이 있는 AWS Jenkins 이미지의 Red Hat OpenShift Service에 미리 채워진 admin
사용자에게는 해당 권한이 부여되지 않습니다. 이러한 권한을 부여하려면 AWS 클러스터 관리자가 AWS ID 공급자의 Red Hat OpenShift Service에서 해당 사용자를 명시적으로 정의하고 admin
역할을 사용자에게 할당해야 합니다.
저장된 Jenkins 사용자 권한은 사용자가 처음 설정된 후 변경될 수 있습니다. AWS 로그인 플러그인의 Red Hat OpenShift Service는 AWS API 서버에서 권한을 폴링하고 각 사용자의 Jenkins에 저장된 권한을 AWS의 Red Hat OpenShift Service에서 검색된 권한으로 업데이트합니다. Jenkins UI를 사용하여 Jenkins 사용자에 대한 권한을 업데이트하는 경우 다음에 플러그인이 AWS에서 Red Hat OpenShift Service를 폴링할 때 권한 변경 사항을 덮어씁니다.
OPENSHIFT_PERMISSIONS_POLL_INTERVAL
환경 변수를 사용하여 폴링 발생 빈도를 제어할 수 있습니다. 기본 폴링 간격은 5분입니다.
OAuth 인증을 사용하여 새 Jenkins 서비스를 생성하는 가장 쉬운 방법은 템플릿을 사용하는 것입니다.
1.1.2. Jenkins 인증
템플릿을 사용하지 않고 이미지를 직접 실행하는 경우 기본적으로 Jenkins 인증이 사용됩니다.
Jenkins가 처음 시작되면 관리자 및 암호와 함께 구성이 생성됩니다. 기본 사용자 인증 정보는 admin
및 password
입니다. 표준 Jenkins 인증을 사용하는 경우에만 JENKINS_PASSWORD
환경 변수를 설정하여 기본 암호를 구성합니다.
프로세스
다음 명령을 입력하여 표준 Jenkins 인증을 사용하는 Jenkins 애플리케이션을 생성합니다.
$ oc new-app -e \ JENKINS_PASSWORD=<password> \ ocp-tools-4/jenkins-rhel8