Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
18 changes: 9 additions & 9 deletions config/rbac/kustomization.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,13 @@ resources:
# default, aiding admins in cluster management. Those roles are
# not used by the koptan itself. You can comment the following lines
# if you do not want those helpers be installed with your Project.
- javaapp_admin_role.yaml
- javaapp_editor_role.yaml
- javaapp_viewer_role.yaml
- dotnetapp_admin_role.yaml
- dotnetapp_editor_role.yaml
- dotnetapp_viewer_role.yaml
- goapp_admin_role.yaml
- goapp_editor_role.yaml
- goapp_viewer_role.yaml
- javaapp_admin_role.yaml
- javaapp_editor_role.yaml
- javaapp_viewer_role.yaml
- dotnetapp_admin_role.yaml
- dotnetapp_editor_role.yaml
- dotnetapp_viewer_role.yaml
- goapp_admin_role.yaml
- goapp_editor_role.yaml
- goapp_viewer_role.yaml

36 changes: 36 additions & 0 deletions docs/concepts/apps.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Apps

Koptan provides application resources that represent application definitions at a higher level than native Kubernetes resources.

## Supported App Resources

Koptan currently defines:

- `GoApp`
- `DotnetApp`
- `JavaApp`

These types are defined in:

- `api/v1alpha/goapp_types.go`
- `api/v1alpha/dotnetapp_types.go`
- `api/v1alpha/javaapp_types.go`

## Purpose

An App resource is intended to describe an application in a language-aware way.

Instead of directly creating lower-level Kubernetes objects, users define an application using an App custom resource and let Koptan reconcile the desired state.

## Why Separate App Types?

Different languages often require different build or packaging behavior.

For that reason, Koptan models them as separate resources rather than a single generic application type.

## Related Resources

An App resource is related to:

- **Slipway**, which represents build-oriented workflow
- **Voyage**, which represents deployment-oriented workflow
11 changes: 11 additions & 0 deletions docs/concepts/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Concepts

This section introduces the main concepts in Koptan.

Koptan centers around three resource groups:

- **Apps**
- **Slipway**
- **Voyage**

Together, these resources provide a structured way to define, build, and manage applications in Kubernetes.
29 changes: 29 additions & 0 deletions docs/concepts/slipway.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Slipway

`Slipway` is a Koptan resource associated with build-oriented workflow.

## Purpose

Slipway represents the part of the operator responsible for preparing or building application artifacts.

In practical terms, this may include operations such as:

- fetching source code
- preparing build context
- running language-specific build logic
- producing deployable output

## Implementation Clues in the Repository

Relevant files include:

- `api/v1alpha/slipway_types.go`
- `internal/controller/slipway_controller.go`
- `internal/controller/slipway_build.go`

## Relationship to Other Resources

Slipway works alongside:

- **App** resources, which describe the application
- **Voyage**, which represents the runtime or deployment stage
28 changes: 28 additions & 0 deletions docs/concepts/voyage.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Voyage

`Voyage` is a Koptan resource associated with deployment-oriented workflow.

## Purpose

Voyage represents the stage where an application moves from build output into a running state on Kubernetes.

Depending on how the operator evolves, this may include concerns such as:

- rollout
- runtime configuration
- deployment reconciliation
- lifecycle management

## Implementation Clues in the Repository

Relevant files include:

- `api/v1alpha/voyage_types.go`
- `internal/controller/voyage_controller.go`
Comment on lines +16 to +21

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
## Implementation Clues in the Repository
Relevant files include:
- `api/v1alpha/voyage_types.go`
- `internal/controller/voyage_controller.go`


## Relationship to Other Resources

Voyage works with:

- **App** resources, which define the application
- **Slipway**, which handles build-oriented workflow
47 changes: 47 additions & 0 deletions docs/examples/app.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# App Example

An App resource defines the source code repository for an application.

Koptan currently supports multiple app kinds, including:

- `GoApp`
- `JavaApp`
- `DotnetApp`

The only required field is the source repository. The examples below show minimal definitions for each app type.

=== "GoApp"

```yaml
apiVersion: koptan.felukka.org/v1alpha
kind: GoApp
metadata:
name: feedme
spec:
source:
repo: https://github.com/example/feedme
```

=== "JavaApp"

```yaml
apiVersion: koptan.felukka.org/v1alpha
kind: JavaApp
metadata:
name: orders-service
spec:
source:
repo: https://github.com/example/orders-service
```

=== "DotnetApp"

```yaml
apiVersion: koptan.felukka.org/v1alpha
kind: DotnetApp
metadata:
name: payments-service
spec:
source:
repo: https://github.com/example/payments-service
```
15 changes: 15 additions & 0 deletions docs/examples/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Examples

This section provides simple examples of the three main Koptan resources:

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Explain the relations and dependency more between the three phases


- **App**: defines the application source repository
- **Slipway**: connects an app to the build pipeline
- **Voyage**: deploys the built application

A typical Koptan workflow looks like this:

1. Create an App resource
2. Create a Slipway that references the App
3. Create a Voyage that references the Slipway

Use the pages in this section to see minimal working examples for each resource.
51 changes: 51 additions & 0 deletions docs/examples/slipway.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# Slipway Example

A Slipway connects an application to the build pipeline.

It references an existing App using `name` and `kind`.

## Examples

=== "GoApp"

```yaml
apiVersion: koptan.felukka.org/v1alpha
kind: Slipway
metadata:
name: feedme
spec:
appRef:
name: feedme
kind: GoApp
```
Comment on lines +11 to +20

Copilot AI Mar 26, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SlipwaySpec requires spec.image (registry/name, etc.), but these examples only include spec.appRef. As written they won't pass CRD validation. Include a minimal spec.image block in each Slipway example (or adjust the text to state the omitted fields are required).

Copilot uses AI. Check for mistakes.
Comment on lines +12 to +20

Copilot AI Mar 29, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SlipwaySpec requires spec.image (registry/name), but the examples omit it, so these manifests won’t validate/apply. Please include the required image fields in the Slipway examples.

Copilot uses AI. Check for mistakes.

=== "JavaApp"

```yaml
apiVersion: koptan.felukka.org/v1alpha
kind: Slipway
metadata:
name: orders-service
spec:
appRef:
name: orders-service
kind: JavaApp
```

=== "DotnetApp"

```yaml
apiVersion: koptan.felukka.org/v1alpha
kind: Slipway
metadata:
name: payments-service
spec:
appRef:
name: payments-service
kind: DotnetApp
```

## Apply a Slipway

```bash
kubectl apply -f slipway.yaml
Comment on lines +50 to +51

Copilot AI Mar 29, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The kubectl apply snippet code block is opened but not closed. Add the closing fence so the rest of the page renders normally.

Copilot uses AI. Check for mistakes.
69 changes: 69 additions & 0 deletions docs/examples/voyage.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@

---

# 📄 `docs/examples/voyage.md`

```md
# Voyage Example
Comment on lines +2 to +7

Copilot AI Mar 26, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This page starts with a bare --- and then wraps all content inside a fenced ```md block plus a file-path heading. That structure is inconsistent with the other docs pages and also results in broken markdown (the md fence is never closed). Remove the wrapper/front-matter placeholder and make the page a normal markdown document starting with `# Voyage Example`.

Copilot uses AI. Check for mistakes.

A Voyage deploys an application using a Slipway.

It defines how the application runs inside the cluster.

## Examples

=== "Minimal"

```yaml
apiVersion: koptan.felukka.org/v1alpha
kind: Voyage
metadata:
name: feedme
spec:
slipwayRef:
name: feedme
port: 8080
```

=== "With Replicas & Env"

```yaml
apiVersion: koptan.felukka.org/v1alpha
kind: Voyage
metadata:
name: feedme
spec:
slipwayRef:
name: feedme
port: 8080
replicas: 2
env:
- name: ENV
value: production
- name: LOG_LEVEL
value: info
```

=== "With Health Check"

```yaml
apiVersion: koptan.felukka.org/v1alpha
kind: Voyage
metadata:
name: feedme
spec:
slipwayRef:
name: feedme
port: 8080
replicas: 2
healthCheck:
path: /health
port: 8080
initialDelaySeconds: 10
periodSeconds: 5
```

## Apply a Voyage

```bash
kubectl apply -f voyage.yaml
Comment on lines +68 to +69

Copilot AI Mar 26, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The final bash snippet opens a fenced block but never closes it, so MkDocs will treat the rest of the file as code. Add a closing triple-backtick after the kubectl apply command.

Copilot uses AI. Check for mistakes.
10 changes: 10 additions & 0 deletions docs/getting-started/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Getting Started

This section explains how to install Koptan and begin using its custom resources.

It is intended for first-time users who want to:

- install the operator
- verify the CRDs are available
- create an initial App resource
- understand the basic usage flow
20 changes: 20 additions & 0 deletions docs/getting-started/installation.md

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need to mention here the installation method using helm repo and helm chart. this is like way around

Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Installation

Koptan is installed as a Kubernetes operator.

## Prerequisites

Before installing Koptan, make sure you have:

- a Kubernetes cluster
- `kubectl` configured for that cluster
- permissions to install CRDs and controller resources

## Install the CRDs

You can install the CRDs using the manifests under `config/crd`.

Example:

```bash
kubectl apply -k config/crd
24 changes: 24 additions & 0 deletions docs/getting-started/quickstart.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@

# Quickstart

This page shows a minimal example of using Koptan.

## Step 1: Install the Operator

Make sure Koptan and its CRDs are installed.

See the Installation page for details.

## Step 2: Create an App Resource

Koptan supports multiple application resource types, including `GoApp`, `DotnetApp`, and `JavaApp`.

A minimal example is shown below:

```yaml
apiVersion: koptan.felukka.sh/v1alpha1

Copilot AI Mar 26, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Quickstart YAML uses apiVersion: koptan.felukka.sh/v1alpha1, but the CRDs in this repo are registered under koptan.felukka.org/v1alpha (see api/v1alpha/groupversion_info.go). Update the example to the correct group/version so it can be applied successfully.

Suggested change
apiVersion: koptan.felukka.sh/v1alpha1
apiVersion: koptan.felukka.org/v1alpha

Copilot uses AI. Check for mistakes.
kind: GoApp
Comment on lines +18 to +20

Copilot AI Mar 26, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The YAML code fence is opened but never closed, which will break page rendering in MkDocs. Add a closing triple-backtick after the example manifest.

Copilot uses AI. Check for mistakes.
metadata:
name: example-goapp
spec:
{}

Copilot AI Mar 26, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

GoAppSpec requires spec.source (with at least repo), but this example uses spec: {} which will fail validation/admission. Update the minimal example to include spec.source.repo (and optionally revision).

Suggested change
{}
source:
repo: https://github.com/my-org/my-go-app.git
revision: main

Copilot uses AI. Check for mistakes.
Loading
Loading