Skip to content

Commit 255eb9b

Browse files
aljesusgmanusa
andauthored
feat(toolsets): add kiali support (#425)
* Add kiali toolset Signed-off-by: Alberto Gutierrez <[email protected]> * Kiali Options in a type and make kiali instance Signed-off-by: Alberto Gutierrez <[email protected]> * Update docs about Kiali Signed-off-by: Alberto Gutierrez <[email protected]> * Make configuration toolsets and update docs Signed-off-by: Alberto Gutierrez <[email protected]> * Change token get Signed-off-by: Alberto Gutierrez <[email protected]> * Adapt tests to the new toolsetconfig Signed-off-by: Alberto Gutierrez <[email protected]> * review(toolsets): align kiali implementation Signed-off-by: Marc Nuri <[email protected]> * Remove kiali flags Signed-off-by: Alberto Gutierrez <[email protected]> * Add kiali tools Signed-off-by: Alberto Gutierrez <[email protected]> * Support for certificateAuthority Signed-off-by: Alberto Gutierrez <[email protected]> * update docs y tests Signed-off-by: Alberto Gutierrez <[email protected]> --------- Signed-off-by: Alberto Gutierrez <[email protected]> Signed-off-by: Marc Nuri <[email protected]> Co-authored-by: Marc Nuri <[email protected]>
1 parent b4c20f9 commit 255eb9b

36 files changed

+3055
-2
lines changed

README.md

Lines changed: 134 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ Enabling only the toolsets you need can help reduce the context size and improve
204204

205205
### Available Toolsets
206206

207-
The following sets of tools are available (all on by default):
207+
The following sets of tools are available (all on by default).
208208

209209
<!-- AVAILABLE-TOOLSETS-START -->
210210

@@ -213,9 +213,12 @@ The following sets of tools are available (all on by default):
213213
| config | View and manage the current local Kubernetes configuration (kubeconfig) |
214214
| core | Most common tools for Kubernetes management (Pods, Generic Resources, Events, etc.) |
215215
| helm | Tools for managing Helm charts and releases |
216+
| kiali | Most common tools for managing Kiali |
216217

217218
<!-- AVAILABLE-TOOLSETS-END -->
218219

220+
See more info about Kiali integration in [docs/KIALI_INTEGRATION.md](docs/KIALI_INTEGRATION.md).
221+
219222
### Tools
220223

221224
In case multi-cluster support is enabled (default) and you have access to multiple clusters, all applicable tools will include an additional `context` argument to specify the Kubernetes context (cluster) to use for that operation.
@@ -343,6 +346,136 @@ In case multi-cluster support is enabled (default) and you have access to multip
343346

344347
</details>
345348

349+
<details>
350+
351+
<summary>kiali</summary>
352+
353+
- **graph** - Check the status of my mesh by querying Kiali graph
354+
- `namespace` (`string`) - Optional single namespace to include in the graph (alternative to namespaces)
355+
- `namespaces` (`string`) - Optional comma-separated list of namespaces to include in the graph
356+
357+
- **mesh_status** - Get the status of mesh components including Istio, Kiali, Grafana, Prometheus and their interactions, versions, and health status
358+
359+
- **istio_config** - Get all Istio configuration objects in the mesh including their full YAML resources and details
360+
361+
- **istio_object_details** - Get detailed information about a specific Istio object including validation and help information
362+
- `group` (`string`) **(required)** - API group of the Istio object (e.g., 'networking.istio.io', 'gateway.networking.k8s.io')
363+
- `kind` (`string`) **(required)** - Kind of the Istio object (e.g., 'DestinationRule', 'VirtualService', 'HTTPRoute', 'Gateway')
364+
- `name` (`string`) **(required)** - Name of the Istio object
365+
- `namespace` (`string`) **(required)** - Namespace containing the Istio object
366+
- `version` (`string`) **(required)** - API version of the Istio object (e.g., 'v1', 'v1beta1')
367+
368+
- **istio_object_patch** - Modify an existing Istio object using PATCH method. The JSON patch data will be applied to the existing object.
369+
- `group` (`string`) **(required)** - API group of the Istio object (e.g., 'networking.istio.io', 'gateway.networking.k8s.io')
370+
- `json_patch` (`string`) **(required)** - JSON patch data to apply to the object
371+
- `kind` (`string`) **(required)** - Kind of the Istio object (e.g., 'DestinationRule', 'VirtualService', 'HTTPRoute', 'Gateway')
372+
- `name` (`string`) **(required)** - Name of the Istio object
373+
- `namespace` (`string`) **(required)** - Namespace containing the Istio object
374+
- `version` (`string`) **(required)** - API version of the Istio object (e.g., 'v1', 'v1beta1')
375+
376+
- **istio_object_create** - Create a new Istio object using POST method. The JSON data will be used to create the new object.
377+
- `group` (`string`) **(required)** - API group of the Istio object (e.g., 'networking.istio.io', 'gateway.networking.k8s.io')
378+
- `json_data` (`string`) **(required)** - JSON data for the new object
379+
- `kind` (`string`) **(required)** - Kind of the Istio object (e.g., 'DestinationRule', 'VirtualService', 'HTTPRoute', 'Gateway')
380+
- `namespace` (`string`) **(required)** - Namespace where the Istio object will be created
381+
- `version` (`string`) **(required)** - API version of the Istio object (e.g., 'v1', 'v1beta1')
382+
383+
- **istio_object_delete** - Delete an existing Istio object using DELETE method.
384+
- `group` (`string`) **(required)** - API group of the Istio object (e.g., 'networking.istio.io', 'gateway.networking.k8s.io')
385+
- `kind` (`string`) **(required)** - Kind of the Istio object (e.g., 'DestinationRule', 'VirtualService', 'HTTPRoute', 'Gateway')
386+
- `name` (`string`) **(required)** - Name of the Istio object
387+
- `namespace` (`string`) **(required)** - Namespace containing the Istio object
388+
- `version` (`string`) **(required)** - API version of the Istio object (e.g., 'v1', 'v1beta1')
389+
390+
- **validations_list** - List all the validations in the current cluster from all namespaces
391+
- `namespace` (`string`) - Optional single namespace to retrieve validations from (alternative to namespaces)
392+
- `namespaces` (`string`) - Optional comma-separated list of namespaces to retrieve validations from
393+
394+
- **namespaces** - Get all namespaces in the mesh that the user has access to
395+
396+
- **services_list** - Get all services in the mesh across specified namespaces with health and Istio resource information
397+
- `namespaces` (`string`) - Comma-separated list of namespaces to get services from (e.g. 'bookinfo' or 'bookinfo,default'). If not provided, will list services from all accessible namespaces
398+
399+
- **service_details** - Get detailed information for a specific service in a namespace, including validation, health status, and configuration
400+
- `namespace` (`string`) **(required)** - Namespace containing the service
401+
- `service` (`string`) **(required)** - Name of the service to get details for
402+
403+
- **service_metrics** - Get metrics for a specific service in a namespace. Supports filtering by time range, direction (inbound/outbound), reporter, and other query parameters
404+
- `byLabels` (`string`) - Comma-separated list of labels to group metrics by (e.g., 'source_workload,destination_service'). Optional
405+
- `direction` (`string`) - Traffic direction: 'inbound' or 'outbound'. Optional, defaults to 'outbound'
406+
- `duration` (`string`) - Duration of the query period in seconds (e.g., '1800' for 30 minutes). Optional, defaults to 1800 seconds
407+
- `namespace` (`string`) **(required)** - Namespace containing the service
408+
- `quantiles` (`string`) - Comma-separated list of quantiles for histogram metrics (e.g., '0.5,0.95,0.99'). Optional
409+
- `rateInterval` (`string`) - Rate interval for metrics (e.g., '1m', '5m'). Optional, defaults to '1m'
410+
- `reporter` (`string`) - Metrics reporter: 'source', 'destination', or 'both'. Optional, defaults to 'source'
411+
- `requestProtocol` (`string`) - Filter by request protocol (e.g., 'http', 'grpc', 'tcp'). Optional
412+
- `service` (`string`) **(required)** - Name of the service to get metrics for
413+
- `step` (`string`) - Step between data points in seconds (e.g., '15'). Optional, defaults to 15 seconds
414+
415+
- **workloads_list** - Get all workloads in the mesh across specified namespaces with health and Istio resource information
416+
- `namespaces` (`string`) - Comma-separated list of namespaces to get workloads from (e.g. 'bookinfo' or 'bookinfo,default'). If not provided, will list workloads from all accessible namespaces
417+
418+
- **workload_details** - Get detailed information for a specific workload in a namespace, including validation, health status, and configuration
419+
- `namespace` (`string`) **(required)** - Namespace containing the workload
420+
- `workload` (`string`) **(required)** - Name of the workload to get details for
421+
422+
- **workload_metrics** - Get metrics for a specific workload in a namespace. Supports filtering by time range, direction (inbound/outbound), reporter, and other query parameters
423+
- `byLabels` (`string`) - Comma-separated list of labels to group metrics by (e.g., 'source_workload,destination_service'). Optional
424+
- `direction` (`string`) - Traffic direction: 'inbound' or 'outbound'. Optional, defaults to 'outbound'
425+
- `duration` (`string`) - Duration of the query period in seconds (e.g., '1800' for 30 minutes). Optional, defaults to 1800 seconds
426+
- `namespace` (`string`) **(required)** - Namespace containing the workload
427+
- `quantiles` (`string`) - Comma-separated list of quantiles for histogram metrics (e.g., '0.5,0.95,0.99'). Optional
428+
- `rateInterval` (`string`) - Rate interval for metrics (e.g., '1m', '5m'). Optional, defaults to '1m'
429+
- `reporter` (`string`) - Metrics reporter: 'source', 'destination', or 'both'. Optional, defaults to 'source'
430+
- `requestProtocol` (`string`) - Filter by request protocol (e.g., 'http', 'grpc', 'tcp'). Optional
431+
- `step` (`string`) - Step between data points in seconds (e.g., '15'). Optional, defaults to 15 seconds
432+
- `workload` (`string`) **(required)** - Name of the workload to get metrics for
433+
434+
- **health** - Get health status for apps, workloads, and services across specified namespaces in the mesh. Returns health information including error rates and status for the requested resource type
435+
- `namespaces` (`string`) - Comma-separated list of namespaces to get health from (e.g. 'bookinfo' or 'bookinfo,default'). If not provided, returns health for all accessible namespaces
436+
- `queryTime` (`string`) - Unix timestamp (in seconds) for the prometheus query. If not provided, uses current time. Optional
437+
- `rateInterval` (`string`) - Rate interval for fetching error rate (e.g., '10m', '5m', '1h'). Default: '10m'
438+
- `type` (`string`) - Type of health to retrieve: 'app', 'service', or 'workload'. Default: 'app'
439+
440+
- **workload_logs** - Get logs for a specific workload's pods in a namespace. Only requires namespace and workload name - automatically discovers pods and containers. Optionally filter by container name, time range, and other parameters. Container is auto-detected if not specified.
441+
- `container` (`string`) - Optional container name to filter logs. If not provided, automatically detects and uses the main application container (excludes istio-proxy and istio-init)
442+
- `namespace` (`string`) **(required)** - Namespace containing the workload
443+
- `since` (`string`) - Time duration to fetch logs from (e.g., '5m', '1h', '30s'). If not provided, returns recent logs
444+
- `tail` (`integer`) - Number of lines to retrieve from the end of logs (default: 100)
445+
- `workload` (`string`) **(required)** - Name of the workload to get logs for
446+
447+
- **app_traces** - Get distributed tracing data for a specific app in a namespace. Returns trace information including spans, duration, and error details for troubleshooting and performance analysis.
448+
- `app` (`string`) **(required)** - Name of the app to get traces for
449+
- `clusterName` (`string`) - Cluster name for multi-cluster environments (optional)
450+
- `endMicros` (`string`) - End time for traces in microseconds since epoch (optional)
451+
- `limit` (`integer`) - Maximum number of traces to return (default: 100)
452+
- `minDuration` (`integer`) - Minimum trace duration in microseconds (optional)
453+
- `namespace` (`string`) **(required)** - Namespace containing the app
454+
- `startMicros` (`string`) - Start time for traces in microseconds since epoch (optional)
455+
- `tags` (`string`) - JSON string of tags to filter traces (optional)
456+
457+
- **service_traces** - Get distributed tracing data for a specific service in a namespace. Returns trace information including spans, duration, and error details for troubleshooting and performance analysis.
458+
- `clusterName` (`string`) - Cluster name for multi-cluster environments (optional)
459+
- `endMicros` (`string`) - End time for traces in microseconds since epoch (optional)
460+
- `limit` (`integer`) - Maximum number of traces to return (default: 100)
461+
- `minDuration` (`integer`) - Minimum trace duration in microseconds (optional)
462+
- `namespace` (`string`) **(required)** - Namespace containing the service
463+
- `service` (`string`) **(required)** - Name of the service to get traces for
464+
- `startMicros` (`string`) - Start time for traces in microseconds since epoch (optional)
465+
- `tags` (`string`) - JSON string of tags to filter traces (optional)
466+
467+
- **workload_traces** - Get distributed tracing data for a specific workload in a namespace. Returns trace information including spans, duration, and error details for troubleshooting and performance analysis.
468+
- `clusterName` (`string`) - Cluster name for multi-cluster environments (optional)
469+
- `endMicros` (`string`) - End time for traces in microseconds since epoch (optional)
470+
- `limit` (`integer`) - Maximum number of traces to return (default: 100)
471+
- `minDuration` (`integer`) - Minimum trace duration in microseconds (optional)
472+
- `namespace` (`string`) **(required)** - Namespace containing the workload
473+
- `startMicros` (`string`) - Start time for traces in microseconds since epoch (optional)
474+
- `tags` (`string`) - JSON string of tags to filter traces (optional)
475+
- `workload` (`string`) **(required)** - Name of the workload to get traces for
476+
477+
</details>
478+
346479

347480
<!-- AVAILABLE-TOOLSETS-TOOLS-END -->
348481

0 commit comments

Comments
 (0)