개요
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 을 볼륨 마운트 하지 않도록 삭제합니다.