Skip to content

Commit 4982876

Browse files
author
Andrew Weiss
committed
docs: Full knowledge base overhaul
- Rewrite introduction with use-case first approach and v2.00 messaging - Reorganize sidebar navigation into logical sections - Add professional styling (callouts, cards, badges, improved tables) - Create breadcrumb navigation component - Add quick_start.md for 60-second installation guide - Enhance protocols page with full protocol details - Update fonts to Ubuntu (matching kubeshark.com) - Update code blocks styling to match main site - Add Kubeshark links throughout content - Replace K8s references with Kubernetes - Fix domain from kubeshark.co to kubeshark.com - Fix SEO/OG configuration
1 parent f681f6c commit 4982876

File tree

90 files changed

+913
-499
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

90 files changed

+913
-499
lines changed
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
---
2+
import { SIDEBAR } from '../../config';
3+
4+
export interface Props {
5+
currentPage: string;
6+
}
7+
8+
const { currentPage } = Astro.props;
9+
10+
// Find the current page in the sidebar to determine its section
11+
function findBreadcrumb(currentPage: string) {
12+
const normalizedPath = currentPage.replace(/^\//, '').replace(/\/$/, '');
13+
14+
for (const [section, links] of Object.entries(SIDEBAR.en)) {
15+
for (const link of links) {
16+
if (link.link === normalizedPath) {
17+
return {
18+
section,
19+
page: link.text,
20+
};
21+
}
22+
}
23+
}
24+
25+
return null;
26+
}
27+
28+
const breadcrumb = findBreadcrumb(currentPage);
29+
---
30+
31+
{breadcrumb && (
32+
<nav class="breadcrumb" aria-label="Breadcrumb">
33+
<a href="/en/introduction">Docs</a>
34+
<span class="breadcrumb-separator" aria-hidden="true">/</span>
35+
<span class="breadcrumb-section">{breadcrumb.section}</span>
36+
<span class="breadcrumb-separator" aria-hidden="true">/</span>
37+
<span class="breadcrumb-current" aria-current="page">{breadcrumb.page}</span>
38+
</nav>
39+
)}
40+
41+
<style>
42+
.breadcrumb {
43+
display: flex;
44+
align-items: center;
45+
gap: 0.5rem;
46+
font-size: 0.875rem;
47+
color: var(--theme-text-light);
48+
margin-bottom: 1.5rem;
49+
flex-wrap: wrap;
50+
}
51+
52+
.breadcrumb a {
53+
color: var(--theme-text-light);
54+
text-decoration: none;
55+
transition: color 0.2s ease;
56+
}
57+
58+
.breadcrumb a:hover {
59+
color: var(--theme-text-accent);
60+
text-decoration: underline;
61+
}
62+
63+
.breadcrumb-separator {
64+
color: var(--theme-text-light);
65+
opacity: 0.5;
66+
user-select: none;
67+
}
68+
69+
.breadcrumb-section {
70+
color: var(--theme-text-light);
71+
}
72+
73+
.breadcrumb-current {
74+
color: var(--theme-text);
75+
font-weight: 500;
76+
}
77+
</style>

src/config.ts

Lines changed: 61 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,15 @@
11
export const SITE = {
22
title: 'Kubeshark',
3-
description: 'Kubernetes deep visibility.',
3+
description: 'Real-time Kubernetes network observability. Capture, analyze, and debug API traffic across your entire cluster with zero instrumentation.',
44
defaultLanguage: 'en_US',
55
};
66

77
export const OPEN_GRAPH = {
88
image: {
9-
src: 'https://github.com/withastro/astro/blob/main/assets/social/banner.jpg?raw=true',
10-
alt:
11-
'astro logo on a starry expanse of space,' +
12-
' with a purple saturn-like planet floating in the right foreground',
9+
src: 'https://kubeshark.co/images/social-preview.png',
10+
alt: 'Kubeshark - Kubernetes Network Observability',
1311
},
14-
twitter: 'astrodotbuild',
12+
twitter: 'kubabornetsky',
1513
};
1614

1715
// This is the type of the frontmatter you put in the docs markdown files.
@@ -52,92 +50,74 @@ export const SIDEBAR: Sidebar = {
5250
en: {
5351
'Getting Started': [
5452
{ text: 'Introduction', link: 'en/introduction' },
53+
{ text: 'Quick Start', link: 'en/quick_start' },
5554
{ text: 'Anatomy of Kubeshark', link: 'en/anatomy_of_kubeshark' },
56-
{ text: 'Installation', link: 'en/install' },
57-
{ text: 'Best Practices', link: 'en/best_practice' },
58-
// { text: 'Getting Support', link: 'en/support' },
55+
{ text: 'Installation', link: 'en/install' },
56+
{ text: 'Best Practices', link: 'en/best_practice' },
5957
],
60-
'Functionality': [
61-
// { text: 'Network Sniffing', link: 'en/network_sniffing' },
62-
{ text: 'API (L7) Dissection', link: 'en/v2/l7_api_dissection' },
58+
'Core Features': [
6359
{ text: 'Dashboard', link: 'en/ui' },
64-
{ text: 'Decrypt TLS/HTTPS', link: 'en/encrypted_traffic' },
60+
{ text: 'L7 API Dissection', link: 'en/v2/l7_api_dissection' },
61+
{ text: 'TLS Decryption', link: 'en/encrypted_traffic' },
6562
{ text: 'Service Map', link: 'en/service_map' },
66-
{ text: 'Cluster-wide PCAP Export', link: 'en/v2/pcap_export' },
67-
{ text: 'L4 to L7 Mapping', link: 'en/v2/l4_to_l7' },
68-
// { text: 'Running Headless', link: 'en/headless' },
69-
// { text: 'Display Filters (KFL)', link: 'en/filtering' },
70-
{ text: 'Capture Filters', link: 'en/pod_targeting' },
7163
{ text: 'Protocol Support', link: 'en/protocols' },
72-
// { text: 'Pod-to-pod Connection Analysis', link: 'en/pod_to_pod_connections' },
73-
// { text: 'Network Error Detection & Analysis', link: 'en/half_connections' },
74-
// { text: 'PCAP Dumper (Capturing Raw Traffic)', link: 'en/raw_traffic_capture' },
75-
{ text: 'On/Off Switch (Dormant)', link: 'en/on_off_switch' },
76-
// { text: 'Envoy/Istio Support', link: 'en/envoy' },
64+
{ text: 'Capture Filters', link: 'en/pod_targeting' },
65+
{ text: 'Display Filters (KFL)', link: 'en/filtering' },
7766
],
78-
// 'Traffic Recording': [
79-
// { text: 'Full-context Traffic Recorder', link: 'en/traffic_recorder' },
80-
// { text: 'Cluster-wide Traffic Snapshot', link: 'en/pcapdump' },
81-
// { text: 'Offline Analysis', link: 'en/offline_analysis' },
82-
// // { text: 'Recordings Management', link: 'en/recordings_management' },
83-
// { text: 'Long Term Retention', link: 'en/long_term_retention' },
84-
// // { text: 'PCAP & API metadata', link: 'en/pcap' },
85-
// { text: 'Data Persistency', link: 'en/data_persistency' },
86-
// ],
87-
// 'Network Agents': [
88-
// { text: 'Introduction', link: 'en/automation_introduction' },
89-
// { text: 'Creating', link: 'en/agent_create' },
90-
// { text: 'Activating', link: 'en/agents_run' },
91-
// { text: 'Agent Logic', link: 'en/automation_scripting' },
92-
// { text: 'Synchronizing Local Files', link: 'en/automation_scripts_cmd' },
93-
// { text: 'Hooks', link: 'en/automation_hooks' },
94-
// { text: 'Helpers', link: 'en/automation_helpers' },
95-
// // { text: 'Wrappers', link: 'en/automation_wrappers' },
96-
// { text: 'Jobs', link: 'en/automation_jobs' },
97-
// { text: 'Logs & Alerts', link: 'en/automation_logs_alerts' },
98-
// ],
99-
'Collaboration': [
100-
{ text: 'Ingress', link: 'en/ingress' },
101-
// { text: 'Authentication', link: 'en/authentication' },
102-
// { text: 'Sensitive Data Redaction', link: 'en/redaction' },
103-
{ text: 'SAML', link: 'en/saml' },
104-
{ text: 'OIDC w/ DEX', link: 'en/oidc' },
105-
{ text: 'Reverse Proxy w/ a Custom Path', link: 'en/custom_path' },
67+
'Traffic Analysis': [
68+
{ text: 'PCAP Export', link: 'en/v2/pcap_export' },
69+
{ text: 'L4 to L7 Mapping', link: 'en/v2/l4_to_l7' },
70+
{ text: 'Traffic Recording', link: 'en/traffic_recorder' },
71+
{ text: 'Offline Analysis', link: 'en/offline_analysis' },
72+
{ text: 'Long-term Retention', link: 'en/long_term_retention' },
73+
{ text: 'Traffic Investigation', link: 'en/traffic_investigation' },
10674
],
107-
// 'Integrations': [
108-
// { text: 'Log Aggregation', link: 'en/integration_kubeshark_logs' },
109-
// { text: 'Prometheus', link: 'en/metrics' },
110-
// { text: 'Necessary Credentials', link: 'en/integrations_credentials' },
111-
// { text: 'InfluxDB & Grafana', link: 'en/integrations_influxdb' },
112-
// { text: 'Elasticsearch', link: 'en/integrations_elastic' },
113-
// { text: 'AWS S3', link: 'en/integrations_aws_s3' },
114-
// { text: 'Google Cloud Storage', link: 'en/integrations_gcs' },
115-
// { text: 'Slack', link: 'en/integrations_slack' },
116-
// { text: 'Webhook', link: 'en/integrations_webhook' },
117-
// { text: 'K8s Lens', link: 'en/integrations_lens' },
118-
// { text: 'Websocket API endpoints', link: 'en/api_endpoints' },
119-
// ],
120-
'Commercial': [
121-
{ text: 'Community vs. Micro vs. Enterprise', link: 'en/plans' },
122-
{ text: 'The License Key', link: 'en/how_to_use_the_license' },
123-
{ text: 'License', link: 'en/license' },
124-
{ text: 'Security & Compliance', link: 'en/security' },
125-
{ text: 'POC Checklist', link: 'en/poc' },
75+
'Automation': [
76+
{ text: 'Network Agents', link: 'en/automation_introduction' },
77+
{ text: 'Creating Agents', link: 'en/agent_create' },
78+
{ text: 'Agent Scripting', link: 'en/automation_scripting' },
79+
{ text: 'Hooks', link: 'en/automation_hooks' },
80+
{ text: 'Jobs', link: 'en/automation_jobs' },
81+
{ text: 'Alerts & Logs', link: 'en/automation_logs_alerts' },
12682
],
127-
'DevOps Stuff': [
128-
{ text: 'Data Time To Live (TTL)', link: 'en/traffic_retention' },
129-
// { text: 'CPU & Memory Consumption', link: 'en/performance' },
130-
{ text: 'Internet Connectivity', link: 'en/air_gapped' },
131-
// { text: 'Packet Capture (eBPF, AF_PACKET)', link: 'en/packet_capture' },
132-
{ text: 'Installing Older Releases', link: 'en/tag_release' },
133-
// { text: 'EKS, ALB, Ingress & TLS', link: 'en/aws_ingress_auth' },
134-
// { text: 'EKS & IRSA', link: 'en/irsa' },
83+
'Integrations': [
84+
{ text: 'AWS S3', link: 'en/integrations_aws_s3' },
85+
{ text: 'Google Cloud Storage', link: 'en/integrations_gcs' },
86+
{ text: 'Azure Blob Storage', link: 'en/integrations_azure' },
87+
{ text: 'Elasticsearch', link: 'en/integrations_elastic' },
88+
{ text: 'InfluxDB & Grafana', link: 'en/integrations_influxdb' },
89+
{ text: 'Slack', link: 'en/integrations_slack' },
90+
{ text: 'Webhooks', link: 'en/integrations_webhook' },
91+
{ text: 'Prometheus Metrics', link: 'en/metrics' },
92+
],
93+
'Authentication': [
94+
{ text: 'Ingress Setup', link: 'en/ingress' },
95+
{ text: 'SAML', link: 'en/saml' },
96+
{ text: 'OIDC with DEX', link: 'en/oidc' },
97+
{ text: 'Custom Path Proxy', link: 'en/custom_path' },
98+
],
99+
'Deployment': [
100+
{ text: 'Helm Installation', link: 'en/install_helm' },
101+
{ text: 'Air-Gapped Environments', link: 'en/air_gapped' },
102+
{ text: 'OpenShift', link: 'en/openshift' },
135103
{ text: 'EFS Persistent Volume', link: 'en/efs' },
136-
{ text: 'Openshift', link: 'en/openshift' },
137104
{ text: 'Node Scheduling', link: 'en/node_scheduling' },
138-
{ text: 'Istio', link: 'en/service_mesh' },
105+
{ text: 'Service Mesh (Istio)', link: 'en/service_mesh' },
106+
{ text: 'Data Retention (TTL)', link: 'en/traffic_retention' },
107+
{ text: 'Performance Tuning', link: 'en/performance' },
139108
{ text: 'Troubleshooting', link: 'en/troubleshooting' },
140-
// { text: 'Performance Benchmark', link: 'en/performance_benchmark' },
109+
],
110+
'Reference': [
111+
{ text: 'Configuration', link: 'en/config' },
112+
{ text: 'API Endpoints', link: 'en/api_endpoints' },
113+
{ text: 'Permissions', link: 'en/permissions' },
114+
{ text: 'Security & Compliance', link: 'en/security' },
115+
],
116+
'Commercial': [
117+
{ text: 'Plans Comparison', link: 'en/plans' },
118+
{ text: 'License Key', link: 'en/how_to_use_the_license' },
119+
{ text: 'License Terms', link: 'en/license' },
120+
{ text: 'POC Checklist', link: 'en/poc' },
141121
],
142122
},
143123
};

src/layouts/MainLayout.astro

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import Header from '../components/Header/Header.astro';
55
import PageContent from '../components/PageContent/PageContent.astro';
66
import LeftSidebar from '../components/LeftSidebar/LeftSidebar.astro';
77
import RightSidebar from '../components/RightSidebar/RightSidebar.astro';
8+
import Breadcrumb from '../components/Breadcrumb/Breadcrumb.astro';
89
import * as CONFIG from '../config';
910
import type { MarkdownHeading } from 'astro';
1011
import Footer from '../components/Footer/Footer.astro';
@@ -129,6 +130,7 @@ const githubEditUrl = `${CONFIG.GITHUB_EDIT_URL}/${currentFile}`;
129130
<LeftSidebar currentPage={currentPage} />
130131
</aside>
131132
<div id="grid-main">
133+
<Breadcrumb currentPage={currentPage} />
132134
<PageContent frontmatter={frontmatter} headings={headings} githubEditUrl={githubEditUrl}>
133135
<Mascot
134136
frontmatter={frontmatter}

src/pages/en/actionable_detection.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ layout: ../../layouts/MainLayout.astro
66

77
## Detection
88

9-
**Kubeshark** scripting in conjunction with hooks provides mean to programmatically detect suspicious network behaviors. Using helpers can trigger actions as a result and by that reduce the incident response time.
9+
[Kubeshark](https://kubeshark.com) scripting in conjunction with hooks provides mean to programmatically detect suspicious network behaviors. Using helpers can trigger actions as a result and by that reduce the incident response time.
1010

1111
For example:
1212
```js
@@ -49,6 +49,6 @@ Forensics can be uploaded to an immutable datastore like AWS S3 or Google Cloud
4949

5050
### Telemetry
5151

52-
**Kubeshark** enables you to send metrics and logs to your favorite telemetry or logs provider and enjoy dashboards and alerts.
52+
[Kubeshark](https://kubeshark.com) enables you to send metrics and logs to your favorite telemetry or logs provider and enjoy dashboards and alerts.
5353

5454
> Read more in the [InfluxDB & Grafana](/en/integrations_influxdb) and [Elasticsearch](/en/integrations_elastic) sections.

src/pages/en/agent_create.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
title: Creating Network Agents
3-
description: A guide for creating, editing, and managing custom network agents in **Kubeshark**, using templates, local scripts, and the GenAI-powered assistant.
3+
description: A guide for creating, editing, and managing custom network agents in Kubeshark, using templates, local scripts, and the GenAI-powered assistant.
44
layout: ../../layouts/MainLayout.astro
55
---
66

@@ -14,21 +14,21 @@ Each **Network Agent** has its own logic, defined by a [JavaScript script](/en/a
1414

1515
### Using an Agent Template
1616

17-
**Kubeshark** provides fully functional Agent templates. These can be used as-is, customized to suit your needs, or used as inspiration for creating new agents.
17+
[Kubeshark](https://kubeshark.com) provides fully functional Agent templates. These can be used as-is, customized to suit your needs, or used as inspiration for creating new agents.
1818

1919
![Automatic activation of the Redact Sensitive Data Agent](/redact_agent.png)
2020

2121
### Using Custom GPT
2222

2323
While there are multiple ways to create new Agents, the easiest method involves using our trained [OpenAI-based custom GPT](https://chatgpt.com/g/g-6815c948b00c81918f1157b5a3cc87b2-kubeshark-network-agent).
2424

25-
> This GPT is not connected to your running instance of **Kubeshark** and has no awareness of your identity or usage history. It is a pure code-generation assistant actively trained by the **Kubeshark** team.
25+
> This GPT is not connected to your running instance of [Kubeshark](https://kubeshark.com) and has no awareness of your identity or usage history. It is a pure code-generation assistant actively trained by the [Kubeshark](https://kubeshark.com) team.
2626
2727
### Persistency
2828

29-
Any Agent created in the dashboard will persist for the lifetime of the **Kubeshark** deployment. When **Kubeshark** is uninstalled, any Agent logic will be erased from memory.
29+
Any Agent created in the dashboard will persist for the lifetime of the [Kubeshark](https://kubeshark.com) deployment. When [Kubeshark](https://kubeshark.com) is uninstalled, any Agent logic will be erased from memory.
3030

31-
To ensure Agent logic persistency, save locally in JS files and use the [`kubeshark scripts` command](/en/automation_scripts_cmd) to synchronize those with any running deployment of **Kubeshark**.
31+
To ensure Agent logic persistency, save locally in JS files and use the [`kubeshark scripts` command](/en/automation_scripts_cmd) to synchronize those with any running deployment of [Kubeshark](https://kubeshark.com).
3232

3333
## Post-Creation Agent Logic Modification
3434

@@ -52,7 +52,7 @@ Simply highlight the code you want to have inspected or changed, and use our inl
5252

5353
### Local File Editing
5454

55-
If you keep your files locally and use the [`kubeshark scripts` command](/en/automation_scripts_cmd) to synchronize them with your running deployment of **Kubeshark**, any changes to the local file will be reflected in **Kubeshark**.
55+
If you keep your files locally and use the [`kubeshark scripts` command](/en/automation_scripts_cmd) to synchronize them with your running deployment of [Kubeshark](https://kubeshark.com), any changes to the local file will be reflected in [Kubeshark](https://kubeshark.com).
5656

5757
### Autonomous Agent Logic Modification
5858

src/pages/en/agents_run.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,26 @@
11
---
22
title: Activating Network Agents
3-
description: This guide explains how to activate **Kubeshark** Network Agents automatically or on demand, using templates, scripts, or the Dashboard.
3+
description: This guide explains how to activate Kubeshark Network Agents automatically or on demand, using templates, scripts, or the Dashboard.
44
layout: ../../layouts/MainLayout.astro
55
---
66

77
**Network Agents** can be activated either on demand or automatically in several ways:
88

99
1. Using Agent templates
1010
2. Using the [`kubeshark scripts` command](/en/automation_scripts_cmd)
11-
3. Via the **Kubeshark** Dashboard
11+
3. Via the [Kubeshark](https://kubeshark.com) Dashboard
1212

1313
## Activating Agents Using Agent Templates
1414

15-
**Kubeshark** provides fully functional Agent templates. These can be used as-is to fulfill automation tasks, customized, or used as inspiration to create new agents.
15+
[Kubeshark](https://kubeshark.com) provides fully functional Agent templates. These can be used as-is to fulfill automation tasks, customized, or used as inspiration to create new agents.
1616

1717
![Automatic activation of the Redact Sensitive Data Agent](/redact_agent.png)
1818

1919
### Activating an Agent Template Automatically
2020

2121
To automatically run one or more Agent templates, add the agent name(s) to the `scripting.active` Helm value.
2222

23-
For example, to activate the `Redact Sensitive Data` agent each time **Kubeshark** starts:
23+
For example, to activate the `Redact Sensitive Data` agent each time [Kubeshark](https://kubeshark.com) starts:
2424

2525
```yaml
2626
scripting:
@@ -47,8 +47,8 @@ scripting:
4747

4848
## Running from the UI
4949

50-
You can also run agents directly from the **Kubeshark** UI.
51-
**Note:** Scripts created in the UI are not persistent and will be lost when **Kubeshark** restarts.
50+
You can also run agents directly from the [Kubeshark](https://kubeshark.com) UI.
51+
**Note:** Scripts created in the UI are not persistent and will be lost when [Kubeshark](https://kubeshark.com) restarts.
5252

5353
To run a script:
5454

src/pages/en/air_gapped.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ layout: ../../layouts/MainLayout.astro
66

77
**Air-gapped Environment Support is an Enterprise Feature**
88

9-
Kubeshark requires a valid ENTERPRISE license to operate in an air-gapped environment. Any environment that does not allow free communication to https://api.kubeshark.com/ is considered an air-gapped environment.
9+
[Kubeshark](https://kubeshark.com) requires a valid ENTERPRISE license to operate in an air-gapped environment. Any environment that does not allow free communication to https://api.kubeshark.comm/ is considered an air-gapped environment.
1010

11-
[Contact us](https://kubeshark.com/contact-us) to get an ENTERPRISE license.
11+
[Contact us](https://kubeshark.comm/contact-us) to get an ENTERPRISE license.
1212

1313
> A PRO license requires an active internet connection and cannot function properly in an air-gapped environment.
1414

0 commit comments

Comments
 (0)