@bifos/nhncloud-cli 0.16.0 → 0.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -0
- package/dist/index.js +1229 -381
- package/package.json +1 -1
- package/skills/nhncloud-cli/SKILL.md +2 -4
- package/skills/nhncloud-cli/references/apigateway.md +7 -42
- package/skills/nhncloud-cli/references/common.md +19 -84
- package/skills/nhncloud-cli/references/deploy.md +5 -37
- package/skills/nhncloud-cli/references/iaas.md +58 -9
- package/skills/nhncloud-cli/references/loadbalancer.md +0 -42
- package/skills/nhncloud-cli/references/logncrash.md +3 -48
- package/skills/nhncloud-cli/references/ncr.md +1 -22
- package/skills/nhncloud-cli/references/ncs.md +2 -42
- package/skills/nhncloud-cli/references/nks.md +0 -9
- package/skills/nhncloud-cli/references/troubleshooting.md +15 -23
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
# NCS Reference
|
|
2
2
|
|
|
3
|
-
`ncs` 명령군은 NHN Container Service 의 template(설계도)과 workload(런타임 실행)를 조회·관리한다.
|
|
4
|
-
template 의 생성·삭제, workload 의 생성·변경(update/patch)·실행제어(일시정지/재개/재시작/삭제), 악성코드 검사(malware) 설정·결과 조회를 지원한다.
|
|
5
|
-
|
|
6
3
|
## 설정
|
|
7
4
|
|
|
8
5
|
공통 UAK와 NCS appkey가 필요하다.
|
|
9
|
-
인증은 Deploy 와 같은 UAK OAuth Bearer 토큰을 재사용한다(profile 토큰 캐시 공유).
|
|
10
6
|
|
|
11
7
|
`nhncloud configure` (대화형 또는 `--ncs-appkey`) 로 설정한다.
|
|
12
8
|
|
|
@@ -53,6 +49,7 @@ nhncloud ncs workload get <workload-id> --json
|
|
|
53
49
|
|
|
54
50
|
컨테이너 로그와 이벤트는 특정 task 를 지정해야 한다.
|
|
55
51
|
`--task`는 `workload get` 응답의 `tasks[].id`에서 얻는다.
|
|
52
|
+
`--size`의 API 기본값은 `workload logs`에서 100, 나머지 `--size` 지원 명령에서 10이다.
|
|
56
53
|
|
|
57
54
|
```bash
|
|
58
55
|
nhncloud ncs workload logs <workload-id> --task <task-id> --container <name> --json
|
|
@@ -161,46 +158,9 @@ nhncloud ncs workload get <workload-id> --json | jq -r '.tasks[].id'
|
|
|
161
158
|
nhncloud ncs workload history <workload-id> --json | jq -r '.[0].id' # 최신 historyId
|
|
162
159
|
```
|
|
163
160
|
|
|
164
|
-
## 옵션
|
|
165
|
-
|
|
166
|
-
| 옵션 | 설명 |
|
|
167
|
-
|------|------|
|
|
168
|
-
| `--region <region>` | NCS region. 기본 `kr1`. `kr1`·`kr3`만 지원 |
|
|
169
|
-
| `--profile <name>` | 사용할 profile |
|
|
170
|
-
| `--page <page>` / `--size <size>` | 페이지네이션 (기본 size는 명령별 상이 — `--help` 확인) |
|
|
171
|
-
| `--q <query>` | workload list·events 필터 |
|
|
172
|
-
| `--task <taskId>` | `workload logs`·`workload events`·`workload restart` 필수 |
|
|
173
|
-
| `--container <name>` | `workload logs` 필수 |
|
|
174
|
-
| `--from <time>` / `--to <time>` | `workload logs`·`workload events` 시간 필터. 시간대 포함 RFC3339, `now`, 0 이상의 정수와 `m`·`h`·`d` 단위 |
|
|
175
|
-
| `--sort <sort>` | `workload history` 정렬 (역순은 필드명 앞에 `-`) |
|
|
176
|
-
| `--file <path>` | `template create`·`template version create`·`workload create`·`workload update`·`workload patch` 필수 — JSON payload 파일 경로 (`patch`는 JSON Patch 배열) |
|
|
177
|
-
| `--wait` / `--timeout <sec>` | `workload create` — Running 상태 폴링(`--timeout` 기본 300초) |
|
|
178
|
-
| `--enabled <value>` | `malware config set` 필수. `true` 또는 `false` |
|
|
179
|
-
| `--yes` | `template delete`·`template version delete`·`workload delete` — 비대화형 환경 필수, TTY 는 생략 시 확인 프롬프트 |
|
|
180
|
-
|
|
181
161
|
## 주의사항
|
|
182
162
|
|
|
183
|
-
-
|
|
184
|
-
- `workload logs`·`workload events`는 task 단위 조회라 `--task` 없이는 입력 오류다.
|
|
185
|
-
- `workload logs`·`workload events` 데이터는 stdout, 진행 상황과 오류는 stderr에 출력한다.
|
|
186
|
-
- 시간 필터를 생략하면 CLI가 임의 기본값을 만들지 않고 API 기본 범위를 유지한다.
|
|
187
|
-
- `workload restart`도 task 단위라 `--task` 없이는 입력 오류다.
|
|
188
|
-
- `workload schedule-history`는 page/size를 아직 노출하지 않는다(대량 이력 시 첫 페이지만 반환될 수 있음 — ADR-020).
|
|
163
|
+
- `workload schedule-history`는 page/size를 아직 노출하지 않아 대량 이력에서 첫 페이지만 반환될 수 있다.
|
|
189
164
|
- template/workload id, history id 인수가 공백이면 입력 오류다.
|
|
190
|
-
- `template version create`의 `--file` payload 는 `sourceVersion` 필드가 필수다 — 누락 시 API 오류로 반환된다(클라이언트가 사전 검증하지 않음).
|
|
191
165
|
- `--file` 로 지정한 JSON payload 파일은 1MB 를 넘거나 디렉터리면 입력 오류다.
|
|
192
|
-
- 삭제 명령(`template delete`·`template version delete`·`workload delete`)은 비대화형 환경에서 `--yes` 없이 실행하면 입력 오류다.
|
|
193
166
|
- `workload create --wait`는 타임아웃까지 `Running` 상태에 도달하지 못하면 마지막 상태를 메시지에 포함해 API 오류로 반환한다.
|
|
194
|
-
- `workload patch`는 `Content-Type: application/json-patch+json`으로 전송된다 — `--file`에는 JSON Patch 배열(`op`/`path`/`value`)을 담아야 한다.
|
|
195
|
-
- `malware config set --enabled`는 `true`·`false` 외의 값이면 입력 오류다.
|
|
196
|
-
|
|
197
|
-
## 에러 코드
|
|
198
|
-
|
|
199
|
-
| 상황 | exit code |
|
|
200
|
-
|------|-----------|
|
|
201
|
-
| UAK 누락 또는 NCS appkey 미설정 | 4 |
|
|
202
|
-
| UAK 인증 실패 | 2 |
|
|
203
|
-
| 지원하지 않는 region, 빈 id 인수, `--task`·`--container` 누락 | 3 |
|
|
204
|
-
| 잘못된 logs·events 시간 필터 | 3 |
|
|
205
|
-
| `--file` 파일 오류, 잘못된 `--enabled`, 비대화형 삭제 시 `--yes` 누락 | 3 |
|
|
206
|
-
| NCS API 오류 (payload 필수값 누락, `workload create --wait` 타임아웃 등 서버측 검증·폴링 실패 포함) | 1 |
|
|
@@ -143,12 +143,3 @@ nhncloud nks cluster set-control-plane-log <cluster> --file ./control-plane-log.
|
|
|
143
143
|
단건 조회와 설정 조회는 API raw 객체를 보존하는 쪽을 우선한다.
|
|
144
144
|
생성, resize, 설정 변경, 노드 action, 애드온 변경은 `{ uuid }` 응답을 반환한다.
|
|
145
145
|
삭제 명령은 성공 메시지만 stderr에 쓰고 stdout은 비운다.
|
|
146
|
-
|
|
147
|
-
## 에러 코드
|
|
148
|
-
|
|
149
|
-
| 상황 | exit code |
|
|
150
|
-
|------|-----------|
|
|
151
|
-
| IaaS 자격증명 누락 또는 불완전 | 4 |
|
|
152
|
-
| Keystone 또는 NKS 인증 실패 | 2 |
|
|
153
|
-
| 지원하지 않는 region, payload JSON 파싱 실패, `--yes` 누락 | 3 |
|
|
154
|
-
| NKS API 오류 또는 응답 형식 불일치 | 1 |
|
|
@@ -11,17 +11,21 @@
|
|
|
11
11
|
5. exit code를 확인한다.
|
|
12
12
|
6. 서비스별 인증 모델을 대조한다.
|
|
13
13
|
|
|
14
|
+
`nhncloud doctor`는 자격증명과 공개 스킬 설치 상태를 오프라인에서 진단한다.
|
|
15
|
+
|
|
14
16
|
## 인증 모델
|
|
15
17
|
|
|
16
18
|
| 서비스 | 비밀 | 인증 방식 |
|
|
17
19
|
|--------|------|-----------|
|
|
18
20
|
| Log & Crash 검색/export | appkey 와 공통 UAK id/secret | UAK OAuth `X-NHN-Authorization: Bearer <token>` |
|
|
19
21
|
| Log & Crash send | appkey | body `projectName=appkey`, 인증 헤더 없음 |
|
|
20
|
-
| Deploy | UAK id 와 secret | OAuth Bearer token |
|
|
22
|
+
| Deploy | UAK id 와 secret, Deploy appkey | OAuth Bearer token |
|
|
21
23
|
| Instance/network/volume/floatingip | tenantId, username, API password | Keystone `X-Auth-Token` |
|
|
22
24
|
| NKS | tenantId, username, API password | Keystone `X-Auth-Token` 과 container-infra API version |
|
|
23
25
|
| NCR registry | UAK id, secret, NCR appkey | `X-TC-AUTHENTICATION-*` |
|
|
24
26
|
| NCR images/tags | UAK id 와 secret | HTTP Basic Auth to Harbor REST |
|
|
27
|
+
| NCS | UAK id 와 secret, NCS appkey | OAuth Bearer token (`X-NHN-Authorization`) |
|
|
28
|
+
| API Gateway | UAK id 와 secret, API Gateway appkey | OAuth Bearer token (`X-NHN-Authorization`) |
|
|
25
29
|
|
|
26
30
|
## Exit code
|
|
27
31
|
|
|
@@ -34,13 +38,7 @@
|
|
|
34
38
|
|
|
35
39
|
## Profile 누락
|
|
36
40
|
|
|
37
|
-
profile
|
|
38
|
-
|
|
39
|
-
1. `--profile <name>`
|
|
40
|
-
2. `NHNCLOUD_PROFILE`
|
|
41
|
-
3. `~/.nhncloud/config.json`의 `defaultProfile`
|
|
42
|
-
4. `default`
|
|
43
|
-
|
|
41
|
+
profile 선택 순서는 [Profile 우선순위](common.md#profile-우선순위)를 확인한다.
|
|
44
42
|
자동화에서 의도와 다른 profile이 쓰이면 `--profile`을 명시한다.
|
|
45
43
|
|
|
46
44
|
## Region mismatch
|
|
@@ -57,9 +55,10 @@ nhncloud ncr list --region kr2 --json
|
|
|
57
55
|
|
|
58
56
|
## JSON shape 혼동
|
|
59
57
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
58
|
+
서비스와 명령에 따라 API wrapper 처리 방식이 다르다.
|
|
59
|
+
`instance get --json`은 `.server.status`가 아니라 `.status`를 반환하지만, NKS 단건·설정 조회는 raw 객체를 보존한다.
|
|
60
|
+
NCR의 Harbor 이미지·태그 조회에는 NHN 공통 wrapper 언랩을 적용하지 않는다.
|
|
61
|
+
jq path를 쓰기 전에 `--json` 원문을 확인한다.
|
|
63
62
|
|
|
64
63
|
```bash
|
|
65
64
|
nhncloud instance get <instance-id> --json | jq keys
|
|
@@ -71,9 +70,9 @@ nhncloud ncr list --json | jq '.[0] | keys'
|
|
|
71
70
|
- `--from`은 최근 90일 이내여야 한다.
|
|
72
71
|
- `--to - --from` 범위는 31일 이하여야 한다.
|
|
73
72
|
- `--page`는 0만 허용한다. 다음 페이지는 JSON의 `nextCursor`를 `--cursor`로 그대로 전달한다.
|
|
74
|
-
- 검색 `--size`는 1
|
|
75
|
-
- export `--size`는 폐기 예정 호환 옵션이며 10
|
|
76
|
-
- export가 중간 실패하면 보존된 원본 오류를 확인하고 검색 범위를
|
|
73
|
+
- 검색 `--size`는 1부터 100까지 허용한다.
|
|
74
|
+
- export `--size`는 폐기 예정 호환 옵션이며 10부터 100까지 검증 후 경고하고 v3 요청에서는 무시한다.
|
|
75
|
+
- export가 중간 실패하면 보존된 원본 오류를 확인하고 검색 범위를 줄여 다시 실행한다.
|
|
77
76
|
|
|
78
77
|
검색 또는 export에서 설정 오류가 나면 profile에 다음 두 값이 모두 있는지 확인한다.
|
|
79
78
|
|
|
@@ -82,16 +81,9 @@ nhncloud ncr list --json | jq '.[0] | keys'
|
|
|
82
81
|
|
|
83
82
|
기존 `logncrash.secret`은 Search v3 인증에 사용하지 않는다.
|
|
84
83
|
|
|
85
|
-
## 쓰기 명령
|
|
84
|
+
## 쓰기 명령 확인
|
|
86
85
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
```bash
|
|
90
|
-
nhncloud instance delete <instance-id> --yes
|
|
91
|
-
nhncloud floatingip delete <floatingip-id> --yes
|
|
92
|
-
nhncloud nks cluster delete <cluster> --yes
|
|
93
|
-
nhncloud nks cluster addon remove <cluster> <addon> --yes
|
|
94
|
-
```
|
|
86
|
+
명령별 확인 방식은 [되돌릴 수 없는 명령](common.md#되돌릴-수-없는-명령)에서 확인한다.
|
|
95
87
|
|
|
96
88
|
## stdout/stderr 분리
|
|
97
89
|
|