Kubernetes 도구를 사용하여 Azure Arc 지원 데이터 컨트롤러 만들기

데이터 컨트롤러는 Kubernetes 클러스터에 대한 Azure Arc 지원 데이터 서비스를 관리합니다. 이 문서에서는 Kubernetes 도구를 사용하여 데이터 컨트롤러를 만드는 방법을 설명합니다.

데이터 컨트롤러 만들기에는 다음과 같은 높은 수준의 단계가 있습니다.

  1. 네임스페이스 및 부트스트래퍼 서비스 만들기
  2. 데이터 컨트롤러 만들기

참고 항목

단순화를 위해 아래 단계에서는 사용자가 Kubernetes 클러스터 관리자라고 가정합니다. 프로덕션 배포 또는 보다 안전한 환경의 경우 배포 프로세스와 관련된 사용자 및 서비스 계정에 특정 권한만 부여하여 데이터 컨트롤러를 배포할 때 "최소 권한"의 보안 모범 사례를 따르는 것이 좋습니다.

자세한 지침은 최소 권한으로 Arc 지원 데이터 서비스 운영 항목을 참조하세요.

필수 조건

개요 정보는 Azure Arc 지원 데이터 서비스 배포 계획 항목을 검토합니다.

Kubernetes 도구를 사용하여 데이터 컨트롤러를 만들려면 Kubernetes 도구가 설치되어 있어야 합니다. 이 문서의 예제에서는 kubectl을 사용하지만 이와 마찬가지로, 관련 도구와 Kubernetes yaml/json에 익숙하다면 Kubernetes 대시보드, oc 또는 helm 등의 다른 Kubernetes 도구를 사용할 수도 있습니다.

kubectl 도구 설치

네임스페이스 및 부트스트래퍼 서비스 만들기

부트스트래퍼 서비스는 데이터 컨트롤러와 같은 사용자 지정 리소스를 만들기, 편집 및 삭제하기 위해 들어오는 요청을 처리합니다.

bootstrapper-unified.yaml의 복사본을 저장하고 파일의 모든 위치에 있는 자리 표시자 {{NAMESPACE}}를 원하는 네임스페이스 이름(예: arc)으로 바꿉니다.

Important

bootstrapper-unified.yaml 템플릿 파일은 기본적으로 MCR(Microsoft Container Registry)에서 부트스트래퍼 컨테이너 이미지를 풀합니다. 환경에서 Microsoft Container Registry에 직접 액세스할 수 없는 경우 다음을 수행할 수 있습니다.

다음 명령을 실행하여 편집된 파일로 네임스페이스 및 부트스트래퍼 서비스를 만듭니다.

kubectl apply --namespace arc -f bootstrapper-unified.yaml

다음 명령으로 부트스트래퍼 Pod가 실행 중인지 확인합니다.

kubectl get pod --namespace arc -l app=bootstrapper

상태가 실행 중이 아닌 경우 상태가 실행 중이 될 때까지 명령을 몇 번 실행합니다.

데이터 컨트롤러 만들기

이제 데이터 컨트롤러 자체를 만들 준비가 되었습니다.

먼저 일부 설정을 수정할 수 있도록 컴퓨터에 로컬로 템플릿 파일의 사본을 만듭니다.

메트릭 및 로그 대시보드 사용자 이름 및 암호 만들기

파일 맨 위에서 메트릭 및 로그 대시보드에 관리자 권한으로 인증하는 데 사용되는 사용자 이름과 암호를 지정할 수 있습니다. 보안 암호를 선택하고 이러한 권한이 필요한 암호를 사용하여 공유합니다.

Kubernetes 비밀은 Base64로 인코딩한 문자열로, 사용자 이름을 위하여 하나, 암호를 위하여 하나가 저장됩니다.

원하는 사용자 이름과 암호를 Base64로 인코딩하기 위하여 온라인 도구를 사용하거나, 플랫폼에 따라 기본 제공되는 CLI 도구를 사용할 수 있습니다.

PowerShell

[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes('<your string to encode here>'))

#Example
#[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes('example'))

Linux/macOS

echo -n '<your string to encode here>' | base64

#Example
# echo -n 'example' | base64

로그 및 메트릭 대시보드용 인증서 만들기

선택적으로 로그 및 메트릭 대시보드에 대한 SSL/TLS 인증서를 만들 수 있습니다. Kubernetes 네이티브 도구를 배포하는 동안 SSL/TLS 인증서 지정의 지침을 따르세요.

데이터 컨트롤러 구성 편집

필요에 따라 데이터 컨트롤러 구성을 편집합니다.

필수

  • location: 이 항목을, 데이터 컨트롤러 관련 메타데이터가 저장될 Azure 위치로 변경합니다. 사용 가능한 지역 목록을 검토합니다.
  • resourceGroup: Azure Resource Manager에서 데이터 컨트롤러 Azure 리소스를 만들려는 Azure 리소스 그룹입니다. 일반적으로 이 리소스 그룹은 미리 있어야 하지만 데이터를 Azure하는 시점까지는 필요하지 않습니다.
  • subscription: Azure 리소스를 만들려는 구독에 대한 Azure 구독 GUID입니다.

기본값을 검토하고 해당하면 변경 권장

  • storage..className: 데이터 컨트롤러 데이터와 로그 파일에 사용할 스토리지 클래스입니다. Kubernetes 클러스터에서 사용 가능한 스토리지 클래스를 확실히 모르겠으면 kubectl get storageclass 명령을 실행합니다. 기본값은 default로, 스토리지 클래스가 있고 이름이 default이며 기본값 스토리지 클래스가 없다고 가정합니다. 참고: 원하는 스토리지 클래스에 대해 데이터에 대해 하나, 로그에 대해 하나 등 두 className 설정을 설정합니다.
  • serviceType: LoadBalancer를 사용하지 않는 경우 서비스 유형을 NodePort로 변경합니다.
  • 보안 Azure Red Hat OpenShift 또는 Red Hat OpenShift 컨테이너 플랫폼의 경우 데이터 컨트롤러 yaml 파일에서 security: 설정을 다음 값으로 바꿉니다.
  security:
    allowDumps: false
    allowNodeMetricsCollection: false
    allowPodMetricsCollection: false

선택 사항

  • name: 데이터 컨트롤러의 기본 이름은 arc이지만 원하는 경우 변경할 수 있습니다.
  • displayName: 이 값을 파일 맨 위의 이름 특성과 동일한 값으로 설정합니다.
  • logsui-certificate-secret: 로그 UI 인증서에 대해 Kubernetes 클러스터에 만들어진 비밀의 이름입니다.
  • metricsui-certificate-secret: 메트릭 UI 인증서에 대해 Kubernetes 클러스터에 만들어진 비밀의 이름입니다.

다음 예제는 완료된 데이터 컨트롤러 yaml 파일을 보여 줍니다.

apiVersion: v1
data:
  password: <your base64 encoded password>
  username: <your base64 encoded username>
kind: Secret
metadata:
  name: metricsui-admin-secret
type: Opaque

---

apiVersion: v1
data:
  password: <your base64 encoded password>
  username: <your base64 encoded username>
kind: Secret
metadata:
  name: logsui-admin-secret
type: Opaque

---

apiVersion: arcdata.microsoft.com/v5
kind: DataController
metadata:
  name: arc-dc
spec:
  credentials:
    dockerRegistry: arc-private-registry # Create a registry secret named 'arc-private-registry' if you are going to pull from a private registry instead of MCR.
    serviceAccount: sa-arc-controller
  docker:
    imagePullPolicy: Always
    imageTag: v1.29.0_2024-04-09
    registry: mcr.microsoft.com
    repository: arcdata
  infrastructure: other # Must be a value in the array [alibaba, aws, azure, gcp, onpremises, other]
  security:
    allowDumps: true # Set this to false if deploying on OpenShift
    allowNodeMetricsCollection: true # Set this to false if deploying on OpenShift
    allowPodMetricsCollection: true # Set this to false if deploying on OpenShift
  services:
  - name: controller
    port: 30080
    serviceType: LoadBalancer # Modify serviceType based on your Kubernetes environment
  settings:
    ElasticSearch:
      vm.max_map_count: "-1"
    azure:
      connectionMode: indirect # Only indirect is supported for Kubernetes-native deployment for now.
      location: eastus # Choose a different Azure location if you want
      resourceGroup: <your resource group>
      subscription: <your subscription GUID>
    controller:
      displayName: arc-dc
      enableBilling: true
      logs.rotation.days: "7"
      logs.rotation.size: "5000"
  storage:
    data:
      accessMode: ReadWriteOnce
      className: default # Use default configured storage class or modify storage class based on your Kubernetes environment
      size: 15Gi
    logs:
      accessMode: ReadWriteOnce
      className: default # Use default configured storage class or modify storage class based on your Kubernetes environment
      size: 10Gi

편집한 파일을 로컬 컴퓨터에 저장하고 다음 명령을 실행하여 데이터 컨트롤러를 만듭니다.

kubectl create --namespace arc -f <path to your data controller file>

#Example
kubectl create --namespace arc -f data-controller.yaml

만들기 상태 모니터링

컨트롤러 만들기를 완료하려면 몇 분 정도 걸립니다. 다음 명령을 사용하여 다른 터미널 창에서 진행률을 모니터링할 수 있습니다.

kubectl get datacontroller --namespace arc
kubectl get pods --namespace arc

아래와 같은 명령을 실행하여 특정 Pod의 생성 상태 또는 로그를 확인할 수도 있습니다. 이 기능은 문제를 해결하는 데 특히 유용합니다.

kubectl describe pod/<pod name> --namespace arc
kubectl logs <pod name> --namespace arc

#Example:
#kubectl describe pod/control-2g7bl --namespace arc
#kubectl logs control-2g7b1 --namespace arc

만들기 문제 해결

만들기와 관련한 문제가 발생하는 경우 문제 해결 가이드를 참조하세요.