Cloud Scheduler + Cloud Pub/Sub + Cloud Functions에서 GCE 인스턴스 자동 시작 or 중지해 보았습니다.

경위



지금까지 GAE의 cron으로 GCE의 인스턴스의 자동 기동, 정지시키고 있었지만, Cloud Scheduler 나왔기 때문에 그쪽에서 자동 기동, 정지의 관리할 수 없을까 생각해 보았다.

시스템 구성



대단한 단순



구축 절차



1. Pub/Sub의 Topic 작성



GCP 콘솔에서 Pub/Sub 화면을 열고 switcher라는 제목을 만듭니다.



2. Cloud Functions 만들기



uu4k/compute-instances-switcher

인스턴스를 시작하고 중지하는 Function을 작성합니다.

이번에는 Cloud Shell에서 배포합니다.
  • 콘솔에서 Cloud Shell 시작
  • github에서 저장소를 clone하여 배포

  • deploy.sh
    git clone https://github.com/uu4k/compute-instances-switcher
    cd compute-instances-switcher
    ./deploy.sh
    # APIが有効になってないと有効にするか効かれるのでyを入力
    # 2分くらい経てばデプロイ完了
    



    compute-instances-switcher 해설



    compute-instances-switcher는 pub/sub에서 인스턴스 시작 또는 중지 정보와 대상 인스턴스의 이름(와일드카드 가능)을 json으로 받고 인스턴스를 시작하거나 중지합니다.

    pubsub.json
    {"switch": "off", "target": "dev-*"}
    

    이번은 인스턴스명 밖에 지정할 수 없습니다만, 인스턴스 리스트의 취득 API의 필터 파라미터를 커스터마이즈 하면 label등 다른 정보로의 대상 지정도 할 수 있으므로, 이 근처는 필요에 따라서 바꾸어 봐 주세요.

    3. Cloud Scheduler 설정


  • 콘솔에서 Cloud Scheduler 화면을 열고 CREATE JOB 링크를 클릭하십시오
  • 첫회라면 리전 선택한다고 하기 때문에 일본 리전 선택
  • JOB의 세부 사항을 입력하십시오 (아래 참조)
  • Name: switch-on(자유)
  • Description: (자유)
  • Frequency: (시작하고자 하는 타이밍을 CRON 포맷으로 지정)
  • 평일 9시의 경우는 0 9 * * 1-5

  • Target: Pub/Sub
  • Topic: switcher
  • Payload: {"switch": "on", "target": "dev-*"}
  • switch가 on이면 기동, off이면 정지를위한 작업이된다
  • target은 인스턴스 이름을 지정합니다 (와일드 카드 가능).





  • 4. 동작 확인



    Cloud Scheduler 화면에서 수동으로 실행할 수 있으므로 수동으로 실행하여 대상 인스턴스가 제대로 시작되거나 중지되는지 확인할 수 있습니다.



    작동하지 않는 경우 Cloud Functions 화면에서 오류가 발생했는지 여부와 오류 로그를 확인할 수 있으므로 그 원인을 조사해 봅시다.

    후기



    파이썬 API 클라이언트를 사용하는 방법에 걸린 것 이외에는 비교적 간단하게 할 수 있었다. 이번 건 이외에도 간단한 정기 실행 작업에도 사용할 수 있을 것 같다.

    다만, Cloud Scheduler의 설정 변경을 할 수 없다(매회 삭제·작성) 때문에 그 근처가 귀찮아.

    그리고, 처음 Functions를 실행하는 ServiceAccout에 compute.start라든지의 권한을 주지 않으면 안되는 것일까라고 생각했지만 이번에는 필요 없었다. 하고 싶은 것에 따라서는 권한 에러 나올지도 모르기 때문에 그 근처는 확인이 필요할 것 같다.

    좋은 웹페이지 즐겨찾기