이 문서에서는 Cluster Services for OpenShift Telemetry operator를 설치하고 Compute Engine 인스턴스에서 실행되는 OpenShift 클러스터에 연결하도록 구성하는 방법을 설명합니다.
설치 및 구성 후 이 원격 분석 연산자는 클러스터 상태와 클러스터 구성을 지속적으로 모니터링하는 호스트 네트워크 원격 분석 데몬을 배포합니다. 연산자는 수집된 측정항목을 워크로드 관리자로 보냅니다. 그런 다음 워크로드 관리자 평가를 사용하여 클러스터에서 실행되는 워크로드를 스캔하여 OpenShift 클러스터의 권장사항에서 벗어난 부분을 확인할 수 있습니다.
시작하기 전에
원격 분석 운영자를 설치하고 구성하기 전에 다음 기본 요건을 충족해야 합니다.
- Red Hat OpenShift Container Platform 버전 4.18 이상을 사용하고 있습니다.
- 하나 이상의 컴퓨팅 인스턴스에 OpenShift 클러스터를 배포했습니다.
- 관리자가 Red Hat OpenShift Container Platform의 클러스터에 대해 ClusterAdmin 역할을 부여했습니다.
- 터미널에 Google Cloud CLI를 다운로드하고 설치했습니다. Cloud Shell을 사용하는 경우 이 필수 요건을 건너뛸 수 있습니다.
- 클러스터에 OpenShift CLI (
oc)를 설치했습니다. 이 CLI를 설치하는 방법에 대한 자세한 내용은 Red Hat 문서 OpenShift CLI 설치를 참고하세요. - Cloud Credentials Operator (
ccoctl) 유틸리티를 설치했습니다. 이 유틸리티를 설치하는 방법에 관한 자세한 내용은 Red Hat 문서 OpenShift 4용ccoctl도구를 획득하는 방법을 참고하세요. - 워크로드 관리자 평가를 만들 수 있는 지원되는 리전을 검토했습니다.
- 관리자가 워크로드 관리자 평가를 만들고 실행하는 데 필요한 IAM 역할을 부여했습니다.
- Cloud API에 대한 액세스를 사용 설정했습니다.
Cloud API 액세스 사용 설정
Compute Engine은 모든 Cloud API에 대한 모든 액세스 범위를 허용하도록 인스턴스를 구성하고, 인스턴스 서비스 계정의 IAM 권한만 사용하여Google Cloud 리소스에 대한 액세스를 제어할 것을 권장합니다. 자세한 내용은 사용자 관리형 서비스 계정을 사용하는 VM 만들기를 참조하세요.
Cloud API에 대한 액세스를 제한하는 경우 OpenShift 원격 분석용 클러스터 서비스 작업자에는 호스트 컴퓨팅 인스턴스에 최소한 다음과 같은 Cloud API 액세스 범위가 필요합니다.
https://www.googleapis.com/auth/cloud-platform
자세한 내용은 범위 권장사항을 참고하세요.
외부 IP 주소가 없는 컴퓨팅 인스턴스에서 OpenShift 클러스터를 실행하는 경우 OpenShift 원격 분석용 클러스터 서비스 운영자가 Google API 및 서비스에 액세스할 수 있도록 인스턴스의 서브넷에서 비공개 Google 액세스를 사용 설정해야 합니다. 비공개 Google 액세스를 사용 설정하는 방법은 비공개 Google 액세스 구성을 참고하세요.
OpenShift 클러스터에 사용자 인증
관리 작업을 실행하려면 OpenShift CLI를 사용하여 OpenShift 클러스터에 인증해야 합니다. OpenShift 클러스터에 사용자를 인증하려면 다음 옵션 중에서 선택하면 됩니다.
다음 명령어를 실행하고 안내를 따릅니다.
oc login "https://api.CLUSTER_DOMAIN:6443" -u kubeadmin또는
oc바이너리와 함께 사용할 세션 인증 토큰을 가져옵니다. 이 토큰을 가져오려면 웹브라우저에서 다음 URL을 엽니다.https://oauth-openshift.apps.CLUSTER_DOMAIN/oauth/token/request
CLUSTER_DOMAIN을 OpenShift 클러스터의 도메인으로 바꿉니다. 예를 들면 mycluster.google.com입니다.
Google Cloud에 대해 작업자 인증
원격 분석 운영자가 자신을 인증하고 Google Cloud리소스에 액세스하도록 하려면 Google Cloud 프로젝트에서 원격 분석 운영자의 서비스 계정을 만들어야 합니다.
다음 옵션을 사용하여 원격 분석 운영자를 서비스 계정으로 인증할 수 있습니다.
워크로드 아이덴티티 제휴를 사용하여 운영자 인증
워크로드 아이덴티티 제휴를 사용하여 원격 분석 연산자를 서비스 계정으로 인증하려면 다음 단계를 완료하세요.
터미널에서 원격 분석 연산자 번들에서
CredentialsRequest매니페스트를 로컬 디렉터리로 추출합니다.mkdir -p credrequests oc image extract us-docker.pkg.dev/workload-agent-products/cluster-services-for-openshift-telemetry/bundle:VERSION --path /manifests/:./credrequests --confirmVERSION을 OperatorHub에서 원격 분석 연산자를 구독한 버전 번호로 바꿉니다. Red Hat Ecosystem Catalog에서 원격 분석 운영자의 인증된 버전 번호 목록을 확인할 수 있습니다.ccoctl유틸리티를 사용하여 추출된CredentialsRequest매니페스트를 처리하고 Google Cloud Identity and Access Management (IAM) 바인딩 및 사용자 인증 정보를 프로비저닝합니다.ccoctl gcp create-all \ --name=cso-telemetry \ --region=REGION \ --project=PROJECT_ID \ --credentials-requests-dir=./credrequests \ --output-dir=./ccoctl-out다음을 바꿉니다.
REGION: OpenShift 클러스터가 실행되는 Compute Engine 리전PROJECT_ID: OpenShift 클러스터가 실행되는 Google Cloud 프로젝트의 프로젝트 ID
생성된 OpenID Connect (OIDC) 프로바이더, IAM 역할, 보안 비밀 매니페스트를 클러스터에 적용합니다.
oc apply -f ./ccoctl-out/manifests/
위 단계를 통해 Google Cloud 프로젝트에 서비스 계정을 만들고 다음 IAM 역할을 할당합니다.
- 컴퓨팅 인스턴스에서 측정항목을 수집하려면 Compute 뷰어 (
roles/compute.viewer)가 필요합니다. - 워크로드 관리자 데이터 웨어하우스에 데이터를 쓰려면 워크로드 관리자 통계 작성자 (
roles/workloadmanager.insightWriter)가 필요합니다. - Cloud Logging에 운영자 로그를 전송하려면 로그 작성자 (
roles/logging.logWriter)
서비스 계정 키를 사용하여 운영자 인증
조직에서 인증 목적으로 워크로드 아이덴티티 제휴 사용을 지원하지 않는 경우 서비스 계정 키를 사용하여 원격 분석 운영자를 인증할 수 있습니다.
서비스 계정 키를 사용하여 원격 분석 운영자를 서비스 계정으로 인증하려면 다음 단계를 완료하세요.
터미널에서 원격 분석 연산자 번들에서
CredentialsRequest매니페스트를 로컬 디렉터리로 추출합니다.mkdir -p credrequests oc image extract us-docker.pkg.dev/workload-agent-products/cluster-services-for-openshift-telemetry/bundle:VERSION --path /manifests/:./credrequests --confirmGoogle Cloud 프로젝트에서 원격 분석 작업자를 위한 서비스 계정을 만듭니다.
gcloud iam service-accounts create cso-telemetry-agent \ --description="Service account for OpenShift Telemetry Operator" \ --display-name="CSO Telemetry Agent" \ --project=PROJECT_IDPROJECT_ID를 OpenShift 클러스터가 실행되는Google Cloud 프로젝트의 ID로 바꿉니다.서비스 계정이 Google Cloud 리소스에 액세스하도록 하려면 서비스 계정에
CredentialsRequest매니페스트에 정의된 IAM 역할을 부여하세요. 이 매니페스트에는 운영자가 필요로 하는 최소한의 IAM 역할 집합이 포함됩니다.- 컴퓨팅 인스턴스에서 측정항목을 수집하려면 Compute 뷰어 (
roles/compute.viewer)가 필요합니다. - 워크로드 관리자 데이터 웨어하우스에 데이터를 쓰려면 워크로드 관리자 통계 작성자 (
roles/workloadmanager.insightWriter)가 필요합니다. - Cloud Logging에 운영자 로그를 전송하려면 로그 작성자 (
roles/logging.logWriter)
이 매니페스트에 정의된 각 IAM 역할에 대해 다음 명령어를 실행합니다.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:cso-telemetry-agent@PROJECT_ID.iam.gserviceaccount.com" \ --role="IAM_ROLE"IAM_ROLE를 서비스 계정에 부여하려는 IAM 역할로 바꿉니다.- 컴퓨팅 인스턴스에서 측정항목을 수집하려면 Compute 뷰어 (
서비스 계정의 비공개 키를 만들고 다운로드합니다.
gcloud iam service-accounts keys create ./sa_key.json \ --iam-account=cso-telemetry-agent@PROJECT_ID.iam.gserviceaccount.com \ --project=PROJECT_IDopenshift-operators네임스페이스에서 만든 서비스 계정 키의 보안 비밀을telemetry-agent-sa로 만듭니다.oc create secret generic telemetry-agent-sa \ --from-file=workload_agent_sa_key.json=./sa_key.json \ -n openshift-operators
Cluster Services for OpenShift Telemetry 연산자 설치
Red Hat OpenShift Container Platform 웹 콘솔 또는 선언적 구독 YAML 매니페스트를 사용하여 Cluster Services for OpenShift Telemetry 연산자를 설치할 수 있습니다. 이러한 옵션에 대한 자세한 내용은 Red Hat 문서 클러스터에 운영자 추가를 참고하세요.
OpenShift 웹 콘솔
OpenShift Container Platform 웹 콘솔을 사용하여 OpenShift 클러스터에 원격 분석 오퍼레이터를 설치하려면 다음 단계를 완료하세요.
- Red Hat OpenShift 웹 콘솔에 로그인합니다.
- 관리자 관점에 있는지 확인합니다.
- 왼쪽 탐색에서 운영자 섹션을 펼치고 OperatorHub를 클릭합니다.
모든 항목 아래의 검색창에 Cluster Services for OpenShift Telemetry를 입력합니다.
또는 Google을 입력하여 검색할 수 있습니다. 이렇게 하면 OpenShift 원격 분석용 클러스터 서비스 연산자를 비롯한 Google에서 제공하는 연산자가 필터링됩니다.
Cluster Services for OpenShift Telemetry라는 카드를 클릭합니다.
Cluster Services for OpenShift Telemetry 창에서 설치를 클릭합니다.
연산자 설치 페이지에서 다음 단계를 완료합니다.
- 업데이트 채널 필드에서 stable을 선택합니다.
- 설치 모드 필드에서 클러스터의 특정 네임스페이스를 선택합니다.
- 설치된 네임스페이스 필드에서 openshift-operators 프로젝트를 선택하거나 맞춤 모니터링 네임스페이스를 만듭니다.
- 승인 전략 필드에서 자동 또는 수동을 선택합니다.
- 설치를 클릭합니다.
연산자가 성공적으로 설치되었는지 확인하려면 다음 단계를 완료하세요.
- 운영자 > 설치된 운영자로 이동합니다.
- 연산자 목록에서 Cluster Services for OpenShift Telemetry 연산자가 있는지 검색하여 확인합니다.
- 상태 열에 성공 또는 최신 값이 표시되는지 확인합니다.
- 필요한 경우 연산자를 클릭하여 세부정보를 확인합니다.
OpenShift CLI
OpenShift CLI와 선언적 Subscription YAML 매니페스트를 사용하여 OpenShift 클러스터에 원격 분석 연산자를 설치하려면 다음 단계를 완료하세요.
다음 구성으로
subscription.yaml이라는Subscription커스텀 리소스 매니페스트를 만듭니다.apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: google-cloud-cluster-services-for-openshift-telemetry namespace: openshift-operators spec: channel: stable installPlanApproval: Automatic name: google-cloud-cluster-services-for-openshift-telemetry source: certified-operators sourceNamespace: openshift-marketplace클러스터에 구독을 적용합니다.
oc apply -f subscription.yamlClusterServiceVersion상태를 확인하여 원격 분석 연산자가 성공적으로 설치되었는지 확인합니다.oc get csv -n openshift-operators출력에서
cluster-services-for-openshift-telemetry의PHASE열 값이Succeeded인지 확인합니다.
측정항목 수집 사용 설정
운영자가 OpenShift 클러스터에서 측정항목을 수집하도록 하려면 TelemetryConfig 커스텀 리소스를 적용해야 합니다. 이 리소스는 컴퓨팅 워크로드용 에이전트를 위해 클러스터 노드에 데몬 포드를 배포합니다.
연산자가 OpenShift 클러스터에서 측정항목을 수집할 수 있도록 하려면 다음 단계를 완료하세요.
telemetryconfig.yaml이라는TelemetryConfig커스텀 리소스 매니페스트를 만듭니다.워크로드 아이덴티티 제휴를 사용하여 원격 분석 운영자의 인증을 설정한 경우 다음 최소 맞춤 리소스를 사용합니다. 이 커스텀 리소스는
google-cloud-cluster-services-telemetry-agent-wif-secret보안 비밀에 저장된 사용자 인증 정보를 자동으로 가져옵니다.apiVersion: cluster-services-openshift.cloud.google.com/v1alpha1 kind: TelemetryConfig metadata: name: telemetryconfig namespace: openshift-operators spec: enabled: true서비스 계정 키를 사용하여 원격 분석 운영자의 인증을 설정한 경우 다음 커스텀 리소스를 사용하세요.
apiVersion: cluster-services-openshift.cloud.google.com/v1alpha1 kind: TelemetryConfig metadata: name: telemetryconfig namespace: openshift-operators spec: enabled: true serviceAccountCredentialsSecretName: telemetry-agent-sa serviceAccountCredentialsPath: SERVICE_ACCOUNT_KEY_PATHSERVICE_ACCOUNT_KEY_PATH을 서비스 계정 키를 마운트한 경로로 바꿉니다. 마운트 이름은 서비스 계정 키 JSON 파일과 일치해야 합니다. 예를 들면/var/run/secrets/google/workload_agent_sa_key.json입니다.
커스텀 리소스를 클러스터에 적용합니다.
oc apply -f telemetryconfig.yaml원격 분석 에이전트 포드의 상태가 Running인지 확인합니다.
oc get pods -n openshift-operators -l app.kubernetes.io/name=workloadagent-operator포드의 로그를 검사하여 측정항목 수집을 확인할 수도 있습니다.
"openshiftmetrics/openshiftmetrics.go:126","msg":"Metric payload after collection","pid":5,"context":"OpenShiftMetricCollection","payload":"version:\"v0.1.0-pre\" agent_version:\"1.3\"
Cloud Logging에서 작업자 로그 보기
기본적으로 Cluster Services for OpenShift Telemetry 연산자의 로그는 Cloud Logging으로 전송됩니다. Logging에서 이러한 로그를 볼 수 있습니다. Logging에서 연산자 로그를 보려면 다음 단계를 완료하세요.
Google Cloud 콘솔에서 로그 탐색기 페이지로 이동합니다.
쿼리 창에 쿼리를 입력합니다.
Google Cloud 프로젝트의 로그를 필터링하려면 다음 쿼리를 사용하세요.
logName="projects/PROJECT_ID/logs/google-cloud-workload-agent"
PROJECT_ID를 OpenShift 클러스터가 실행되는Google Cloud 프로젝트의 프로젝트 ID로 바꿉니다.Google Cloud 프로젝트에서 여러 클러스터를 실행하고 특정 클러스터의 로그를 필터링하려면 다음 쿼리를 사용하세요.
resource.labels.instance_id=("COMPUTE_INSTANCE_ID_1" OR "COMPUTE_INSTANCE_ID_2" OR "COMPUTE_INSTANCE_ID_3")COMPUTE_INSTANCE_ID을 OpenShift 클러스터를 실행하는 Compute Engine 인스턴스의 인스턴스 ID로 바꿉니다. 컴퓨팅 인스턴스 ID를 찾는 방법은 VM 세부정보 보기를 참고하세요.
쿼리 실행을 클릭합니다.
로그 기반 알림 정책 설정
기본적으로 원격 분석 운영자의 로그는 Cloud Logging으로 전송됩니다. 로그에 특정 메시지가 표시될 때 알림을 보내는 원격 분석 운영자 로그를 기반으로 알림 정책을 구성하는 것이 좋습니다. 이러한 알림은 운영자의 작동을 모니터링하고 문제를 해결하는 데 도움이 됩니다.
원격 분석 연산자에서 생성된 로그를 기반으로 알림 정책을 구성하려면 다음 단계를 완료하세요.
로그 기반 알림 정책 구성의 '시작하기 전에' 섹션에 설명된 기본 요건을 충족하는지 확인합니다.
Google Cloud 콘솔에서 로그 탐색기 페이지로 이동합니다.
쿼리 창에 필요한 쿼리를 입력합니다.
logName="projects/PROJECT_ID/logs/google-cloud-workload-agent" severity=SEVERITY_LEVEL
SEVERITY_LEVEL을 지원되는 심각도 수준 값(DEBUG,INFO,WARNING,ERROR포함)으로 바꿉니다.ERROR이상의 로그 수준 값을 사용하는 것이 좋습니다.쿼리 실행을 클릭하여 쿼리를 실행합니다.
로그 알림을 만듭니다.
이 알림을 만드는 방법을 알아보려면 로그 탐색기를 사용하여 로그 기반 알림 정책 만들기에 설명된 절차의 3단계를 참고하세요.
선택사항: 프로덕션별 평가 사용 설정
OpenShift 클러스터에 대해 워크로드 관리자가 지원하는 권장사항 중 일부는 프로덕션 환경에만 적용됩니다.
워크로드 관리자는 클러스터, 배포 또는 포드에서 environment 라벨을 확인하여 이 구분을 만듭니다. 이 라벨과 연결된 값이 production이면 워크로드 관리자는 해당 리소스를 프로덕션 리소스로 간주합니다.
클러스터가 프로덕션 환경에 속한다고 워크로드 관리자에 알리려면 다음 단계를 완료하세요.
workloadmanager네임스페이스를 만듭니다.oc create namespace workloadmanager다음 구성을 사용하여
workloadmanager네임스페이스에ConfigMap를 만듭니다.apiVersion: v1 kind: ConfigMap metadata: name: wlm-cluster-environment namespace: workloadmanager data: # Options: "production" or "non-production" environment: "production"
배포 또는 포드가 프로덕션 환경에 속한다고 워크로드 관리자에게 알리려면 다음 옵션 중 하나를 사용하여 리소스 정의에 environment라는 라벨을 추가하세요.
다음 구성을 수동으로 적용합니다.
apiVersion: apps/v1 kind: Deployment metadata: name: my-app labels: # Options: "production" or "non-production" environment: "production" spec: ...다음 명령어를 실행합니다.
oc label --overwrite deployments DEPLOYMENT_NAME environment=productionDEPLOYMENT_NAME을 배포 이름으로 바꿉니다.
OpenShift 클러스터와 클러스터에서 실행되는 배포 또는 포드에 environment 라벨을 적용하면 워크로드 관리자가 클러스터에 설정된 라벨 값보다 배포 또는 포드에 설정된 라벨 값을 우선합니다.
선택사항: 측정항목 수집 트리거
OpenShift 클러스터에서 Cluster Services for OpenShift Telemetry 연산자를 성공적으로 설정하면 연산자가 클러스터에서 측정항목을 수집하여 30분마다 워크로드 관리자로 전송합니다.
원하는 경우 측정항목이 예약된 대로 수집될 때까지 30분 동안 기다리는 대신, 측정항목을 수집하여 워크로드 관리자로 전송하도록 운영자를 수동으로 트리거할 수 있습니다.
측정항목 수집을 위해 연산자를 수동으로 트리거하려면 다음 단계를 완료하세요.
터미널을 엽니다.
실행 중인 포드의 이름을 찾습니다.
POD_NAME=$(oc get pods -l app.kubernetes.io/name=workloadagent-operator --field-selector=status.phase=Running -o=name)측정항목을 수집하고 전송하도록 연산자를 트리거합니다.
oc debug -t $POD_NAME -- /openshift-docker-entrypoint.sh