GCP 인스턴스 그룹 스케줄링 (Cloud Scheduler)
GCP 인스턴스 그룹은 내장 스케줄링 기능을 통해 제어가 가능하다.
하지만 비용문제로 VM 전부를 새벽시간 동안 내려두고 싶다는 의견을 받았고 아래 과정은 내가 생각해서 해본 방법이다. 이게 정답인 방법이 아닐 수 있음을 알린다.
먼저 첫번 째로 알아본게 자동 확장 모드를 ON/OFF 할 수 있고 OFF 상태에서는 VM이 확장되지 않고 분리? 상태로 보이게 된다. 그리고 resize를 통해 현재 인스턴스 그룹에 연결된 인스턴스 수?를 조절할 수 있다.
내가 설정한 방법은 이렇다.
1. IAM 추가 및 설정 / or default service account 이용
2. API 생성
- API 및 서비스 - 사용자 인증 정보 - 사용자 인증 정보 만들기 - API 키
3. Cloud Scheduler 이용
1) 자동확장 중지 - 예를 들어 오전 1시부터 VM을 삭제 하고 싶다면 빈도에 0 1 * * *
실행 구성
대상 유형 : http
URL : https://compute.googleapis.com/compute/v1/projects/프로젝트명입력/regions/리전입력/autoscalers?autoscaler=인스턴스그룹명&key=에서생성한API키값입력%20
HTTP 메서드 : PATCH
HTTP 헤더
이름 Accept 값: application/json
이름 Content-Type 값: application/json
본문
{
"autoscalingPolicy": {
"mode": "OFF"
}
}
서비스 계정 : default 계정 혹은 1번에서 추가한 계정
2) resize 크기 변경으로 올라와 있는 인스턴스 삭제 - 예를 들어 오전 1시부터 VM을 삭제 하고 싶다면 빈도에 0 1 * * *
실행 구성
대상 유형 : http
URL : https://compute.googleapis.com/compute/v1/projects/프로젝트명입력/regions/리전입력/autoscalers?autoscaler=인스턴스그룹명&key=2에서생성한API키값입력%20
URL : https://compute.googleapis.com/compute/v1/projects/프로젝트명입력/regions/리전입력/instanceGroupManagers/인스턴스그룹명입력/resize?size=0&key=2에서 생성한 API 키값입력
HTTP 메서드 :POST
HTTP 헤더
이름 Accept 값: application/json
서비스 계정 : default 계정 혹은 1번에서 추가한 계정
3) 자동 확장 기능 활성화
실행 구성
대상 유형 : http
URL : https://compute.googleapis.com/compute/v1/projects/프로젝트명입력/regions/리전입력/autoscalers?autoscaler=인스턴스그룹명&key=에서생성한API키값입력%20
HTTP 메서드 : PATCH
HTTP 헤더
이름 Accept 값: application/json
이름 Content-Type 값: application/json
본문
{
"autoscalingPolicy": {
"mode": "ON"
}
}
서비스 계정 : default 계정 혹은 1번에서 추가한 계정
-------------------------------------------------------------------------------
예시 상황
매일 오전 1시부터 8시까지 VM 사용 중지를 하고 싶다
1) 2) 는 순차적으로 실행 빈도에 5분정도 텀을 줌
1) 빈도 : 0 1 * * *
2) 빈도 : 5 1 * * *
3)은 8시에 실행
3) 빈도 : 0 8 * * *
3을 실행하고나면 기존 인스턴스 그룹 설정 대로 최소 인스턴수 수에 맞춰 VM이 기동 됨