すべてのプロダクト
Search
ドキュメントセンター

:onectlを使用した登録済みクラスターの管理

最終更新日:Nov 14, 2024

onectlは、登録済みクラスター用にDistributed Cloud Container Platform for Kubernetes (ACK One) が提供するコマンドラインツールです。 onectlを使用して、登録済みクラスター、クラスターコンポーネント、およびRAM (Resource Access Management) ユーザーを管理できます。

はじめにonectl

onectlは以下の特徴を提供する。

  • クラスターの管理

    onectlを使用して、登録済みクラスターの作成と削除、登録済みクラスターのステータスの照会、現在のRAMユーザーが管理するすべての登録済みクラスターの照会、外部クラスターの登録済みクラスターへの接続を行うことができます。

  • コンポーネントの管理

    onectlを使用して、コンポーネントのインストール、コンポーネントの更新、インストールされてインストール可能なすべてのコンポーネントの照会、コンポーネントの削除を行うことができます。

  • クラスターコンポーネントのRAMユーザーの管理

    onectlを使用すると、コンポーネントのRAM (Resource Access Management) ユーザーにアクセス許可を付与したり、コンポーネントのRAMユーザーからアクセス許可を取り消したり、コンポーネントのRAMユーザーに付与されたアクセス許可を照会したりできます。

onectlのしくみ

クリックしてonectlの仕組みを表示

外部クラスターとの通信

onectlを使用して登録済みクラスターを外部クラスターに接続すると、onectlは登録済みクラスターエージェントを外部クラスターにデプロイします。 次に、onectlは、次の方法を順番に使用して、対応するkubeconfigファイルを使用して外部クラスターと通信しようとします。

  1. kubeconfigパラメーター

    たとえば、onectlは次のコマンドを実行して ~/.kube/configファイルを使用して外部クラスターと通信し、外部クラスターを登録済みクラスターに接続します。

    onectl cluster connect --cluster-id **** --kubeconfig ~/.kube/config
  2. KUBECONFIG環境変数

    上記のコマンドでkubeconfigファイルを指定していない場合、onectlは環境変数kubeconfigで指定したKUBECONFIGファイルを使用します。

  3. ~/.onectl/config.jsonファイルのKubeconfig Pathパラメーター

    kubeconfigパラメーターとKUBECONFIG環境変数が設定されていない場合、onectlはkubeconfig Pathパラメーターで指定されたKubeconfigファイルを使用します。 このパラメーターの詳細については、「手順2: onectlのRAMユーザーへのアクセス許可の付与」をご参照ください。

  4. ~/.kube/config

    上記のパラメーターが設定されていない場合、onectlは ~/.kube/configファイルを使用します。

登録済みクラスターへの接続

onectlは、登録済みクラスターに接続するときに次の手順を実行します。

  1. 登録済みクラスターの接続情報を取得し、agent.yamlという名前のローカルファイルに保存します。

  2. 接続情報に基づいて、登録されたクラスタエージェントを外部クラスタにデプロイします。

たとえば、onectlは次のコマンドを実行して、登録済みクラスターと外部クラスターを接続します。

onectl cluster connect --cluster-id ****

期待される出力:

Agent information saved as agent.yaml.
Installing ACK One agent using kubeconfig file **** to connect to registered cluster ****.
Confirm? [Y/n]: y
ACK One agent deployed successfully.
Check the running status of deployment ack-cluster-agent to confirm the connection status of registered cluster ****.

クラスターコンポーネントのRAMユーザー

登録済みクラスターで実行されるコンポーネントは、RAMユーザーのAccessKeyペアを使用してクラウド内のリソースにアクセスする必要があります。 たとえば、logtail-dsコンポーネントは、プロジェクトやLogstoreなどのSimple Log Serviceリソースにアクセスする必要があります。 logtail-dsコンポーネントのRAMユーザーのAccessKeyペアは、クラスターのkube-system名前空間のalibaba-addon-Secretという名前のシークレットに格納されます。

  • シークレットがすでにクラスターに存在する場合、onectlはシークレットのAccessKeyペアを使用してクラスターコンポーネントを実行します。

  • シークレットが存在しない場合、onectlは自動的にack-one-user-[cluster id prefix] という名前のRAMユーザーを作成し、クラスターコンポーネントを実行します。 たとえば、シークレットが存在しない場合は、次のコマンドを実行してRAMユーザーを作成し、terway-eniipコンポーネントに必要な権限をRAMユーザーに付与できます。

    onectl ram-user grant --addon terway-eniip

    期待される出力:

    Ram user ack-one-user-ce313528c3 created successfully.
    Ram policy ack-one-registered-cluster-policy-terway-eniip granted to ram user ack-one-user-ce313528c3 successfully.
    Secret alibaba-addon-secret created under namespace kube-system in the cluster, it stores the access key and secret of ram user ack-one-user-ce313528c3.

クラスターコンポーネントのインストール

onectlを使用してクラスターコンポーネントをインストールする場合は、管理者権限が必要です。 onectlは、コンポーネントをインストールする前に、登録されたクラスターエージェントのサービスアカウントに管理者権限があるかどうかを確認します。 サービスアカウントに権限がない場合、onectlは自動的に一時管理ロールを作成し、ロールに管理者権限を付与し、サービスアカウントにロールを割り当てます。 コンポーネントのインストール後、onectlは一時的な管理者ロールを自動的に削除して、サービスアカウントから権限を取り消します。

たとえば、登録されたクラスタエージェントに管理者権限がない場合、次のコマンドを実行してエージェントのサービスアカウントに一時的な権限を付与し、コンポーネントのインストール後に権限を取り消すことができます。

onectl addon install logtail-ds

期待される出力:

Cluster role ack-admin-tmp created.
Cluster role binding ack-admin-binding-tmp created.
Addon logtail-ds, version **** installed.
Cluster role ack-admin-tmp deleted.
Cluster role binding ack-admin-binding-tmp deleted.

次のコードブロックは、一時管理ロールのClusterRoleとClusterRoleBindingを示しています。

クリックして、一時管理ロールのClusterRoleとClusterRoleBindingを表示します

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: ack-admin-tmp
  labels:
    ack/creator: "ack"
rules:
- apiGroups:
  - '*'
  resources:
  - '*'
  verbs:
  - '*'
- nonResourceURLs:
  - '*'
  verbs:
  - '*'
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: ack-admin-binding-tmp
  namespace: kube-system
  labels:
    ack/creator: "ack"
subjects:
- kind: ServiceAccount
  name: ack
  namespace: kube-system
roleRef:
  kind: ClusterRole
  name: ack-admin-tmp
  apiGroup: rbac.authorization.k8s.io

ステップ1: onectlのインストール

  1. 次のコマンドを実行してonectlをインストールします。

    onectlはmacOSとLinuxをサポートしています。

    curl https://ack-one.oss-cn-hangzhou.aliyuncs.com/onectl/get-onectl.sh | bash
  2. 次のコマンドを実行して、onectlがインストールされているかどうかを確認します。

    onectl version

    期待される出力:

    onectl: v1.0.0+774dea0
    	BuildDate: 2023-07-12T06:10:27Z
    	GitCommit: 774dea0f768569821e101dc44d1cb09cef192fe8
    	GitTreeState: clean
    	GoVersion: go1.20.4
    	Compiler: gc
    	Platform: darwin/amd64

ステップ2: onectlのRAMユーザーに権限を付与する

onectlを使用して登録済みクラスターを管理できるのは、RAMユーザーとしてログオンした後です。 onectlはRAMユーザーのAccessKeyペアを使用してAlibaba Cloudサービスにアクセスします。 したがって、RAMユーザーには、クラウドリソースに対する次の権限が必要です。

説明

onectlのRAMユーザーとクラスターコンポーネントのRAMユーザーは異なります。

  • AliyunCSFullAccessシステムポリシーによって提供されるACK管理者権限。

  • AliyunRamFullAccessシステムポリシーによって提供されるRAM管理者権限。

  • AliyunVPCReadOnlyAccessシステムポリシーによって提供されるVPC読み取り専用権限。

次のコマンドを実行して、onectlのRAMユーザーのAccessKeyペアと登録済みクラスターのIDを指定できます。

onectl configure

期待される出力:

Configuring profile default ...
Access Key Id [*********************f7x]:
Access Key Secret [***************************mft]:
Default Kubeconfig Path (default is ~/.kube/config) []:
Saving profile[default] ...
Done.

パラメーター

説明

アクセスキーId

onectlのRAMユーザーのAccessKeyペア。

Access Key Secret

Kubeconfigパス

外部クラスターへのログインに使用されるkubeconfigファイルのパス。 デフォルト値: ~/.kube/config

手順3: 外部クラスターに接続するためのkubeconfigファイルの設定

デフォルトでは、onectlはkubeconfig環境変数で指定されたKUBECONFIGファイルを使用して外部クラスターに接続します。 onectlを使用する前に、KUBECONFIG環境変数を設定する必要があります。 環境変数KUBECONFIGが設定されていない場合、デフォルトで ~/.kube/configファイルが使用されます。

次に何をすべきか

クラスターの管理

onectlを使用して、次の操作を実行できます。

  • 登録済みクラスターを作成して接続します。 cluster-id**** は、登録されたクラスターのIDを示します。 詳細については、「onectlを使用した登録済みクラスターの作成」をご参照ください。

    onectl cluster create --region **** --vpc **** --vswitch **** --name **** --eip true
    onectl cluster connect --cluster-id ****
  • 登録済みクラスターのステータスを照会します。

    onectl cluster describe --cluster-id ****
  • 登録済みのすべてのクラスターを照会します。

    onectl cluster list
  • 登録済みクラスターを削除します。

    onectl cluster delete --cluster-id ****

コンポーネントの管理

onectlを使用して、次の操作を実行できます。**** は、管理するコンポーネントの名前を示します。

  • コンポーネントをインストールします。

    onectl addon install ****
  • コンポーネントを更新します。

    onectl addon upgrade ****
  • コンポーネントの照会

    onectl addon list
  • インストール可能なすべてのコンポーネントを照会します。

    onectl addon catalog
  • コンポーネントをアンインストールします。

    onectl addon uninstall ****

クラスターコンポーネントのRAMユーザーの管理

onectlを使用すると、次の操作を実行できます。**** はコンポーネントの名前を示します。

  • RAMユーザーに権限を付与します。

    onectl ram-user grant --addon ****
  • RAMユーザーの権限を照会します。

    onectl ram-user describe --detail
  • RAMユーザーから権限を取り消します。

    onectl ram-user revoke --addon ****
  • RAMユーザーの権限を更新します。

    onectl ram-user update --addon ****

関連ドキュメント

  • インストールされたコンポーネントを照会する方法の詳細については、「コンポーネントの管理」をご参照ください。

  • 登録済みクラスターのステータスを監視する方法の詳細については、「Observability」をご参照ください。

  • 登録済みクラスターのセキュリティ要件の詳細については、「セキュリティ管理」をご参照ください。