OCI 5. OCI 무료 계정에서 실수로 과금되지 않게: 할당량 정책으로 A1 4코어 24GB 와 블록 200GB 만 열어 두기
오라클 클라우드 계정 세 개를 모두 PAYG(종량제)로 쓰고 있습니다. PAYG 계정은 무료 한도를 넘는 자원을 만들어도 막아 주지 않습니다. 콘솔에서 셰이프를 잘못 고르거나 볼륨을 하나 더 만들면 그대로 요금이 나갑니다.
지금 각 계정에는 A1 인스턴스 하나(4 OCPU, 24GB)와 부트 볼륨 200GB 만 있습니다. 더 만들 생각이 없으니, 이보다 더는 못 만들게 아예 막기로 했습니다. 콘솔의 거버넌스 → 할당량 정책에 해당하는 것을 루트 컴파트먼트에 하나 걸었습니다. 내용은 이렇습니다.
zero compute-core quotas in tenancy
set compute-core quota standard-a1-core-count to 4 in tenancy
set compute-core quota standard-a1-core-regional-count to 4 in tenancy
zero compute-memory quotas in tenancy
set compute-memory quota standard-a1-memory-count to 24 in tenancy
set compute-memory quota standard-a1-memory-regional-count to 24 in tenancy
set block-storage quota total-storage-gb to 200 in tenancy
set block-storage quota backup-count to 5 in tenancy
읽는 순서대로 보면 이렇습니다.
- 모든 셰이프의 코어와 메모리 할당량을 0 으로 만든 다음, A1 만 4코어, 24GB 로 다시 엽니다. x86 셰이프는 이제 하나도 못 만듭니다.
- A1 은 가용 도메인 단위 항목(
-count)과 리전 단위 항목(-regional-count)이 따로 있어서 둘 다 열어야 합니다. 한쪽만 열면 인스턴스 만들기가 할당량 초과로 실패합니다. - 블록 스토리지는 부트 볼륨을 포함해 200GB, 볼륨 백업은 5개까지입니다. 무료 범위에 맞춘 숫자입니다.
세 계정에 같은 정책을 넣었습니다. 계정마다 OCI CLI 프로필을 만들어 두었으니 CLI 로 넣는 게 편했습니다.
oci limits quota create --compartment-id <tenancy OCID> --name always-free-guard \
--description "Always Free 범위 밖 자원 생성을 막는다" \
--statements file://statements.json
알아 둘 점이 있습니다. 지금 쓰는 양이 할당량과 딱 같기 때문에, 인스턴스를 새로 만들거나 부트 볼륨을 키우거나 블록 볼륨을 붙이는 일은 모두 실패합니다. 그런 작업이 필요하면 정책을 먼저 고치거나 지워야 합니다. 저는 그게 오히려 좋습니다. 정책을 고치는 단계가 한 번 끼면, 무심코 무언가를 만들기 전에 한 번 더 생각하게 되니까요.
할당량은 자원을 만들 때만 검사하므로 이미 있는 자원에는 영향이 없습니다. 걸어 둔 뒤에도 노드는 그대로 돌았습니다.
과금 자체를 막는 장치는 아니라서 예산 알림(1달러)도 같이 걸어 두었습니다. A1 무료 한도가 줄었다는 문서 문제처럼, 새로 만들지 않아도 요금이 생길 수 있는 경우는 할당량으로 막을 수 없으니까요.