k8s-agent-skills 1.2.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.
Files changed (51) hide show
  1. package/README.md +102 -0
  2. package/package.json +63 -0
  3. package/skills/atlas/SKILL.md +166 -0
  4. package/skills/cert-manager/SKILL.md +212 -0
  5. package/skills/cilium-gateway/SKILL.md +283 -0
  6. package/skills/cilium-network/SKILL.md +243 -0
  7. package/skills/cnpg/SKILL.md +130 -0
  8. package/skills/dragonfly/SKILL.md +194 -0
  9. package/skills/external-dns/SKILL.md +185 -0
  10. package/skills/flagger/SKILL.md +292 -0
  11. package/skills/flux/SKILL.md +36 -0
  12. package/skills/gitea/SKILL.md +32 -0
  13. package/skills/gitea-api/SKILL.md +104 -0
  14. package/skills/gitea-registry/SKILL.md +71 -0
  15. package/skills/gitea-runner/SKILL.md +126 -0
  16. package/skills/gitea-tea/SKILL.md +206 -0
  17. package/skills/gitea-webhooks/SKILL.md +93 -0
  18. package/skills/harbor/SKILL.md +32 -0
  19. package/skills/harbor-api/SKILL.md +231 -0
  20. package/skills/harbor-helm/SKILL.md +238 -0
  21. package/skills/harbor-terraform/SKILL.md +233 -0
  22. package/skills/higress/SKILL.md +27 -0
  23. package/skills/higress-helm/SKILL.md +328 -0
  24. package/skills/higress-operator/SKILL.md +435 -0
  25. package/skills/kserve/SKILL.md +28 -0
  26. package/skills/kserve-helm/SKILL.md +330 -0
  27. package/skills/kserve-operator/SKILL.md +763 -0
  28. package/skills/kubeflow/SKILL.md +33 -0
  29. package/skills/kubeflow-pipelines/SKILL.md +392 -0
  30. package/skills/kubeflow-trainer/SKILL.md +429 -0
  31. package/skills/kubeflow-training-operator/SKILL.md +176 -0
  32. package/skills/mariadb/SKILL.md +27 -0
  33. package/skills/mariadb-helm/SKILL.md +378 -0
  34. package/skills/mariadb-operator/SKILL.md +1114 -0
  35. package/skills/nvidia-device-plugin/SKILL.md +204 -0
  36. package/skills/rook-ceph/SKILL.md +22 -0
  37. package/skills/rook-ceph-operator/SKILL.md +150 -0
  38. package/skills/rook-ceph-toolbox/SKILL.md +220 -0
  39. package/skills/sealed-secrets/SKILL.md +221 -0
  40. package/skills/stakater-reloader/SKILL.md +259 -0
  41. package/skills/talos/SKILL.md +244 -0
  42. package/skills/tekton/SKILL.md +187 -0
  43. package/skills/vector/SKILL.md +24 -0
  44. package/skills/vector-helm/SKILL.md +186 -0
  45. package/skills/vector-operator/SKILL.md +455 -0
  46. package/skills/victoria-metrics/SKILL.md +35 -0
  47. package/skills/victoriametrics-operator/SKILL.md +248 -0
  48. package/skills/zitadel/SKILL.md +24 -0
  49. package/skills/zitadel-api/SKILL.md +962 -0
  50. package/skills/zitadel-helm/SKILL.md +263 -0
  51. package/skills/zitadel-terraform/SKILL.md +728 -0
@@ -0,0 +1,233 @@
1
+ ---
2
+ name: harbor-terraform
3
+ description: Use when managing Harbor infrastructure as code with Terraform — projects, robot accounts, registries, replication rules, retention policies, webhooks, users, groups, system config, and the goharbor/terraform-provider-harbor.
4
+ ---
5
+
6
+ # Harbor Terraform Provider
7
+
8
+ Provider: `goharbor/harbor`. Latest: **v3.12.0** (Jun 4, 2026). Registry: `v3.11.6` (Apr 22, 2026). Source: `github.com/goharbor/terraform-provider-harbor`.
9
+
10
+ Tested against: Harbor 2.13–2.15, Terraform 1.12–1.14.
11
+
12
+ ## Provider Config
13
+
14
+ ```hcl
15
+ terraform {
16
+ required_providers {
17
+ harbor = {
18
+ source = "goharbor/harbor"
19
+ version = "~> 3.11"
20
+ }
21
+ }
22
+ }
23
+
24
+ provider "harbor" {
25
+ url = "https://harbor.example.com"
26
+ username = "admin"
27
+ password = var.harbor_password
28
+ insecure = false # Verify TLS (default: true — must explicitly set false)
29
+ }
30
+ ```
31
+
32
+ ### Auth Methods
33
+ | Method | Fields | Env Var |
34
+ |--------|--------|---------|
35
+ | Basic | `username` + `password` | `HARBOR_USERNAME`, `HARBOR_PASSWORD` |
36
+ | Bearer Token | `bearer_token` | — |
37
+ | OIDC Session | `session_id` | `HARBOR_SESSION_ID` |
38
+
39
+ `api_version` (default: 2) — use 1 for Harbor pre-2.0. `robot_prefix` — auto-detected via admin API unless explicitly set.
40
+
41
+ ## Resources (20)
42
+
43
+ ### Projects
44
+
45
+ ```hcl
46
+ resource "harbor_project" "myapp" {
47
+ name = "myapp"
48
+ public = false
49
+ vulnerability_scanning = true
50
+ vulnerability_scanner = "Trivy" # v3.11.6+: per-project scanner override
51
+ enable_content_trust = true # Notary
52
+ enable_content_trust_cosign = false # Cosign signatures
53
+ auto_sbom_generation = true # Harbor 2.11+ SBOM on push
54
+ storage_quota = 100 # GB
55
+ deployment_security = "high" # Block images >= this severity
56
+ cve_allowlist = ["CVE-1234"]
57
+ force_destroy = false # Allow destroy even with repos
58
+ }
59
+
60
+ # Proxy cache project
61
+ resource "harbor_registry" "dockerhub" {
62
+ provider_name = "docker-hub"
63
+ name = "dockerhub-proxy"
64
+ endpoint_url = "https://hub.docker.com"
65
+ }
66
+
67
+ resource "harbor_project" "proxy" {
68
+ name = "docker-proxy"
69
+ registry_id = harbor_registry.dockerhub.registry_id
70
+ proxy_speed_kb = -1
71
+ proxy_cache_local_on_not_found = true # Harbor 2.15.1+
72
+ }
73
+ ```
74
+
75
+ ### Robot Accounts
76
+
77
+ ```hcl
78
+ # System-level
79
+ resource "harbor_robot_account" "system" {
80
+ name = "ci-system"
81
+ description = "System-level CI robot"
82
+ level = "system"
83
+ secret = random_password.robot.result
84
+ permissions {
85
+ kind = "project"
86
+ namespace = "*" # All projects
87
+ access {
88
+ resource = "repository"
89
+ action = "pull"
90
+ }
91
+ }
92
+ }
93
+
94
+ # Project-level
95
+ resource "harbor_robot_account" "deploy" {
96
+ name = "ci-deploy"
97
+ description = "Deploy robot for myapp"
98
+ level = "project"
99
+ permissions {
100
+ kind = "project"
101
+ namespace = harbor_project.myapp.name
102
+ access {
103
+ resource = "repository"
104
+ action = "pull"
105
+ }
106
+ access {
107
+ resource = "repository"
108
+ action = "push"
109
+ }
110
+ }
111
+ }
112
+ ```
113
+
114
+ ### Replication
115
+
116
+ ```hcl
117
+ resource "harbor_replication" "backup" {
118
+ name = "replicate-to-dr"
119
+ description = "Replicate myapp to DR site"
120
+ registry_id = harbor_registry.dr.registry_id
121
+ destination = "harbor"
122
+ filters {
123
+ name_filter = "myapp/**"
124
+ resource = "image"
125
+ }
126
+ trigger {
127
+ type = "event_based"
128
+ override = true
129
+ target_events = ["imageUpload", "imageDelete"]
130
+ }
131
+ enabled = true
132
+ }
133
+ ```
134
+
135
+ ### Retention Policies
136
+
137
+ ```hcl
138
+ resource "harbor_retention_policy" "main" {
139
+ scope = harbor_project.myapp.id
140
+ rule {
141
+ tag_selectors {
142
+ kind = "doublestar"
143
+ decoration = "matches"
144
+ pattern = "**"
145
+ extras = jsonencode({untagged: true})
146
+ }
147
+ scope_selectors {
148
+ kind = "project"
149
+ decoration = "repoMatches"
150
+ pattern = "**"
151
+ }
152
+ action = "retain"
153
+ template = "always"
154
+ params = jsonencode({num_latest_per_artifact: 10})
155
+ }
156
+ }
157
+ ```
158
+
159
+ ### System Configuration
160
+
161
+ ```hcl
162
+ resource "harbor_config_system" "cfg" {
163
+ project_creation_restriction = "adminonly"
164
+ robot_token_expiration = 30
165
+ robot_name_prefix = "harbor@"
166
+ storage_per_project = 100
167
+ notification_enable = true
168
+ banner_notification = "Production Harbor - no test data"
169
+ }
170
+
171
+ resource "harbor_config_auth" "auth" {
172
+ auth_mode = "oidc_auth"
173
+ oidc_name = "dex"
174
+ oidc_endpoint = "https://dex.example.com"
175
+ oidc_client_id = "harbor"
176
+ oidc_client_secret = var.oidc_secret
177
+ oidc_scope = "openid,profile,email,groups"
178
+ oidc_verify_cert = true
179
+ }
180
+
181
+ resource "harbor_config_security" "sec" {
182
+ cve_allowlist = ["CVE-2024-1234", "CVE-2025-5678"]
183
+ expires_at = "1893456000"
184
+ }
185
+ ```
186
+
187
+ ### Other Resources
188
+
189
+ | Resource | Purpose |
190
+ |----------|---------|
191
+ | `harbor_garbage_collection` | GC schedule, workers, untagged deletion |
192
+ | `harbor_group` | User groups (LDAP/internal/OIDC) |
193
+ | `harbor_immutable_tag_rule` | Immutable tag rules per repo/project |
194
+ | `harbor_interrogation_services` | Default scanner config (Trivy/Clair) |
195
+ | `harbor_label` | Labels (global or project-scoped) |
196
+ | `harbor_preheat_instance` | P2P preheat instances |
197
+ | `harbor_project_member_group` | Group membership with role |
198
+ | `harbor_project_member_user` | User membership with role |
199
+ | `harbor_project_webhook` | Webhook policies |
200
+ | `harbor_purge_audit_log` | Audit log purge schedule |
201
+ | `harbor_tasks` | Scan policy schedule |
202
+ | `harbor_user` | Internal users |
203
+
204
+ ## Data Sources (8)
205
+
206
+ | Data Source | Purpose |
207
+ |-------------|---------|
208
+ | `harbor_groups` | Look up groups by name/LDAP DN |
209
+ | `harbor_project` | Look up single project |
210
+ | `harbor_projects` | Look up multiple projects |
211
+ | `harbor_project_member_groups` | List member groups |
212
+ | `harbor_project_member_users` | List member users |
213
+ | `harbor_registry` | Look up registry by name |
214
+ | `harbor_robot_accounts` | List/filter robot accounts |
215
+ | `harbor_users` | Look up users |
216
+
217
+ ## Importing Existing Resources
218
+
219
+ ```hcl
220
+ terraform import harbor_project.main /projects/1
221
+ terraform import harbor_robot_account.system /robots/123
222
+ terraform import harbor_label.main /labels/1
223
+ terraform import harbor_user.main /users/42
224
+ ```
225
+
226
+ ## Common Mistakes
227
+
228
+ - **Robot secret not stored in state** — `secret` is sensitive. Use `random_password` resource and `secret = resource.random_password.robot.result`.
229
+ - **`force_destroy` required for non-empty projects** — Set to `true` to delete projects that still contain repos.
230
+ - **OIDC session_id is experimental** — Will be deprecated when Harbor provides a better auth method. Prefer `bearer_token` or basic auth.
231
+ - **Robot prefix auto-detection** — Requires admin API access. Without it, set `robot_prefix` explicitly in provider config.
232
+ - **`registry_id` vs `id`** — The `harbor_registry` resources expose `.registry_id` (int), not `.id`. Use `.registry_id` when referencing in projects.
233
+ - **v3.12.0 not on registry yet** — Latest on Terraform Registry is v3.11.6. Use `source = "goharbor/harbor"` + version constraint if depending on v3.12.0 features (per-project scanner, proxy cache local-on-not-found).
@@ -0,0 +1,27 @@
1
+ # Higress — Skill Router
2
+
3
+ Pick the right sub-skill.
4
+
5
+ ## Which Sub-Skill?
6
+
7
+ | User wants to... | Load skill |
8
+ |---|---|
9
+ | Manage CRDs (WasmPlugin, Http2Rpc, McpBridge), configure Wasm plugins, AI Gateway, service discovery | `higress-operator` |
10
+ | Deploy, configure, upgrade Higress via Helm | `higress-helm` |
11
+
12
+ ## Quick Map
13
+
14
+ | Task | Skill |
15
+ |---|---|
16
+ | "Deploy a WasmPlugin for AI proxy" | `higress-operator` |
17
+ | "Configure Http2Rpc for Dubbo service" | `higress-operator` |
18
+ | "Set up Nacos service discovery with McpBridge" | `higress-operator` |
19
+ | "Deploy Higress on Kubernetes with Helm" | `higress-helm` |
20
+ | "Configure AI Gateway with OpenAI provider" | `higress-operator` |
21
+ | "Set up Gateway API support" | `higress-helm` |
22
+ | "Enable Redis for AI caching" | `higress-helm` |
23
+ | "Configure OIDC/OAuth via Wasm plugin" | `higress-operator` |
24
+ | "Set up Prometheus monitoring" | `higress-helm` |
25
+ | "Create a rate-limiting WasmPlugin" | `higress-operator` |
26
+ | "Connect to ZooKeeper registry" | `higress-operator` |
27
+ | "Enable Wasm plugin server" | `higress-helm` |
@@ -0,0 +1,328 @@
1
+ # Higress — Helm Chart
2
+
3
+ **Repo:** `https://higress.io/helm-charts`
4
+ **Charts:** `higress`, `higress-core`, `higress-console`
5
+ **Latest:** 2.2.2
6
+ **Images:** `higress-registry.cn-hangzhou.cr.aliyuncs.com/higress/` (hub)
7
+
8
+ ## Quick Install
9
+
10
+ ```bash
11
+ helm repo add higress.io https://higress.io/helm-charts
12
+ helm repo update
13
+
14
+ helm install higress higress.io/higress \
15
+ -n higress-system --create-namespace
16
+ ```
17
+
18
+ ### Minimal Gateway-Only
19
+
20
+ ```bash
21
+ helm install higress higress.io/higress -n higress-system \
22
+ --create-namespace \
23
+ --set global.o11y.enabled=false \
24
+ --set controller.replicas=1 \
25
+ --set gateway.replicas=2
26
+ ```
27
+
28
+ ## Charts Overview
29
+
30
+ ### `higress` (umbrella)
31
+
32
+ Deploys everything: `higress-core` + `higress-console` + optional o11y stack.
33
+
34
+ | Sub-component | Chart | Enabled by default |
35
+ |--------------|-------|-------------------|
36
+ | Gateway + Controller + Pilot | `higress-core` | ✅ |
37
+ | Web UI Console | `higress-console` | ✅ |
38
+ | Redis (AI caching, rate limiting) | included | ❌ (`global.enableRedis`) |
39
+ | Grafana + Prometheus + Loki | included | ❌ (`global.o11y.enabled`) |
40
+ | Plugin Server | included | ❌ (`global.enablePluginServer`) |
41
+
42
+ ### `higress-core`
43
+
44
+ Core engine only: controller, gateway, pilot, optional Redis.
45
+
46
+ ### `higress-console`
47
+
48
+ Web UI dashboard only (requires `higress-core` for backend).
49
+
50
+ ## Global Configuration
51
+
52
+ | Parameter | Default | Description |
53
+ |-----------|---------|-------------|
54
+ | `global.hub` | `higress-registry.cn-hangzhou.cr.aliyuncs.com` | Image registry |
55
+ | `global.imagePullPolicy` | `""` | Image pull policy |
56
+ | `global.imagePullSecrets` | `[]` | Image pull secrets |
57
+ | `global.ingressClass` | `higress` | IngressClass to watch |
58
+ | `global.watchNamespace` | `""` | Restrict to single namespace |
59
+ | `global.enableH3` | `false` | Enable HTTP/3 (QUIC) |
60
+ | `global.enableIPv6` | `false` | Enable IPv6 |
61
+ | `global.enableProxyProtocol` | `false` | Proxy protocol |
62
+ | `global.enableRedis` | `false` | Deploy Redis for AI caching |
63
+ | `global.enablePluginServer` | `false` | Deploy Wasm plugin server |
64
+ | `global.enableIstioAPI` | `true` | Watch Istio CRDs |
65
+ | `global.enableGatewayAPI` | `true` | Watch Gateway API CRDs |
66
+ | `global.enableInferenceExtension` | `false` | Gateway API Inference Extension |
67
+ | `global.enableStatus` | `true` | Update Ingress status field |
68
+ | `global.local` | `false` | Local/kind cluster mode |
69
+ | `global.o11y.enabled` | `false` | Deploy observability stack |
70
+ | `global.logging.level` | `default:info` | Log level |
71
+ | `global.defaultResources` | `{cpu: 10m}` | Default resource requests |
72
+ | `global.priorityClassName` | `""` | Priority class |
73
+ | `global.multiCluster.enabled` | `true` | Multi-cluster support |
74
+ | `global.multiCluster.clusterName` | `""` | Cluster name |
75
+
76
+ ## Gateway
77
+
78
+ | Parameter | Default | Description |
79
+ |-----------|---------|-------------|
80
+ | `gateway.name` | `higress-gateway` | Gateway deployment name |
81
+ | `gateway.replicas` | `2` | Pod count |
82
+ | `gateway.kind` | `Deployment` | `Deployment` or `DaemonSet` |
83
+ | `gateway.image` | `gateway` | Image name (hub/gateway) |
84
+ | `gateway.tag` | `""` (chart appVersion) | Image tag |
85
+ | `gateway.httpPort` | `80` | HTTP port |
86
+ | `gateway.httpsPort` | `443` | HTTPS port |
87
+ | `gateway.hostNetwork` | `false` | Host networking |
88
+ | `gateway.service.type` | `LoadBalancer` | Service type (`None` disables) |
89
+ | `gateway.service.loadBalancerIP` | `""` | Static LB IP |
90
+ | `gateway.service.loadBalancerClass` | `""` | LB class |
91
+ | `gateway.service.loadBalancerSourceRanges` | `[]` | LB source ranges |
92
+ | `gateway.service.externalTrafficPolicy` | `""` | External traffic policy |
93
+ | `gateway.autoscaling.enabled` | `false` | HPA |
94
+ | `gateway.autoscaling.minReplicas` | `1` | HPA min |
95
+ | `gateway.autoscaling.maxReplicas` | `5` | HPA max |
96
+ | `gateway.resources` | `{cpu: 2, mem: 2Gi}` | Container resources |
97
+ | `gateway.metrics.enabled` | `false` | PodMonitor/VMPodScrape |
98
+ | `gateway.metrics.provider` | `monitoring.coreos.com` | CRD provider |
99
+ | `gateway.metrics.podMonitorSelector` | `{release: kube-prome}` | PodMonitor selector |
100
+ | `gateway.rollingMaxSurge` | `100%` | Rolling update max surge |
101
+ | `gateway.rollingMaxUnavailable` | `25%` | Rolling update max unavailable |
102
+ | `gateway.nodeSelector` | `{}` | Node selector |
103
+ | `gateway.tolerations` | `[]` | Tolerations |
104
+ | `gateway.affinity` | `{}` | Affinity |
105
+ | `gateway.topologySpreadConstraints` | `[]` | Topology spread |
106
+ | `gateway.automaticHttps.enabled` | `true` | Let's Encrypt auto HTTPS |
107
+ | `gateway.automaticHttps.email` | `""` | Let's Encrypt email |
108
+
109
+ ## Controller
110
+
111
+ | Parameter | Default | Description |
112
+ |-----------|---------|-------------|
113
+ | `controller.name` | `higress-controller` | Controller deployment name |
114
+ | `controller.replicas` | `1` | Pod count |
115
+ | `controller.image` | `higress` | Image name (hub/higress) |
116
+ | `controller.tag` | `""` | Image tag |
117
+ | `controller.service.type` | `ClusterIP` | Service type |
118
+ | `controller.resources` | `{cpu: 500m/1, mem: 2Gi}` | Resource requests/limits |
119
+ | `controller.autoscaling.enabled` | `false` | HPA |
120
+ | `controller.autoscaling.minReplicas` | `1` | HPA min |
121
+ | `controller.autoscaling.maxReplicas` | `5` | HPA max |
122
+ | `controller.automaticHttps.enabled` | `true` | Auto HTTPS |
123
+ | `controller.automaticHttps.email` | `""` | Let's Encrypt email |
124
+ | `controller.nodeSelector` | `{}` | Node selector |
125
+ | `controller.tolerations` | `[]` | Tolerations |
126
+ | `controller.affinity` | `{}` | Affinity |
127
+
128
+ ## Pilot (Istiod)
129
+
130
+ | Parameter | Default | Description |
131
+ |-----------|---------|-------------|
132
+ | `pilot.image` | `pilot` | Image name (hub/pilot) |
133
+ | `pilot.tag` | `""` | Image tag |
134
+ | `pilot.traceSampling` | `1.0` | Trace sampling rate |
135
+ | `pilot.resources` | `{cpu: 500m, mem: 2Gi}` | Resources |
136
+ | `pilot.env.PILOT_ENABLE_METADATA_EXCHANGE` | `false` | Disable metadata exchange |
137
+ | `pilot.keepaliveMaxServerConnectionAge` | `30m` | xDS max connection age |
138
+
139
+ ## Redis (Optional)
140
+
141
+ | Parameter | Default | Description |
142
+ |-----------|---------|-------------|
143
+ | `redis.redis.name` | `redis-stack-server` | Redis deployment |
144
+ | `redis.redis.image` | `redis-stack-server` | Image name |
145
+ | `redis.redis.tag` | `7.4.0-v3` | Image tag |
146
+ | `redis.redis.replicas` | `1` | Replicas |
147
+ | `redis.redis.password` | `""` | Password (empty = none) |
148
+ | `redis.redis.service.port` | `6379` | Service port |
149
+ | `redis.redis.persistence.enabled` | `false` | Enable PVC |
150
+ | `redis.redis.persistence.size` | `1Gi` | PVC size |
151
+
152
+ ## Plugin Server (Optional)
153
+
154
+ | Parameter | Default | Description |
155
+ |-----------|---------|-------------|
156
+ | `pluginServer.name` | `higress-plugin-server` | Plugin server name |
157
+ | `pluginServer.replicas` | `2` | Pod count |
158
+ | `pluginServer.image` | `plugin-server` | Image name |
159
+ | `pluginServer.tag` | `""` | Image tag |
160
+ | `pluginServer.service.port` | `80` | Service port |
161
+ | `pluginServer.resources` | `{cpu: 200m/500m, mem: 128Mi/256Mi}` | Resources |
162
+
163
+ ## Console (UI)
164
+
165
+ | Parameter | Default | Description |
166
+ |-----------|---------|-------------|
167
+ | `image.repository` | `higress/console` | Console image |
168
+ | `image.tag` | `""` | Image tag |
169
+ | `replicaCount` | `1` | Replicas |
170
+ | `service.port` | `8080` | Service port |
171
+ | `ingress.enabled` | `false` | Expose via Ingress |
172
+ | `ingress.domain` | `console.higress.io` | Console domain |
173
+ | `ingress.tlsSecretName` | `""` | TLS secret |
174
+ | `admin.username` | `admin` | Admin user |
175
+ | `admin.password` | `""` | Admin password |
176
+ | `chat.enabled` | `false` | AI chat in console |
177
+ | `chat.endpoint` | `""` | Chat API endpoint |
178
+
179
+ ## O11y (Observability)
180
+
181
+ | Parameter | Default | Description |
182
+ |-----------|---------|-------------|
183
+ | `global.o11y.enabled` | `false` | Enable all o11y |
184
+ | `global.o11y.grafana.replicas` | `1` | Grafana replicas |
185
+ | `global.o11y.grafana.storage` | `1Gi` | Grafana PVC |
186
+ | `global.o11y.prometheus.replicas` | `1` | Prometheus replicas |
187
+ | `global.o11y.prometheus.storage` | `1Gi` | Prometheus PVC |
188
+ | `global.o11y.loki.replicas` | `1` | Loki replicas |
189
+ | `global.o11y.loki.storage` | `1Gi` | Loki PVC |
190
+
191
+ ## Production Values Example
192
+
193
+ ```yaml
194
+ global:
195
+ ingressClass: higress
196
+ enableGatewayAPI: true
197
+ enableIstioAPI: true
198
+ enableRedis: true
199
+ enablePluginServer: true
200
+ o11y:
201
+ enabled: true
202
+ priorityClassName: system-cluster-critical
203
+
204
+ gateway:
205
+ replicas: 3
206
+ kind: Deployment
207
+ service:
208
+ type: LoadBalancer
209
+ externalTrafficPolicy: Local
210
+ resources:
211
+ requests:
212
+ cpu: 2
213
+ memory: 2Gi
214
+ limits:
215
+ cpu: 4
216
+ memory: 4Gi
217
+ autoscaling:
218
+ enabled: true
219
+ minReplicas: 3
220
+ maxReplicas: 10
221
+ targetCPUUtilizationPercentage: 80
222
+ metrics:
223
+ enabled: true
224
+ provider: monitoring.coreos.com
225
+ affinity:
226
+ podAntiAffinity:
227
+ requiredDuringSchedulingIgnoredDuringExecution:
228
+ - labelSelector:
229
+ matchExpressions:
230
+ - key: app
231
+ operator: In
232
+ values:
233
+ - higress-gateway
234
+ topologyKey: kubernetes.io/hostname
235
+
236
+ controller:
237
+ replicas: 2
238
+ resources:
239
+ requests:
240
+ cpu: 500m
241
+ memory: 1Gi
242
+ limits:
243
+ cpu: 2
244
+ memory: 4Gi
245
+ autoscaling:
246
+ enabled: true
247
+ minReplicas: 2
248
+ maxReplicas: 5
249
+
250
+ redis:
251
+ redis:
252
+ persistence:
253
+ enabled: true
254
+ size: 10Gi
255
+ storageClass: ssd
256
+ ```
257
+
258
+ ## IngressClass Configuration
259
+
260
+ ```yaml
261
+ global:
262
+ ingressClass: higress # default
263
+
264
+ # Special: watch nginx Ingress resources (migration mode)
265
+ # ingressClass: nginx
266
+ # - watches both "nginx" class AND no-class Ingress resources
267
+ # - enables smooth migration from ingress-nginx
268
+
269
+ # Special: watch all Ingress resources
270
+ # ingressClass: ""
271
+ ```
272
+
273
+ ## Gateway API Integration
274
+
275
+ ```bash
276
+ helm install higress higress.io/higress -n higress-system \
277
+ --set global.enableGatewayAPI=true
278
+ ```
279
+
280
+ Requires Gateway API CRDs installed:
281
+ ```bash
282
+ kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.4.0/standard-install.yaml
283
+ ```
284
+
285
+ ## AI Gateway + Redis
286
+
287
+ ```bash
288
+ helm install higress higress.io/higress -n higress-system \
289
+ --set global.enableRedis=true \
290
+ --set global.enablePluginServer=true
291
+ ```
292
+
293
+ ## Upgrading
294
+
295
+ ```bash
296
+ helm repo update
297
+ helm upgrade higress higress.io/higress -n higress-system \
298
+ --values values.yaml \
299
+ --version 2.2.2
300
+ ```
301
+
302
+ ## Uninstalling
303
+
304
+ ```bash
305
+ helm uninstall higress -n higress-system
306
+ kubectl delete namespace higress-system
307
+ ```
308
+
309
+ **Note:** CRDs persist after uninstall. Remove manually:
310
+ ```bash
311
+ kubectl delete crd wasmplugins.extensions.higress.io
312
+ kubectl delete crd http2rpcs.networking.higress.io
313
+ kubectl delete crd mcpbridges.networking.higress.io
314
+ ```
315
+
316
+ ## Common Mistakes
317
+
318
+ - **Hub region** — Default hub is in China (`cn-hangzhou`). Use `us-west-1.cr.aliyuncs.com` for NA, `ap-southeast-7.cr.aliyuncs.com` for SEA. Set `global.hub` before install.
319
+ - **Gateway API CRDs missing** — Setting `global.enableGatewayAPI=true` without installing Gateway API CRDs causes controller errors.
320
+ - **IngressClass == nginx** — Setting `ingressClass: nginx` makes Higress watch nginx-class Ingresses. Remove or change to `higress` after migration.
321
+ - **Redis for AI features** — AI caching, token rate limiting, and quota require `global.enableRedis=true`. Without Redis, these plugins fail.
322
+ - **Plugin Server for OCI plugins** — If using `url: oci://...` in WasmPlugin, ensure `global.enablePluginServer=true` or have direct OCI registry access.
323
+ - **Standalone console ingress** — `higress-console` needs `ingress.enabled=true` and a domain for external access. Default is ClusterIP only.
324
+ - **Gateway metrics** — `gateway.metrics.enabled=true` creates PodMonitor. Requires prometheus-operator or VictoriaMetrics operator CRDs.
325
+ - **Controller readiness** — Controller uses `/ready` on port 8888. Ensure network policies allow this.
326
+ - **HostNetwork gateway** — `gateway.hostNetwork=true` binds host ports 80/443. Requires host port availability and potential security implications.
327
+ - **autoscaling/v2 API** — `global.autoscalingv2API` (default: true) uses `autoscaling/v2`. If your cluster is older, set to false.
328
+ - **alpn h2** — `global.disableAlpnH2: false` (default) enables HTTP/2 ALPN. Set true if clients don't support HTTP/2.