5.4. OpenShift Jenkins 이미지에 대한 중요한 변경 사항

OpenShift Container Platform 4.11은 OpenShift Jenkins 및 OpenShift 에이전트 기본 이미지를 registry.redhat.ioocp-tools-4 리포지토리로 이동합니다. 또한 페이로드에서 OpenShift Jenkins Maven 및 NodeJS 에이전트 이미지도 제거합니다.

  • OpenShift Container Platform 4.11은 OpenShift Jenkins 및 OpenShift Agent Base 이미지를 registry.redhat.io 에서 ocp-tools-4 리포지토리로 이동하여 Red Hat이 OpenShift Container Platform 라이프사이클 외부에서 이미지를 생성하고 업데이트할 수 있습니다. 이전에는 이러한 이미지가 OpenShift Container Platform 설치 페이로드에 있고 registry.redhat.ioopenshift4 리포지토리에 있었습니다.
  • OpenShift Container Platform 4.10은 OpenShift Jenkins Maven 및 NodeJS 에이전트 이미지를 더 이상 사용하지 않습니다. OpenShift Container Platform 4.11은 페이로드에서 이러한 이미지를 제거합니다. Red Hat은 더 이상 이러한 이미지를 생성하지 않으며 registry.redhat.ioocp-tools-4 리포지토리에서 사용할 수 없습니다. Red Hat은 OpenShift Container Platform 라이프 사이클 정책에 따라 중요한 버그 수정 또는 보안 CVE에 대해 이러한 이미지의 4.10 및 이전 버전을 유지 관리합니다.

이러한 변경 사항은 Jenkins Kubernetes 플러그인에서 여러 컨테이너 포드 템플릿을 사용하도록 OpenShift Container Platform 4.10 권장 사항을 지원합니다.

5.4.1. OpenShift Jenkins 이미지 재배치

OpenShift Container Platform 4.11은 특정 OpenShift Jenkins 이미지의 위치 및 가용성을 크게 변경합니다. 또한 이러한 이미지를 업데이트하는 시기와 방법을 구성할 수 있습니다.

OpenShift Jenkins 이미지와 동일하게 유지되는 것은 무엇입니까?

  • Cluster Samples Operator는 OpenShift Jenkins 이미지를 실행하기 위해 ImageStreamTemplate 오브젝트를 관리합니다.
  • 기본적으로 Jenkins pod 템플릿의 Jenkins DeploymentConfig 오브젝트는 Jenkins 이미지가 변경될 때 재배포를 트리거합니다. 기본적으로 이 이미지는 Samples Operator 페이로드의 ImageStream YAML 파일의 openshift 네임스페이스에 있는 Jenkins 이미지 스트림의 jenkins:2 이미지 스트림 태그에서 참조합니다.
  • OpenShift Container Platform 4.10 및 이전 버전에서 4.11로 업그레이드하는 경우 더 이상 사용되지 않는 mavennodejs Pod 템플릿은 여전히 기본 이미지 구성으로 되어 있습니다.
  • OpenShift Container Platform 4.10 및 이전 버전에서 4.11로 업그레이드하는 경우 jenkins-agent-mavenjenkins-agent-nodejs 이미지 스트림이 클러스터에 계속 있습니다. 이러한 이미지 스트림을 유지하려면 다음 섹션, " openshift 네임스페이스에서 jenkins-agent-mavenjenkins-agent-nodejs 이미지 스트림을 사용하여 발생하는 작업을 참조하십시오.

OpenShift Jenkins 이미지의 지원 매트릭스에서 변경 사항은 무엇입니까?

registry.redhat.io 레지스트리의 ocp-tools-4 리포지토리의 새 이미지는 각각 여러 버전의 OpenShift Container Platform을 지원합니다. Red Hat이 이러한 새 이미지 중 하나를 업데이트하면 모든 버전에서 동시에 사용할 수 있습니다. 이 가용성은 Red Hat이 보안 권고에 대응하여 이미지를 업데이트할 때 이상적입니다. 처음에는 이 변경 사항이 OpenShift Container Platform 4.11 이상에 적용됩니다. 이러한 변경 사항은 결국 OpenShift Container Platform 4.9 이상에 적용됩니다.

이전에는 각 Jenkins 이미지가 OpenShift Container Platform의 하나의 버전만 지원했으며 Red Hat은 시간이 지남에 따라 해당 이미지를 순차적으로 업데이트할 수 있었습니다.

OpenShift Jenkins 및 Jenkins Agent Base ImageStream 및 ImageStreamTag 오브젝트에 어떤 추가 사항이 있습니까?

인페이로드 이미지 스트림에서 비 payload 이미지를 참조하는 이미지 스트림으로 이동하면 OpenShift Container Platform에서 추가 이미지 스트림 태그를 정의할 수 있습니다. Red Hat은 OpenShift Container Platform 4.10 및 이전 버전에 있는 기존 "value": "jenkins:2" 및 " value": "image-registry.openshift-image-registry.svc:5000/jenkins-agent-base-rhel8:latest" 와 함께 일련의 새 이미지 스트림 태그를 생성했습니다. 이러한 새로운 이미지 스트림 태그는 Jenkins 관련 이미지 스트림을 유지 관리하는 방법을 개선하기 위해 일부 요청을 처리합니다.

새 이미지 스트림 태그 정보:

ocp-upgrade-redeploy
OpenShift Container Platform을 업그레이드할 때 Jenkins 이미지를 업데이트하려면 Jenkins 배포 구성에서 이 이미지 스트림 태그를 사용하십시오. 이 이미지 스트림 태그는 jenkins 이미지 스트림의 기존 2 이미지 스트림 태그와 jenkins -agent-base-rhel8 이미지 스트림의 latest 이미지 스트림 태그에 해당합니다. 하나의 SHA 또는 이미지 다이제스트에만 특정 이미지 태그를 사용합니다. Jenkins 보안 권고와 같이 ocp-tools-4 이미지가 변경되면 Red Hat Engineering에서 Cluster Samples Operator 페이로드를 업데이트합니다.
user-maintained-upgrade-redeploy
OpenShift Container Platform을 업그레이드한 후 Jenkins를 수동으로 재배포하려면 Jenkins 배포 구성에서 이 이미지 스트림 태그를 사용하십시오. 이 이미지 스트림 태그는 사용 가능한 최소 특정 이미지 버전 표시기를 사용합니다. Jenkins를 재배포하는 경우 $ oc import-image jenkins:user-maintained-upgrade-redeploy -n openshift 명령을 실행합니다. 이 명령을 실행하면 OpenShift Container Platform ImageStream 컨트롤러에서 registry.redhat.io 이미지 레지스트리에 액세스하고 해당 Jenkins ImageStreamTag 오브젝트의 OpenShift 이미지 레지스트리 슬롯에 업데이트된 이미지를 저장합니다. 그러지 않으면 이 명령을 실행하지 않으면 Jenkins 배포 구성에서 재배포를 트리거하지 않습니다.
scheduled-upgrade-redeploy
Jenkins 이미지가 릴리스될 때 최신 버전의 Jenkins 이미지를 자동으로 재배포하려면 Jenkins 배포 구성에서 이 이미지 스트림 태그를 사용합니다. 이 이미지 스트림 태그는 OpenShift Container Platform 이미지 스트림 컨트롤러의 이미지 스트림 태그 기능을 주기적으로 가져오는 기능을 사용하여 백업 이미지의 변경 사항을 확인합니다. 예를 들어 최신 Jenkins 보안 권고로 인해 이미지가 변경되면 OpenShift Container Platform에서 Jenkins 배포 구성의 재배포를 트리거합니다. 다음 "추가 리소스"에서 "이미지 스트림 태그의 정기적인 가져오기"를 참조하십시오.

openshift 네임스페이스에서 jenkins-agent-mavenjenkins-agent-nodejs 이미지 스트림에서 어떻게 됩니까?

OpenShift Container Platform의 OpenShift Jenkins Maven 및 NodeJS 에이전트 이미지는 4.10에서 더 이상 사용되지 않으며 4.11의 OpenShift Container Platform 설치 페이로드에서 제거되었습니다. ocp-tools-4 저장소에는 대체 방법이 없습니다. 그러나 다음 "추가 리소스" 섹션에 언급된 "Jenkins 에이전트" 항목에 설명된 사이드카 패턴을 사용하여 이 문제를 해결할 수 있습니다.

그러나 Cluster Samples Operator는 이전 릴리스에서 생성한 jenkins-agent-mavenjenkins-agent-nodejs 이미지 스트림을 삭제하지 않습니다. 이 이미지 스트림은 registry.redhat.io 의 각 OpenShift Container Platform 페이로드 이미지의 태그를 가리킵니다. 따라서 다음 명령을 실행하여 이러한 이미지에 대한 업데이트를 가져올 수 있습니다.

$ oc import-image jenkins-agent-nodejs -n openshift
$ oc import-image jenkins-agent-maven -n openshift

5.4.2. Jenkins 이미지 스트림 태그 사용자 정의

기본 업그레이드 동작을 재정의하고 Jenkins 이미지를 업그레이드하는 방법을 제어하려면 Jenkins 배포 구성에서 사용하는 이미지 스트림 태그 값을 설정합니다.

기본 업그레이드 동작은 Jenkins 이미지가 설치 페이로드의 일부인 경우 존재하는 동작입니다. jenkins-rhel.json 이미지 스트림 파일의 이미지 스트림 태그 이름 2ocp-upgrade-redeploy 는 SHA별 이미지 참조를 사용합니다. 따라서 해당 태그가 새 SHA로 업데이트되면 OpenShift Container Platform 이미지 변경 컨트롤러에서 jenkins-ephemeral.json 또는 jenkins-persistent.json 과 같은 연결된 템플릿에서 Jenkins 배포 구성을 자동으로 재배포합니다.

새 배포의 경우 해당 기본값을 재정의하려면 jenkins-ephemeral.json Jenkins 템플릿에서 JENKINS_IMAGE_STREAM_TAG 값을 변경합니다. 예를 들어 "value": "jenkins: 2 "의 2 를 다음 이미지 스트림 태그 중 하나로 바꿉니다.

  • OpenShift Container Platform을 업그레이드할 때 기본값인 OCP-upgrade-redeploy.
  • user-maintained-upgrade-redeploy 를 사용하려면 OpenShift Container Platform을 업그레이드한 후 $ oc import-image jenkins:user-maintained-upgrade-redeploy -n openshift 를 실행하여 Jenkins를 수동으로 재배포해야 합니다.
  • scheduled-upgrade-redeploy 는 지정된 < image>:<tag > 조합에서 변경 사항을 주기적으로 확인하고 변경 시 이미지를 업그레이드합니다. 이미지 변경 컨트롤러는 변경된 이미지를 가져와서 템플릿에서 프로비저닝한 Jenkins 배포 구성을 재배포합니다. 예약된 가져오기 정책에 대한 자세한 내용은 다음 "추가 리소스"의 "이미지 스트림에 태그 추가"를 참조하십시오.
참고

기존 배포의 현재 업그레이드 값을 재정의하려면 해당 템플릿 매개변수에 해당하는 환경 변수의 값을 변경합니다.

사전 요구 사항

  • OpenShift Container Platform 4.12에서 OpenShift Jenkins를 실행하고 있습니다.
  • OpenShift Jenkins가 배포된 네임스페이스를 알고 있습니다.

절차

  • 이미지 스트림 태그 값을 설정하고 < namespace >를 OpenShift Jenkins가 배포된 네임스페이스로 바꾸고 < image_stream_tag >를 이미지 스트림 태그로 바꿉니다.

    예제

    $ oc patch dc jenkins -p '{"spec":{"triggers":[{"type":"ImageChange","imageChangeParams":{"automatic":true,"containerNames":["jenkins"],"from":{"kind":"ImageStreamTag","namespace":"<namespace>","name":"jenkins:<image_stream_tag>"}}}]}}'

    작은 정보

    또는 Jenkins 배포 구성 YAML을 편집하려면 $ oc edit dc/jenkins -n <namespace >를 입력하고 값을 'jenkins:<image_stream_tag>' 행을 업데이트합니다.

5.4.3. 추가 리소스