IBM Cloud Kubernetes Service 로그 데이터를 IBM Cloud Logs로 전송합니다

이 튜토리얼에서는 IBM Cloud® Kubernetes Service 직접 로그를 전송하도록 IBM Cloud Logs 설정합니다. 이러한 로그는 문제를 해결하고 Kubernetes 클러스터 및 앱의 상태와 성능을 개선하는 데 도움이 됩니다.

목표

이 튜토리얼에서는 이렇게 합니다:

  • 기존 로깅 에이전트 클러스터에 IBM Cloud Kubernetes Service를 배포합니다.

  • 로그 데이터가 IBM Cloud Logs 인스턴스로 흘러가는지 확인합니다.

시작하기 전에

시작하기 전에 전제 조건이 충족되었는지 확인하세요.

IBM Cloud CLI, kubectl, jqyq 을 설치하는 대신 IBM Cloud 셸를 사용하는 방법이 있습니다

클러스터에 연결

IBM Cloud Kubernetes Service 클러스터에 연결합니다. 클러스터에 연결하면 클러스터에서 kubectl 명령을 실행할 수 있습니다.

  1. IBM Cloud 계정에 로그인하십시오. 페더레이션 ID를 사용하는 경우 --sso 옵션을 포함하세요.

    ibmcloud login
    
  2. IBM Cloud Kubernetes Service CLI 플러그인 설치

    ibmcloud plugin install ks
    
  3. 사용 가능한 클러스터를 나열하고 연결할 클러스터를 메모해 두세요.

    ibmcloud ks clusters
    
  4. 클러스터에 연결합니다. <cluster_name> 을 클러스터 이름으로 바꿉니다.

    ibmcloud ks cluster config --cluster <cluster_name>
    
  5. 모든 네임스페이스에서 실행 중인 모든 파드를 나열하여 클러스터에 연결되어 있고 kubectl 명령을 실행할 수 있는지 확인합니다.

    kubectl get pods --all-namespaces
    

API 키 만들기

로깅 에이전트를 데몬셋으로 프로비저닝하기 전에 IAM API 키와 로깅 수집 엔드포인트가 필요합니다. IBM Cloud CLI를 사용하여 이 정보를 얻습니다.

먼저 서비스 ID를 생성하고 API 키를 받습니다.

  1. 다음 명령을 실행하여 서비스 ID 를 생성합니다.

    ibmcloud iam service-id-create kubernetes-logs-agent --description "Service ID for sending logs from IKS"
    
  2. 다음 명령을 실행하여 생성된 서비스 ID에 IBM Cloud Logs의 Sender 역할을 부여합니다.

    ibmcloud iam service-policy-create kubernetes-logs-agent --service-name logs --roles Sender
    
  3. 다음 명령을 실행하여 IAM API 키를 만듭니다. 필요한 경우 키 이름(kubernetes-logs-agent-apikey)과 설명(--d)을 사용자 지정할 수 있습니다.

    ibmcloud iam service-api-key-create kubernetes-logs-agent-apikey kubernetes-logs-agent --description "API key for sending logs to the IBM Cloud Logs service"
    

    API 키는 다음 출력에 API Key 으로 반환됩니다:

    ID            ApiKey-xxxxxxxx-b815-46c7-bc9f-516115bc31c6
    Name          kubernetes-logs-agent-apikey
    Description   API key for sending logs to the IBM Cloud Logs service
    Created At    2024-09-18T17:17+0000
    API Key       <apikey is displayed here>
    Locked        false
    

참고:

  • API 키를 만들 때마다 새로운 IAM 비밀 번호가 생성됩니다.

  • API 키에는 민감한 정보가 포함되어 있으므로 안전하게 보관해야 합니다.

로깅 엔드포인트 결정하기

두 번째로 필요한 정보는 IBM Cloud Logs 인스턴스에 대한 수집 엔드포인트입니다. 이 명령어를 사용하여 URL 검색하십시오:

ibmcloud resource service-instances --service-name logs --long --output JSON | jq '[.[] | {name: .name, id: .id, region: .region_id, ingestion_endpoint: .extensions.external_ingress}]'

엔드포인트는 다음과 유사합니다:

ingestion_endpoint: 3a622101-7521-4002-bf91-8c26e17eedcf.ingress.eu-de.logs.cloud.ibm.com

상담원 YAML 파일 만들기

이 단계에서는 에이전트 데몬 세트를 구성하는 데 사용되는 YAML 파일을 만듭니다.

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

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

    metadata:
      name: "logs-agent"
    image:
      version: "1.4.0"  # required
    
    clusterName: ""     # 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 파일의 필드를 사용자 환경에 맞는 값으로 업데이트합니다.

데몬 세트 배포

API 키, 엔드포인트 URL, YAML 파일을 사용하여 에이전트를 클러스터에 배포합니다.

  1. helm registry login 명령을 실행하여 Helm 레지스트리에 로그인합니다:

    helm registry login -u iambearer -p $(ibmcloud iam oauth-tokens --output json | jq -r .iam_token | cut -d " " -f2) icr.io
    

    Windows Windows PowerShell 사용자는 다음 명령을 대신 사용해야 합니다

    helm registry login -u iambearer -p ((ibmcloud iam oauth-tokens --output json | ConvertFrom-Json).iam_token -replace 'Bearer ', '') icr.io
    

    자세한 내용은 ' ' Container Registry'에서 ' Helm 차트 사용: 다른 레지스트리 또는 ' Helm 리포지토리에서 차트 가져오기 을 참조하세요.

  2. 에이전트를 배포합니다.

    서비스 ID API 키(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 ' 1단계의 설정'과 연결된 IAM 아피키입니다

    신뢰할 수 있는 프로필을 사용하여 상담원을 배포할 수도 있습니다. 자세한 내용은 Helm 차트를 사용하여 Kubernetes 클러스터용 로깅 에이전트 배포하기를 참조한다.

로그가 전송되고 있는지 확인

IBM Cloud® Kubernetes Service 로그가 IBM Cloud Logs로 성공적으로 흘러가도록 하려면 다음 단계를 수행하세요:

  1. IBM Cloud Logs UI 에 액세스하고 라이브테일 아이콘 Livetail 를 클릭합니다.

  2. Start 을 클릭하면 실시간으로 도착하는 로그를 볼 수 있습니다.

kube-system 애플리케이션에서 로그 데이터의 연속적인 흐름을 볼 수 있어야 합니다. 이 로그는 클러스터에서 가져온 것입니다.