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
44 changes: 44 additions & 0 deletions .github/workflows/chart-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: Chart Lint and Test

on:
pull_request:
paths:
- 'charts/**'

jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0

- name: Install Helm
uses: azure/setup-helm@dda3372f752e03dde6b3237bc9431cdc2f7a02a2 # v5.0.0

- name: Install Python
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: '3.12'

- name: Install chart-testing
uses: helm/chart-testing-action@6ec842c01de15ebb84c8627d2744a0c2f2755c9f # v2.8.0

- name: Run chart-testing (lint)
run: ct lint --charts charts/kasm --check-version-increment=false

validate:
runs-on: ubuntu-latest
needs: lint
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: Install Helm
uses: azure/setup-helm@dda3372f752e03dde6b3237bc9431cdc2f7a02a2 # v5.0.0

- name: Validate chart
run: |
helm lint charts/kasm
helm template test-release charts/kasm --debug > /dev/null
66 changes: 66 additions & 0 deletions .github/workflows/helm-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
name: Release Charts

on:
push:
branches:
- 'release/**'
paths:
- 'charts/**/Chart.yaml'
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

permissions:
contents: write
packages: write

jobs:
release:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0

- name: Setup gh-pages branch
run: |
if ! git ls-remote --heads origin gh-pages >/dev/null 2>&1; then
git config user.name "$GITHUB_ACTOR"
git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
git checkout --orphan gh-pages
git rm -rf .
printf 'apiVersion: v1\nentries: {}\n' > index.yaml
git add index.yaml
git commit -m "Initialize Helm repository"
git push origin gh-pages
git checkout -
fi

- name: Configure Git
run: |
git config user.name "$GITHUB_ACTOR"
git config user.email "$GITHUB_ACTOR@users.noreply.github.com"

- name: Install Helm
uses: azure/setup-helm@dda3372f752e03dde6b3237bc9431cdc2f7a02a2 # v5.0.0

- name: Login to GitHub Container Registry
uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Package and Push Helm Chart to OCI
run: |
helm package charts/kasm --version $(grep "version:" charts/kasm/Chart.yaml | awk '{print $2}')
helm push kasm-*.tgz oci://ghcr.io/${{ github.repository_owner }}/charts

- name: Run chart-releaser
uses: helm/chart-releaser-action@a0d2dc62c5e491af8ef6ba64a2e02bcf3fb33aa1 # v1.7.0
env:
CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
CR_SKIP_EXISTING: "true"
36 changes: 36 additions & 0 deletions .github/workflows/oci-publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: Publish Chart to OCI

on:
push:
branches:
- 'release/**'
paths:
- 'charts/**/Chart.yaml'
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

permissions:
contents: read
packages: write

jobs:
publish:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: Install Helm
uses: azure/setup-helm@dda3372f752e03dde6b3237bc9431cdc2f7a02a2 # v5.0.0

- name: Login to GHCR
run: |
echo "${{ secrets.GITHUB_TOKEN }}" | helm registry login ghcr.io -u ${{ github.actor }} --password-stdin

- name: Package and Push
run: |
helm package charts/kasm --destination ./dist
helm push dist/*.tgz oci://ghcr.io/${{ github.repository_owner }}
11 changes: 11 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,14 @@
## Ignore cert files
*.key
*.crt

## Ignore Helm chart artifacts
*.tgz
dist/
docs/*.tgz

## Ignore IDE files
.idea/
.vscode/
*.swp
*.swo
45 changes: 41 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,42 @@
# Kasm on Kubernetes (Helm Chart)

![Version: 1.1180.0](https://img.shields.io/badge/Version-1.1180.0-informational?style=flat-square) ![AppVersion: 1.18.0](https://img.shields.io/badge/AppVersion-1.18.0-informational?style=flat-square)
![Version: 1.1181.0](https://img.shields.io/badge/Version-1.1181.0-informational?style=flat-square) ![AppVersion: 1.18.1](https://img.shields.io/badge/AppVersion-1.18.1-informational?style=flat-square)

> ⚠️ **This Helm chart is not intended for production use.**
> ⚠️ **This Helm chart is currently under technical Preview. Potential users should be advised that it is suitable for demo and evaluation purposes.**
> For advanced configurations, see the [Chart README](./charts/kasm/README.md).

## Overview

This Helm chart enables you to deploy [Kasm Workspaces](https://kasm.com/) in Kubernetes with minimal friction.
For more detailed information or procedures for upgrading your Kasm Kubernetes deployment, refer to our **[additional documentation](./docs)**.

> Important: The [Kasm agent](https://docs.kasm.com/docs/install/multi_server_install#install-agent-server-roles) is not included in this Helm chart. It must be installed separately on a VM or bare-metal server. A Kasm session cannot be started without a running agent.

## Quickstart

Get up and running in just a few steps!
### Option 1: Using Helm Repository

```bash
helm repo add kasm https://kasmtech.github.io/kasm-helm
helm repo update
helm install kasm kasm/kasm \
--namespace {namespace} --create-namespace \
--set publicAddr="kasm.contoso.com" \
--set certificate.secretName="<some-cert-secret>"
```

> **Note:** Requires GitHub Pages enabled. See [Setup Instructions](#github-pages-setup) below.

### Option 2: Using OCI Registry

```bash
helm install kasm oci://ghcr.io/kasmtech/kasm \
--namespace {namespace} --create-namespace \
--set publicAddr="kasm.contoso.com" \
--set certificate.secretName="<some-cert-secret>"
```

### Option 3: Cloning the Repository

1. **Clone the Helm Chart Repository:**
```bash
Expand Down Expand Up @@ -92,7 +116,7 @@ After deployment, get your connection details and credentials:
## Upgrades & Versioning

- **Branching:**
This repo maintains a release branch matching each Kasm Workspaces version (e.g., `release/1.18.0`).
This repo maintains a release branch matching each Kasm Workspaces version (e.g., `release/1.18.1`).
Use the matching branch for your Kasm deployment version.
- **Development:**
Use the default `develop` branch for developer previews.
Expand All @@ -106,6 +130,19 @@ After deployment, get your connection details and credentials:

---

## GitHub Pages Setup

To enable the Helm repository (Option 2), GitHub Pages must be configured:

1. Go to **Settings** → **Pages**
2. Set **Source** to `gh-pages` branch
3. Set **Folder** to `/ (root)`
4. Click **Save**

The `gh-pages` branch is automatically created and maintained by the CI workflow when charts are released.

---

## Troubleshooting

- It may take several minutes for pods to be ready after install.
Expand Down
18 changes: 9 additions & 9 deletions charts/kasm/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,21 @@ annotations:
category: Virtual Desktop
images: |
- name: kasm-api
image: kasmweb/api:develop
image: kasmweb/api:1.18.1
- name: kasm-manager
image: kasmweb/manager:develop
image: kasmweb/manager:1.18.1
- name: kasm-db
image: kasmweb/postgres:develop
image: kasmweb/postgres:1.18.1
- name: kasm-proxy
image: kasmweb/proxy:develop
image: kasmweb/proxy:1.18.1
- name: kasm-guac
image: kasmweb/kasm-guac:develop
image: kasmweb/kasm-guac:1.18.1
- name: rdp-gateway
image: kasmweb/rdp-gateway:develop
image: kasmweb/rdp-gateway:1.18.1
- name: rdp-gateway
image: kasmweb/rdp-https-gateway:develop
image: kasmweb/rdp-https-gateway:1.18.1
apiVersion: v2
appVersion: develop
appVersion: 1.18.1
name: kasm
description: Kasm is a platform specializing in providing secure browser-based workspaces for a wide range of applications and industries. Its main goal is to provide isolated and secure environments that can be accessed via web browsers, ensuring that users can perform tasks without risking the security of their local systems.
icon: https://kasm-static-content.s3.amazonaws.com/icons/kasm-logo-small.png
Expand All @@ -28,4 +28,4 @@ keywords:
maintainers:
- name: Kasm Technologies, Inc.
url: https://github.com/kasmtech/kasm-helm
version: 1.1180.0-develop
version: 1.1181.3
20 changes: 11 additions & 9 deletions charts/kasm/README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
# Kasm on Kubernetes

![Version: 1.1180.0](https://img.shields.io/badge/Version-1.1180.0-informational?style=flat-square) ![AppVersion: 1.18.0](https://img.shields.io/badge/AppVersion-1.18.0-informational?style=flat-square)
![Version: 1.1181.0](https://img.shields.io/badge/Version-1.1181.0-informational?style=flat-square) ![AppVersion: 1.18.1](https://img.shields.io/badge/AppVersion-1.18.1-informational?style=flat-square)

Kasm is a platform specializing in providing secure browser-based workspaces for a wide range of applications and industries. Its main goal is to provide isolated and secure environments that can be accessed via web browsers, ensuring that users can perform tasks without risking the security of their local systems.

> Important: The [Kasm agent](https://docs.kasm.com/docs/install/multi_server_install#install-agent-server-roles) is not included in this Helm chart. It must be installed separately on a VM or bare-metal server. A Kasm session cannot be started without a running agent.

**Homepage:** <https://kasm.com>

## Maintainers
Expand Down Expand Up @@ -363,7 +365,7 @@ object
<div style="max-width: 520px;">
<pre lang="json">
repository: kasmweb/postgres
tag: 1.18.0
tag: 1.18.1
</pre>
</div>
</td>
Expand Down Expand Up @@ -617,7 +619,7 @@ object
<div style="max-width: 520px;">
<pre lang="json">
repository: kasmweb/proxy
tag: 1.18.0
tag: 1.18.1
</pre>
</div>
</td>
Expand Down Expand Up @@ -674,7 +676,7 @@ object
<div style="max-width: 520px;">
<pre lang="json">
repository: kasmweb/api
tag: 1.18.0
tag: 1.18.1
</pre>
</div>
</td>
Expand Down Expand Up @@ -731,7 +733,7 @@ object
<div style="max-width: 520px;">
<pre lang="json">
repository: kasmweb/manager
tag: 1.18.0
tag: 1.18.1
</pre>
</div>
</td>
Expand Down Expand Up @@ -788,7 +790,7 @@ object
<div style="max-width: 520px;">
<pre lang="json">
repository: kasmweb/kasm-guac
tag: 1.18.0
tag: 1.18.1
</pre>
</div>
</td>
Expand Down Expand Up @@ -859,7 +861,7 @@ object
<div style="max-width: 520px;">
<pre lang="json">
repository: kasmweb/rdp-gateway
tag: 1.18.0
tag: 1.18.1
</pre>
</div>
</td>
Expand Down Expand Up @@ -930,7 +932,7 @@ object
<div style="max-width: 520px;">
<pre lang="json">
repository: kasmweb/rdp-https-gateway
tag: 1.18.0
tag: 1.18.1
</pre>
</div>
</td>
Expand Down Expand Up @@ -1001,7 +1003,7 @@ object
<div style="max-width: 520px;">
<pre lang="json">
repository: kasmweb/share
tag: 1.18.0
tag: 1.18.1
</pre>
</div>
</td>
Expand Down
Loading