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

Container Service for Kubernetes:onectl による登録済みクラスターの管理

最終更新日:Jun 18, 2026

ターミナルから、登録済みクラスターの作成、アドオンのインストール、RAM ユーザー権限の設定を行います。

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

前提条件

次の条件を満たしていることを確認してください:

  • macOS または Linux が動作するターミナル

  • 有効な kubeconfig ファイル (デフォルトパス:~/.kube/config) が設定された外部 Kubernetes クラスター

  • 次のシステムポリシーがアタッチされた RAM ユーザー:

    • AliyunCSFullAccess — ACK 管理者権限

    • AliyunRamFullAccess — RAM 管理者権限

    • AliyunVPCReadOnlyAccess — VPC 読み取り専用権限

  • 該当する RAM ユーザーの AccessKey ID と AccessKey Secret

onectl 用の RAM ユーザーとアドオン用の RAM ユーザーは異なります。onectl はこの RAM ユーザーを使用して Alibaba Cloud API を呼び出します。

仕組み

外部クラスターとの通信

onectl は外部クラスターに ACK One エージェントをデプロイし、次のソースから順に kubeconfig を解決します:

  1. --kubeconfig パラメータ。例:

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

  3. ~/.onectl/config.jsonKubeconfig Path パラメータ (onectl configure で設定)。

  4. デフォルトのフォールバックとして ~/.kube/config

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

onectl cluster connect は次の 2 つのステップを実行します:

  1. 登録済みクラスターの接続情報を取得し、agent.yaml に保存します。

  2. その情報を使用して、外部クラスターに ACK One エージェントをデプロイします。

アドオン用の RAM ユーザー

登録済みクラスター内のアドオンは、Alibaba Cloud リソースにアクセスするために RAM ユーザーの AccessKey ペアを使用します。たとえば、logtail-ds は、プロジェクトや Logstore などの Simple Log Service (SLS) リソースへのアクセスを必要とします。AccessKey ペアは、kube-system namespace の alibaba-addon-secret という名前の Secret に保存されます。

  • Secret が存在する場合、onectl はその中の AccessKey ペアを使用します。

  • Secret が存在しない場合、onectl は ack-one-user-<cluster-id-prefix> という名前の RAM ユーザーを作成し、新しい AccessKey ペアを Secret に保存します。

クラスターアドオンのインストール

アドオンのインストールには、登録済みクラスターの管理者権限が必要です。onectl は、ACK One エージェントの ServiceAccount がこれらの権限を持っているかどうかを確認します:

  • 持っている場合、onectl はアドオンを直接インストールします。

  • 持っていない場合、onectl は一時的な ClusterRole (ack-admin-tmp) と ClusterRoleBinding (ack-admin-binding-tmp) を作成し、管理者権限を付与してアドオンをインストールした後、一時的なロールとバインディングを削除します。

一時的な 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 をインストールします:

    curl https://ack-one.oss-cn-hangzhou.aliyuncs.com/onectl/get-onectl.sh | bash
  2. インストールを確認します:

    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 認証情報の設定

AccessKey ペアとデフォルトの kubeconfig パスを設定します:

onectl configure

想定される出力:

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

パラメータ

説明

Access Key Id

onectl の RAM ユーザーの AccessKey ID

Access Key Secret

onectl の RAM ユーザーの AccessKey Secret

Kubeconfig Path

外部クラスターの kubeconfig ファイルへのパス (デフォルト:~/.kube/config)

ステップ 3:外部クラスターの kubeconfig の設定

onectl は KUBECONFIG 環境変数で指定された kubeconfig ファイルを使用します。KUBECONFIG が設定されていない場合は、~/.kube/config にフォールバックします。

kubeconfig ファイルがデフォルト以外のパスにある場合は、環境変数を設定します:

export KUBECONFIG=/path/to/your/kubeconfig

次のステップ

各コマンドを実行する前に、プレースホルダーを実際の値に置き換えてください。

クラスターの管理

<cluster-id> を登録済みクラスター ID に置き換え、<region-id><vpc-id><vswitch-id><cluster-name> を環境の値に置き換えてください。

  • 登録済みクラスターを作成し、外部クラスターを接続します。詳細については、「onectl を使用して登録済みクラスターを作成する」をご参照ください。

    onectl cluster create --region <region-id> --vpc <vpc-id> --vswitch <vswitch-id> --name <cluster-name> --eip true
    onectl cluster connect --cluster-id <cluster-id>

    cluster connect の想定される出力:

    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 ****.
  • 登録済みクラスターのステータスを確認します:

    onectl cluster describe --cluster-id <cluster-id>
  • すべての登録済みクラスターを一覧表示します:

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

    onectl cluster delete --cluster-id <cluster-id>

アドオンの管理

<component-name> をアドオン名に置き換えてください。

  • アドオンをインストールします。ACK One エージェントに管理者権限がない場合、onectl は一時的に権限を付与し、インストール完了後に取り消します。

    onectl addon install <component-name>

    一時的な権限を使用した場合の出力例:

    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.
  • アドオンをアップグレードします:

    onectl addon upgrade <component-name>
  • インストール済みアドオンを一覧表示します:

    onectl addon list
  • 利用可能なアドオンを一覧表示します:

    onectl addon catalog
  • アドオンをアンインストールします:

    onectl addon uninstall <component-name>

アドオン用 RAM ユーザーの管理

一部のアドオンは、Alibaba Cloud リソースにアクセスするために特定の RAM 権限を必要とします。これらのアドオンをインストールする前に、権限を付与してください。

<component-name> をアドオン名に置き換えてください。

  • アドオンに RAM 権限を付与します。Secret alibaba-addon-secret が存在しない場合、onectl は新しい RAM ユーザーと Secret を作成します。

    onectl ram-user grant --addon <component-name>

    新しい RAM ユーザーを作成した場合の出力例:

    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.
  • RAM ユーザーの権限を確認します:

    onectl ram-user describe --detail
  • RAM ユーザーの権限を更新します:

    onectl ram-user update --addon <component-name>
  • RAM ユーザーの権限を取り消します:

    onectl ram-user revoke --addon <component-name>

関連ドキュメント