Gitlab CI 및 Kaniko, Docker 이미지 빌드

2957 단어 docker

소개



Jérôme Petazzoni는 그렇게 하는 것을 강력히 권장하지 않지만 컨테이너 또는 Kubernetes 클러스터 내부의 Dockerfile에서 컨테이너 이미지를 빌드할 수 있습니다. 그는 컨테이너 또는 Kubernetes 클러스터 내부에서 Dockerfile을 사용하여 컨테이너 이미지를 빌드하지 않는 이유에 대해 읽을 수 있는 자세한 블로그here를 작성했습니다.


문맥



GitLab의 CI/CD를 사용하는 방법에 대한 N개의 블로그를 얻을 수 있습니다. 여기에서 kaniko 을 사용하여 동일한 GitLab 레지스트리에 빌드 및 저장할 Docker 이미지용 CI/CD를 만들고 파일을 확장하는 쉬운 참조 지점을 볼 수 있습니다. 이 파일은 .gitlab-ci.yml이라는 이름으로 사용 가능한 템플릿을 사용하여 GitLab의 개별 프로젝트에서 생성해야 합니다.


카니코란?


Note: Kaniko is not an officially supported Google product
컨테이너 또는 Kubernetes 클러스터 내부의 Dockerfile에서 컨테이너 이미지를 빌드하는 도구입니다. 각 Dockerfile 명령을 실행하는 것은 Docker 데몬에 의존하지 않습니다.

자체 제한 사항이 있지만 Docker-in-Docker를 사용할 위험이 없습니다.


전제 조건


  • GitLab에 대한 액세스(개인 자체 호스팅 또는 관리)
  • Dockerfile이 있는 GitLab 프로젝트



  • 자동 데브옵스용 CI YAML



    # .gitlab-ci.yml
    variables:
        GIT_SSL_NO_VERIFY: "true"
    
    before_script:
      - echo "Random image creation, user = $GITLABUSER"
    
    stages:
      - build
    
    build_image:
      image:
        name: gcr.io/kaniko-project/executor:debug
        entrypoint: [""]
      stage: build
      script:
        - ls
        - pwd
        - export CI_REGISTRY_IMAGE=mygitlab.com/base-project/subproject/project
        - echo "{\"auths\":{\"mygitlab.com\":{\"username\":\"gitlab-ci-token\",\"password\":\"$CI_BUILD_TOKEN\"},\"repository.xyz-company.io\":{\"username\":\"user\",\"password\":\"123random\"}}}" > /kaniko/.docker/config.json
        - wget https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem | xargs cat lets-encrypt-x3-cross-signed.pem >> /kaniko/ssl/certs/ca-certificates.crt
        - /kaniko/executor --skip-tls-verify --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination $CI_REGISTRY_IMAGE:$CI_BUILD_REF_NAME
    
    



    변수: 변경되지 않고 gitlab-ci.yml 파일의 여러 위치에서 사용되는 정적 값입니다.

    before_script: 인쇄하려는 명령 또는 echo 문 집합

    단계: 단계는 동일한 작업 또는 작업 집합에 대한 코드 블록입니다. 빌드, 테스트, 정리, 삭제, 배포 등. 이것은 YAML에 정의된 순서대로 실행됩니다. 작업(코드 블록) 앞의 점(.)은 이를 비활성화하고 자동 또는 수동 작업으로 실행되거나 사용할 수 없습니다.

    작업(각 코드 블록): 개별 단계의 각 블록에는 키-값 쌍 또는 명령 집합이 포함됩니다. 특정 단계와 스크립트 블록에서 해당 기능을 수행하는 데 필요한 모든 명령 집합을 가리키도록 각 코드 블록을 정의할 수 있습니다. 자동 및 수동 실행이 가능합니다(버튼을 클릭하여 수동으로 작업 시작). 암호, 액세스/비밀 키와 같은 변수는 비밀 변수 섹션의 CI/CD 설정에서 정의할 수 있으므로 일반 텍스트 형식으로 사용할 수 없습니다.


    참고: GitLab 도커 레지스트리를 사용하고 도커 이미지를 GitLab 프로젝트에 저장하려는 경우; 이것은 기본적으로 비활성화되어 있으며 일반 설정 섹션에서 활성화해야 합니다.

    좋은 웹페이지 즐겨찾기