목표
스테이징 구성 및 클러스터 테스트를 위한 몇 가지 기본 태스크에 대해 알아봅니다.제어 영역이라고 부르는 클러스터의 관리 서비스에 대한 액세스를 제한합니다. 이렇게 하면 승인되지 않은 사용자가 클러스터 및 워크로드 설정을 보거나 변경할 수 없습니다.
수요 충족을 위해 효율적으로 확장 및 축소할 수 있는 컴퓨팅 리소스가 앱에 필요하도록 지정합니다.
수요가 지정한 임곗값을 초과할 때 포드를 자동으로 복제하는 자동 확장을 테스트합니다.
필요한 로그만 유지하도록 로그 보관을 조정합니다.
GKE 보안 상황 대시보드를 사용 설정합니다.
이는 개발에서 스테이징으로 클러스터를 승급하기 위한 몇 가지 태스크일 뿐입니다. 고려할 전체 태스크 목록은 GKE 문서를 참조하세요.
Google Cloud 콘솔에서 이 태스크에 대한 단계별 안내를 직접 수행하려면 둘러보기를 클릭합니다.
비용
이 문서에서는 비용이 청구될 수 있는 다음과 같은 Google Cloud 구성요소를 사용합니다.
프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용하세요.
이 문서에 설명된 태스크를 완료했으면 만든 리소스를 삭제하여 청구가 계속되는 것을 방지할 수 있습니다. 자세한 내용은 삭제를 참조하세요.
시작하기 전에
Kubernetes 클러스터를 만들고 워크로드를 배포합니다. 자세한 내용은 클러스터 만들기 및 워크로드 배포를 참조하세요.
제어 영역에 대한 액세스 제한
보안 상황을 개선하기 위해 승인된 네트워크와 Google Cloud 콘솔 및 Cloud Shell만 클러스터 제어 영역에 액세스하도록 허용합니다.
승인된 네트워크 구성
Google Cloud 콘솔에서 GKE 클러스터 페이지로 이동합니다.
이름 열에서 클러스터 이름(hello-world-cluster)을 클릭합니다.
네트워크 테이블의
제어 영역 승인 네트워크 행에서 수정을 클릭합니다.제어 영역 승인 네트워크 수정 대화상자에서 제어 영역 승인 네트워크 사용 설정을 선택합니다.
Google Cloud 공개 IP 주소를 통한 액세스 허용을 선택합니다.
이렇게 하면 Google Cloud 콘솔과 Cloud Shell에서 클러스터를 관리할 수 있습니다.
승인된 네트워크 추가를 클릭합니다.
내 예시 온프렘 네트워크와 같은 이름을 입력합니다.
네트워크에서 클러스터 제어 영역에 대해 액세스를 부여하려는 IP 주소 범위를 입력합니다. CIDR 표기법을 사용하세요.
예를 들어 다음 범위를 입력합니다.
198.51.100.0/24
완료를 클릭합니다.
변경사항 저장을 클릭합니다.
이 작업을 완료하는 데 몇 분 정도 걸립니다.
알림 버튼을 클릭하고 Kubernetes Engine 클러스터 'hello-world-cluster'에서 제어 영역 승인 네트워크 설정 업데이트 여에 녹색 체크표시가 나타날 때까지 기다립니다.
승인된 네트워크와 Google Cloud 공개 IP 주소(Google Cloud 콘솔과 Cloud Shell에서 클러스터 관리 지원)에서만 액세스할 수 있는 클러스터 제어 영역을 구성했습니다.
클러스터 제어 영역의 IP 주소를 보고 승인된 네트워크의 주소를 확인하려면 다음을 클릭합니다.
IP 주소 보기
GKE 클러스터 페이지로 이동합니다.
이름 열에서 클러스터 이름(hello-world-cluster)을 클릭합니다.
클러스터 기본사항 테이블에서 외부 엔드포인트 행에 클러스터 제어 영역의 IP 주소가 표시됩니다.
네트워킹 테이블에서 제어 영역 승인된 네트워크 행에는 승인된 네트워크의 IP 주소가 표시됩니다.
이제 승인된 네트워크, Google Cloud 콘솔, Cloud Shell에서만 클러스터 제어 영역에 액세스할 수 있습니다.
컴퓨팅 클래스 지정
기본적으로 GKE Autopilot 포드는 범용 워크로드에 최적화된 컴퓨팅 리소스를 사용합니다. 최적 확장이 필요하거나 다른 고유 요구사항이 있는 워크로드의 경우 다른 컴퓨팅 클래스를 지정할 수 있습니다.
배포 사양 업데이트
Google Cloud 콘솔에서 GKE 워크로드 페이지로 이동합니다.
이름 열에서 배포한 앱 이름 hello-world-app을 클릭합니다.
수정 을 클릭하여 배포 사양을 수정합니다.YAML 탭에서
containers:
로 시작하는 줄을 찾습니다.이 줄 바로 위에 다음 줄을 추가합니다.
nodeSelector: cloud.google.com/compute-class: "Scale-Out"
파일이 다음 예시의 들여쓰기와 일치하는지 확인합니다.
apiVersion: apps/v1 kind: Deployment ... spec: ... template: ... spec: nodeSelector: cloud.google.com/compute-class: "Scale-Out" containers: - name: hello-app image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
이 파일을 다운로드하고 다른 워크로드 구성의 기본으로 사용하려면
다운로드 를 클릭합니다.저장을 클릭합니다.
워크로드를 실행하기 위해 생성된 모든 포드 복제본에 지정한 컴퓨팅 클래스가 사용됩니다.
자동 확장 테스트
효율적으로 확장되는 워크로드를 만들었으므로 워크로드가 더 쉽게 확장될 수 있도록 자동 확장 설정을 업데이트합니다. 그런 후 자동 확장을 트리거하는 로드를 생성합니다.
포드 자동 확장 설정 업데이트
GKE 워크로드 페이지로 이동합니다.
이름 열에서 배포 이름 hello-world-app을 클릭합니다.
작업 을 클릭합니다.자동 확장을 선택하고 수평형 포드 자동 확장을 클릭합니다.
수평형 포드 자동 확장 처리 구성 대화상자의 자동 확장 측정항목에서 CPU를 클릭합니다.
대상 값을 2로 변경하면 구성된 CPU 리소스의 2% 이상을 사용하는 경우 포드가 자동으로 확장됩니다 이 낮은 대상 값을 통해 다음 단계에서 자동 확장을 쉽게 트리거할 수 있습니다.
저장을 클릭합니다.
자동 확장을 트리거하려면 다음을 클릭합니다.
자동 확장 트리거 로드 생성
Cloud Shell 을 클릭하여 Cloud Shell을 엽니다.다음 명령어를 Cloud Shell에 붙여넣습니다.
for i in $(seq -s' ' 1 10000); do wget -q -O- <var>external-IP-address</var>; done
external-IP-address를
엔드포인트 열에 표시된 IP 주소로 바꿉니다.Enter 키를 눌러서 명령어를 실행하고 hello-world-app에 10,000개 요청을 전송합니다.
wget
명령어 실행이 완료되고 명령줄 프롬프트가 다시 표시될 때까지 기다립니다.wget
명령어가 완료되면 Cloud Shell을 닫을 수 있습니다.
증가한 트래픽을 수용하도록 워크로드 규모를 확인하려면 다음을 클릭합니다.
워크로드 확장 확인
워크로드의 배포 세부정보 페이지의
CPU 차트에서 CPU 사용량에 급증이 있는지 확인합니다.급증을 확인하려면 최대 5분까지 기다려야 할 수 있습니다.
새로고침 을 클릭하여 배포 세부정보 페이지에 최신 데이터가 표시되는지 확인합니다.관리형 포드 테이블에서 워크로드의 세 가지 복제본이 현재 실행되고 있는지 확인합니다.
처음에 예약할 수 없는 포드에 대해 오류가 표시될 수 있지만 이러한 메시지는 복제가 시작됨에 따라 곧 사라집니다.
10분간 대기한 후
새로고침을 클릭하면 CPU 사용량이 감소하여 관리형 포드의 포드 수가 1로 돌아가는 것을 확인할 수 있습니다.
자동 확장을 테스트하고 워크로드 확장을 확인했습니다.
로그 보관 조정
기본적으로 Cloud Logging은 GKE 클러스터에서 모든 로그를 수집합니다. 대량의 로그 데이터를 수집하면 비용이 발생할 수 있습니다. 스테이징 환경에 필요한 로그 데이터만 수집하도록 보장하기 위해 로그 보관을 조정합니다.
로그 필터 만들기
-
Google Cloud 콘솔에서 로그 탐색기 페이지로 이동합니다.
검색창을 사용하여 이 페이지를 찾은 경우 부제목이 Logging인 결과를 선택합니다.
쿼리 결과 창에 프로젝트의 모든 리소스 로그가 표시됩니다. 쿼리 결과에 따라 다음을 수행합니다.
리소스 를 클릭합니다.Kubernetes 클러스터를 검색하고 클릭합니다.
us-central-1을 클릭합니다.
hello-world-cluster를 클릭합니다.
적용을 클릭합니다.
심각도 를 클릭하고 정보를 선택합니다(커서를 위로 가져갔을 때 정보 이상의 수준으로 변경됨).쿼리 실행 을 클릭합니다.쿼리 결과에 이제 스테이징 클러스터의 INFO 메시지만 포함됩니다.
쿼리 편집기에서 쿼리를 복사합니다. 로그 싱크에 대해 필터를 만들 때 이 쿼리를 붙여넣습니다.
로그 싱크 및 스토리지 버킷을 만들기 위해 다음을 클릭합니다.
로그 싱크 및 스토리지 버킷 만들기
Logging 로그 라우터 페이지로 이동합니다.
싱크 만들기 를 클릭합니다.이름에 다음 이름을 입력합니다.
hello-world-cluster-sink
다음을 클릭합니다.
싱크 서비스 선택에서 Logging 버킷을 선택합니다.
로그 버킷 선택에서 새 로그 버킷 만들기를 선택합니다.
버킷 세부정보에 다음과 같이 고유한 이름을 입력합니다.
hello-world-bucket-<var>user-id</var>
버킷 만들기를 클릭합니다.
싱크 대상에서 다음을 클릭합니다.
포함 필터 빌드에서 로그 탐색기에서 만든 쿼리를 붙여넣습니다.
싱크 만들기를 클릭합니다.
자신이 만든 로그 버킷에 저장된 클러스터의 로그를 보려면 다음을 클릭합니다.
클러스터 로그 보기
-
Google Cloud 콘솔에서 로그 탐색기 페이지로 이동합니다.
검색창을 사용하여 이 페이지를 찾은 경우 부제목이 Logging인 결과를 선택합니다.
범위 상세검색 을 클릭합니다.로그 뷰를 선택합니다.
로그 버킷의 _AllLogs 뷰를 선택합니다.
적용을 클릭합니다.
쿼리 결과에는 로그 버킷에 저장된 로그만 표시됩니다.
지금까지 스테이징 클러스터가 DEBUG 메시지를 저장하지 않도록 로그 보관을 조정했습니다. 특정 사용자만 클러스터 버킷의 로그를 볼 수 있도록 권한을 설정할 수 있습니다.
보안 상황 대시보드 사용 설정
보안 상황 대시보드는 GKE 클러스터 및 워크로드를 스캔하여 보안 상황을 개선할 수 있는 실행 가능한 독자적인 권장사항을 제공합니다.
문제 살펴보기
GKE 보안 상황 페이지로 이동합니다.
Container Security API를 사용 설정하라는 메시지가 표시되면 사용 설정을 클릭합니다.
대시보드 탭에 프로젝트의 클러스터 및 워크로드에 대한 문제가 요약해서 표시됩니다.
문제 탭을 클릭합니다.
탭에 문제가 있는 경우 해당 문제를 클릭하여 자세한 내용을 확인하세요.
지금까지 앱 스테이징 및 테스트를 위해 클러스터 구성에 대한 일부 기본 태스크를 완료했습니다.
다음 단계
요금이 청구되지 않도록 삭제합니다. 추가 튜토리얼을 수행하려면 해당 튜토리얼을 완료할 때까지 기다린 후에 삭제하세요. 대부분의 GKE 튜토리얼에서 샘플 Kubernetes 클러스터를 사용할 수 있습니다.