ターミナルから、登録済みクラスターの作成、アドオンのインストール、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 を解決します:
-
--kubeconfigパラメータ。例:onectl cluster connect --cluster-id <cluster-id> --kubeconfig ~/.kube/config -
KUBECONFIG環境変数。 -
~/.onectl/config.jsonのKubeconfig Pathパラメータ (onectl configureで設定)。 -
デフォルトのフォールバックとして
~/.kube/config。
登録済みクラスターへの接続
onectl cluster connect は次の 2 つのステップを実行します:
-
登録済みクラスターの接続情報を取得し、
agent.yamlに保存します。 -
その情報を使用して、外部クラスターに 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 のインストール
-
onectl をインストールします:
curl https://ack-one.oss-cn-hangzhou.aliyuncs.com/onectl/get-onectl.sh | bash -
インストールを確認します:
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.
|
パラメータ |
説明 |
|
|
onectl の RAM ユーザーの AccessKey ID |
|
|
onectl の RAM ユーザーの AccessKey Secret |
|
|
外部クラスターの kubeconfig ファイルへのパス (デフォルト: |
ステップ 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>