OpenShift 클러스터에 로깅 에이전트 v1.6.x 배포하기

Helm 차트를 사용하여 로깅 에이전트 v1.6.x 를 배포하여 OpenShift 클러스터에서 IBM Cloud Logs 인스턴스로 인프라 및 애플리케이션 로그를 수집하고 라우팅할 수 있습니다.

테라폼 IBM 모듈(TIM)을 사용하여 다음을 수행할 수도 있습니다. 로깅 에이전트 을 사용하여 지원되는 OpenShift 클러스터에 로그 에이전트를 배포하고 구성할 수도 있습니다. 이 모듈은 코드형 인프라( IaC ) 자동화를 사용하여 Helm-기반 배포 및 주요 구성 설정을 자동화합니다.

OpenShift 클러스터에 에이전트를 배포하려면 다음 단계를 완료하십시오

시작하기 전에

  • 네임스페이스 생성 및 에이전트 배포 권한이 있는 Red Hat OpenShift on IBM Cloud ( OpenShift ) 클러스터에 액세스할 수 있는지 확인하십시오.

  • 다음 CLI를 설치하십시오.

    • IBM Cloud CLI를 사용하여 IBM Cloud 에 로그인하고 API 키 생성 등 IBM Cloud 서비스를 관리할 수 있습니다.

    • Openshift CLI를 사용하여 명령줄에서 클러스터를 관리합니다. 자세히 알아보십시오.

    • 버전 3의 최신 릴리스 Helm CLI

  • 로깅 에이전트 에 대해 읽어 보세요.

  • 사용 가능한 에이전트 버전을 확인하십시오. 자세한 정보는 사용 가능한 에이전트 버전 확인하기를 참고하세요. Helm 차트의 버전은 에이전트의 버전과 일치한다는 점에 유의하십시오. 예를 들어, 에이전트의 버전 1.3.0 을 사용하는 경우, 해당 버전과 함께 1.3.0 버전의 Helm 차트가 제공됩니다.

1단계. 에이전트에 대한 인증 방법 정의

에이전트의 신원 유형과 인증 방법을 선택합니다. 그런 다음, 신뢰할 수 있는 프로필 또는 API 키를 만듭니다. IBM Cloud Logs 에 로그를 전송하는 데 필요한 역할은 Sender 입니다.

IBM® Cloud Logs 서비스에서 에이전트가 인증에 사용하는 ID로 서비스 ID 또는 신뢰할 수 있는 프로필을 사용할 수 있습니다. 더 자세한 정보는 수집을 위한 IAM 권한 부여를 참고하세요.

다음 옵션 중 하나를 선택하십시오.

옵션 1: 신뢰할 수 있는 프로필을 이용한 인증

신뢰할 수 있는 프로파일을 작성하십시오. 자세한 내용은 수집을 위한 신뢰 프로필 생성을 참고하세요.

옵션 2: 서비스 ID를 이용한 인증 API 키

서비스 ID 인증을 위한 API 키를 생성합니다. 자세한 내용은 수집을 위한 API 키 생성을 참고하세요.

2단계. Helm 의 차트 값 파일을 구성하는 방법 로깅 에이전트

다음 단계를 완료하십시오.

  1. 다음 내용으로 logs-values.yaml 이라는 파일을 만듭니다:

    이 파일에는 배포에 특정한 구성이 포함되어 있습니다.

    metadata:
      name: "logs-agent"
    image:
      version: "1.6.1"  # required
    
    clusterName: "ENTER_CLUSTER_NAME"     # Enter the name of your cluster. This information is used to improve the metadata and help with your filtering.
    
    env:
      # ingestionHost is a required field. For example:
      # ingestionHost: "<logs instance>.ingress.us-east.logs.cloud.ibm.com"
      ingestionHost: "" # required
    
      # If you are using private CSE proxy, then use port number "3443"
      # If you are using private VPE Gateway, then use port number "443"
      # If you are using the public endpoint, then use port number "443"
      ingestionPort: "" # required
    
      iamMode: "TrustedProfile"
      # trustedProfileID - trusted profile id - required for iam trusted profile mode
      trustedProfileID: "Profile-yyyyyyyy-xxxx-xxxx-yyyy-zzzzzzzzzzzz" # required if iamMode is set to TrustedProfile
    
    scc:
      # true here enables creation of Security Context Constraints in Openshift
      create: true
    
  2. Yaml 파일의 필드를 사용자 환경에 맞는 값으로 업데이트하십시오.

    Helm 차트 필수 매개 변수
    필드 이름 설명
    image.version 배포할 에이전트 버전 1단계 참조
    clusterName 클러스터 이름 - 모든 로그 줄에 태그 kubernetes.cluster_name 를 도입합니다
    env.ingestionHost IBM Cloud Logs 인스턴스가 로그를 수신하기 위한 공용 또는 사설 진입 엔드포인트
    env.ingestionPort 접근 엔드포인트 포트
    공용 접근 엔드포인트 = 443
    개인 접근 엔드포인트(VPE) = 443
    개인 접근 엔드포인트(CSE) = 3443
    env.iamMode TrustedProfile 또는 1단계에서 선택한 인증 방법에 따라 IAMAPIKey
    env.trustedProfileID iamModeTrustedProfile 인 경우, 신뢰 프로필 ID를 입력하고, 그렇지 않은 경우 입력하지 않아도 됩니다(예: Profile-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx ).
    env.iamEnvironment 올바른 IAM 인증 엔드포인트를 지시합니다. 유효한 값은 Production, PrivateProduction, Custom 입니다. 생략하면 기본값은 Production 입니다.
    env.iamHost iamEnvironmentCustom 인 경우, IAM 호스트를 제공하십시오(예: private.eu-de.iam.cloud.ibm.com). 그렇지 않은 경우에는 필요하지 않습니다.
    scc.create true 로 설정하여 Openshift에서 보안 제약 조건을 생성합니다

3단계. Helm 차트 설치

iamModeIAMAPIKey 으로 사용하는 경우 Kubernetes 시크릿에 logs-agent 이라는 키 이름과 IAM_API_KEY 이라는 아피키가 있어야 합니다. 헬름 설치를 실행할 때 --set secret.iamAPIKey=<your iamAPIKey> 옵션을 포함하여 Helm 차트를 사용하여 비밀을 생성할 수 있습니다. 비밀번호를 수동으로 생성했거나 iamMode=TrustedProfile 를 사용하는 경우에는 이 옵션을 포함시키지 마십시오.

다음 단계를 완료하십시오.

  1. 클러스터에 로그인하십시오.

    Red Hat OpenShift on IBM Cloud IBM Cloud Identity and Access Management (IAM)과 통합되어 있습니다. IAM에서는 IAM ID를 사용하여 사용자 및 서비스를 인증하고 액세스 역할 및 정책으로 조치를 승인할 수 있습니다. Red Hat OpenShift 콘솔을 통해 사용자로 인증하면 IAM ID를 사용하여 명령줄에 로그인하는 데 사용할 수 있는 Red Hat OpenShift 로그인 토큰을 생성합니다. oc login 명령에 사용할 IAM API 키 또는 서비스 ID를 작성하여 클러스터에 로그인을 자동화할 수 있습니다. 더 자세한 정보는 Red Hat OpenShift 클러스터에 액세스하기를 참고하세요.

    예를 들어, 서비스 ID를 사용하여 클러스터에 로그인하기의 단계를 완료하여 클러스터에 로그인합니다.

  2. Helm 의 dry run을 수행하여 Helm 차트에 의해 생성될 자원을 확인합니다.

    iamMode= TrustedProfile 를 사용하는 경우, 전체 명령은 다음과 같습니다

    helm install <install-name> --dry-run oci://icr.io/ibm-observe/logs-agent-helm --version <chart-version> --values <PATH>/logs-values.yaml -n ibm-observe --create-namespace
    

    iamMode= IAMAPIKey 를 사용하는 경우, 전체 명령은 다음과 같습니다

    helm install <install-name> --dry-run oci://icr.io/ibm-observe/logs-agent-helm --version <chart-version> --values <PATH>/logs-values.yaml -n ibm-observe --create-namespace --set secret.iamAPIKey=<APIKey-value> --hide-secret
    

    여기서,

    • <install-name> Helm 의 설치 이름입니다(logs-agent)
    • <chart-version> 헬름 차트의 버전입니다. Helm 차트 버전은 에이전트 이미지 버전과 일치해야 합니다. 더 자세한 정보는 Helm 차트 버전을 참고하세요.
    • <PATH> logs-values.yaml 파일이 있는 디렉토리 경로입니다.
    • <APIKey-value> ServiceID 설정 과 관련된 IAM API 키입니다
    • --hide-secret 를 추가하면 명령 실행 후 출력 데이터에 API 키가 표시되지 않도록 할 수 있습니다.

    헬름 차트의 내용을 로컬에서 확인하고 싶다면, 다음 명령어를 사용하여 헬름 차트를 컴퓨터에 다운로드할 수 있습니다: helm pull oci://icr.io/ibm-observe/logs-agent-helm --version <chart-version>. 다운로드한 tgz 파일에는 차트 내용이 포함되어 있습니다.

    예를 들어, logs-values.yaml 파일이 있는 디렉토리에서 다음 명령을 실행할 수 있습니다

    helm install logs-agent --dry-run oci://icr.io/ibm-observe/logs-agent-helm --version 1.6.0 --values ./logs-values.yaml -n ibm-observe --create-namespace --set secret.iamAPIKey=<secret> --hide-secret
    
  3. 생성할 자원이 확인되면, --dry-run 옵션을 선택하지 않고, Helm 설치를 실행합니다

    iamMode= TrustedProfile 를 사용하는 경우, 전체 명령은 다음과 같습니다

    helm install <install-name>  oci://icr.io/ibm-observe/logs-agent-helm --version <chart-version> --values <PATH>/logs-values.yaml -n ibm-observe --create-namespace
    

    iamMode= IAMAPIKey 를 사용하는 경우, 전체 명령은 다음과 같습니다

    helm install <install-name> oci://icr.io/ibm-observe/logs-agent-helm --version <chart-version> --values <PATH>/logs-values.yaml -n ibm-observe --create-namespace --set secret.iamAPIKey=<APIKey-value>
    

    여기서,

    • <install-name> Helm 의 설치 이름입니다(logs-agent)
    • <chart-version> 헬름 차트의 버전입니다. Helm 차트 버전은 에이전트 이미지 버전과 일치해야 합니다. 더 자세한 정보는 Helm 차트 버전을 참고하세요.
    • <PATH> logs-values.yaml 파일이 있는 디렉토리 경로입니다.
    • <APIKey-value> ServiceID 설정 과 관련된 IAM API 키입니다

4단계. 에이전트가 성공적으로 배포되었는지 확인

에이전트가 배치되면 다음 리소스가 생성되었는지 확인하십시오

  • ibm-observe 네임스페이스.

    클러스터의 네임스페이스를 나열하려면 다음 명령을 실행하십시오

    oc get namespace
    

    ibm-observe 네임스페이스를 검색하기 위해 다음 명령을 실행할 수도 있습니다

    oc get namespace | grep ibm-observe
    
  • ibm-observe 네임스페이스에 있는 구성 맵 logs-agent.

    에이전트 구성 세부 사항을 보려면 다음 명령을 실행하십시오.

    oc get configmap logs-agent -n ibm-observe
    

    다음 명령을 사용할 수도 있습니다:

    oc describe configmaps logs-agent -n ibm-observe
    
  • ibm-observe 라는 이름의 네임스페이스에 있는 데몬셋 logs-agent.

    데몬 세트를 보려면 다음 명령을 실행하세요:

    oc get ds -n ibm-observe
    
  • 다음 명령을 사용하여 에이전트 포드 목록을 검색합니다

    oc get pods -n ibm-observe -o wide
    
    NAME                  READY   STATUS    RESTARTS   AGE    IP              NODE           NOMINATED NODE   READINESS GATES
    logs-agent-4lwvt      1/1     Running   0          2d5h   172.17.61.181   192.168.16.4   <none>           <none>
    logs-agent-g7z87      1/1     Running   0          2d5h   172.17.0.48     192.168.32.4   <none>           <none>
    logs-agent-nw56s      1/1     Running   0          2d5h   172.17.32.232   192.168.0.10   <none>           <none>
    

    READY 열은 모든 포드에 대한 1/1 를 보여주고, STATUSRunning 입니다. 클러스터의 각 노드에 에이전트 포드가 준비되어 있는지 확인하십시오.

    클러스터에서 작업 가능한 인원 수를 확인하려면 다음 명령을 실행하십시오

    oc get nodes
    
    NAME           STATUS   ROLES           AGE   VERSION
    192.168.0.10   Ready    master,worker   8d    v1.20.0+558d959
    192.168.32.4   Ready    master,worker   8d    v1.20.0+558d959
    192.168.16.4   Ready    master,worker   8d    v1.20.0+558d959
    

    이 두 목록의 항목 수는 동일해야 하며, 노드 이름의 IP 주소와 포드 목록의 NODE 열의 값을 일치시킬 수 있습니다.

    노드의 이름이 IP로 지정되어 있지 않은 경우, -o wide 옵션을 추가하고 INTERNAL-IP 열의 값을 비교할 수 있습니다.

    파드의 로그를 보려면 다음을 실행한다. oc logs <POD_NAME>> -n ibm-observe

5단계. 로그가 대상 목적지로 전달되고 있는지 확인

다음 단계를 완료하십시오.

  1. IBM Cloud Logs 의 웹 UI로 이동하세요.

  2. 에이전트가 올바르게 설정되어 있으면 기본 대시보드 보기를 통해 로그를 볼 수 있습니다. 로깅 에이전트 태그는 클러스터 이름을 포함하는 쿠버네티스 객체로 로그 레코드를 기록합니다.

    kubernetes.cluster_name:<CLUSTER_NAME>
    

    IBM Cloud Logs 인스턴스에서 쿼리 kubernetes.cluster_name:<YOUR_CLUSTER_NAME> 를 실행하여 클러스터에서 생성된 로그를 검색할 수 있습니다.