로깅 에이전트 차트를 사용하여 Kubernetes 클러스터에 대한 Helm 배포

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

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

다음 단계를 완료하여 Kubernetes 클러스터에 에이전트를 배포하세요:

시작하기 전에

  • 네임스페이스를 생성하고 에이전트를 배포할 수 있는 권한이 있는 Kubernetes 클러스터에 액세스할 수 있는지 확인합니다.

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

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

    • kubectl 명령을 사용하여 클러스터를 관리하기 위한 Kubernetes CLI. 자세히 보기

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

  • 사용 가능한 상담원 버전을 확인하세요. 자세한 내용은 사용 가능한 상담원 버전 확인하기 를 참조하세요. Helm 차트의 버전은 상담원의 버전과 일치합니다(예를 들어 상담원의 1.3.0 버전을 사용하는 경우에는 해당 버전과 함께 제공되는 Helm 차트와 1.3.0 버전이 있습니다).

1단계. 상담원의 인증 방법 정의하기

상담원의 ID 유형과 인증 방법을 선택합니다. 그런 다음 신뢰할 수 있는 프로필 또는 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
    
  2. yaml 파일의 필드를 사용자 환경에 맞는 값으로 업데이트합니다.

    Helm 차트 필수 매개변수
    필드 이름 설명
    image.version 배포할 에이전트 버전 1단계 참조
    clusterName 클러스터 이름 - 모든 로그 줄에 태그 kubernetes.cluster_name 를 도입합니다
    env.ingestionHost IBM Cloud Logs 인스턴스가 로그를 수신하기 위한 공용 또는 사설 진입 엔드포인트
    env.ingestionPort 접근 엔드포인트 포트
    공용 접근 엔드포인트 = 443
    개인 접근 엔드포인트(VPE) = 443
    개인 접근 엔드포인트(CSE) = 3443
    env.iamMode 1단계 에서 선택한 인증 방법에 따라 TrustedProfile 또는 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). 그렇지 않으면 필요하지 않습니다.

3단계. Helm 차트 설치

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

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

  1. 클러스터에 로그인하십시오. 자세한 내용은 클러스터에 액세스하기를 참조하세요.

  2. Helm 드라이런을 수행하여 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 차트 버전 를 참조하세요.
    • <PATH>logs-values.yaml 파일이 위치한 디렉토리 경로입니다.
    • <APIKey-value> 은 ServiceID 1단계의 설정 에 연결된 IAM 아피키입니다
    • 명령 실행 후 출력 데이터에 API 키가 표시되지 않도록 숨기려면 --hide-secret 을 추가합니다.

    헬름 차트 콘텐츠를 로컬에서 검사하려면 다음 명령을 사용하여 헬름 차트를 컴퓨터에 다운로드할 수 있습니다: 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 차트 버전 를 참조하세요.
    • <PATH>logs-values.yaml 파일이 위치한 디렉토리 경로입니다.
    • <APIKey-value> 은 ServiceID 1단계의 설정 에 연결된 IAM 아피키입니다

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

에이전트가 배포되면 다음 리소스가 생성되는지 확인합니다:

  • ibm-observe 네임스페이스.

    다음 명령을 실행하여 클러스터의 네임스페이스를 나열하고 logger-agent 이 활성 상태로 표시되는지 확인합니다.

    kubectl get namespace
    
  • 네임스페이스 logs-agent 의 구성 맵 ibm-observe 입니다.

    다음 명령을 실행하여 상담원 구성 세부 정보를 확인합니다.

    kubectl get configmap logs-agent -n ibm-observe
    

    사용할 수도 있습니다:

    kubectl describe configmaps logs-agent -n ibm-observe
    
  • 네임스페이스 logs-agent 에 있는 데몬셋 ibm-observe 입니다.

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

    kubectl get ds -n ibm-observe
    
  • 상담원이 시작되었는지 확인합니다:

    kubectl -n ibm-observe get ds logs-agent
    
  • 다음 명령을 사용하여 상담원 포드 목록을 검색합니다:

    kubectl 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 입니다. 클러스터의 각 노드에 에이전트 파드가 준비되었는지 확인합니다.

    클러스터에서 사용 가능한 작업자 수를 확인하려면 다음 명령을 실행하면 됩니다:

    kubectl 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 열의 값을 비교할 수 있습니다.

    파드의 로그를 보려면 kubectl logs <POD_NAME>> -n ibm-observe 을 실행하세요

    배포된 헬름 차트를 확인하려면 다음을 실행하세요 helm list -n ibm-observe

5단계. 로그가 대상 대상에 전달되고 있는지 확인하기

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

  1. IBM Cloud Logs 인스턴스에 대한 웹 UI로 이동합니다..

  2. 상담원이 올바르게 구성되면 기본 대시보드 보기를 통해 로그를 볼 수 있습니다. 로깅 에이전트 태그는 클러스터 이름이 포함된 kubernetes 객체로 로그 레코드에 태그를 지정합니다.

    kubernetes.cluster_name:<CLUSTER_NAME>
    

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