1.10. クラスタープロキシーアドオンの有効化
一部の環境では、マネージドクラスターはファイアウォールの背後にあり、ハブクラスターから直接アクセスすることはできません。アクセスするには、プロキシーアドオンを設定して、より安全な接続を提供する、マネージドクラスターの kube-api
サーバーにアクセスします。
必要なアクセス: 編集
ハブクラスターとマネージドクラスターのクラスタープロキシーアドオンを設定するには、次の手順を実行します。
- Red Hat Advanced Cluster Management for Kubernetes ハブクラスターでクラスタープロキシーアドオンを有効にします。詳細は、高度な設定 を参照してください。
次の手順を実行してマネージドクラスター
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 export CADATA=$(oc get configmap -n openshift-service-ca kube-root-ca.crt -o=go-template='{{index .data "ca.crt"}}' | base64) sed -i'' -e '/certificate-authority-data:/c\ certificate-authority-data: '"$CADATA"'' 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
と通信するようになりました。