티스토리 뷰

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

'CI_CD' 카테고리의 다른 글

containerD 란?  (0) 2025.03.29
Jenkins 설치 방법  (0) 2025.03.29
GitLab CE (Community Edition)을 설치하는 방법  (0) 2025.03.29
Argo CD Kubernetes 설치 방법  (0) 2025.03.29
Harbor 설치 방법 (docker, kubernetes)  (0) 2025.03.29
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함