패치 작업 예약


주문형 패치 작업 실행 외에 패치 배포를 만들어 설정된 일정에 따라 자동으로 실행되는 패치 작업이 필요할 수 있습니다.

각 패치 배포에 특정 날짜와 시간에 패치 작업을 실행하는 일회성 일정 또는 지정된 간격으로 패치 작업을 실행하는 반복 일정을 설정할 수 있습니다.

인스턴스 필터를 사용하면 여러 인스턴스를 동시에 패치할 수 있습니다. 이러한 필터는 실행 시 각 개별 패치 작업에 적용됩니다. 이렇게 하면 프로젝트의 변경사항이 실시간으로 캡처됩니다. 예를 들어 2주 후부터 asia-souteast1-b 영역의 모든 인스턴스에 패치를 적용하기 위해 패치 배포를 만든다고 가정해 보겠습니다. 패치를 만드는 시점에는 영역에 인스턴스가 20개였지만 며칠 후 새 인스턴스 40개가 영역에 추가됩니다. 필터는 패치가 시작될 때 적용되므로 인스턴스 60개가 모두 업데이트됩니다. 이렇게 하면 패치 배포 일정을 업데이트하지 않고도 인스턴스를 추가하고 제거할 수 있습니다.

시작하기 전에

  • OS 구성 할당량을 검토합니다.
  • 아직 인증을 설정하지 않았다면 설정합니다. 인증은 Google Cloud 서비스 및 API에 액세스하기 위해 ID를 확인하는 프로세스입니다. 로컬 개발 환경에서 코드 또는 샘플을 실행하려면 다음과 같이 Compute Engine에 인증하면 됩니다.

    이 페이지의 샘플 사용 방법에 대한 탭을 선택하세요.

    콘솔

    Google Cloud 콘솔을 사용하여 Google Cloud 서비스 및 API에 액세스할 때는 인증을 설정할 필요가 없습니다.

    gcloud

    1. Google Cloud CLI를 설치한 후 다음 명령어를 실행하여 초기화합니다.

      gcloud init
    2. 기본 리전 및 영역을 설정합니다.

    REST

    로컬 개발 환경에서 이 페이지의 REST API 샘플을 사용하려면 gcloud CLI에 제공한 사용자 인증 정보를 사용합니다.

      Google Cloud CLI를 설치한 후 다음 명령어를 실행하여 초기화합니다.

      gcloud init

Google Cloud 콘솔, Google Cloud CLI 또는 REST를 사용하여 패치 작업을 예약할 수 있습니다.

권한

프로젝트 소유자에게는 패치 배포를 만들고 관리하기 위한 전체 액세스 권한이 있습니다. 다른 모든 사용자에게는 권한 부여가 필요합니다. 다음 세분화된 역할 중 하나를 부여할 수 있습니다.

  • roles/osconfig.patchDeploymentAdmin: 패치 배포를 만들고 삭제하고 가져오고 나열할 수 있는 권한이 포함됩니다.
  • roles/osconfig.patchDeploymentViewer: 패치 배포를 가져오고 나열할 수 있는 읽기 전용 액세스 권한이 포함됩니다.

예를 들어 사용자 관리자에게 패치 배포에 대한 액세스 권한을 부여하려면 다음 명령어를 실행합니다.

gcloud projects add-iam-policy-binding project-id \
    --member user:user-id@gmail.com \
    --role roles/osconfig.patchDeploymentAdmin

다음을 바꿉니다.

  • project-id: 프로젝트 ID
  • user-id: 사용자의 Google Workspace 사용자 이름입니다.

패치 배포 만들기

패치 배포를 만들 때 패치 배포의 이름은 다음과 같은 이름 지정 요구사항을 충족해야 합니다.

  • 각 이름은 프로젝트 내에서 고유해야 합니다.
  • 소문자, 숫자, 하이픈만 포함합니다.
  • 문자로 시작합니다.
  • 숫자 또는 문자로 끝납니다.
  • 1~63자(영문 기준)

Google Cloud CLI 및 REST에서 패치 배포 이름은 patch-deployment-id라고 합니다.

패치 배포를 시작한 후에는 패치 대시보드를 사용하여 패치를 모니터링할 수 있습니다. 패치 작업 시작 후 대시보드에 데이터가 채워지는 데 약 30분 정도 걸립니다.

콘솔

  1. Google Cloud 콘솔에서 Compute Engine > VM Manager > 패치 페이지로 이동합니다.

    패치 페이지로 이동

  2. 새 패치 배포를 클릭합니다.
  3. 대상 VM 섹션에서 패치할 VM이 포함된 영역을 선택합니다. 모든 영역을 선택할 수도 있습니다.

    예를 들어 선택한 영역의 특정 VM을 패치하려면 다음과 유사한 이름 필터와 라벨 필터를 입력합니다.

    • 이름 프리픽스: test-
    • 라벨: env=devapp=web
  4. 패치 구성 섹션에서 패치를 구성합니다.

    1. 패치 이름을 지정합니다.
    2. 운영체제에 필요한 업데이트를 선택합니다. 자세한 내용은 OS 패치 작업에 포함된 항목을 참조하세요.
  5. 예약 섹션에서 다음을 완료합니다.

    • 일정을 선택합니다. 일회성 패치 작업 또는 반복 패치 작업을 예약할 수 있습니다.
    • (선택사항) 기간 또는 유지보수 기간을 설정합니다.
  6. 출시 옵션 섹션에서 패치 출시 옵션을 구성합니다.

    • 한 번에 하나의 영역에 패치를 적용할지 아니면 여러 영역에 패치를 동시에 적용할지 선택합니다.
    • 중단 예산을 설정합니다. 중단 예산은 패치 프로세스를 통해 한 번에 중단하려는 영역의 VM 수 또는 백분율입니다.
  7. (선택사항) 고급 옵션 섹션에서는 다음 작업을 완료할 수 있습니다.

  8. 배포를 클릭합니다.

gcloud

os-config patch-deployments create 명령어를 사용하여 패치 배포를 만듭니다.

gcloud compute os-config patch-deployments create patch-deployment-id \
    --file patch-deployment-file

다음을 바꿉니다.

  • patch-deployment-id: 패치 배포의 이름입니다.
  • patch-deployment-file: 패치 배포 구성이 포함된 YAML 또는 JSON 파일의 경로입니다.

패치 배포 YAML 파일 예시

다음 샘플 YAML 파일을 사용하여 us-west2-bus-west2-c 영역의 모든 인스턴스에 대한 반복 일정을 만들 수 있습니다. 반복 일정의 사양은 다음과 같습니다.

  • 시작일은 2019년 1월 9일 오후 7시 30분
  • 종료일은 2020 년 1월 9일 오후 7시 30분
  • 사용할 시간대는 'America/Los_Angeles'
  • 매주 화요일에 실행
instanceFilter:
  zones:
  - us-west2-b
  - us-west2-c
recurringSchedule:
  frequency: WEEKLY
  weekly:
    dayOfWeek: TUESDAY
  timeOfDay:
    hours: 19
    minutes: 30
  timeZone:
    id: America/Los_Angeles
  startTime: '2019-09-01T12:00:00Z'
  endTime: '2020-09-01T12:00:00Z'

REST

API에서 POST 요청을 만들어 새 패치 배포를 만듭니다. patchDeployments.create API 문서의 설명대로 필요한 모든 구성 필드를 명시적으로 정의해야 합니다. 예를 들어 최소 필수 필드(인스턴스 필터 및 일정)가 있는 패치 배포는 다음과 같습니다. project-id를 프로젝트 ID로 바꿉니다.

POST https://osconfig.googleapis.com/v1/projects/project-id/patchJobs:execute

{
  "instanceFilter": instance-filter

  // Add one of the following parameters:
  "recurringSchedule": schedule
  "oneTimeSchedule": schedule
}

다음을 바꿉니다.

  • project-id: 프로젝트 ID입니다.
  • instance-filter: 원하는 필터 매개변수. 인스턴스 필터에 대한 자세한 내용은 인스턴스 필터를 참조하세요.
  • schedule: 패치 작업을 실행할 날짜, 시간, 빈도 등의 예약 매개변수를 자세히 설명하는 oneTimeSchedule 또는 recurringSchedule 매개변수를 제공합니다.

예시

예시 1: us-west2-bus-west2-c 영역의 모든 인스턴스에서 2020년 1월 10일 오전 12시(UTC)에 패치 작업을 실행할 일회성 일정을 만듭니다.

{
 "instanceFilter":{
   "zones":[
     "us-west2-b",
     "us-west2-c"
   ]
 },
 "oneTimeSchedule": {
   "executeTime": "2020-01-10T00:00:00Z"
 }
}

예시 2: us-west2-bus-west2-c 영역에 있는 모든 인스턴스에 대한 반복 일정을 만듭니다. 반복 일정의 사양은 다음과 같습니다.

  • 시작일은 2019년 1월 9일 오후 7시 30분
  • 종료일은 2020 년 1월 9일 오후 7시 30분
  • 사용할 시간대는 'America/Los_Angeles'
  • 매주 화요일에 실행
POST https://osconfig.googleapis.com/v1/projects/project-id/patchDeployments
{
  "instanceFilter":{
    "zones":[
      "us-west2-b",
      "us-west2-c"
    ]
  },
  "recurringSchedule":{
    "frequency":"WEEKLY",
    "weekly":{
      "dayOfWeek":"TUESDAY"
    },
    "timeOfDay":{
      "hours":19,
      "minutes":30
    },
    "timeZone":{
      "id":"America/Los_Angeles"
    },
    "startTime":"2019-09-01T12:00:00Z",
    "endTime":"2020-09-01T12:00:00Z"
  }
}

패치 배포 나열

콘솔

  1. Google Cloud 콘솔에서 Compute Engine > VM Manager > 패치 페이지로 이동합니다.

    패치 페이지로 이동

  2. 예약된 배포 탭을 선택합니다.

gcloud

os-config patch-deployments list 명령어를 사용하여 패치 배포를 나열합니다.

gcloud compute os-config patch-deployments list

이 명령어는 모든 패치 배포를 반환합니다. 다음과 유사한 결과가 출력됩니다.

NAME              LAST_RUN                  NEXT_RUN              FREQUENCY
first-deployment  2019-12-18T00:07:00.738Z  ---                   Once: Scheduled for 2019-12-18T00:07:00.000Z
my-deployment1    2020-01-05T14:00:00.228Z  2020-01-12T14:00:00Z  Recurring - Weekly
my-deployment2    ---                       2020-01-15T05:30:00Z  Recurring - Monthly on specific date(s)

더 많은 플래그를 사용하여 검색을 제한하고 서식을 지정할 수 있습니다. 예를 들어 처음 10개의 패치 배포를 2페이지에 나열하려면 다음 명령어를 실행합니다. project-id를 프로젝트 ID로 바꿉니다.

gcloud compute os-config patch-deployments list --limit 10 --page-size 2

REST

API에서 patchDeployments.list 메서드에 대한 GET 요청을 만듭니다. project-id를 프로젝트 ID로 바꿉니다.

GET https://osconfig.googleapis.com/v1/projects/project-id/patchDeployments

패치 배포 설명

콘솔

  1. Google Cloud 콘솔에서 Compute Engine > VM Manager > 패치 페이지로 이동합니다.

    패치 페이지로 이동

  2. 예약된 배포 탭을 선택합니다.
  3. 검토할 배포 이름을 클릭합니다.

gcloud

os-config patch-deployments describe 명령어를 사용하여 패치 배포를 설명합니다. patch-deployment-id를 패치 배포의 이름으로 바꿉니다.

gcloud compute os-config patch-deployments describe patch-deployment-id

REST

API에서 patchDeployments.get 메서드에 대한 GET 요청을 만듭니다.

GET https://osconfig.googleapis.com/v1/projects/project-id/patchDeployments/patch-deployment-id

다음을 바꿉니다.

  • project-id: 프로젝트 ID입니다.
  • patch-deployment-id: 패치 배포 이름입니다.

패치 배포 삭제

콘솔

  1. Google Cloud 콘솔에서 Compute Engine > VM Manager > 패치 페이지로 이동합니다.

    패치 페이지로 이동

  2. 예약된 배포 탭을 선택합니다.
  3. 삭제할 배포 이름을 클릭합니다.
  4. 이 일정 삭제를 클릭합니다.

gcloud

os-config patch-deployments delete 명령어를 사용하여 패치 배포를 삭제합니다. patch-deployment-id를 패치 배포의 이름으로 바꿉니다.

gcloud compute os-config patch-deployments delete patch-deployment-id

REST

API에서 patchDeployments.delete 메서드에 대한 DELETE 요청을 만듭니다.

DELETE https://osconfig.googleapis.com/v1/projects/project-id/patchDeployments/patch-deployment-id

다음을 바꿉니다.

  • project-id: 프로젝트 ID입니다.
  • patch-deployment-id: 패치 배포 이름입니다.

다음 단계