@nitra/cursor 1.6.24 → 1.6.27
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/mdc/k8s.mdc +7 -7
- package/mdc/nginx-default-tpl.mdc +4 -1
- package/mdc/text.mdc +2 -2
- package/package.json +1 -1
- package/scripts/check-k8s.mjs +5 -2
- package/scripts/run-k8s.mjs +3 -1
package/mdc/k8s.mdc
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: K8s YAML — $schema (yaml-language-server); lint-k8s (kubeconform, kubescape); check-k8s
|
|
3
|
-
version: '1.
|
|
3
|
+
version: '1.7'
|
|
4
4
|
globs: "**/k8s/**/*.{yaml,yml}"
|
|
5
5
|
alwaysApply: false
|
|
6
6
|
---
|
|
@@ -28,9 +28,9 @@ alwaysApply: false
|
|
|
28
28
|
|
|
29
29
|
**Залежності:** виконувані файли kubeconform і kubescape у **PATH**; не додавай їх у **devDependencies** npm (аналогія до `v8r` у `n-text.mdc`). Локально: наприклад `brew install kubeconform kubescape` або релізи з GitHub.
|
|
30
30
|
|
|
31
|
-
**Версія Kubernetes для kubeconform** має відповідати PIN yannh у цьому правилі та в **`check-k8s.mjs`** (зараз **`-kubernetes-version 1.
|
|
31
|
+
**Версія Kubernetes для kubeconform** має відповідати PIN yannh у цьому правилі та в **`check-k8s.mjs`** (зараз **`-kubernetes-version 1.33.9`** — semver без префікса `v`, еквівалент релізу **v1.33.9**; набір схем **`v1.33.9-standalone-strict`**). Для CRD додатково підключай реєстр [datreeio/CRDs-catalog](https://github.com/datreeio/CRDs-catalog) другим **`-schema-location`**, як у [прикладах kubeconform](https://github.com/yannh/kubeconform#readme). За потреби **`-ignore-missing-schemas`**, якщо частина CRD ще без публічної схеми.
|
|
32
32
|
|
|
33
|
-
**kubescape:** типово **`kubescape scan <каталог-k8s>`**; поріг серйозності підлаштуй під проєкт (наприклад **`--severity-threshold high`**). Перший запуск може завантажувати артефакти — у CI потрібна мережа або [offline](https://github.com/kubescape/kubescape#readme).
|
|
33
|
+
**kubescape:** типово **`kubescape scan <каталог-k8s>`**; поріг серйозності підлаштуй під проєкт (наприклад **`--severity-threshold high`**). Перший запуск може завантажувати артефакти — у CI потрібна мережа або [offline](https://github.com/kubescape/kubescape#readme). На відміну від kubeconform, у **kubescape scan** немає прапорця **`-kubernetes-version`**: перевірка йде за **framework/control** (NSA, MITRE, CIS тощо), а не проти OpenAPI-схеми конкретного релізу Kubernetes. **Орієнтир** для репозиторію той самий, що й для kubeconform — кластер **v1.33.9** (див. **`-kubernetes-version 1.33.9`** вище); для CIS і подібних наближень обирай актуальний framework під політику команди (**`kubescape list frameworks`**, див. [CLI reference](https://github.com/kubescape/kubescape/blob/master/docs/cli-reference.md)).
|
|
34
34
|
|
|
35
35
|
У репозиторії пакета **`@nitra/cursor`** скрипт **`lint-k8s`** делегує обхід дерев і виклики **`npm/scripts/run-k8s.mjs`**. У інших проєктах можна скопіювати цей скрипт або зібрати еквівалентні команди в **`package.json`**.
|
|
36
36
|
|
|
@@ -115,7 +115,7 @@ jobs:
|
|
|
115
115
|
|
|
116
116
|
## Що закодовано в `check-k8s.mjs`
|
|
117
117
|
|
|
118
|
-
При зміні правил синхронно оновлюй **`YANNH_PIN`**, **`YANNH_GROUPS`**, а в **`run-k8s.mjs`** — константу **`KUBERNETES_VERSION`** (число з PIN, наприклад `v1.
|
|
118
|
+
При зміні правил синхронно оновлюй **`YANNH_PIN`**, **`YANNH_REF`** (якщо зміниться гілка за замовчуванням у репо yannh), **`YANNH_GROUPS`**, а в **`run-k8s.mjs`** — константу **`KUBERNETES_VERSION`** (число з PIN, наприклад `v1.33.9-standalone-strict` → **`1.33.9`**).
|
|
119
119
|
|
|
120
120
|
- Обхід з пропуском `node_modules`, `.git`, `dist`, `coverage`, `.turbo`, `.next`.
|
|
121
121
|
- **`file:`** у `$schema` — URL до apiVersion/kind не звіряється; **`https:`** — kustomization за іменем файлу → Schema Store; `v1` → yannh; група з `YANNH_GROUPS` → yannh; інакше → datree.
|
|
@@ -130,11 +130,11 @@ jobs:
|
|
|
130
130
|
Орієнтир — **перший документ** (до наступного `---`).
|
|
131
131
|
|
|
132
132
|
1. **Ім’я** `kustomization.yaml` або `kustomization.yml` → `https://json.schemastore.org/kustomization.json`.
|
|
133
|
-
2. **`apiVersion: v1`** → yannh, PIN **`v1.
|
|
134
|
-
`https://raw.githubusercontent.com/yannh/kubernetes-json-schema/<PIN>/<kind>-v1.json`
|
|
133
|
+
2. **`apiVersion: v1`** → yannh, PIN набору схем **`v1.33.9-standalone-strict`**, ref репозиторію для raw URL — **`master`** (каталог версії не є коренем репо на GitHub):
|
|
134
|
+
`https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/<PIN>/<kind>-v1.json`
|
|
135
135
|
`<kind>`: літери в нижньому регістрі без роздільників між CamelCase (наприклад `Service` → `service`).
|
|
136
136
|
3. **`apiVersion: group/version`** і **group** у **`YANNH_GROUPS`** у скрипті → yannh:
|
|
137
|
-
`https://raw.githubusercontent.com/yannh/kubernetes-json-schema/<PIN>/<kind>-<group-з-крапками-як-дефіси>-<version>.json`
|
|
137
|
+
`https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/<PIN>/<kind>-<group-з-крапками-як-дефіси>-<version>.json`
|
|
138
138
|
Приклади: `apps/v1` + `Deployment` → `deployment-apps-v1.json`; `networking.k8s.io/v1` + `Ingress` → `ingress-networking-k8s-io-v1.json`.
|
|
139
139
|
4. **Інакше** (CRD тощо) → [datreeio/CRDs-catalog](https://github.com/datreeio/CRDs-catalog):
|
|
140
140
|
`https://raw.githubusercontent.com/datreeio/CRDs-catalog/main/CRDs/<group>/<kind>_<version>.json`
|
|
@@ -103,7 +103,10 @@ spec:
|
|
|
103
103
|
В Dockerfile потрібно додати команду для стиснення файлів, які потім використовуватимуться з `gzip_static on`:
|
|
104
104
|
|
|
105
105
|
```dockerfile
|
|
106
|
-
RUN
|
|
106
|
+
RUN find /usr/share/nginx/html -type f \( \
|
|
107
|
+
-name '*.js' -o -name '*.css' -o -name '*.map' -o -name '*.xml' -o \
|
|
108
|
+
-name '*.webmanifest' -o -name '*.html' -o -name '*.wasm' -o -name '*.ttf' \
|
|
109
|
+
\) -exec gzip -k {} +
|
|
107
110
|
```
|
|
108
111
|
|
|
109
112
|
Поруч з файлом default.conf.template повинні бути конфігураційні файли *.ini для різних середовищ. В Dockerfile повинна бути команда, для заміни плейсхолдерів в цих файлах на значення з середовища:
|
package/mdc/text.mdc
CHANGED
|
@@ -144,7 +144,7 @@ jobs:
|
|
|
144
144
|
{
|
|
145
145
|
"version": "0.2",
|
|
146
146
|
"language": "nitra",
|
|
147
|
-
"ignorePaths": ["**/node_modules/**", "**/vscode-extension/**", "**/.git/**", ".vscode", "report"],
|
|
147
|
+
"ignorePaths": ["**/node_modules/**", "**/vscode-extension/**", "**/.git/**", ".vscode", "report", "*.svg", "**/k8s/**/*.yaml"],
|
|
148
148
|
"import": ["@nitra/cspell-dict/cspell-ext.json"],
|
|
149
149
|
"words": []
|
|
150
150
|
}
|
|
@@ -190,7 +190,7 @@ jobs:
|
|
|
190
190
|
{
|
|
191
191
|
"version": "0.2",
|
|
192
192
|
"language": "en,uk,nitra",
|
|
193
|
-
"ignorePaths": ["**/node_modules/**", "**/vscode-extension/**", "**/.git/**", ".vscode", "report"],
|
|
193
|
+
"ignorePaths": ["**/node_modules/**", "**/vscode-extension/**", "**/.git/**", ".vscode", "report", "*.svg", "**/k8s/**/*.yaml"],
|
|
194
194
|
"import": [
|
|
195
195
|
"@nitra/cspell-dict/cspell-ext.json",
|
|
196
196
|
"@cspell/dict-uk-ua/cspell-ext.json"
|
package/package.json
CHANGED
package/scripts/check-k8s.mjs
CHANGED
|
@@ -12,11 +12,14 @@ import { pass } from './utils/pass.mjs'
|
|
|
12
12
|
import { walkDir } from './utils/walkDir.mjs'
|
|
13
13
|
|
|
14
14
|
/** Версія набору схем yannh — узгоджено з k8s.mdc */
|
|
15
|
-
const YANNH_PIN = 'v1.
|
|
15
|
+
const YANNH_PIN = 'v1.33.9-standalone-strict'
|
|
16
|
+
|
|
17
|
+
/** Гілка репозиторію yannh/kubernetes-json-schema для raw.githubusercontent.com (каталог набору — у підшляху після ref). */
|
|
18
|
+
const YANNH_REF = 'master'
|
|
16
19
|
|
|
17
20
|
const KUSTOMIZATION_SCHEMA = 'https://json.schemastore.org/kustomization.json'
|
|
18
21
|
|
|
19
|
-
const YANNH_BASE = `https://raw.githubusercontent.com/yannh/kubernetes-json-schema/${YANNH_PIN}/`
|
|
22
|
+
const YANNH_BASE = `https://raw.githubusercontent.com/yannh/kubernetes-json-schema/${YANNH_REF}/${YANNH_PIN}/`
|
|
20
23
|
|
|
21
24
|
const DATREE_CRD_BASE = 'https://raw.githubusercontent.com/datreeio/CRDs-catalog/main/CRDs/'
|
|
22
25
|
|
package/scripts/run-k8s.mjs
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
* (локально: Homebrew, релізи GitHub; у CI — крок установки з k8s.mdc).
|
|
11
11
|
*
|
|
12
12
|
* Версія `-kubernetes-version` для kubeconform узгоджена з PIN yannh у check-k8s.mjs / k8s.mdc.
|
|
13
|
+
* Kubescape не має аналога цього прапорця; орієнтир цільового кластера — та сама лінія релізу (див. k8s.mdc).
|
|
13
14
|
*/
|
|
14
15
|
import { spawnSync } from 'node:child_process'
|
|
15
16
|
import { basename, dirname } from 'node:path'
|
|
@@ -17,7 +18,7 @@ import { basename, dirname } from 'node:path'
|
|
|
17
18
|
import { walkDir } from './utils/walkDir.mjs'
|
|
18
19
|
|
|
19
20
|
/** Версія Kubernetes для kubeconform — синхронно з YANNH_PIN (без префікса v і суфікса -standalone-strict). */
|
|
20
|
-
const KUBERNETES_VERSION = '1.
|
|
21
|
+
const KUBERNETES_VERSION = '1.33.9'
|
|
21
22
|
|
|
22
23
|
/** Додатковий реєстр схем для CRD (як у README kubeconform). */
|
|
23
24
|
const DATREE_CRD_SCHEMA_LOCATION =
|
|
@@ -93,6 +94,7 @@ function runKubeconform(dirs) {
|
|
|
93
94
|
|
|
94
95
|
/**
|
|
95
96
|
* Запускає kubescape scan для кожного каталогу окремо (узгоджено з прикладами CLI).
|
|
97
|
+
* Немає прапорця версії Kubernetes — за потреби додай `scan framework <ім’я>` під CIS/інші набори.
|
|
96
98
|
* @param {string[]} dirs абсолютні шляхи до `…/k8s`
|
|
97
99
|
* @returns {number} 0 при успіху, інакше код останнього невдалого scan або 127, якщо kubescape відсутній у PATH
|
|
98
100
|
*/
|