1.10. クラスタープロキシーアドオンの有効化
一部の環境では、マネージドクラスターはファイアウォールの背後にあり、ハブクラスターから直接アクセスすることはできません。アクセスするには、プロキシーアドオンを設定して、より安全な接続を提供する、マネージドクラスターの kube-api
サーバーにアクセスします。
必要なアクセス: 編集
ハブクラスターとマネージドクラスターのクラスタープロキシーアドオンを設定するには、次の手順を実行します。
次のコマンドを入力して、
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 にあります。次のコマンドを入力して、クラスタープロキシーアドオンをターゲットのマネージドクラスターに適用して、クラスタープロキシーアドオンをターゲットマネージドクラスターにデプロイします。
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
は、クラスタープロキシーアドオンを適用するマネージドクラスターの名前に置き換えます。次の手順を実行してマネージドクラスター
kube-apiserver
にアクセスするようにkubeconfig
ファイルを設定します。マネージドクラスターに有効なアクセストークンを指定します。デフォルトのサービスアカウントがデフォルトの namespace にある場合には、サービスアカウントに対応するトークンを使用できます。
-
マネージドクラスターのコンテキストを使用していることを確認してください。
managed-cluster.kubeconfig
という名前のファイルがマネージドクラスターのkubeconfig
ファイルであると想定します。ヒント:--kubeconfig=managed-cluster.kubeconfig
を指定したコマンドはマネージドクラスターで実行されます。また、この手順で使用するコマンドはすべて、その同じコンソールで実行する必要があります。別のコンソールでコマンドを実行しないでください。 次のコマンドを実行して、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
次のコマンドを実行して、サービスアカウントトークンのシークレットを見つけます。
oc get secret -n default --kubeconfig=managed-cluster.kubeconfig | grep default-token
次のコマンドを実行して、トークンをコピーします。
export MANAGED_CLUSTER_TOKEN=$(kubectl --kubeconfig=managed-cluster.kubeconfig -n default get secret <default-token> -o jsonpath={.data.token} | base64 -d)
default-token
は、シークレット名に置き換えます。
-
マネージドクラスターのコンテキストを使用していることを確認してください。
Red Hat Advanced Cluster Management ハブクラスターで
kubeconfig
ファイルを設定します。次のコマンドを実行して、ハブクラスター上の現在の
kubeconfig
ファイルをエクスポートします。oc config view --minify --raw=true > cluster-proxy.kubeconfig
エディターで
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
は、アクセスするマネージドクラスター名に置き換えます。次のコマンドを入力して、元のユーザー認証情報を削除します。
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
サービスアカウントのトークンを追加します。
sed -i'' -e '$a\ token: '"$MANAGED_CLUSTER_TOKEN"'' cluster-proxy.kubeconfig
次のコマンドを実行して、ターゲットマネージドクラスターのターゲット namespace にあるすべての Pod を一覧表示します。
oc get pods --kubeconfig=cluster-proxy.kubeconfig -n <default>
default
namespace は、使用する namespace に置き換えます。
これで、ハブクラスターはマネージドクラスターの kube-api
と通信するようになりました。