CloudBuild에 설정된 환경 변수를 Docker에 전달

3586 단어 DockerCloudBuild
최근 회사에서 GCP@kshibata101를 사용하고 있습니다.
GCP의 CI/CD 서비스 클라우드 빌드에 환경 변수를 설정하고 Docker를 시작할 때 막혀서 방법을 적어 두려고 합니다.

Cloud Build


는 GCP에서 CI/CD를 가능하게 하는 서비스입니다.
출시된 지 얼마 되지 않은 서비스인데 2019년 1월까지 촉발된 기능은 베타 버전인 것 같다.

기본적으로cloudbuild입니다.yaml 파일을 준비하고 거기에 명령을 쓰면 CI/CD를 실현할 수 있습니다.
cloudbuild.yaml을 준비하지 않아도 Docker file을 주면 임의로 구축할 수 있습니다.yaml로 설정하는 방법이 적혀 있습니다.

변수를 전달하는 프로세스


위에서 설명한 대로 CloudBuild를 구성 대상으로 합니다.
  • Docker file 직접 지정
  • cloudbuild.yaml 구축 절차가 적힌 파일 준비
  • 두 가지가 있는데, 두 번째는cludbuild입니다.yaml을 준비하면 변수 대입 기능을 사용할 수 있습니다.
    다만, 이곳의 변수는 시종cloudbuild입니다.yaml에서 사용할 수 있는 변수이기 때문에 Docker file에서 용기에 사용할 변수를 설정할 수 없습니다.
    그러나 Docker file의 처리 변수 설정에는 ARG 및 ENV가 있습니다.
  • ARG: docker image 구축을 위한 외부 전달 변수
  • ENV: 구축된 컨테이너에 설정된 내부 사용 환경 변수
  • 따라서 ARG로 받아 ENV로 설정하면 컨테이너 내의 변수로 처리할 수 있습니다.
    궁극
    CloudBuild의 대입 변수 = > cloudbuild.yaml의 -build-arg 매개 변수 = > Docker file의 ARG = > ENV
    이런 느낌이야.

    설정


    구체적인 설정 방법.
    이번에는 Cloud Build에서 Rails가 5.2에서 가져온 credentials를 사용하는 환경 변수'RAILS MASTER KEY'를 설정했습니다.
    먼저 창고에 Docker file과 cloudbuild를 넣습니다.준비해.
    코드는 이런 느낌입니다.
    # Dockerfile
    FROM gcr.io/google-appengine/ruby
    
    ARG _RAILS_MASTER_KEY
    ENV RAILS_MASTER_KEY ${_RAILS_MASTER_KEY}
    
    :
    
    Doke rfile에서 ARG 변수에 밑줄을 그어 시작합니다. 이것은 FROM이 지정한 이미지가 RAILS에 이미 있습니다.MASTER_KEY를 정의했기 때문에 일부러 밑줄을 그었다.
    # cloudbuild.yaml
    steps:
    - name: 'gcr.io/cloud-builders/docker'
      args: ["build", "-t", "gcr.io/$PROJECT_ID/appengine/default:$_TAG",
             "--build-arg", "_RAILS_MASTER_KEY=$_RAILS_MASTER_KEY", "."]
    
    - name: 'gcr.io/cloud-builders/docker'
      args: ["push", "gcr.io/$PROJECT_ID/appengine/default:$_TAG"]
    
    - name: 'gcr.io/cloud-builders/gcloud'
      args: ["app", "deploy", "gcp/app-${_PROJECT_ENV}.yaml", "--quiet"
             "--image-url=gcr.io/$PROJECT_ID/appengine/default:$_TAG"]
    
    cloudbuild.yaml은'build','push','deploy'로 나뉘어 실행됩니다.
    CloudBuild의 대입 변수 사양 때문에 변수 밑줄을 그어 시작합니다.
    서류를 준비한 후git의 창고에 넣으세요.
    그런 다음 CloudBuild에 트리거를 설정합니다.
    설정 방법은 공식 또는 다른 보도에 넘겨지지만git복제품과 합작하면 아까push의 지점을 지정하면 OK.

    설정 화면 내의 "구축 설정"에서cloudbuild입니다.창고에 넣을 경로를 선택하십시오.
    그 밖에 그 아래에 대입 변수를 설정한다.
    방금 작성한 Docker file의 ARG에 해당하는 키와 value를 설정합니다.
    달리RAILS_MASTER_KEY 이외에 환경 분할용PROJECT_ENV, 버전 관리TAG 설정 중입니다.
    그리고 저장하고 트리거를 시작합니다.
    push도 가능하고 수동으로 시작할 수도 있습니다.

    실행 후 로그가 나타나 올바르게 설정되었는지 확인합니다.
    deploy 이후에 Google App Engine이 제대로 작동하는지 확인할 수 있다면 설정이 완료됩니다.

    끝맺다


    비밀 키와 같은 변수를 원한다면 IAM에서 조회 권한을 제한하거나 축소할 수 없을 때 기밀 정보를 설정하는 것을 피하십시오.
    비밀 정보도 클라우드 KMS가 암호화한 후build에서 복호화한 후 보내는 방법으로 실현되면 남긴다.
    이번에는 설정 방법의 공유일 뿐인데 참고가 됐으면 좋겠어요.

    좋은 웹페이지 즐겨찾기