ZCP v1.2 에서 CI/CD 파이프라인(pipeline) 스크립트 수정하기

Print

개요

ZCP 는 1.2.0 로 업그레이드 되면서 Kubernetes 1.13 을 지원합니다. 

Kubernetes 1.13 의 주요 변경 사항 중 하나는 Docker 대신 ContainerD 를 사용한다는 것입니다. 자세한 내용은 링크를 참고하세요.

ZCP CI/CD 파이프라인에서는 Docker 빌드 시 Host Worker 노드의 Docker Daemon 을 사용했으나 ZCP 1.2.0 부터는 더 이상 Host Worker 노드에 Docker Daemon 이 존재하지 않습니다. 그래서 Docker build 시 Docker daemon 을 포함하고 있는 Dind 이미지를 사용하여 빌드하도록 파이프라인을 수정해야 합니다.

파이프라인 수정 사항

podTemplate(label:label,
    serviceAccount: "zcp-system-sa-${ZCP_USERID}",
    containers: [
        containerTemplate(name: 'maven', image: 'maven:3.5.2-jdk-8-alpine', ttyEnabled: true, command: 'cat'),
// Docker 빌드 image 를 dind 로 사용
//        containerTemplate(name: 'docker', image: 'docker', ttyEnabled: true, command: 'cat'),
        containerTemplate(name: 'docker', image: 'docker:17-dind', ttyEnabled: true, command: 'dockerd-entrypoint.sh', privileged: true),
// kubectl 버전 1.13.6 으로 업데이트
//        containerTemplate(name: 'kubectl', image: 'lachlanevenson/k8s-kubectl', ttyEnabled: true, command: 'cat')
        containerTemplate(name: 'kubectl', image: 'lachlanevenson/k8s-kubectl:v1.13.6', ttyEnabled: true, command: 'cat')
    ],
    volumes: [
// Docker daemon 마운트 제거
//        hostPathVolume(hostPath: '/var/run/docker.sock', mountPath: '/var/run/docker.sock'),
        persistentVolumeClaim(mountPath: '/root/.m2', claimName: 'zcp-jenkins-mvn-repo')
    ]) {
  

6~7 라인 : Docker image 를 dind 로 사용하도록 수정합니다.  

  • Docker 기본 이미지에서 17-dind 로 변경되었습니다.
  • 팟 기동 시 Docker daemon 을 실행하도록 command 가 dockerd-entrypoint.sh 로 변경되었습니다.
  • Docker daemon 실행을 위해 privileged : true 옵션이 추가되었습니다.

9~10 라인 : kubectl image 를 v1.13.6 으로 사용하도록 수정합니다.

  • k8s-kubectl 이미지의 버전이 v1.13.6 으로 변경되었습니다.

Docker Hub 에 접속이 안되는 클러스터는 ZCP 에서 제공되는 Harbor Registry 에 해당 image 를 push 하여 사용하도록 합니다.

14 라인 : Host worker 노드의 Docker daemon 을 볼륨 마운트 하지 않도록 삭제합니다.

이 답변이 유용합니까? 아니오

Send feedback
도움이 되어드리지 못해 죄송합니다. 아티클 개선을 위해 의견을 제공해 주시기 바랍니다.