CI_CD
Kaniko 란? 빌드 방법
ipxy
2025. 3. 29. 16:34
728x90
🚀 Kaniko란
Docker 데몬 없이 컨테이너 이미지를 빌드하고, 레지스트리에 푸시할 수 있는 도구
즉, Kubernetes 환경에서 안전한 빌드 도구
✅ Kaniko 설치 방법 (Kubernetes 환경 기준)
Kaniko는 Go 프로그램 + 컨테이너 이미지 형태로 배포되며, 일반적으로 Pod로 실행하여 사용합니다. 설치보다는 "Kaniko를 이용한 빌드 작업 정의"가 핵심입니다.
📦 1. Kaniko 공식 이미지
gcr.io/kaniko-project/executor:latest
현재는 [gcr.io → gcr.io/kaniko-project → registry.k8s.io로 이전 중]이며, 최신 위치:
registry.k8s.io/kaniko-project/executor:latest
🛠️ 2. Kaniko를 사용하는 Kubernetes Job 예시
apiVersion: batch/v1
kind: Job
metadata:
name: kaniko-build
spec:
backoffLimit: 0
template:
spec:
containers:
- name: kaniko
image: registry.k8s.io/kaniko-project/executor:latest
args:
- "--dockerfile=/workspace/Dockerfile"
- "--context=dir:///workspace/"
- "--destination=myregistry.example.com/my-app:latest"
- "--insecure" # HTTP 레지스트리 사용할 경우
- "--skip-tls-verify" # TLS 인증서 무시 (테스트용)
volumeMounts:
- name: kaniko-secret
mountPath: /kaniko/.docker/
- name: build-context
mountPath: /workspace/
restartPolicy: Never
volumes:
- name: kaniko-secret
secret:
secretName: regcred
- name: build-context
configMap:
name: dockerfile-context
🔐 regcred는 Docker 레지스트리 인증 정보가 들어있는 Secret
📁 dockerfile-context는 Dockerfile과 소스 코드가 들어있는 ConfigMap (또는 PVC 등)
🔐 3. Docker 레지스트리 Secret 생성
kubectl create secret docker-registry regcred \
--docker-server=myregistry.example.com \
--docker-username=myuser \
--docker-password=mypassword \
--docker-email=my@example.com
🧪 4. 간단한 Dockerfile 예시 (ConfigMap으로 넣는 경우)
kubectl create configmap dockerfile-context \
--from-file=Dockerfile=./Dockerfile \
--from-file=app.py
✍️ GitLab CI에서 Kaniko 사용 예 (Docker-out-of-Docker 대체)
build-image:
image: registry.k8s.io/kaniko-project/executor:latest
script:
- /kaniko/executor
--dockerfile=Dockerfile
--context=$CI_PROJECT_DIR
--destination=$CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
--skip-tls-verify
✅ 요약
항목 내용
설치 형태 | 컨테이너 (Pod로 실행) |
빌드 방식 | Dockerfile 기준으로 이미지 빌드 |
Docker 필요 없음 | O (완전 대체 가능) |
사용 위치 | GitLab, ArgoCD, Tekton, Kubernetes Job 등 |
인증 방식 | Docker config.json 형태 Secret 사용 |
728x90