Skip to content

Airgapped kubernetes edition#141

Merged
danciaclara merged 10 commits intopreviewfrom
airgapped-kubernetes-edition
Sep 9, 2025
Merged

Airgapped kubernetes edition#141
danciaclara merged 10 commits intopreviewfrom
airgapped-kubernetes-edition

Conversation

@danciaclara
Copy link
Collaborator

@danciaclara danciaclara commented Sep 9, 2025

Description

Type of Change

  • Bug fix (non-breaking change which fixes an issue)
  • Feature (non-breaking change which adds functionality)
  • Improvement (change that would cause existing functionality to not work as expected)
  • Code refactoring
  • Performance improvements
  • Documentation update

Screenshots and Media (if applicable)

Test Scenarios

References

Summary by CodeRabbit

  • New Features

    • Added a step-by-step guide for deploying Plane Enterprise in an air-gapped Kubernetes environment using Helm.
  • Documentation

    • Reorganized navigation to group Airgapped Edition docs, nesting Docker and Kubernetes guides under one section.
    • Retitled the Docker-focused guide for clarity.
    • Updated Kubernetes self-hosting references from v1.13.0 to v1.14.1 and added Airgapped configuration settings.

@vercel
Copy link

vercel bot commented Sep 9, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Preview Comments Updated (UTC)
developer-docs Error Error Sep 9, 2025 0:08am

@coderabbitai
Copy link

coderabbitai bot commented Sep 9, 2025

Caution

Review failed

The pull request is closed.

Walkthrough

Reorganizes docs navigation to group air-gapped installation pages, adds a new Kubernetes air-gapped installation guide, updates front-matter titles for the Docker airgapped page, and bumps Plane version references from v1.13.0 to v1.14.1 in the Kubernetes doc.

Changes

Cohort / File(s) Summary
Docs navigation grouping
mint.json
Converted a single page entry into a group object "Airgapped Edition" with pages for self-hosting/methods/airgapped-edition and self-hosting/methods/airgapped-edition-kubernetes.
New air-gapped Kubernetes guide
self-hosting/methods/airgapped-edition-kubernetes.mdx
Added a step-by-step guide for deploying Plane Enterprise in an airgapped Kubernetes environment (Helm chart, private registry images, custom-values.yaml, install/verify, license activation).
Docker air-gapped page metadata
self-hosting/methods/airgapped-edition.mdx
Updated front matter: title → "Deploy Plane Commercial in an Airgapped Docker Environment" and sidebarTitle → "For Docker". No content changes.
Kubernetes doc updates
self-hosting/methods/kubernetes.mdx
Bumped Plane version references from v1.13.0 to v1.14.1 (env var and config table) and added Airgapped configuration settings: airgapped.enabled, airgapped.s3SecretName, airgapped.s3SecretKey.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Suggested reviewers

  • sriramveeraghanta

Poem

A rabbit hops through pages new,
Groups and guides in tidy view.
Kubernetes learns to work off-grid,
Docker’s title got a little bid.
Version bumped and links aligned—hip hip hooray! 🐇✨


📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 685c1d9 and 69e9fe3.

📒 Files selected for processing (2)
  • self-hosting/methods/airgapped-edition-kubernetes.mdx (1 hunks)
  • self-hosting/methods/kubernetes.mdx (3 hunks)
✨ Finishing Touches
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch airgapped-kubernetes-edition

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
self-hosting/methods/kubernetes.mdx (2)

166-167: Avoid :latest tags for MinIO images. Pin to a known release.

Using floating tags in production docs is risky for reproducibility and breakage.

-    | services.minio.image | minio/minio:latest |  |
-    | services.minio.image_mc | minio/mc:latest |  |
+    | services.minio.image | minio/minio:RELEASE.2024-XX-XXTXX-XX-XXZ |  |
+    | services.minio.image_mc | minio/mc:RELEASE.2024-XX-XX-XXTXX-XX-XXZ |  |

If you share the exact tags you validate, I can update these lines across CE/Commercial sections.


20-21: Update Helm chart version to v1.4.1
In self-hosting/methods/kubernetes.mdx (lines 20–21), change the note to:

Ensure you're using Helm chart v1.4.1.

This reflects the latest plane-enterprise chart release (v1.4.1 on September 8, 2025).

🧹 Nitpick comments (7)
self-hosting/methods/kubernetes.mdx (2)

29-31: Version bump to v1.14.1 — good. Also refresh the “stable” example.

The warning below still references an old example version.

-            When configuring the PLANE_VERSION environment variable, **do not** set it to `stable`. Always specify the latest version number (e.g., `1.8.0`). Using `stable` can lead to unexpected issues.
+            When configuring the PLANE_VERSION environment variable, **do not** set it to `stable`. Always specify the latest version number (e.g., `v1.14.1`). Using `stable` can lead to unexpected issues.

116-118: Minor copy fix in table cell punctuation.

-| planeVersion | v1.14.1	 | Yes |  Specifies the version of Plane to be deployed. Copy this from `prime.plane.so.` |
+| planeVersion | v1.14.1	 | Yes |  Specifies the version of Plane to be deployed. Copy this from `prime.plane.so`. |
self-hosting/methods/airgapped-edition.mdx (1)

2-3: Title/sidebar rename LGTM; align product naming across pages.

This page uses “Commercial,” while the new Kubernetes page mixes “Commercial” and “Enterprise.” Recommend standardizing terminology (“Commercial”) across both.

self-hosting/methods/airgapped-edition-kubernetes.mdx (4)

81-83: Command works; optionally prefer helm show values plane/plane-enterprise for consistency.

If you keep the local .tgz flow (good for air-gapped), this is fine as-is. No change required.


92-97: Document creating the custom S3 CA secret referenced here.

Add a short snippet to create the Secret so users don’t get a missing Secret error.

     s3SecretName: "s3-custom-ca"
     s3SecretKey: "s3-custom-ca.crt"
+
+    # Create this secret in the target namespace before install:
+    # kubectl -n plane create secret generic s3-custom-ca \
+    #   --from-file=s3-custom-ca.crt=/path/to/your/ca.crt

176-176: Confirm canonical docs host.

Link points to developers.plane.so; other links use docs.plane.so. Align to the canonical domain.


6-7: Naming consistency: “Commercial” vs “Enterprise.”

This page’s intro says “Plane Enterprise,” while other pages use “Commercial.” Pick one brand term and use consistently.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 3bb7dc2 and 685c1d9.

📒 Files selected for processing (4)
  • mint.json (1 hunks)
  • self-hosting/methods/airgapped-edition-kubernetes.mdx (1 hunks)
  • self-hosting/methods/airgapped-edition.mdx (1 hunks)
  • self-hosting/methods/kubernetes.mdx (3 hunks)
🔇 Additional comments (3)
self-hosting/methods/airgapped-edition-kubernetes.mdx (2)

87-139: Fix YAML indentation, add planeVersion, and nest images under services

In self-hosting/methods/airgapped-edition-kubernetes.mdx (lines 87–139), the example should be:

planeVersion: <PLANE_VERSION>

license:
  licenseDomain: 'plane.example.com'

airgapped:
  enabled: true
  # if using a Custom Root CA for S3 storage
  s3SecretName: "s3-custom-ca"
  s3SecretKey: "s3-custom-ca.crt"

services:
  web:
    image: <your-registry.com>/web-commercial:<PLANE_VERSION>
  api:
    image: <your-registry.com>/backend-commercial:<PLANE_VERSION>
  space:
    image: <your-registry.com>/space-commercial:<PLANE_VERSION>
  admin:
    image: <your-registry.com>/admin-commercial:<PLANE_VERSION>
  live:
    image: <your-registry.com>/live-commercial:<PLANE_VERSION>
  monitor:
    image: <your-registry.com>/monitor-commercial:<PLANE_VERSION>
  silo:
    image: <your-registry.com>/silo-commercial:<PLANE_VERSION>
  iframely:
    image: <your-registry.com>/iframely:v1.2.0

  redis:
    image: <your-registry.com>/valkey:7.2.5-alpine
  postgres:
    image: <your-registry.com>/postgres:15.7-alpine
  rabbitmq:
    image: <your-registry.com>/rabbitmq:3.13.6-management-alpine
  minio:
    image: <your-registry.com>/minio:latest
    image_mc: <your-registry.com>/mc:latest

env:
  storageClass: ''

Manually verify that planeVersion, license.licenseDomain, airgapped.*, and each services.<name>.image key match your Helm chart’s values definitions.


69-76: Clarify image distribution: push to a registry reachable by all cluster nodes and configure imagePullSecrets

# Load each image into Docker 
docker load -i <plane-images>.tar

# Tag and push each image to your private registry
docker tag <image-name> <your-registry>/<image-name>
docker push <your-registry>/<image-name>

Add to your chart’s values (adjust key if chart differs):

global:
  imagePullSecrets:
    - name: regcred

Please confirm your Helm chart supports global.imagePullSecrets (or update to the correct values field).

mint.json (1)

75-82: Navigation grouping LGTM.

The “Airgapped Edition” group with Docker and Kubernetes pages reads well and matches the new sidebar titles.

Comment on lines +21 to +25
wget https://github.com/makeplane/helm-charts/releases/download/plane-enterprise-1.4.1/plane-enterprise-1.4.1.tgz

# Using curl
curl -L -O https://github.com/makeplane/helm-charts/releases/download/plane-enterprise-1.4.1/plane-enterprise-1.4.1.tgz
```
Copy link

Choose a reason for hiding this comment

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

💡 Verification agent

🧩 Analysis chain

Hardcoded chart version — verify recency and consider bundling chart for fully air-gapped installs.

  • Confirm 1.4.1 is the latest chart.
  • For fully air-gapped workflows, consider shipping this .tgz inside the offline bundle to avoid requiring internet even on the jump host.

🌐 Web query:

Is plane-enterprise Helm chart v1.4.1 the latest release as of September 9, 2025?

💡 Result:

No. I couldn't find a plane-enterprise v1.4.1 as the latest — the makeplane/helm-charts releases show plane-enterprise up to v1.1.2, and the official Plane Helm repo/docs point to the chart at helm.plane.so (use helm repo update + helm search repo plane/plane-enterprise to confirm locally). [1][2]

Sources:

  • makeplane/helm-charts releases (plane-enterprise tags). [1]
  • Plane Helm repo / Kubernetes install docs (helm.plane.so). [2]

Update hardcoded chart version and bundle for air-gapped installs
Replace plane-enterprise-1.4.1.tgz with the actual latest chart (as of Sep 9, 2025 it’s v1.1.2—verify via helm repo update && helm search repo plane/plane-enterprise), and include that .tgz in your offline bundle so no internet access is required on the jump host.

🤖 Prompt for AI Agents
In self-hosting/methods/airgapped-edition-kubernetes.mdx around lines 21 to 25,
the docs hardcode a specific chart file name (plane-enterprise-1.4.1.tgz);
update the reference to the current chart version (verify latest with helm repo
update && helm search repo plane/plane-enterprise) and replace the hardcoded
filename with the verified latest filename (e.g., plane-enterprise-v1.1.2.tgz if
confirmed), and update the instructions to state that the matching .tgz must be
included in the offline bundle on the jump host so no internet access is
required during installation.

Comment on lines +144 to +151
helm install plane-app plane-enterprise-1.4.1.tgz \
--create-namespace \
--namespace plane \
-f custom-values.yaml \
--timeout 10m \
--wait \
--wait-for-jobs
```
Copy link

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Include planeVersion in install or values.

Your install command doesn’t set planeVersion; ensure it’s in custom-values.yaml (see prior comment) or add a flag.

-    helm install plane-app plane-enterprise-1.4.1.tgz \
+    helm install plane-app plane-enterprise-1.4.1.tgz \
         --create-namespace \
         --namespace plane \
         -f custom-values.yaml \
+        --set planeVersion=v1.14.1 \
         --timeout 10m \
         --wait \
         --wait-for-jobs

(Use one source of truth to avoid drift; prefer values file.)

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
helm install plane-app plane-enterprise-1.4.1.tgz \
--create-namespace \
--namespace plane \
-f custom-values.yaml \
--timeout 10m \
--wait \
--wait-for-jobs
```
helm install plane-app plane-enterprise-1.4.1.tgz \
--create-namespace \
--namespace plane \
-f custom-values.yaml \
--set planeVersion=v1.14.1 \
--timeout 10m \
--wait \
--wait-for-jobs
🤖 Prompt for AI Agents
In self-hosting/methods/airgapped-edition-kubernetes.mdx around lines 144 to
151, the helm install example does not set planeVersion; update the installation
to use a single source of truth by adding planeVersion: "<desired-version>" to
custom-values.yaml (or, if you must override, add --set
planeVersion=<desired-version> to the helm command), and ensure the value
matches the version referenced elsewhere in the docs to avoid drift.

```yaml
# Example of image updates in custom-values.yaml
license:
licenseDomain: 'plane.example.com'
Copy link
Collaborator

Choose a reason for hiding this comment

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

TAB is required

licenseDomain: 'plane.example.com'

airgapped:
enabled: true
Copy link
Collaborator

Choose a reason for hiding this comment

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

TAB is required for

enabled: true
s3SecretName: "s3-custom-ca"
s3SecretKey: "s3-custom-ca.crt"

image_mc: <your-registry.com>/mc:latest

env:
storageClass: ''
Copy link
Collaborator

Choose a reason for hiding this comment

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

TAB is required

@danciaclara danciaclara merged commit 7f8b11e into preview Sep 9, 2025
3 of 5 checks passed
@danciaclara danciaclara deleted the airgapped-kubernetes-edition branch September 9, 2025 12:10
@coderabbitai coderabbitai bot mentioned this pull request Sep 18, 2025
6 tasks
@coderabbitai coderabbitai bot mentioned this pull request Oct 3, 2025
6 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants