Skip to main content
본 한국어 번역은 사용자 편의를 위해 제공되는 기계 번역입니다. 영어 버전과 한국어 버전이 서로 어긋나는 경우에는 언제나 영어 버전이 우선합니다.

OpenShift의 Kubernetes 클러스터 요구사항

기여자

BlueXP를 사용하여 자체 관리되는 OpenShift Kubernetes 클러스터를 추가하고 관리할 수 있습니다. 클러스터를 BlueXP에 추가하려면 다음 요구 사항을 충족해야 합니다.

요구 사항

아스트라 트리덴트

Astra Trident의 최신 버전 4개 중 하나가 필요합니다. BlueXP에서 Astra Trident를 직접 설치하거나 업그레이드할 수 있습니다. 당신은 해야 한다 "사전 요구 사항을 검토합니다" Astra Trident를 설치하기 전

Cloud Volumes ONTAP

Cloud Volumes ONTAP를 클러스터에 대한 백엔드 스토리지로 설정해야 합니다. "구성 단계를 보려면 Astra Trident 문서로 이동합니다".

BlueXP 커넥터

Kubernetes 클러스터를 가져오고 관리하려면 BlueXP Connector가 필요합니다. 새 Connector를 만들거나 클라우드 공급자에 대한 필수 권한이 있는 기존 Connector를 사용해야 합니다.

네트워크 연결

Kubernetes 클러스터와 Connector 간, Kubernetes 클러스터와 Cloud Volumes ONTAP 사이에 네트워크 연결이 필요합니다.

RBAC 권한이 있는 Kubernetes 구성 파일(kubecononfig)

OpenShift 클러스터를 가져오려면 다른 기능을 활성화하는 데 필요한 RBAC 권한이 있는 kubecononfig 파일이 필요합니다. kubecononfig 파일을 생성합니다.

  • 백업 및 복원: 백업 및 복원에는 기본 인증만 필요합니다.

  • 스토리지 클래스 추가: BlueXP를 사용하여 스토리지 클래스를 추가하고 클러스터에서 백엔드의 변경 사항을 모니터링하려면 확장된 인증이 필요합니다.

  • Astra Trident 설치: BlueXP에 Astra Trident를 설치하려면 전체 인증을 제공해야 합니다.

    참고 Astra Trident를 설치할 때 BlueXP는 Astra Trident가 스토리지 클러스터와 통신해야 하는 자격 증명이 포함된 Astra Trident 백엔드 및 Kubernetes 암호를 설치합니다.

kubecononfig 파일을 생성합니다

OpenShift CLI를 사용하여 kubecon무화과 파일을 만들어 BlueXP로 가져옵니다.

단계
  1. 관리 사용자가 있는 공용 URL에서 OC 로그인을 사용하여 OpenShift CLI에 로그인합니다.

  2. 다음과 같이 서비스 계정을 생성합니다.

    1. OC-SERVICE-ACCOUNT.YAML이라는 서비스 계정 파일을 생성합니다.

      필요에 따라 이름 및 네임스페이스를 조정합니다. 여기에서 변경한 경우 다음 단계에서 동일한 변경 사항을 적용해야 합니다.

    oc-service-account.yaml

    +

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: oc-service-account
      namespace: default
    1. 서비스 계정 적용:

      kubectl apply -f oc-service-account.yaml
  3. 인증 요구 사항에 따라 사용자 지정 역할 바인딩을 만듭니다.

    1. OC-clusterrobinding.YAML이라는 ClusterRoleBinding 파일을 만듭니다.

      oc-clusterrolebinding.yaml
    2. 클러스터에 필요한 RBAC 승인을 구성합니다.

      백업/복원

      Kubernetes 클러스터의 백업 및 복원을 위한 기본 인증을 추가하십시오.

      apiVersion: rbac.authorization.k8s.io/v1
      kind: ClusterRole
      metadata:
          name: cloudmanager-access-clusterrole
      rules:
          - apiGroups:
                - ''
            resources:
                - namespaces
            verbs:
                - list
                - watch
          - apiGroups:
                - ''
            resources:
                - persistentvolumes
            verbs:
                - list
                - watch
          - apiGroups:
                - ''
            resources:
                - pods
                - pods/exec
            verbs:
                - get
                - list
                - watch
          - apiGroups:
                - ''
            resources:
                - persistentvolumeclaims
            verbs:
                - list
                - create
                - watch
          - apiGroups:
                - storage.k8s.io
            resources:
                - storageclasses
            verbs:
                - list
          - apiGroups:
                - trident.netapp.io
            resources:
                - tridentbackends
            verbs:
                - list
                - watch
          - apiGroups:
                - trident.netapp.io
            resources:
                - tridentorchestrators
            verbs:
                - get
                - watch
      ---
      apiVersion: rbac.authorization.k8s.io/v1
      kind: ClusterRoleBinding
      metadata:
          name: k8s-access-binding
      roleRef:
        apiGroup: rbac.authorization.k8s.io
        kind: ClusterRole
        name: cloudmanager-access-clusterrole
      subjects:
          - kind: ServiceAccount
            name: oc-service-account
            namespace: default
      스토리지 클래스

      BlueXP를 사용하여 저장소 클래스를 추가하려면 확장된 권한을 추가합니다.

      apiVersion: rbac.authorization.k8s.io/v1
      kind: ClusterRole
      metadata:
          name: cloudmanager-access-clusterrole
      rules:
          - apiGroups:
                - ''
            resources:
                - secrets
                - namespaces
                - persistentvolumeclaims
                - persistentvolumes
                - pods
                - pods/exec
            verbs:
                - get
                - list
                - watch
                - create
                - delete
                - watch
          - apiGroups:
                - storage.k8s.io
            resources:
                - storageclasses
            verbs:
                - get
                - create
                - list
                - watch
                - delete
                - patch
          - apiGroups:
                - trident.netapp.io
            resources:
                - tridentbackends
                - tridentorchestrators
                - tridentbackendconfigs
            verbs:
                - get
                - list
                - watch
                - create
                - delete
                - watch
      ---
      apiVersion: rbac.authorization.k8s.io/v1
      kind: ClusterRoleBinding
      metadata:
          name: k8s-access-binding
      roleRef:
        apiGroup: rbac.authorization.k8s.io
        kind: ClusterRole
        name: cloudmanager-access-clusterrole
      subjects:
          - kind: ServiceAccount
            name: oc-service-account
            namespace: default
      Trident 설치

      전체 관리자 권한을 부여하고 BlueXP에서 Astra Trident를 설치할 수 있습니다.

      apiVersion: rbac.authorization.k8s.io/v1
      kind: ClusterRoleBinding
      metadata:
        name: cloudmanager-access-clusterrole
      roleRef:
        apiGroup: rbac.authorization.k8s.io
        kind: ClusterRole
        name: cluster-admin
      subjects:
      - kind: ServiceAccount
        name: oc-service-account
        namespace: default
    3. 클러스터 역할 바인딩을 적용합니다.

      kubectl apply -f oc-clusterrolebinding.yaml
  4. '<context>'을(를) 설치에 적합한 컨텍스트로 대체하여 서비스 계정 암호를 나열합니다.

    kubectl get serviceaccount oc-service-account --context <context> --namespace default -o json

    출력의 끝은 다음과 유사합니다.

    "secrets": [
    { "name": "oc-service-account-dockercfg-vhz87"},
    { "name": "oc-service-account-token-r59kr"}
    ]

    제탑 배열의 각 요소에 대한 지수는 0으로 시작합니다. 위의 예에서 OC-SERVICE-ACCOUNT-dockercfg-vhz87 인덱스는 0이고 OC-SERVICE-ACCOUNT-TOKEN-r59kr 인덱스는 1입니다. 출력에서 "token"이라는 단어가 포함된 서비스 계정 이름의 인덱스를 기록해 둡니다.

  5. 다음과 같이 kubecononfig를 생성합니다.

    1. create-kubecononfig.sh 파일을 만듭니다. 다음 스크립트 시작 부분의 token_index를 올바른 값으로 바꿉니다.

      create-kubeconfig.sh
      # Update these to match your environment.
      # Replace TOKEN_INDEX with the correct value
      # from the output in the previous step. If you
      # didn't change anything else above, don't change
      # anything else here.
      
      SERVICE_ACCOUNT_NAME=oc-service-account
      NAMESPACE=default
      NEW_CONTEXT=oc
      KUBECONFIG_FILE='kubeconfig-sa'
      
      CONTEXT=$(kubectl config current-context)
      
      SECRET_NAME=$(kubectl get serviceaccount ${SERVICE_ACCOUNT_NAME} \
        --context ${CONTEXT} \
        --namespace ${NAMESPACE} \
        -o jsonpath='{.secrets[TOKEN_INDEX].name}')
      TOKEN_DATA=$(kubectl get secret ${SECRET_NAME} \
        --context ${CONTEXT} \
        --namespace ${NAMESPACE} \
        -o jsonpath='{.data.token}')
      
      TOKEN=$(echo ${TOKEN_DATA} | base64 -d)
      
      # Create dedicated kubeconfig
      # Create a full copy
      kubectl config view --raw > ${KUBECONFIG_FILE}.full.tmp
      
      # Switch working context to correct context
      kubectl --kubeconfig ${KUBECONFIG_FILE}.full.tmp config use-context ${CONTEXT}
      
      # Minify
      kubectl --kubeconfig ${KUBECONFIG_FILE}.full.tmp \
        config view --flatten --minify > ${KUBECONFIG_FILE}.tmp
      
      # Rename context
      kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \
        rename-context ${CONTEXT} ${NEW_CONTEXT}
      
      # Create token user
      kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \
        set-credentials ${CONTEXT}-${NAMESPACE}-token-user \
        --token ${TOKEN}
      
      # Set context to use token user
      kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \
        set-context ${NEW_CONTEXT} --user ${CONTEXT}-${NAMESPACE}-token-user
      
      # Set context to correct namespace
      kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \
        set-context ${NEW_CONTEXT} --namespace ${NAMESPACE}
      
      # Flatten/minify kubeconfig
      kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \
        view --flatten --minify > ${KUBECONFIG_FILE}
      
      # Remove tmp
      rm ${KUBECONFIG_FILE}.full.tmp
      rm ${KUBECONFIG_FILE}.tmp
    2. Kubernetes 클러스터에 적용할 명령을 소스 하십시오.

      source create-kubeconfig.sh
결과

결과를 사용합니다 kubeconfig-sa 파일 - BlueXP에 OpenShift 클러스터를 추가할 수 있습니다.