Skip to main content
日本語は機械翻訳による参考訳です。内容に矛盾や不一致があった場合には、英語の内容が優先されます。

OpenShiftでのKubernetesクラスタの要件

共同作成者

BlueXPを使用して、自己管理型OpenShift Kubernetesクラスタを追加および管理できます。BlueXPにクラスタを追加する前に'次の要件が満たされていることを確認します

要件

Astra Trident

最新バージョンの 4 つの Astra Trident が必要です。Astra Tridentは、BlueXPから直接インストールまたはアップグレードできます。お勧めします "前提条件を確認します" Astra Trident をインストールする前に、

Cloud Volumes ONTAP

クラスタのバックエンドストレージとして Cloud Volumes ONTAP が設定されている必要があります。 "設定手順については、 Astra Trident のドキュメントを参照してください"

BlueXPコネクタ

Kubernetesクラスタをインポートおよび管理するには、BlueXPコネクタが必要です。クラウドプロバイダに必要な権限を持つ新しいコネクタを作成するか、既存のコネクタを使用する必要があります。

ネットワーク接続

Kubernetes クラスタとコネクタの間、および Kubernetes クラスタと Cloud Volumes ONTAP の間にはネットワーク接続が必要です。

RBAC許可を使用したKubernetes構成ファイル(kubeconfig)

OpenShiftクラスタをインポートするには、さまざまな機能を有効にするために必要なRBAC許可を含むkubeconfigファイルが必要です。 kubeconfigファイルを作成します

  • バックアップとリストア:バックアップとリストアに必要なのは基本的な許可のみです。

  • ストレージクラスの追加:BlueXPを使用してストレージクラスを追加し、バックエンドへの変更がないかクラスタを監視するには、拡張された許可が必要です。

  • Install Astra Trident:BlueXPがAstra Tridentをインストールするための完全な権限を付与する必要があります。

    メモ Astra Tridentをインストールすると、BlueXPはAstra Tridentバックエンドと、Astra Tridentのクレデンシャルを含むKubernetesシークレットをインストールして、ストレージクラスタと通信する必要があります。

kubeconfigファイルを作成します

OpenShift CLIを使用して、BlueXPにインポートするkubeconfigファイルを作成します。

手順
  1. パブリックURLにある「OC login」を使用して、管理ユーザとともに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-clusterrolebinding.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"}
    ]

    'ecsレット ' 配列内の各要素のインデックスは 0 から始まります上の例では、「OC-service-account-dockercfg-vhz87」のインデックスは0になり、「OC-service-account-token-r59kr」のインデックスは1になります。出力で、 "token" という単語が含まれるサービスアカウント名のインデックスをメモしてください。

  5. 次のように kubeconfig を生成します。

    1. 「 create-kubeconfig .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 ファイルを使用して、OpenShiftクラスタをBlueXPに追加します。