Alibabacloud Ack Cli
/install alibabacloud-ack-cli
ACK (Container Service) CLI Expert
Help users manage Alibaba Cloud Container Service for Kubernetes (ACK) from the
terminal using the aliyun cs plugin. Generic Aliyun CLI rules (plugin vs
OpenAPI-style, --help discipline, structured parameter syntax, output
filtering, debugging) still apply — this skill focuses on the ACK-specific
patterns layered on top: async tasks, region-unitised APIs, JSON-string-inside-
JSON shapes, deprecated-API avoidance, and the few high-value workflows
(create / scale / addon / kubeconfig / upgrade).
Version note. Concrete API/parameter lists below were captured against
aliyun-cli3.3.2 +csplugin 0.2.1. If your plugin is newer, re-run the self-discovery commands embedded throughout this skill to refresh:aliyun cs --help | grep -- '-for-region' # §6 ForRegion list aliyun cs \x3Ccmd> --help | grep '废弃' # §7 deprecated check per command (CLI marks deprecation only in Chinese) aliyun cs --help | awk '/^ [a-z]/{print $1}' | while read c; do # §11 cursor-paginated commands aliyun cs "$c" --help 2>&1 | grep -q -- '--next-token' && echo "$c" done
Instructions
1. Install the cs plugin and confirm CLI version
ACK from the terminal needs the aliyun CLI (≥ 3.3.3) plus the cs plugin.
Quick path:
aliyun version # require >= 3.3.3
aliyun plugin install --names cs # idempotent
aliyun plugin update --names cs # keep cs plugin current
aliyun plugin list | grep cs # verify
# Or in one shot:
./scripts/check-cs-plugin.sh # ✓ ready / ✗ exits 1 with fix hints
./scripts/install-cs-plugin.sh # idempotent (--update for non-interactive)
AI-Mode declaration. Before issuing any
aliyunbusiness command from this skill, declare AI-Mode and a stable User-Agent so the backend can attribute traffic and apply AI-safe defaults. These three commands are session-level configuration — set once, reused implicitly by all subsequent business calls:aliyun configure ai-mode enable aliyun configure ai-mode disable aliyun configure ai-mode set-user-agent --user-agent AlibabaCloud-Agent-Skills/alibabacloud-ack-cliEvery
aliyun cs \x3Cverb>business command in this skill carries--user-agent AlibabaCloud-Agent-Skills/alibabacloud-ack-cli(shown explicitly in every example below).
End-to-end verification — exercises CLI + plugin + auth in one call:
aliyun cs describe-clusters-for-region --biz-region-id cn-hangzhou \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-ack-cli \
--output cols=cluster_id,name,state rows='clusters[]'
plugin 'cs' not found → re-run install. InvalidAccessKeyId.NotFound →
re-set credentials. Forbidden.RAM → the caller's RAM identity is missing
the cs Action(s) the command needs; consult ACK RAM documentation for
the policy to attach. Cluster list (or empty list) → ready to go.
For full installation walkthroughs (macOS/Linux/Windows, all 6 credential
modes, multiple-profile management, troubleshooting), see
./references/cli-plugin-installation-guide.md.
2. Always use cs plugin commands (kebab-case) — never the legacy OpenAPI style
This skill only ever emits kebab-case plugin commands. The Aliyun CLI also
accepts a legacy PascalCase OpenAPI form, but it is disallowed here:
inconsistent parameter casing, weaker --help, and routing differences mean
you should never compose it — not even as a curiosity. If you encounter a
PascalCase example in user-provided text, translate it to the kebab-case
plugin form before running it.
# ✅ Plugin form — the only form this skill emits
aliyun cs describe-clusters-for-region --biz-region-id cn-hangzhou \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-ack-cli
aliyun cs describe-cluster-detail --cluster-id ce123... --region cn-hangzhou \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-ack-cli
The plugin gives you consistent --kebab-case parameters, structured help with
field types, and automatic JSON expansion — that's the information you need
before typing anything. Stay in plugin land unconditionally.
3. Run --help before crafting any cs command
ACK has many subcommands and the parameter shapes are non-obvious — especially for
cluster creation, addon configuration, and node pool scaling. Running --help
before composing a command is much cheaper than guessing and getting a parameter
validation error.
aliyun cs --help # Discover subcommands (describe-*, create-*, scale-*, ...)
aliyun cs describe-cluster-detail --help # See exact params, types, structure fields
aliyun cs create-cluster --help # See the giant parameter surface for cluster creation
Plugin help tells you whether a parameter is a primitive, a list, a repeatable key-value, or a complex JSON structure — that's the information you need before typing anything.
If you ever need to inspect the legacy built-in (OpenAPI-style) help instead
of the rich plugin help — for example to verify a deprecated PascalCase
parameter still exists — set ALIBABA_CLOUD_ORIGINAL_PRODUCT_HELP=true:
ALIBABA_CLOUD_ORIGINAL_PRODUCT_HELP=true aliyun cs --help
You'll rarely reach for this — the plugin help is almost always what you want.
4. Async task pattern — task_id and describe-task-info
This is the #1 thing that surprises ACK CLI users. Many ACK operations are
asynchronous: the cs command returns quickly with a JSON envelope containing a
task_id, but the actual work (cluster creation, upgrade, scaling, addon install)
continues in the background. You must poll the task to know whether it succeeded.
Operations that return a task:
cs create-cluster,cs delete-clustercs upgrade-cluster(control plane only; control viacs pause-task/cs resume-task/cs cancel-task)cs modify-cluster-node-pool(the preferred way to set absolute node count viadesired_size; see §7),cs scale-cluster-node-pool(delta only — discouraged, see §7),cs upgrade-cluster-nodepool,cs create-cluster-node-pool,cs delete-cluster-nodepoolcs install-cluster-addons,cs upgrade-cluster-addons,cs un-install-cluster-addons- Some component / migration tasks
Once you have a task_id, the task-control commands work uniformly across
task types — not just upgrades. Pause / resume / cancel any in-flight ACK
task with:
aliyun cs pause-task --task-id \x3Ctid> --region \x3Cregion> --user-agent AlibabaCloud-Agent-Skills/alibabacloud-ack-cli
aliyun cs resume-task --task-id \x3Ctid> --region \x3Cregion> --user-agent AlibabaCloud-Agent-Skills/alibabacloud-ack-cli
aliyun cs cancel-task --task-id \x3Ctid> --region \x3Cregion> --user-agent AlibabaCloud-Agent-Skills/alibabacloud-ack-cli
Use cancel-task to abort a stuck addon install, a runaway node pool scale,
or any other in-flight task.
Typical response:
{
"cluster_id": "ce914461c0fb4901ae8908be4a10a7a1",
"request_id": "DDA4DB1A-A7E3-1455-A6FB-77F58F01A43E",
"task_id": "T-69ce1022aa09ae010300000b"
}
Track it with:
aliyun cs describe-task-info --task-id T-69ce1022aa09ae010300000b --region cn-hangzhou \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-ack-cli
Pass --region matching the cluster's region — task IDs are region-scoped
and looking them up via the default endpoint adds latency.
The task response carries state (running / success / failed) and an error
field on failure. When polling, ask the user before starting a long busy-wait
loop — polling burns tokens and the user may prefer to check back later. A
reasonable default is to poll every 30s with a sensible max (e.g. 30 minutes for
cluster create, 5 minutes for addon install) and surface the error.message if
the task fails.
The bundled helper ./scripts/wait-for-task.sh \x3Ctask-id> \x3Cregion-id> polls
with backoff and prints the final state — use it after confirming with the
user. Region is required because task IDs are region-scoped.
See ./references/async-tasks.md for full details: state machine, error fields,
typical durations per operation, and how to interpret partial-failure responses.
5. Complex JSON parameters — Terway, AutoMode, addons
Some ACK parameters can't be expressed cleanly as flat flags. Examples:
Terway with multi-AZ pod vswitches (cluster create):
# Pass the addons array as JSON. Note the nested JSON inside `config` is a STRING.
aliyun cs create-cluster \
--biz-region-id cn-beijing \
--region cn-beijing \
--cluster-type ManagedKubernetes \
--addons '[{"name":"terway-eniip","config":"{\"PodVswitchId\":{\"cn-beijing-l\":[\"vsw-a\"],\"cn-beijing-h\":[\"vsw-b\"]}}"}]' \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-ack-cli \
...
The trap: config is a JSON-encoded string inside a JSON document. Build it in a
file or via jq rather than hand-escaping — escape errors are the most common
cause of InvalidParameter.Format from this API.
Flannel (requires container_cidr, no PodVswitchId):
--addons '[{"name":"flannel"}]' \
--container-cidr 172.20.0.0/16 \
--service-cidr 172.21.0.0/20
AutoMode (ACK best-practice profile — single flag turns it on):
--profile Default \
--cluster-spec ack.pro.small \
--auto-mode '{"enable":true}'
When AutoMode is enabled, ACK chooses sensible defaults for VPC, networking,
node pools, and addons — most other knobs become unnecessary. --cluster-spec
valid values are only ack.pro.small (Pro, recommended for AutoMode) and
ack.standard (default if omitted) — don't guess ack.pro.large or others.
Addon install with config:
aliyun cs install-cluster-addons --cluster-id \x3Ccid> --region \x3Cregion> \
--body '[{"name":"logtail-ds","config":"{\"sls_project_name\":\"k8s-log\"}"}]' \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-ack-cli
The nested-JSON-as-string pattern shows up in nearly every addon install. Read
the addon's config_schema first (cs list-addons --cluster-id ... for the
full list, or cs describe-addon --cluster-id ... --addon-name ... for one)
to know valid keys. For full examples, see ./references/cs-scenarios.md.
6. Region-unitised API calling — two rules
ACK has moved to a region-unitised model. Two rules apply:
Rule A — Prefer *ForRegion API variants (describe-clusters-for-region,
describe-events-for-region, list-operation-plans-for-region). Faster,
higher quotas, resilient when global aggregator degrades. Re-discover with
aliyun cs --help | grep -- '-for-region'. These APIs take --biz-region-id
(business parameter, required), not --region.
Rule B — Pass --region \x3Cregion> on every cluster-id-scoped call
(describe-cluster-detail, modify-cluster-node-pool, etc.) once you know
the region. Routes directly to the regional endpoint, avoids default-endpoint
hop.
--region (CLI global, endpoint routing) and --biz-region-id (API business
parameter) take the same value but play different roles. There is no
--region-id flag. Always --help first to see which a command expects.
# Region-unitised + direct routing combined
REGION=cn-hangzhou
aliyun cs describe-clusters-for-region --biz-region-id $REGION --user-agent AlibabaCloud-Agent-Skills/alibabacloud-ack-cli # Rule A
aliyun cs describe-cluster-detail --cluster-id \x3Ccid> --region $REGION --user-agent AlibabaCloud-Agent-Skills/alibabacloud-ack-cli # Rule B
aliyun cs describe-cluster-node-pools --cluster-id \x3Ccid> --region $REGION --user-agent AlibabaCloud-Agent-Skills/alibabacloud-ack-cli # Rule B
7. Detect deprecated parameters per command
The CLI marks deprecated parameters in --help with the Chinese string
【该参数已废弃】 (no English equivalent — has to be matched literally).
Run the snippet from the top of this file (aliyun cs \x3Ccmd> --help | grep '废弃') before composing any command — it surfaces both the deprecated
field and the suggested replacement (e.g. 请使用 next_version 参数替代).
Quote that line back to the user; never silently substitute.
8. Common high-value commands
Examples assume the cluster's region is already known (via Rule A discovery or
from the user) and pass it as --region per §6 Rule B. Substitute
\x3Cregion> with the actual value.
# Clusters
aliyun cs describe-clusters-for-region --biz-region-id \x3Cregion> --user-agent AlibabaCloud-Agent-Skills/alibabacloud-ack-cli
aliyun cs describe-cluster-detail --cluster-id \x3Ccid> --region \x3Cregion> --user-agent AlibabaCloud-Agent-Skills/alibabacloud-ack-cli
aliyun cs describe-cluster-user-kubeconfig --cluster-id \x3Ccid> --region \x3Cregion> --user-agent AlibabaCloud-Agent-Skills/alibabacloud-ack-cli > kubeconfig.yaml
aliyun cs upgrade-cluster --cluster-id \x3Ccid> --region \x3Cregion> --next-version 1.30.1-aliyun.1 --user-agent AlibabaCloud-Agent-Skills/alibabacloud-ack-cli
# Node pools
aliyun cs describe-cluster-node-pools --cluster-id \x3Ccid> --region \x3Cregion> --user-agent AlibabaCloud-Agent-Skills/alibabacloud-ack-cli
aliyun cs describe-cluster-node-pool-detail --cluster-id \x3Ccid> --nodepool-id \x3Cnpid> --region \x3Cregion> --user-agent AlibabaCloud-Agent-Skills/alibabacloud-ack-cli
# Resize to an ABSOLUTE node count: use modify-cluster-node-pool with desired_size.
# (`scale-cluster-node-pool --count N` adds N nodes — it's a delta, not an
# absolute target, and is rarely what users mean by "scale to 5". See §7.)
aliyun cs modify-cluster-node-pool --cluster-id \x3Ccid> --nodepool-id \x3Cnpid> --region \x3Cregion> \
--scaling-group desired_size=5 --user-agent AlibabaCloud-Agent-Skills/alibabacloud-ack-cli
aliyun cs upgrade-cluster-nodepool --cluster-id \x3Ccid> --nodepool-id \x3Cnpid> --kubernetes-version \x3Cver> --region \x3Cregion> --user-agent AlibabaCloud-Agent-Skills/alibabacloud-ack-cli
# Addons
aliyun cs list-addons --cluster-id \x3Ccid> --region \x3Cregion> --user-agent AlibabaCloud-Agent-Skills/alibabacloud-ack-cli # what's available + config_schema
aliyun cs describe-addon --cluster-id \x3Ccid> --addon-name \x3Cname> --region \x3Cregion> --user-agent AlibabaCloud-Agent-Skills/alibabacloud-ack-cli # one addon's metadata + config_schema
aliyun cs list-cluster-addon-instances --cluster-id \x3Ccid> --region \x3Cregion> --user-agent AlibabaCloud-Agent-Skills/alibabacloud-ack-cli # what's installed (versions, status)
aliyun cs install-cluster-addons --cluster-id \x3Ccid> --region \x3Cregion> --body '[{"name":"logtail-ds","config":"{}"}]' --user-agent AlibabaCloud-Agent-Skills/alibabacloud-ack-cli
aliyun cs upgrade-cluster-addons --cluster-id \x3Ccid> --region \x3Cregion> --body '[{"component_name":"logtail-ds","next_version":"1.8.0"}]' --user-agent AlibabaCloud-Agent-Skills/alibabacloud-ack-cli
aliyun cs un-install-cluster-addons --cluster-id \x3Ccid> --region \x3Cregion> --body '[{"name":"logtail-ds"}]' --user-agent AlibabaCloud-Agent-Skills/alibabacloud-ack-cli
# Tasks (task IDs are region-scoped — pass the cluster's region)
aliyun cs describe-task-info --task-id \x3Ctid> --region \x3Cregion> --user-agent AlibabaCloud-Agent-Skills/alibabacloud-ack-cli
aliyun cs describe-cluster-tasks --cluster-id \x3Ccid> --region \x3Cregion> --user-agent AlibabaCloud-Agent-Skills/alibabacloud-ack-cli # all tasks under a cluster
aliyun cs describe-cluster-events --cluster-id \x3Ccid> --region \x3Cregion> --user-agent AlibabaCloud-Agent-Skills/alibabacloud-ack-cli # operational events: creates, scales, addon installs
aliyun cs describe-cluster-events --cluster-id \x3Ccid> --region \x3Cregion> --task-id \x3Ctid> --user-agent AlibabaCloud-Agent-Skills/alibabacloud-ack-cli # filter to one task's events
For "what's been happening on this cluster recently?" / "why did the upgrade
last week fail?", describe-cluster-tasks and describe-cluster-events are
the answer. They're paginated (--page-number / --page-size); use --pager
for auto-merge across pages.
For any of these, append --help to see the full parameter set and structure.
See ./references/cs-scenarios.md for fuller workflows.
9. Kubeconfig retrieval and kubectl handoff
# Default kubeconfig (intranet endpoint depending on cluster network)
aliyun cs describe-cluster-user-kubeconfig --cluster-id \x3Ccid> --region \x3Cregion> \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-ack-cli \
| jq -r '.config' > ~/.kube/config.ack
export KUBECONFIG=~/.kube/config.ack
kubectl get nodes
Notes:
- Some clusters expose only an intranet API server endpoint; the kubeconfig you
fetch will only work from inside the VPC. Use
--private-ip-address true|falseto choose between intranet and public endpoints when both exist. - Temporary STS-based kubeconfigs expire — re-run the command to refresh.
- For automation, prefer setting
KUBECONFIGto a per-cluster file rather than overwriting~/.kube/config.
10. Filter and format output
Same pattern as the rest of the CLI: --cli-query (JMESPath) plus --output.
Useful with ACK because cluster/nodepool/addon list responses are nested:
# Just running cluster IDs and names
aliyun cs describe-clusters-for-region --biz-region-id cn-hangzhou \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-ack-cli \
--cli-query "clusters[?state=='running'].{id:cluster_id,name:name,version:current_version}" \
--output table
# Recent operation plans (auto-upgrade, AutoMode, CVE fixes) for the region
aliyun cs list-operation-plans-for-region --biz-region-id cn-hangzhou \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-ack-cli \
--cli-query "plans[].{id:plan_id,type:type,state:state,scheduled:scheduled_time}"
# Just node pool IDs and current size
aliyun cs describe-cluster-node-pools --cluster-id \x3Ccid> --region \x3Cregion> \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-ack-cli \
--cli-query "nodepools[].{id:nodepool_info.nodepool_id,name:nodepool_info.name,size:status.total_nodes}"
11. Pagination — prefer cursor, auto-merge with --pager
Two styles: cursor (--next-token / --max-results, stable under
concurrent writes — preferred) and offset (--page-number / --page-size,
can shift mid-scan). Check --help to see which a command supports — cursor
wins if both are listed.
The CLI's --pager flag auto-merges pages either way; almost always what users
want. See ./references/cs-scenarios.md
§9 for --pager syntax and a hand-rolled cursor loop example.
12. Debugging — and dry-run before any write
ACK write operations provision real cloud resources and many are irreversible.
Always run a write command with --cli-dry-run first when the parameter
set is non-trivial — it serialises the exact payload and validates parameter
parsing without spending the call:
aliyun cs create-cluster --biz-region-id cn-beijing --region cn-beijing \
--cluster-type ManagedKubernetes \
--profile Default --cluster-spec ack.pro.small --auto-mode '{"enable":true}' \
--name my-ack-cluster --kubernetes-version 1.30.1-aliyun.1 \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-ack-cli \
--cli-dry-run
aliyun cs modify-cluster-node-pool --cluster-id \x3Ccid> --nodepool-id \x3Cnpid> \
--region \x3Cregion> --scaling-group desired_size=10 \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-ack-cli --cli-dry-run
When a cs command does fail, --log-level debug reveals the full
request/response so you can see endpoint, body, status, and the raw error:
aliyun cs describe-cluster-detail --cluster-id \x3Ccid> --region \x3Cregion> \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-ack-cli --log-level debug
For specific error patterns and first-action recipes (plugin / parameter /
format / region / auth / RAM / async-task failures, plus a sample dry-run
output), see ./references/error-catalogue.md.
Response format guidance
When helping a user with cs commands:
- Read intent first. Are they investigating ("describe / list"), modifying
("scale / upgrade / install"), or creating? Modify/create flows almost always
produce a
task_id— surface that pattern early. - Show the full command with required parameters and explain non-obvious
ones (
--region, the JSON-string-inside-JSON for addon config, etc.). - For async ops, mention
describe-task-infoin the same response — and ask before busy-waiting. - Suggest
--helpand--log-level debugwhen the user is troubleshooting. - Cite the cluster's region — most "command works in cn-hangzhou but not
cn-shanghai" issues are missing/wrong
--region.
References
Four reference files, all ACK-specific. Generic CLI knowledge (hidden global
flags like --waiter / --header / --body / --secure, multi-version API,
full security best practices) is the Aliyun CLI's responsibility — consult its
own documentation when needed.
./references/cs-scenarios.md— Most useful day-to-day. Worked end-to-end examples: discovery, kubeconfig, node pools, addons, cluster upgrade, delete, the create→wait→kubeconfig pipeline../references/async-tasks.md—task_idlifecycle, state vocabulary, polling strategy, commonerror.codecauses, partial-failure handling../references/cli-plugin-installation-guide.md— Aliyun CLI install (macOS/Linux/Windows), credential modes summary,csplugin install, end-to-end verification, troubleshooting. Read once at setup; come back for "I can't get pastForbidden.RAM"-class issues../references/ram-policies.md— RAM Actions and policy templates required by this skill'saliyun cscalls (cluster / nodepool / addon / task scopes).
Scripts:
./scripts/check-cs-plugin.sh— Verify aliyun CLI ≥ 3.3.3 and thecsplugin is installed./scripts/install-cs-plugin.sh— Install or update thecsplugin (idempotent; supports--updatefor non-interactive)./scripts/wait-for-task.sh— Polldescribe-task-infountil terminal state (requires task ID + region)
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install alibabacloud-ack-cli - 安装完成后,直接呼叫该 Skill 的名称或使用
/alibabacloud-ack-cli触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
Alibabacloud Ack Cli 是什么?
Use when the user operates Alibaba Cloud Container Service for Kubernetes (ACK). Covers cluster lifecycle (create / modify / delete / upgrade), node pools &... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 46 次。
如何安装 Alibabacloud Ack Cli?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install alibabacloud-ack-cli」即可一键安装,无需额外配置。
Alibabacloud Ack Cli 是免费的吗?
是的,Alibabacloud Ack Cli 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。
Alibabacloud Ack Cli 支持哪些平台?
Alibabacloud Ack Cli 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 Alibabacloud Ack Cli?
由 alibabacloud-skills-team(@sdk-team)开发并维护,当前版本 v0.0.1-beta.1。