> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ale.run/llms.txt
> Use this file to discover all available pages before exploring further.

# 이미지 레지스트리 연결

> 프라이빗 이미지 저장소를 연결하면 Container 템플릿으로 커스텀 이미지를 배포할 수 있습니다. 본 가이드에서는 **GitHub Container Registry, GCP Artifact Registry, Docker Hub**의 연결을 다룹니다.

***

## 저장소 연결

<AccordionGroup>
  <Accordion title="GitHub Conainer Registry">
    ### Personal Access Token 생성

    <Frame>
      <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/operations/images/ghcr-01.png" />
    </Frame>

    > GitHub 계정의 **Settings**에 진입 후 [Developer settings > Personal access tokens (classic) 페이지](https://github.com/settings/tokens)에서 `Generate new token > Generate new token(classic)`을 클릭해 토큰을 생성하세요.

    ### 권한 부여 및 토큰 발급

    <Frame>
      <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/operations/images/ghcr-02.png" />
    </Frame>

    > 아래의 권한을 부여하고 `Generate token`을 클릭하세요.

    * **repo**
    * **write:packages**
    * **admin:public\_key**

    <Frame>
      <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/operations/images/ghcr-03.png" />
    </Frame>

    > 토큰 생성이 완료되면 토큰 값이 표시됩니다. 토큰은 생성 시 최초 한 번만 값을 확인할 수 있습니다.

    ### ale에 연결

    <Frame>
      <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/operations/images/ghcr-05.png" />
    </Frame>

    > 스페이스 설정화면의 애드온 메뉴에서 `컨테이너 저장소 연결하기`를 클릭하면 표시되는 **컨테이너 저장소 설정** 창에서 아래의 값들을 입력한 후 `연결하기`를 클릭하면 **GitHub Container Registry**가 연결됩니다.

    * **저장소 제공자** : GitHub Container Registry
    * **GitHub 아이디** : GitHub ID
    * **퍼스널 엑세스 토큰(PAT)** : GitHub에서 생성한 Personal Access Token
  </Accordion>

  <Accordion title="GCP Artifact Registry">
    ### GCP Artifact Registry 생성

    <Frame>
      <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/operations/images/gcp-ar-01.png" />
    </Frame>

    > Google Cloud 콘솔에서 **Artifact Registry** 서비스에 접속한 후 `저장소 만들기`를 클릭하세요.

    <Frame>
      <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/operations/images/gcp-ar-02.png" />
    </Frame>

    > 저장소의 이름을 적절히 정하고 아래의 값들을 입력한 후 `만들기`를 클릭하면 저장소가 생성됩니다.

    * **형식** : Docker
    * **모드** : 표준
    * **위치 유형** : 리전
    * **리전** : 사용자의 상황에 맞는 리전 선택
    * **암호화** : Google 관리 암호화 키

    ### 저장소 접속 주소 조회

    <Frame>
      <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/operations/images/gcp-ar-03.png" />
    </Frame>

    > 생성된 저장소를 클릭하면 `[리전]-docker.pkg.dev/[GCP 프로젝트 ID]/[저장소이름]` 형식의 접속 주소를 조회할 수 있습니다.

    <Note>
      저장소 접속 주소는 `ale`에서 저장소를 연결할 때 사용됩니다.
    </Note>

    ### 서비스 계정 생성 및 권한 부여

    <Frame>
      <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/operations/images/gcp-ar-04.png" />
    </Frame>

    > Google Cloud 콘솔의 **IAM 및 관리자 > 서비스 계정** 페이지에서 `서비스 계정 만들기`를 클릭하세요.

    <Frame>
      <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/operations/images/gcp-ar-05.png" />
    </Frame>

    > 식별할 수 있는 **서비스 계정 이름**을 작성한 후 `만들고 계속하기`를 클릭합니다.

    <Frame>
      <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/operations/images/gcp-ar-06.png" />
    </Frame>

    > 역할 선택 창에서 **Artifact Registry 관리자** 항목을 선택하고, `완료`를 클릭하면 서비스 계정이 생성됩니다.

    ### JSON KEY 만들기

    <Frame>
      <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/operations/images/gcp-ar-07.png" />
    </Frame>

    > 생성된 서비스 계정 우측의 <Icon icon="ellipsis-vertical" size={15} color="000" /> 아이콘을 클릭한 후 **키 관리**를 선택하세요.

    <Frame>
      <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/operations/images/gcp-ar-08.png" />
    </Frame>

    > 생성한 서비스 계정 키 관리 페이지의  **키 추가 > 새 키 만들기**를 클릭하면 표시되는 **비공개 키 만들기** 창에서, 키 유형으로 **JSON**을 선택하고 `만들기`를 클릭하면 JSON 키가 파일 형태로 다운로드 됩니다.

    ### ale에 연결

    <Frame>
      <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/operations/images/gcp-ar-11.png" />
    </Frame>

    > 스페이스 설정화면의 애드온 메뉴에서 `컨테이너 저장소 연결하기`를 클릭하면 표시되는 **컨테이너 저장소 설정** 창에서 아래의 값들을 입력한 후 `연결하기`를 클릭하면 **Google Cloud Artifact Registry**가 연결됩니다.

    * **저장소 제공자** : Google Cloud Artifact Registry
    * **접속 주소** : 저장소 생성 후 조회한 접속주소
    * **키파일(JSON)** : JSON 키 파일 내용
  </Accordion>

  <Accordion title="Docker Hub">
    ### Docker Hub Access Token 생성

    <Frame>
      <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/operations/images/docker-hub-01.png" />
    </Frame>

    > Docker Hub 계정을 만든 후 우측 상단의 계정명이 있는 버튼을 클릭합니다.
    > 이어 **Account Settings > Security** 메뉴로 접속한 후에 `New Access Token`을 클릭하세요.

    ### 권한 부여 및 토큰 발급

    <Frame>
      <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/operations/images/docker-hub-02.png" />
    </Frame>

    > Access Token Description 필드에 토큰의 용도나 역할을 구분할 수 있는 문구를 작성하고 Access permissions는 **Read & Write** 값을 선택하세요.
    > 생성된 토큰은 최초 1회에 한해 조회할 수 있습니다.

    ### ale에 연결

    <Frame>
      <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/operations/images/docker-hub-04.png" />
    </Frame>

    > 스페이스 설정화면의 애드온 메뉴에서 `컨테이너 저장소 연결하기`를 클릭하면 표시되는 **컨테이너 저장소 설정** 창에서 아래의 값들을 입력한 후 `연결하기`를 클릭하면 **Docker Hub**가 연결됩니다.

    * **저장소 제공자** : Docker Hub
    * **유저명** : Docker Hub ID
    * **비밀 번호(토큰)** : Docker Hub Access token
  </Accordion>
</AccordionGroup>

## 이미지 배포

<Frame>
  <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/developers/images/09_01.png" />
</Frame>

> 대시보드의 <Icon icon="circle-plus" iconType="solid" size={15} color="2396F1" /> 또는 `⌘ + K` 로 생성되는 배포창에서 Container 템플릿 선택 후 필요한 설정값들을 입력하여 배포할 수 있습니다.

<AccordionGroup>
  <Accordion title="컨테이너 이미지 주소와 태그">
    <Frame>
      <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/developers/images/09_02.png" />
    </Frame>

    > 연결한 레지스트리에 있는 이미지의 이미지 주소와 태그를 함께 입력하세요.
  </Accordion>

  <Accordion title="포트 번호, 환경 변수, 시작 명령어">
    > 이미지 배포를 위한 설정값을 입력해주세요.
  </Accordion>

  <Accordion title="더 많은 옵션">
    <Frame>
      <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/developers/images/09_03.png" />
    </Frame>

    * **uid** : 컨테이너에서 프로세스를 실행하는 사용자의 고유한 식별자(기본값 1000)

    * **gid** : 컨테이너에서 프로세스가 속한 그룹의 고유한 식별자(기본값 1000)

    * **Update strategy**

      * **Rolling Update** : 새로운 버전의 서비스를 배포하면서 기존 파드 종료, 노드 가용자원 확보 필요
      * **Recreate** : 모든 서비스 종료후 새로운 버전의 서비스 생성 및 구동, 다운타임 발생

    * **Shell** : 컨테이너가 실행된 후 실행할 쉘(sh, bash, zsh 등)
  </Accordion>

  <Accordion title="성능(리소스) 설정과 배포">
    <Frame>
      <img className="block rounded-md" src="https://files.cloudtype.io/ale-docs/developers/images/08_04.png" />
    </Frame>

    * **리소스 유형** : [온디맨드 리소스와 스팟 리소스](/ko/developers/resource#on-demand-spot) 중 선택

    * **CPU** : 서비스가 사용할 수 있는 vCPU 리소스의 최대값으로, '최소' 선택 시 0.1 vCPU로 설정됩니다.

    * **메모리** : 서비스가 사용할 수 있는 메모리 리소스의 최대값

    * [동시실행(레플리카)](/ko/developers/replica) : 설정한 수만큼 서비스가 수평확장되어 부하 분산 및 안정성 확보

    * **배포** : `배포하기` 클릭

    <Tip>
      리소스 제한으로 배포할 수 없는 경우 [리소스 관리 페이지](/ko/operations/spaces#%EB%A6%AC%EC%86%8C%EC%8A%A4-%EB%B6%80%EC%97%AC%ED%95%98%EA%B8%B0)를 참고해 스페이스에 리소스를 추가하세요.
    </Tip>
  </Accordion>
</AccordionGroup>
