Menu Close
Settings Close

Language and Page Formatting Options

1.10. クラスタープロキシーアドオンの有効化

一部の環境では、マネージドクラスターはファイアウォールの背後にあり、ハブクラスターから直接アクセスすることはできません。アクセスするには、プロキシーアドオンを設定して、より安全な接続を提供する、マネージドクラスターの kube-api サーバーにアクセスします。

必要なアクセス: 編集

ハブクラスターとマネージドクラスターのクラスタープロキシーアドオンを設定するには、次の手順を実行します。

  1. 次のコマンドを入力して、multiclusterhub.yaml ファイルに true の値を指定して enableClusterProxyAddon エントリーを追加し、Red Hat Advanced Cluster Management for Kubernetes ハブクラスターでクラスタープロキシーアドオンを有効にします。

    oc patch -n open-cluster-management multiclusterhub multiclusterhub --type merge -p '{"spec":{"enableClusterProxyAddon":true}}'

    コマンドで示されているように、このファイルは open-cluster-management namespace にあります。

  2. 次のコマンドを入力して、クラスタープロキシーアドオンをターゲットのマネージドクラスターに適用して、クラスタープロキシーアドオンをターゲットマネージドクラスターにデプロイします。

    cat <<EOF | oc apply -f -
    apiVersion: addon.open-cluster-management.io/v1alpha1
    kind: ManagedClusterAddOn
    metadata:
      name: cluster-proxy
      namespace: <target_managed_cluster>
    spec:
      installNamespace: open-cluster-management-agent-addon
    EOF

    target_managed_cluster は、クラスタープロキシーアドオンを適用するマネージドクラスターの名前に置き換えます。

  3. 次の手順を実行してマネージドクラスター kube-apiserver にアクセスするように kubeconfig ファイルを設定します。

    1. マネージドクラスターに有効なアクセストークンを指定します。デフォルトのサービスアカウントがデフォルトの namespace にある場合には、サービスアカウントに対応するトークンを使用できます。

      1. マネージドクラスターのコンテキストを使用していることを確認してください。managed-cluster.kubeconfig という名前のファイルがマネージドクラスターの kubeconfig ファイルであると想定します。ヒント: --kubeconfig=managed-cluster.kubeconfig を指定したコマンドはマネージドクラスターで実行されます。また、この手順で使用するコマンドはすべて、その同じコンソールで実行する必要があります。別のコンソールでコマンドを実行しないでください。
      2. 次のコマンドを実行して、Pod へのアクセス権があるロールをサービスアカウントに追加します。

        oc create role -n default test-role --verb=list,get --resource=pods --kubeconfig=managed-cluster.kubeconfig
        oc create rolebinding -n default test-rolebinding --serviceaccount=default:default --role=test-role --kubeconfig=managed-cluster.kubeconfig
      3. 次のコマンドを実行して、サービスアカウントトークンのシークレットを見つけます。

        oc get secret -n default --kubeconfig=managed-cluster.kubeconfig | grep default-token
      4. 次のコマンドを実行して、トークンをコピーします。

        export MANAGED_CLUSTER_TOKEN=$(kubectl --kubeconfig=managed-cluster.kubeconfig -n default get secret <default-token> -o jsonpath={.data.token} | base64 -d)

        default-token は、シークレット名に置き換えます。

    2. Red Hat Advanced Cluster Management ハブクラスターで kubeconfig ファイルを設定します。

      1. 次のコマンドを実行して、ハブクラスター上の現在の kubeconfig ファイルをエクスポートします。

        oc config view --minify --raw=true > cluster-proxy.kubeconfig
      2. エディターで server ファイルを変更します。この例では、sed の使用時にコマンドを使用します。OSX を使用している場合は、alias sed=gsed を実行します。

        export TARGET_MANAGE_CLUSTER=<cluster1>
        
        export NEW_SERVER=https://$(oc get route -n open-cluster-management cluster-proxy-addon-user -o=jsonpath='{.spec.host}')/$TARGET_MANAGE_CLUSTER
        
        sed -i'' -e '/server:/c\ server: '"$NEW_SERVER"'' cluster-proxy.kubeconfig

        cluster1 は、アクセスするマネージドクラスター名に置き換えます。

      3. 次のコマンドを入力して、元のユーザー認証情報を削除します。

        sed -i'' -e '/client-certificate-data/d' cluster-proxy.kubeconfig
        sed -i'' -e '/client-key-data/d' cluster-proxy.kubeconfig
        sed -i'' -e '/token/d' cluster-proxy.kubeconfig
      4. サービスアカウントのトークンを追加します。

        sed -i'' -e '$a\    token: '"$MANAGED_CLUSTER_TOKEN"'' cluster-proxy.kubeconfig
  4. 次のコマンドを実行して、ターゲットマネージドクラスターのターゲット namespace にあるすべての Pod を一覧表示します。

    oc get pods --kubeconfig=cluster-proxy.kubeconfig -n <default>

    default namespace は、使用する namespace に置き換えます。

これで、ハブクラスターはマネージドクラスターの kube-api と通信するようになりました。