Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
8a564cc
fix(tutorials): pre-production corrections per Mati's review (#200)
agustinoli Jun 5, 2026
f88d374
fix(tutorials): add screenshots to MongoDB Atlas VPC Peering Tutorial
agustinoli Jun 9, 2026
8dafd02
feat(tutorials): exhaustive environment testing guide (SLEAK-5896) (#…
agustinoli Jun 9, 2026
30db153
docs(tutorials): add one nodepool per project strategy (EN/ES) (#202)
agustinoli Jun 9, 2026
4258b0c
docs(tutorials): clarify nodepool definition (EN/ES) (#208)
agustinoli Jun 29, 2026
501ef0f
chore: add privacy policy and terms and conditions as new pages (#172)
gonferreyra Jul 1, 2026
cb4877d
Bump follow-redirects from 1.15.11 to 1.16.0 (#173)
dependabot[bot] Jul 1, 2026
40a644a
Bump fast-uri from 3.0.5 to 3.1.2 (#176)
dependabot[bot] Jul 1, 2026
35ed0e4
Bump @babel/plugin-transform-modules-systemjs from 7.27.1 to 7.29.4 (…
dependabot[bot] Jul 1, 2026
928622e
chore(deps): bump shell-quote from 1.8.3 to 1.9.0 (#203)
dependabot[bot] Jul 1, 2026
d05913e
chore(deps): bump dompurify from 3.3.0 to 3.4.11 (#206)
dependabot[bot] Jul 1, 2026
76ee606
chore(deps): bump joi from 17.13.3 to 17.13.4 (#204)
dependabot[bot] Jul 1, 2026
318a975
chore(deps): bump @babel/core from 7.28.4 to 7.29.7 (#209)
dependabot[bot] Jul 1, 2026
72db6ba
chore(deps): bump http-proxy-middleware from 2.0.9 to 2.0.10 (#210)
dependabot[bot] Jul 1, 2026
b377086
chore(deps): bump launch-editor from 2.11.1 to 2.14.1 (#207)
dependabot[bot] Jul 1, 2026
06bf2ad
SLEAK-6109: build --timeout docs (Build + CLI pages) + ES build page …
lucaiz Jul 3, 2026
6d5c9b2
fix(docs): FAQ summaries rendering as "Details" instead of the questi…
lucaiz Jul 7, 2026
8f337d2
chore(deps): bump websocket-driver from 0.7.4 to 0.7.5 (#223)
dependabot[bot] Jul 22, 2026
994780e
chore(deps): bump postcss from 8.5.6 to 8.5.16 (#218)
dependabot[bot] Jul 22, 2026
e1ca2c7
chore(deps): bump brace-expansion from 1.1.11 to 1.1.15 (#217)
dependabot[bot] Jul 22, 2026
f27776d
SLEAK-5896 + SLEAK-5875: docs release 2.12.1 fixes (#216)
agustinoli Jul 22, 2026
75d91df
chore(deps): bump webpack-dev-server from 5.2.2 to 5.2.5 (#211)
dependabot[bot] Jul 22, 2026
69a62a4
feat(tutorials): cost review guide (SLEAK-6054) (#219)
agustinoli Jul 22, 2026
17269d7
docs(support): add support scope page - SLEAK-5570 (#222)
agustinoli Jul 22, 2026
906a6f3
chore(deps): bump fast-uri from 3.1.2 to 3.1.4 (#228)
dependabot[bot] Jul 22, 2026
5afe305
chore(deps): bump dompurify from 3.4.11 to 3.4.12 (#229)
dependabot[bot] Jul 22, 2026
3d180f9
chore(deps): bump webpack-dev-server from 5.2.5 to 5.2.6 (#227)
dependabot[bot] Jul 22, 2026
2dcb4ec
chore(deps): bump body-parser from 1.20.5 to 1.20.6 (#226)
dependabot[bot] Jul 22, 2026
8772ced
chore(deps): bump brace-expansion from 1.1.15 to 1.1.16 (#225)
dependabot[bot] Jul 22, 2026
26a461c
docs(project): Manifests, niveles de Values y Pending Changes/Publish…
mjroson Jul 22, 2026
67ae817
fix(docs): corrige link roto en Términos y Condiciones (ES) que rompí…
mjroson Jul 22, 2026
c56d4aa
docs: support-scope review adjustments + KMS step in RDS snapshot res…
agustinoli Jul 29, 2026
c59f793
docs(tutorials): sticky sessions via ALB ingress annotations (EN/ES) …
agustinoli Jul 31, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 42 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

## Overview

This is the Docusaurus 3 site for [docs.sleakops.com](https://docs.sleakops.com), edited via Sveltia CMS. Content lives under `content/docs/<en|es>/<section>/`, `content/tutorials/<en|es>/`, and `content/changelog/<en|es>/`. For the full writing style guide (voice, doc article vs tutorial structure, FAQ format, tags, image conventions), see `.claude/skills/sleakops-docs` — this file only covers repo mechanics.

## Development Commands

```bash
make install # yarn install (via docker compose)
make run # docker compose up -d — dev server on :4000 (English content)
make run-es # dev server with locale=es
make build # production build, all locales
make build-en / make build-es # single-locale build
make serve # serve the production build locally
make collections # regenerate Sveltia CMS config.yml from the content/ folder structure
make tutorials # regenerate tutorials-generated.json from tutorial MDX files
make clear # clear Docusaurus cache
```

**Always start via `yarn start`/`make run`, never `npx docusaurus start` directly.** The `prestart`/`prebuild` npm hooks run `sync_content.js`, which builds the symlinks Docusaurus actually reads (`docs/ → content/docs/en`, `i18n/es/docusaurus-plugin-content-docs/current/ → content/docs/es`, etc.) from the CMS-friendly `content/<type>/<locale>/` structure. Skipping the hook leaves stale or broken symlinks and the dev server fails with "the docs folder does not exist".

Other repo scripts run as part of those hooks — `clean_frontmatter.js` (strips empty frontmatter fields that fail validation), `cleanup_cms_temp.js` (removes Sveltia's temp hex-named folders), `generate_tutorials.js` (builds the tutorials showcase index), `fix_links.js` (one-off ES link-prefix repair, not part of the normal hook chain).

The Docusaurus dev server does not SSR content in dev mode (`view-source` just shows an empty `<div id="__docusaurus">` shell) — verifying rendered output requires a real browser, not `curl`.

## FAQ `<details>`/`<summary>` gotcha

Docusaurus's `<Details>` component looks for a `<summary>` element among its JSX children to use as the disclosure title. If `<summary>`, its text, and `</summary>` are collapsed onto **one line**, MDX parses it in a way that breaks that lookup, and the component silently falls back to the literal placeholder text **"Details"** instead of showing the question. Always split it across separate lines:

```mdx
<details>
<summary>
### Your question here?
</summary>
Your answer.
</details>
```

not `<summary>### Your question here?</summary>` on a single line.
31 changes: 28 additions & 3 deletions content/docs/en/cli.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -55,15 +55,15 @@ As previously mentioned the key might be an input here or a environment variable

Also, you might mark if you want the process to **wait** the build to be finished or not.

When you use **wait**, you can also set a **timeout** (in minutes) to cap how long the CLI waits for the build to finish. It defaults to **180 minutes**; pass `0` to wait indefinitely. You can also set it through the `BUILD_TIMEOUT_MINUTES` environment variable.
You can set a **timeout** (in minutes) for a build. This is the build's maximum lifetime on the backend: if the build runs longer, SleakOps stops it and marks it as failed, so a stuck build can't hang forever. It defaults to **180 minutes**, and every build is bounded even if you don't pass it. When you also use **wait**, `--timeout` caps how long the CLI watches the build too. The CLI's default can be set through the `BUILD_TIMEOUT_MINUTES` environment variable.

| **Option** | **Description** |
| ------------- | --------------------------------------------------------------------------- |
| **--wait** | Wait for the build to finish before returning. |
| **--timeout** | Minutes to wait when using `--wait`. Default `180`. Use `0` for no timeout. |
| **--timeout** | Maximum build lifetime in minutes; also caps how long the CLI watches with `--wait`. Default `180`. `0` keeps the platform default and lets `--wait` watch indefinitely. |

:::tip
The timeout is client-side: it controls how long the CLI watches the build, not the build itself on the backend. When it expires, the CLI prints a message and exits with code `1`, so a stuck build fails your CI pipeline instead of silently passing.
`--timeout` works on two levels: the backend stops the build once it exceeds the limit (this happens for every build, even without `--wait`), and — when you pass `--wait` — the CLI also stops watching after the same time and exits with code `1`, so a stuck build fails your CI pipeline instead of hanging.
:::

### 3. Make a Deploy
Expand All @@ -78,6 +78,31 @@ SleakOps seamlessly handles the deployment process, ensuring that your applicati

Here **project** and **environment** are the required arguments. User might add a **build** or **tag** image to specify an image. Here the **wait** and **key** options are present to, the usage is the same as in the build command.

### Injecting values on deploy

You can inject Helm values into a single deployment, on top of everything configured in the platform (see [Values](/docs/project/values) for the override levels):

```plain
sleakops deploy -p myapp -e prod -f values.prod.yaml
sleakops deploy -p myapp -e prod --set api_web.replicas=3
cat values.yaml | sleakops deploy -p myapp -e prod -f -
```

| **Option** | **Description** |
| ---------------- | --------------------------------------------------------------------------------------------------------- |
| **-f, --values** | YAML file with values for this deploy (repeatable; `-` reads stdin; later files win). |
| **--set** | Set a single value, `key.path=value` (repeatable; wins over `-f`). YAML coercion applies: `5` → int, `true` → bool. |
| **--set-string** | Like `--set` but the value is always kept as a string (no coercion). |

:::warning Ephemeral by design
Deploy-time values apply to **that deployment only** — they win over every value configured in the platform, and the next deploy without `-f`/`--set`/`--set-string` reverts to the platform values. They are the right tool for one-off tweaks, not for durable configuration: make durable changes at the project or workload level instead.
:::

Two caveats:

- **For secrets prefer `-f`** (or stdin): `--set` and `--set-string` arguments stay in your shell history and CI logs.
- **Two different list semantics**: between your own inputs (`-f` files and `--set` flags) a list replaces the previous one, exactly like Helm. But when your deploy values merge against the platform levels, lists are **combined** instead of replaced — an entry you pass is added to the generated ones, it doesn't drop them.

## CI/CD Examples

With SleakOps CLI, you can integrate your CI/CD pipelines, automate the build and deployment process, and focus on delivering exceptional applications without the hassle of manual intervention.
Expand Down
12 changes: 9 additions & 3 deletions content/docs/en/domain/delegation.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,9 @@ ns-012.awsdns-01.co.uk
### Common Registrars

<details>
<summary><strong>GoDaddy</strong></summary>
<summary>
<strong>GoDaddy</strong>
</summary>

1. Go to [Domain Manager](https://account.godaddy.com/products)
2. Click on your domain
Expand All @@ -81,7 +83,9 @@ ns-012.awsdns-01.co.uk
</details>

<details>
<summary><strong>Namecheap</strong></summary>
<summary>
<strong>Namecheap</strong>
</summary>

1. Go to [Domain List](https://ap.www.namecheap.com/domains/list/)
2. Click "Manage" next to your domain
Expand All @@ -92,7 +96,9 @@ ns-012.awsdns-01.co.uk
</details>

<details>
<summary><strong>Cloudflare</strong></summary>
<summary>
<strong>Cloudflare</strong>
</summary>

**Note:** If using Cloudflare, you must disable Cloudflare proxy for proper delegation.

Expand Down
28 changes: 28 additions & 0 deletions content/docs/en/project/build/build.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,34 @@ SleakOps has its own CLI Tool that you can use to automate Builds and Deployment

:::

## Build timeout

Every build runs with a maximum lifetime. If a build gets stuck — waiting on a lock, pulling an image that never becomes available, or looping inside a build step — SleakOps stops it automatically and marks it as failed instead of letting it run forever. When you don't set a limit, a platform default of 180 minutes applies, so every build is always bounded.

Set the limit per build from the [SleakOps CLI](/docs/cli) with the `--timeout` flag, in minutes:

```bash
sleakops build --project my-app --branch main --timeout 30
```

| **`--timeout` value** | **Effect** |
| --------------------- | --------------------------------------------------------------------------------------- |
| **Omitted** | The platform default of 180 minutes applies. |
| **A positive number** | The build is stopped and marked as failed after that many minutes. |
| **`0`** | The build is still bounded by the platform default. With `--wait`, it also removes the CLI's wait cap, so the CLI polls until the build finishes; without `--wait` it behaves like omitting `--timeout`. |

When combined with `--wait`, `--timeout` also caps how long the CLI waits for the build to finish before exiting with an error. This is useful in CI/CD pipelines, where a stuck build would otherwise block the job indefinitely:

```bash
sleakops build --project my-app --branch main --wait --timeout 30
```

If the build hasn't finished within the timeout, the CLI exits with a non-zero status so the pipeline step fails fast.

:::tip
For CI/CD, set `--timeout` to a value slightly above your normal build duration. That way a genuinely stuck build is caught quickly, while healthy builds always have room to finish.
:::

## FAQs

<details>
Expand Down
4 changes: 4 additions & 0 deletions content/docs/en/project/chart/extra_templates.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ import { FiExternalLink } from "react-icons/fi";

# Extra Templates

:::warning Deprecated in favor of Manifests
Extending templates & values is deprecated. To add or edit custom resources, use the Project's **Manifests** section instead — each resource becomes its own manifest, with validation, preview and per-Workload scoping. See the [Manifests documentation](/docs/project/manifests). Existing Extra Templates keep deploying as before until you migrate them.
:::

Extra Templates enable you to deploy custom Kubernetes resources beyond SleakOps' built-in components. This powerful feature allows you to extend your project with specialized resources such as custom Ingresses, testing pods, or other Kubernetes objects tailored to your specific requirements.

## Use Cases
Expand Down
38 changes: 24 additions & 14 deletions content/docs/en/project/chart/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -69,30 +69,40 @@ Values that apply across the entire Project:
## Frequently Asked Questions

<details>
<summary>### Where can I find my Project's Chart?</summary>
<summary>
### Where can I find my Project's Chart?
</summary>
Currently, Charts are not viewable directly in the platform. However, you can
download the Chart from the ECR repository created for your Project in the
corresponding AWS Account.
</details>

<details>
<summary>### Can I modify the Chart deployed by a Project?</summary>
Yes, with some limitations. You can: - Add custom templates using [**Extra
Templates**](/docs/project/chart/extra_templates) - Add chart dependencies using [**Chart
Dependencies**](/docs/project/chart/chart_dependencies), similar to [Helm Chart Dependencies{" "}
<FiExternalLink />
](https://helm.sh/docs/helm/helm_dependency/)
<summary>
### Can I modify the Chart deployed by a Project?
</summary>
Yes. You can:

- Customize or add [**Manifests**](/docs/project/manifests) per Workload or shared across the Project
- Override [**Values**](/docs/project/values) at the project or workload level
- Add chart dependencies using [**Chart Dependencies**](/docs/project/chart/chart_dependencies), similar to [Helm Chart Dependencies <FiExternalLink />](https://helm.sh/docs/helm/helm_dependency/)
</details>

<details>
<summary>### Can I add a custom Ingress to my Project?</summary>
Yes, this is one of the primary use cases for the **Extra Templates** feature.
See the [Extra Templates documentation](/docs/project/chart/extra_templates) for detailed
instructions.
<summary>
### Can I add a custom Ingress to my Project?
</summary>
Yes — add it as a manifest from the Workload's Advanced view or the project
bucket. See the [Manifests documentation](/docs/project/manifests). The legacy
[Extra Templates](/docs/project/chart/extra_templates) path still works but is
deprecated.
</details>

<details>
<summary>### Can I modify existing Kubernetes Service templates?</summary>
No, modifying SleakOps built-in templates is not currently supported. We are
working on enabling modifications to built-in templates in future releases.
<summary>
### Can I modify existing Kubernetes Service templates?
</summary>
Yes. Open the Workload's **Advanced** view, click the manifest and edit its
YAML — your copy is preserved and never overwritten by SleakOps. See
[Manifests](/docs/project/manifests).
</details>
79 changes: 76 additions & 3 deletions content/docs/en/project/dependency/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -45,17 +45,23 @@ These dependencies integrate seamlessly with SleakOps, providing a comprehensive
</details>

<details>
<summary>### Can the same dependency be used for multiple Projects?</summary>
<summary>
### Can the same dependency be used for multiple Projects?
</summary>
At the moment this is not possible, you need one dependency per each project.
</details>

<details>
<summary>### How do I delete a Dependency?</summary>
<summary>
### How do I delete a Dependency?
</summary>
By accessing the *Dependency Listing* and clicking the delete option.
</details>

<details>
<summary>### What happens when I delete a dependency?</summary>
<summary>
### What happens when I delete a dependency?
</summary>
By deleting a dependency, SleakOps will remove all the information related to
it and all what is related to it will stop working. To solve that SleakOps
create a Deployment in PENDING_APPROVAL status, that must be run manually ASAP
Expand Down Expand Up @@ -106,3 +112,70 @@ To move forward choose between the following guides.
[Memcached](/docs/project/dependency/memcached-aws).
[OpenSearch](/docs/project/dependency/opensearch-aws).
[SQS](/docs/project/dependency/sqs-aws).

## Dependency Access

Dependency access refers to the security and connectivity mechanisms that let your application's workloads interact securely with external dependencies. SleakOps automatically manages these access patterns to ensure secure communication between your services and their dependencies.

### Access Management

#### Automatic Service Account Configuration
When you create a dependency, SleakOps automatically:
- **Creates IAM roles** with appropriate permissions for the specific dependency type
- **Configures service accounts** in your Kubernetes namespace
- **Establishes secure connections** between your workloads and the dependency
- **Manages credentials** through Kubernetes secrets and IAM roles

#### Network Security
- **VPC Integration**: Dependencies are created inside your project's VPC for secure network access
- **Security Groups**: Automatically configured to allow the traffic needed between services
- **Private Endpoints**: Dependencies use private endpoints when available to minimize exposure

### Access Patterns

#### Database Access
For database dependencies (MySQL, PostgreSQL, etc.):
- **Connection Strings**: Automatically generated and stored as Kubernetes secrets
- **Authentication**: Managed through IAM roles and database-specific credentials
- **SSL/TLS**: Encrypted connections are configured by default
- **At-Rest Encryption**: Enabled by default on new dependencies
- You can turn it off or configure your own KMS key when you create it
- Aurora (PostgreSQL/MySQL) is always encrypted, with no way to opt out
- If the dependency was created before this improvement shipped, check the specific case: it may not be encrypted
- **Connection Pooling**: Optimized connection management for better performance

#### Cache Access
For caching services (Redis, Memcached):
- **Endpoint Configuration**: Automatically configured in your application's environment
- **Authentication**: Secure access through IAM roles and service-specific credentials
- **Network Policies**: Access restricted to authorized workloads only

#### Storage Access
For storage services (S3, etc.):
- **Bucket Policies**: Automatically configured with least-privilege access
- **IAM Permissions**: Service accounts receive only the permissions they need
- **Access Keys**: Managed through AWS IAM roles for greater security

### Security Best Practices

#### Principle of Least Privilege
- **Minimal Permissions**: Dependencies receive only the minimum required permissions
- **Resource-Specific Access**: Access is scoped to specific resources whenever possible
- **Regular Audits**: SleakOps provides tools to review and audit dependency access

#### Credential Management
- **Automatic Rotation**: Credentials are rotated automatically when possible
- **Secure Storage**: All credentials are stored as Kubernetes secrets
- **No Hardcoded Secrets**: Applications access dependencies through environment variables

:::info Access Monitoring
SleakOps provides monitoring and logging capabilities to track dependency access patterns, helping you identify potential security issues and optimize performance.
:::

:::tip Troubleshooting Access Issues
If you run into access issues with dependencies:
1. Check the dependency's status in the SleakOps console
2. Confirm your workload has the correct service account
3. Review the IAM role permissions for the dependency
4. Verify network connectivity and security group configurations
:::
12 changes: 9 additions & 3 deletions content/docs/en/project/dependency/oracle-aws.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,18 @@ SleakOps facilitates the integration of Oracle databases through Amazon RDS (Rel
## FAQs

<details>
<summary>### License</summary>
<summary>
### License
</summary>
When creating an Oracle DB using Sleakops License Included (LI). Currently
Bring Your Own License (BYOL) is not supported, however, contact support for
more information.
</details>

<details>
<summary>### How does SleakOps manage Oracle credentials?</summary>
<summary>
### How does SleakOps manage Oracle credentials?
</summary>
When you create an Oracle dependency in SleakOps, it automatically generates a
Vargroup for your database. This Variable Group securely stores the Oracle
credentials and other important configuration details, such as the database
Expand All @@ -28,7 +32,9 @@ SleakOps facilitates the integration of Oracle databases through Amazon RDS (Rel
</details>

<details>
<summary>### What is Multi-AZ deployment and should I enable it?</summary>
<summary>
### What is Multi-AZ deployment and should I enable it?
</summary>
Multi-AZ (Availability Zone) deployment ensures high availability and failover
support by replicating your database in another availability zone. It's
recommended for production environments to prevent downtime. Keep in mind that
Expand Down
Loading
Loading