Cluster Services for OpenShift Telemetry 연산자 설정

이 문서에서는 Cluster Services for OpenShift Telemetry 연산자 를 설치하고 Compute Engine 인스턴스에서 실행되는 OpenShift 클러스터와 연결하도록 구성하는 방법을 설명합니다.

이 원격 분석 연산자는 설치 및 구성 후 클러스터 상태와 클러스터 구성을 지속적으로 모니터링하는 호스트 네트워크 원격 분석 데몬을 배포합니다. 연산자는 수집된 측정항목을 워크로드 관리자로 보냅니다. 그런 다음 워크로드 관리자 평가 를 사용하여 OpenShift 클러스터의 권장사항에서 벗어난 클러스터에서 실행되는 워크로드를 검사할 수 있습니다.

시작하기 전에

원격 분석 연산자를 설치하고 구성하기 전에 다음 기본 요건이 충족되는지 확인해야 합니다.

Cloud API에 대한 액세스 사용 설정

Compute Engine은 모든 Cloud API에 대한 전체 액세스 범위를 허용하도록 인스턴스를 구성하고, 인스턴스 서비스 계정의 IAM 권한만 사용하여 리소스에 대한 액세스를 제어할 것을 권장합니다. Google Cloud 자세한 내용은 사용자 관리형 서비스 계정을 사용하는 VM 만들기를 참고하세요.

Cloud API에 대한 액세스를 제한하는 경우 Cluster Services for OpenShift Telemetry 연산자에는 호스트 컴퓨팅 인스턴스에 최소한 다음과 같은 Cloud API 액세스 범위가 필요합니다.

https://www.googleapis.com/auth/cloud-platform

자세한 내용은 범위 권장사항을 참조하세요.

외부 IP 주소가 없는 컴퓨팅 인스턴스에서 OpenShift 클러스터를 실행하는 경우 Cluster Services for OpenShift Telemetry 연산자가 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

다음 옵션을 사용하여 원격 분석 연산자를 서비스 계정으로 인증할 수 있습니다.

워크로드 아이덴티티 제휴를 사용하여 연산자 인증

워크로드 아이덴티티 제휴를 사용하여 원격 분석 연산자를 서비스 계정으로 인증하려면 다음 단계를 완료하세요.

  1. 터미널에서 원격 분석 연산자 번들에서 CredentialsRequest 매니페스트를 로컬 디렉터리로 추출합니다.

    mkdir -p credrequests
    oc image extract us-docker.pkg.dev/workload-agent-products/cluster-services-for-openshift-telemetry/bundle:VERSION --path /manifests/:./credrequests --confirm
    

    VERSION을 OperatorHub에서 원격 분석 연산자에 대해 구독한 버전 번호로 바꿉니다. Red Hat Ecosystem Catalog에서 원격 분석 연산자의 인증된 버전 번호 목록을 확인할 수 있습니다.

  2. 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 클러스터가 실행되는 프로젝트의 프로젝트 ID Google Cloud
  3. 생성된 OpenID Connect (OIDC) 제공업체, IAM 역할, 보안 비밀 매니페스트를 클러스터에 적용합니다.

    oc apply -f ./ccoctl-out/manifests/
    

이전 단계에서는 프로젝트에서 서비스 계정을 만들고 다음 IAM 역할을 할당합니다. Google Cloud

서비스 계정 키를 사용하여 연산자 인증

조직에서 인증 목적으로 워크로드 아이덴티티 제휴 사용을 지원하지 않는 경우 서비스 계정 키를 사용하여 원격 분석 연산자를 인증할 수 있습니다.

서비스 계정 키를 사용하여 원격 분석 연산자를 서비스 계정으로 인증하려면 다음 단계를 완료하세요.

  1. 터미널에서 원격 분석 연산자 번들에서 CredentialsRequest 매니페스트를 로컬 디렉터리로 추출합니다.

    mkdir -p credrequests
    oc image extract us-docker.pkg.dev/workload-agent-products/cluster-services-for-openshift-telemetry/bundle:VERSION --path /manifests/:./credrequests --confirm
    
  2. 프로젝트에서 원격 분석 연산자의 서비스 계정을 만듭니다. Google Cloud

    gcloud iam service-accounts create cso-telemetry-agent \
      --description="Service account for OpenShift Telemetry Operator" \
      --display-name="CSO Telemetry Agent" \
      --project=PROJECT_ID
    

    PROJECT_ID를 Google Cloud OpenShift 클러스터가 실행되는 프로젝트의 ID로 바꿉니다.

  3. 서비스 계정이 리소스에 액세스하도록 하려면 서비스 계정에 매니페스트에 정의된 IAM 역할을 부여합니다. Google Cloud CredentialsRequest 이 매니페스트에는 연산자에 필요한 최소 IAM 역할 집합이 포함되어 있습니다.

    이 매니페스트에 정의된 각 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 역할로 바꿉니다.

  4. 서비스 계정의 비공개 키를 만들고 다운로드합니다.

    gcloud iam service-accounts keys create ./sa_key.json \
      --iam-account=cso-telemetry-agent@PROJECT_ID.iam.gserviceaccount.com \
      --project=PROJECT_ID
    
  5. openshift-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 컨테이너 플랫폼 웹 콘솔 또는 선언적 구독 YAML 매니페스트를 사용하여 Cluster Services for OpenShift Telemetry 연산자를 설치할 수 있습니다. 이러한 옵션에 대한 자세한 내용은 Red Hat 문서 클러스터에 연산자 추가를 참조하세요.

OpenShift 웹 콘솔

OpenShift 컨테이너 플랫폼 웹 콘솔을 사용하여 OpenShift 클러스터에 원격 분석 연산자를 설치하려면 다음 단계를 완료하세요.

  1. Red Hat OpenShift 웹 콘솔에 로그인합니다.
  2. 관리자 관점에 있는지 확인합니다.
  3. 왼쪽 탐색에서 연산자 섹션을 펼치고 OperatorHub 를 클릭합니다.
  4. 모든 항목 아래의 검색창에 Cluster Services for OpenShift Telemetry를 입력합니다.

    또는 Google 을 입력하여 검색할 수 있습니다. 이렇게 하면 Cluster Services for OpenShift Telemetry 연산자를 포함하여 Google에서 제공하는 연산자가 필터링됩니다.

  5. Cluster Services for OpenShift Telemetry 라는 카드를 클릭합니다.

  6. Cluster Services for OpenShift Telemetry 창에서 설치 를 클릭합니다.

  7. 연산자 설치 페이지에서 다음 단계를 완료하세요.

    1. 업데이트 채널 필드에서 stable 을 선택합니다.
    2. 설치 모드 필드에서 클러스터의 특정 네임스페이스 를 선택합니다.
    3. 설치된 네임스페이스 필드에서 openshift-operators 프로젝트를 선택하거나 커스텀 모니터링 네임스페이스를 만듭니다.
    4. 승인 전략 필드에서 자동 또는 수동 을 선택합니다.
    5. 설치 를 클릭합니다.
  8. 연산자가 성공적으로 설치되었는지 확인하려면 다음 단계를 완료하세요.

    1. **연산자**> **설치된 연산자**로 이동합니다.
    2. 연산자 목록에서 Cluster Services for OpenShift Telemetry 연산자가 있는지 검색하고 확인합니다.
    3. 상태 열에 성공 또는 최신 값이 표시되는지 확인합니다.
    4. 원하는 경우 연산자를 클릭하여 세부정보를 확인합니다.

OpenShift CLI

OpenShift CLI 및 선언적 Subscription YAML 매니페스트를 사용하여 OpenShift 클러스터에 원격 분석 연산자를 설치하려면 다음 단계를 완료하세요.

  1. 다음 구성으로 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
    
  2. 클러스터에 구독을 적용합니다.

    oc apply -f subscription.yaml
    
  3. ClusterServiceVersion의 상태를 확인하여 원격 분석 연산자가 성공적으로 설치되었는지 확인합니다.

    oc get csv -n openshift-operators
    

    출력에서 cluster-services-for-openshift-telemetryPHASE 열 값이 Succeeded 인지 확인합니다.

측정항목 수집 사용 설정

연산자가 OpenShift 클러스터에서 측정항목을 수집하도록 하려면 TelemetryConfig 커스텀 리소스를 적용해야 합니다. 이 리소스는 컴퓨팅 워크로드용 에이전트의 데몬 포드를 클러스터 노드에 배포합니다.

연산자가 OpenShift 클러스터에서 측정항목을 수집하도록 하려면 다음 단계를 완료하세요.

  1. 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_PATH
      

      SERVICE_ACCOUNT_KEY_PATH를 서비스 계정 키를 마운트한 경로로 바꿉니다. 마운트 이름은 서비스 계정 키 JSON 파일과 일치해야 합니다. 예를 들면 /var/run/secrets/google/workload_agent_sa_key.json입니다.

  2. 클러스터에 커스텀 리소스를 적용합니다.

    oc apply -f telemetryconfig.yaml
    
  3. 원격 분석 에이전트 포드의 상태가 실행 중인지 확인합니다.

    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에서 연산자 로그를 보려면 다음 단계를 완료하세요.

  1. 콘솔에서 로그 탐색기 페이지로 이동합니다. Google Cloud

    로그 탐색기로 이동

  2. 쿼리 창에 쿼리를 입력합니다.

    • 프로젝트의 로그를 필터링하려면 다음 쿼리를 사용합니다. 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 세부정보 보기를 참조하세요.

  3. 쿼리 실행 을 클릭합니다.

로그 기반 알림 정책 설정

기본적으로 원격 분석 연산자의 로그는 Cloud Logging으로 전송됩니다. 로그에 특정 메시지가 표시될 때 알림을 보내는 원격 분석 연산자 로그를 기반으로 알림 정책을 구성하는 것이 좋습니다. 이러한 알림은 연산자의 작동을 모니터링하고 문제를 해결하는 데 도움이 됩니다.

원격 분석 연산자가 생성한 로그를 기반으로 알림 정책을 구성하려면 다음 단계를 완료하세요.

  1. 로그 기반 알림 정책 구성의 "시작하기 전에" 섹션에 설명된 기본 요건을 충족하는지 확인합니다.

  2. 콘솔에서 로그 탐색기 페이지로 이동합니다. Google Cloud

    로그 탐색기로 이동

  3. 쿼리 창에 필요한 쿼리를 입력합니다.

    logName="projects/PROJECT_ID/logs/google-cloud-workload-agent"
    severity=SEVERITY_LEVEL

    SEVERITY_LEVEL을 지원되는 심각도 수준 값으로 바꿉니다. 여기에는 DEBUG, INFO, WARNING, ERROR가 포함됩니다. ERROR 또는 더 높은 로그 수준 값을 사용하는 것이 좋습니다.

  4. 쿼리 실행 을 클릭하여 쿼리를 실행합니다.

  5. 로그 알림을 만듭니다.

    이 알림을 만드는 방법은 로그 탐색기를 사용하여 로그 기반 알림 정책 만들기에 설명된 절차의 3단계를 참조하세요.

선택사항: 프로덕션별 평가 사용 설정

워크로드 관리자가 OpenShift 클러스터에 지원하는 권장사항 중 일부는 프로덕션 환경에만 적용됩니다. 워크로드 관리자는 클러스터, 배포 또는 포드에서 environment 라벨을 확인하여 이 구분을 만듭니다. 이 라벨과 연결된 값이 production이면 워크로드 관리자는 해당 리소스를 프로덕션 리소스로 간주합니다.

클러스터가 프로덕션 환경에 속함을 워크로드 관리자에게 알리려면 다음 단계를 완료하세요.

  1. workloadmanager 네임스페이스를 만듭니다.

    oc create namespace workloadmanager
    
  2. 다음 구성을 사용하여 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=production
    

    DEPLOYMENT_NAME을 배포 이름으로 바꿉니다.

OpenShift 클러스터와 클러스터에서 실행되는 배포 또는 포드에 environment 라벨을 적용하면 워크로드 관리자는 클러스터에 설정된 라벨 값보다 배포 또는 포드에 설정된 라벨 값을 우선시합니다.

선택사항: 측정항목 수집 트리거

OpenShift 클러스터에서 Cluster Services for OpenShift Telemetry 연산자를 성공적으로 설정하면 연산자는 클러스터에서 측정항목을 수집하여 30분마다 워크로드 관리자로 보냅니다.

원하는 경우 측정항목의 예약된 수집을 위해 30분 동안 기다리는 대신 연산자를 수동으로 트리거하여 측정항목을 수집하고 워크로드 관리자로 보낼 수 있습니다.

측정항목 수집을 위해 연산자를 수동으로 트리거하려면 다음 단계를 완료하세요.

  1. 터미널을 엽니다.

  2. 실행 중인 포드의 이름을 찾습니다.

    POD_NAME=$(oc get pods -l app.kubernetes.io/name=workloadagent-operator --field-selector=status.phase=Running -o=name)
    
  3. 연산자를 트리거하여 측정항목을 수집하고 전송합니다.

    oc debug -t $POD_NAME -- /openshift-docker-entrypoint.sh
    

다음 단계