반응형

우선 이것을 하기 위해서는 앞에 선행 작업들이 이루어져야 합니다.

 

  1. 인스턴스를 생성하고 간단한 웹서비스 실행
  2. 도메인 구매 사이트 & 네임서버 변경

 

외부 도메인에 네임서버를 GCP로 변경

GCP에 접속한뒤 네트워크 서비스 > Cloud DNS 메뉴에 들어간 뒤, 영역만들기로 하나 생성합니다.

원래는 domain 을 구매한 서비스에 ip 만 등록하면 되나 gcp 의 경우 gcp 내부에 cloud dns 에 도메인을 추가로 등록해줘야 dns 가 동작을 합니다.

 

네트워크 서비스 > cloud DNS > 영역 만들기 

상단에 영역 만들기 통해서 만들어 줍니다. 

여기 까지 생성하게 되면 dns 목록에 뜨게 됩니다. 

이름만 설정하고 나머지 옵션은 기본으로 두시고 사용하셔도 됩니다. 

기본으로 만드시면 SOA 와 NS 가 기본으로 생성됩니다. 

 

NS 목록을 펼치기를 하시면 도메인 구매한 사이트에서 네임서버를 설정할 수 있어 아래 값들을 네임서버 구매하신곳에 등록해주셔도 되고, 등록을 안해주셔도 사용은 가능합니다.

등록을 하게 되면 도메인 서버가 cloud dns 의 설정을 따른다는 이야기 입니다. 

ip 로만 리다이렉트 시킬 용도면 등록하지 않으셔도 동작은 가능합니다. 

 

vm 인스턴스의 외부 ip 를 도메인을 구매한 구매처에 이제 등록 하시고

저는 네입칩 namecheap 을 사용했습니다. 

이 작업을 cloud dns 에도 적용하면 됩니다. 

cloud dns 에서 표준추가 로 dns 설정을 추가합니다. 

subdomain 을 요청하시면 앞에 추가 하면 됩니다.

A 레코드는 ip 주소로 리다이렉트 하는 유형입니다. 

 

gcp 를 사용하실때는 위의 작업까지 해야 dns 에 등록된 gcp Ip 서버로 요청이 됩니다.

 

반응형
반응형

Compute Engine 인스턴스 생성

1. GCP 콘솔에서 Compute Engine > VM 인스턴스로 이동합니다.

2. 인스턴스 만들기를 클릭합니다.

3. 인스턴스 설정:

이름: 원하는 이름 입력

지역: 가까운 지역 선택

머신 유형: e2 선택

부팅 디스크: Ubuntu (최신 LTS 버전) 선택

4. 네트워킹, 디스크, 보안 설정을 필요에 따라 구성합니다.

5. 만들기를 클릭하여 인스턴스를 생성합니다.

 

3. SSH를 통해 인스턴스에 접속

인스턴스가 생성되면 브라우저 창에서 열기를 통해 터미널 열 수 있다.

 

4. Docker 설치

SSH 세션에서 다음 명령어를 실행하여 Docker를 설치합니다:

sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install docker-ce
sudo usermod -aG docker ${USER}

위 명령어를 한줄씩 실행하여 docker 를 설치합니다. 

 

5. Docker Compose 설치

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

 

6. Docker Compose 파일 작성

mkdir wordpress-docker
cd wordpress-docker
nano docker-compose.yml

 

다음 내용을 docker-compose.yml 파일에 입력합니다:

version: '3.1'

services:
  wordpress:
    image: wordpress
    restart: always
    ports:
      - "80:80"
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: exampleuser
      WORDPRESS_DB_PASSWORD: examplepass
      WORDPRESS_DB_NAME: exampledb
    volumes:
      - wp-vol:/var/www/html
  db:
    image: mysql:5.7
    restart: always
    volumes:
      - mysql-vol:/var/lib/mysql
    environment:
      MYSQL_DATABASE: exampledb
      MYSQL_USER: exampleuser
      MYSQL_PASSWORD: examplepass
      MYSQL_ROOT_PASSWORD: rootpass
volumes:
    mysql-vol: {}
    wp-vol: {}

 

7. Docker Compose 실행

sudo docker-compose up -d

 

8. 워드프레스 설정

 

웹 브라우저를 열고 http://YOUR_INSTANCE_IP에 접속하여 워드프레스 설정을 완료합니다.

데이터베이스 정보는 docker-compose.yml 파일에서 설정한 대로 입력합니다.

 

이제 GCP에서 Docker를 사용하여 워드프레스를 성공적으로 설치하였습니다.

 

생성된 인스턴스의 외부 ip 를 브라우져에 입력하면 아래와 같이 워드프레스 초기 설정이 뜹니다.

반응형
반응형

vue 프론트를 배포하려면 구글 플랫폼에서는 google cloud run 및 firebase hosting 을 통해 배포할 수 있습니다.  

cloud storage 에 정적 파일로 올릴 수 있지만 이 경우에 vue router 등 프론트에서 라우트 기능을 사용한다면 

경로 오류가 생길 수 있습니다. 

완전 static 하게 경로 이동 없는 경우에 cloud storage 이용하는게 좋습니다.

 

 

Firebase Hosting

  • 비용: Firebase Hosting은 정적 파일(HTML, CSS, JS 등)을 호스팅하기 위한 것이므로, 주로 네트워크 대역폭과 저장 공간에 대한 비용이 발생합니다. Firebase는 무료 티어를 제공하며, 이는 작은 프로젝트나 테스트 용도로 충분한 경우가 많습니다. 무료 티어를 초과하는 사용량에 대해서는 비용이 청구됩니다.
  • 무료 티어 제공: 예, 제공됩니다. 일정 수준의 사용량(예: 일정 GB의 저장 공간 및 월간 대역폭)은 무료입니다.
  • 적합한 사용 사례: 정적 웹 사이트 및 SPA(Single Page Application).

Cloud Run

  • 비용: Cloud Run은 사용한 컴퓨팅 자원(메모리와 CPU), 요청 수, 네트워크 대역폭에 따라 비용이 청구됩니다. Cloud Run도 무료 티어를 제공하며, 이에는 월간 요청 수, 컴퓨팅 자원 사용량에 대한 무료 할당량이 포함됩니다. 무료 사용량을 초과하면 비용이 발생하며, 이는 애플리케이션의 복잡도와 트래픽에 따라 달라집니다.
  • 무료 티어 제공: 예, 제공됩니다. 무료 티어는 일정량의 컴퓨팅 자원 사용과 요청 수에 대해 무료로 제공됩니다.
  • 적합한 사용 사례: 동적 웹 애플리케이션, API 백엔드, 마이크로서비스.

비교 및 선택

  • 정적 컨텐츠: 당신의 애플리케이션이 주로 정적 컨텐츠를 제공한다면, Firebase Hosting이 더 경제적일 수 있습니다. 이 서비스는 정적 파일을 효율적으로 서빙하기 위해 최적화되어 있습니다.
  • 동적 처리가 필요한 경우: 애플리케이션이 서버 사이드에서 동적 컨텐츠를 생성하거나, 사용자 인증, 데이터베이스 연동 등 복잡한 백엔드 로직을 필요로 한다면, Cloud Run이 더 적합할 수 있습니다. 이 경우 추가적인 비용이 발생할 수 있지만, 더 강력한 기능과 유연성을 제공합니다.

결국 선택은 애플리케이션의 요구 사항, 예상 트래픽, 그리고 예산에 달려 있습니다. 무료 티어로 시작하여 요구 사항이나 사용량이 증가함에 따라 서비스를 조정하는 것이 좋습니다.

 

정적 컨텐츠일 경우에는 Firebase Hosting 이 좋을 것 같아 

Firebase Hosting 하는 법 소개합니다. 

 

Firebase Hosting

https://console.firebase.google.com/u/1/ 

로 들어가서 프로젝트를 추가합니다.

프로젝트 추가 후 

Hosting 메뉴를 추가합니다.

여기에서 배포된 어플리케이션 확인 가능합니다.

 

하지만 따로 웹사이트에서 작업해줘야 할 것은 없고 로컬에서 firebase 설치해서 아래 가이드대로 설치해주시면 됩니다.

 

 

FIREBASE_TOKEN은 Firebase CLI를 사용해 생성할 수 있는 인증 토큰입니다. 이 토큰은 Firebase 프로젝트에 대한 비밀 액세스 권한을 제공하며, CI/CD 파이프라인(예: GitHub Actions)에서 Firebase 서비스에 자동으로 인증하기 위해 사용됩니다. 토큰을 생성하고 GitHub Secrets에 저장하는 방법은 다음과 같습니다:

Firebase 토큰 생성 방법

1. Firebase CLI 설치: Firebase CLI가 로컬 시스템에 설치되어 있지 않은 경우, 먼저 설치해야 합니다. 터미널에서 다음 명령어를 실행하여 설치할 수 있습니다:이 명령은 Firebase CLI를 글로벌로 설치합니다.

npm install -g firebase-tools

 

2. Firebase에 로그인: 다음 명령어를 사용해 Firebase에 로그인합니다:이 명령은 기본 웹 브라우저를 열고 Firebase 인증 프로세스를 시작합니다. 로그인 과정을 완료하세요.

firebase login

위 명령어 사용시 브라우져 창에서 firebase 계졍 인정하도록 화면이 뜨게 됩니다.

 

위 완료 메시지 뜨면 로그인 완료되었습니다.

 

3. CI용 Firebase 토큰 생성: Firebase CLI에서 CI(지속적 통합) 환경을 위한 인증 토큰을 생성하려면, 다음 명령어를 실행합니다:이 명령은 새로운 인증 토큰을 생성하고, 이 토큰을 터미널에 출력됩니다. 출력된 토큰을 복사하세요.

firebase login:ci

 

4. 프로젝트 폴더에 firebase.json 이 있어야 하는데, 아래 명령어 통해서 세팅하면 됩니다.

firebase init hosting

 

프로젝트가 없으면 새로 생성, 미리 firebase 에서 프로젝트 생성 하면 됩니다. 

있으면 프로젝트 선택하면 됩니다.

github workflow 에 넣냐는 말이 있는데, 여기에서 프로젝트 유저명/프로젝트명 을 넣어줍니다.

필요한 옵션을 알아서 선택해주자.

firebase.json

이 아래와 같이 생성되는데 혹시 잘못해서 안되면 나중에 덮어씌어도 됩니다.

여기까지 작성 후 

firebase deploy


를 하게 되면 프론트 소스가 배포 됩니다. 

 

 

선택해야 하는 옵션 이 너무 잘 되어 있어 

github actions 파일까지 생성해 줍니다.

옵션만 잘 따라가 주면 됩니다

 

옵션을 잘 못 선택해주었을 경우를 대비하여 firebase.json 및 firebase-hosting-merge.yml 공유합니다.
굳이 먼저 생성안해도 firebase init 통해서 actions 파일까지 생성해 줍니다.

npm ci 가 동작안할 수 있는데 

이때 steps 만 나눠서 실행 다시 해보세요.

 
반응형
반응형

gcp 에서 cloud sql 메뉴를 들어가게 되면 인스턴스 생성할 수 있다

 

 

데이터베이스를 선택하자

데이터베이스 버젼 설정

cloud sql 버젼 선택

리젼

asia-northeast3 (서울) 선택하시고

 

영역 가용성

서비스 중단 될 경우 다른 DB 를 올릴지 여부인데, 테스트일 경우 단일만 하자

머신구성

전용 코어랑 공유 코어 가 있는데

공유코아가 더 낮은 사양의 cpu 및 메모리를 사용할 수 있다.

 

저장용량

SSD 를 권장한다고 한다.

하지만 돈 아끼려면 HDD 

연결 

보안 측면적으로는 비공개 IP 로 생성해서 같은 vpc 망에서 db 접속 처리 해야한다.

비공개 IP 설정

 

 

데이터보호

자동백업 기능이 있는데, 개발이면 백업 필요없다.


유지보수

주지적으로 업데이트 되어 인스턴스 재시작 되는 항목이다. 앞서 영역가용성을 단일로 했으면 서비스가 중단 될 수 있을 것 같다.




예상가격 과금

돈 안나오는 구조로만 최소로 만들어보니 시간당 0.02 하루 0.37 달러가 나왔다.

돈 벌어서 스팩을 올리자

 

 

 

DB 인스턴스 생성

 

 

만들고 나서 외부에서 접속할 수 있게끔 승인된 네트워크를 추가해줘야 한다. 

전체로 0.0.0.0/0 으로 해도 되지만 특정 ip 로 할당하는게 그래도 보안에는 좋다. - ALL로 일단 만들고 나중에 ip 허용이든 비공개 ip 든 수정해라

 

완료 클릭 후 저장 버튼 통해 변경 사항 저장하자

 

외부툴에서 DB 접속(DBeaver 기준)

password : cloud sql 생성시 입력했던 암호

포트 : 3306 

드라이버 : mysql

host : 공개IP

 
반응형
반응형

google cloud 에 어플리케이션을 배포하려면 CI/CD 도구가 필요하다.

배포 도구로 github actions 를 통해 구글 클라우드에 어플리케이션을 배포하려면 IAM 이라는 서비스계정 인증절차가 필요한대 이에 대해 포스팅하려고 한다.

 

Github Action 

 최상위 폴더에서 ./github/workflows 폴더에 .yml 파일을 넣어주면 된다. 이 떄 파일명은 상관없다.

 

name: Google Cloud Auth

on:
  push:
    branches: [ "master" ]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3
    
    - name: Google Auth
      id: auth
      uses: 'google-github-actions/auth@v1'
      with:
        credentials_json: '${{ secrets.GCP_CREDENTIALS }}' 
        
    - name: set up cloud sdk
      uses: 'google-github-actions/setup-gcloud@v1'

    - name: "Use gcloud CLI"
      run: "gcloud info"

위 처럼 github action 파일을 작성해주고, 위의 secrets 텍스트를 GCP IAM 서비스에서 발급 받으면 된다.

 

 

구글 클라우드에 루트 계정이 있겠지만 다른 작업자 및 다른 서비스에서 구글 클라우드를 접근하게 하기 위해서는 IAM 서비스 사용을 해야한다.

github action 처럼 외부 서비스에서 구글클라우드에 접근하게 하려면 

서비스계정을 생성해야 한다.

 

서비스계정 생성

IAM 및 관리자 > 서비스 계정 

계정ID 만 임의로 만들면 끝이다

선택사항 기입할 필요없고 완료 버튼 누른면 완료

 

서비스 계정을 생성하게 되면 리스트에 키 없음이라고 뜨는데, 여기 키를 생성해주게 되면 된다.

해당 줄 맨 우측에 [키관리] 버튼 누르게 되면 키 페이지 로 이동된다.

 

새 키 만들기 

만들기 버튼을 하게되면 json 파일이 다운되는데, 여기서 이 파일의 json 전체를 복사해서

 

github 변수 등록

프로젝트의 settings > Secrets and variables 메뉴에서 Secrets 변수를 넣어주면 된다.

 

 

 

https://cloud.google.com/iam/docs/service-accounts-create?hl=ko

반응형
반응형

이 포스트는 google cloud shell 커맨드에서 
제공하는 편집기와 터니널을 이용해 docker image 를 생성하고 google cloud 도커이미지 저장소인

Artifact Registry 에 도커이미지를 저장하는 방식에 대한 튜토리얼입니다.

 

  1. Google Cloud API가 사용 설정됩니다.
    • Cloud Build API
    • Artifact Registry API

 

빌드할 소스 파일 준비

  1. Cloud Shell 세션을 엽니다. 
  2. quickstart-docker라는 이름의 새 디렉터리를 만들고 디렉터리로 이동합니다.
    mkdir quickstart-docker cloudshell workspace \ quickstart-docker
     
     
  3. Cloud Shell의 파일 편집기에서 파일 > 새로 만들기를 선택하여 quickstart-docker 디렉터리에서 다음 내용으로 quickstart.sh 파일을 생성합니다.
    #!/bin/sh echo "Hello, world! The time is $(date)."
  4. Cloud Shell의 파일 편집기에서 파일 > 저장을 선택하여 파일을 저장합니다.
  5. 같은 디렉터리에서 다음 내용으로 Dockerfile 파일을 만듭니다.
    FROM alpine
    COPY quickstart
    .sh /
    CMD
    ["/quickstart.sh"]
  6. Cloud Shell의 파일 편집기에서 파일 > 저장을 선택하여 파일을 저장합니다.
  7. 터미널 열기를 클릭하여 터미널 창을 엽니다.
  8. 터미널 창에서 다음 명령어를 실행하여 quickstart.sh를 실행 가능하게 만듭니다.
    chmod +x quickstart.s

Artifact Registry에서 Docker 저장소 만들기

  1. us-west2 위치에 'Docker 저장소' 설명과 함께 quickstart-docker-repo라는 새 Docker 저장소를 만듭니다.
    gcloud artifacts repositories create quickstart-docker-repo --repository-format=docker \
       
    --location=us-west2 --description="Docker repository"
  2. 저장소가 만들어졌는지 확인합니다.
    gcloud artifacts repositories list
    표시된 저장소 목록에 quickstart-docker-repo가 표시됩니다.

 

화면 

 

빌드 구성 파일을 사용하여 이미지 빌드

  1. quickstart.sh  Dockerfile이 포함된 동일한 디렉터리에서 다음 내용으로 cloudbuild.yaml이라는 파일을 만듭니다.
    steps:
    - name: 'gcr.io/cloud-builders/docker'
     
    args: [ 'build', '-t', 'us-west2-docker.pkg.dev/commerce-api-412314/quickstart-docker-repo/quickstart-image:tag1', '.' ]
    images:
    - 'us-west2-docker.pkg.dev/commerce-api-412314/quickstart-docker-repo/quickstart-image:tag1'
  2. 다음 명령어를 실행하여 빌드를 시작합니다.
    gcloud builds submit \ --region=us-west2 --config \ cloudbuild.yaml
     
     

빌드 구성 파일을 사용하여 quickstart-image를 빌드하고 Artifact Registry에 푸시했습니다.

 

빌드 세부정보 보기

  1. Cloud Build 페이지를 엽니다.빌드 기록 페이지가 표시됩니다.
  2.  Cloud Build
  3. 리전 드롭다운 메뉴에서 us-west2를 선택하여 해당 리전의 빌드를 확인합니다.
  4. 특정 빌드를 클릭하면 빌드 세부정보 페이지가 표시됩니다.
  5. 빌드의 아티팩트를 보려면 빌드 요약에서 빌드 아티팩트를 클릭합니다.
  6. 빌드의 출력이 표시됩니다. 이 페이지에서 Artifact Registry의 빌드 로그를 다운로드하고 이미지 세부정보를 볼 수 있습니다.

 

삭제

이 빠른 시작에서 사용한 리소스의 비용이 Google Cloud 계정에 청구되지 않도록 하려면 다음 단계를 따르세요.

  1. Artifact Registry 페이지를 엽니다.
  2.  Artifact Registry
  3. quickstart-docker-repo를 선택합니다.
  4. 삭제를 클릭합니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

https://cloud.google.com/build/docs/build-push-docker-image?hl=ko 

 
반응형
반응형

 

구글 클라우드 플랫폼(GCP) 시작하기

구글 클라우드 플랫폼(GCP)를 사용하려면 먼저 계정을 등록시켜야 합니다. Gmail에 사용하는 구글 계정이 있는경우 이를 통해 로그인을 진행 할 수 있지만 클라우드 계정이 없다면 클라우드 계정에 가입해야합니다. 구글 클라우드 플랫폼은 90일간 $300을 사용할 수 있는 무료 크레딧을 제공해 주기 때문에 이를 통해 구글 클라우드 플랫폼을 체험해 볼수도 있습니다.

 

구글 클라우드 플랫폼 등록을 맞추면 클라우드 콘솔로 이동하고 My First Project라는 새로운 프로젝트가 자동으로 만들어 줍니다. 또한 페이지의 왼편에는 컴퓨팅, 서버리스, 저장소등과 같이 구글 클라우드 플랫폼이 제공하는 서비스가 속한 카테고리와 프로젝트별 구성란이 있습니다.

 

1. 프로젝트 선택하기

 

2. cloud shell

cloud shell 활성화하기

cloud shell 로 한 프로젝트에 속한 application 들을 관리

 

gcloud auth list

 

gcloud config set account `이메일계정`

 

다음과 같이 output 이 나오면 인증 되었고, 아래 명령어로 프로젝트를 확인하면 된다.

gcloud config list project

 

정상 output 이다 

안된다면 아래 명령어로 project 를 설정하자

gcloud config set project <PROJECT_ID>



참고

https://codelabs.developers.google.com/codelabs/cloud-app-engine-springboot#0

반응형

+ Recent posts