From 555984406b8d3fc1b50249bb1598af67df0af7ba Mon Sep 17 00:00:00 2001 From: ptownley Date: Thu, 12 Nov 2026 10:00:44 +0000 Subject: [PATCH 1/6] Populate Readme with info on how to run the orion bootstrap application --- README.md | 124 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 123 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 11265ea..43c4364 100644 --- a/README.md +++ b/README.md @@ -1 +1,123 @@ -# Orion-Boostrap \ No newline at end of file +# Juno Orion Bootstrap wizard + +A guided, terminal-based installer for Juno Orion. It walks you through a short series of screens, then either installs a lightweight Kubernetes (k3s) on the local machine and deploys Juno onto it, or deploys Juno onto a Kubernetes cluster you already have. + +## Before you start + +**Choose your install type** + +| Install type | What it does | Requirements | +|---|---|---| +| New k3s deployment | Installs k3s on this machine, then deploys Orion | Linux host, must be run as `root` | +| Existing Cluster | Deploys Orion onto a cluster you already run | `kubeconfig` for the cluster, network access to it | + +**For an Existing Cluster** + +- Your active kubeconfig context must point at the target cluster (`KUBECONFIG` is respected). +- At least one node must carry the Juno label: + + ``` + kubectl label node juno-innovations.com/service=true + ``` + +- For AWS Marketplace deployments, AWS credentials for the target account must be available in your environment (for example via `AWS_PROFILE` or `AWS_ACCESS_KEY_ID`/`AWS_SECRET_ACCESS_KEY`), and a region must be set (`AWS_REGION`). The credentials need permission to manage IAM roles and policies and to list EKS clusters. +- Make sure the kube context you have active is the cluster you select in the AWS step. The installer checks this and will stop with a clear message if they differ. + +**For an Offline (air-gapped) install** + +- Have the Genesis and ingress-nginx chart sources available at locations reachable from this machine (an internal chart repo or git repo). +- For a k3s install, have internal registry mirrors ready for `docker.io`, `registry.k8s.io`, `nvcr.io`, `quay.io` and `ghcr.io`. + +## Running the installer + +Copy the binary to the target machine and run it in a terminal: + +``` +chmod +x phobos +./phobos +``` + +For a k3s install, run it as root: + +``` +sudo ./phobos +``` + +## Controls + +| Key | Action | +|---|---| +| Up / Down | Move between options | +| Space | Select or toggle the highlighted item | +| Enter | Confirm and continue | +| Ctrl+a | Show or hide advanced settings (first screen) | +| Ctrl+n | Go back to the previous screen | +| Ctrl+c | Save your progress and quit | + +## Walkthrough + +### 1. Deployment method + +- Pick **New k3s deployment** or **Existing Cluster** and press Space to select it (a tick appears), then press Enter. +- **Deployment is offline**: tick this for an air-gapped install. An extra screen collects the offline details. +- **Advanced settings** (Ctrl+A): lets you set a custom **Namespace** for Juno. Leave it empty to use the default (`argocd`). Names must be lowercase letters, numbers or `-`, and cannot be a reserved name (the installer lists them if you pick one). +- **Previous config found**: if the installer detects settings from an earlier run, an extra tick box appears at the top. Tick it to delete the old settings and start completely fresh. Otherwise your earlier answers are pre-filled. + +### 2. Offline installation details (offline installs only) + +Fill in each field and press Enter to move on. Example values are shown in grey and disappear when you start typing. + +- **Genesis** and **ingress-nginx**: chart URL, whether the source is a git repo (and if so the chart path inside it), and the chart version. +- **Registry mirrors** (k3s installs): a mirror URL for each of the five registries listed above. +- **Registry username / password** (k3s installs): only needed if your mirrors require authentication. Leave blank otherwise. + +Move to **[ Continue ]** at the bottom, press Enter, review the summary, then press Enter to proceed or `ctrl+n` to go back and edit. + +### 3a. New k3s deployment + +- Confirm you are happy to proceed by checking the box (space) and pressing Enter. +- The installer shows live progress while k3s is installed and Orion is deployed. This can take a while, especially while images are loaded. +- On success the screen shows the address for the Orion Admin setup wizard. + +### 3b. Existing Cluster + +- **AWS Marketplace**: you are asked whether the deployment is facilitated by AWS Marketplace. Press `Y` or `N`, then Enter. + - If yes, pick your EKS cluster (Space to select, Enter to confirm). A checklist then shows each AWS setup step (connectivity, license manager roles, IAM roles and service accounts) as it completes. Press any key when it finishes. + - If no, you go straight to the next step. +- The installer checks your local environment and cluster connectivity, then asks you to confirm. +- It installs [ArgoCD](https://argo-cd.readthedocs.io/en/stable/), then Orion. Progress is shown with a spinner. + +## Finishing up + +When the install completes you will see: + +``` +https:///orion/setup/ +``` + +Open that address in a web browser and complete the Orion Admin setup wizard. + +## Saved settings + +Your answers are saved to: + +``` +/tmp/juno_bootstrap_chart_values.yaml +``` + +They are saved when you quit with Ctrl+C or when an install step starts, and reloaded the next time you run the installer. If something goes wrong you can fix the problem and run the installer again to carry on where you left off. This file can contain registry credentials, so treat it as sensitive. Because it lives in `/tmp` it may be removed on reboot. + +## Troubleshooting + +- **"application is not running as root"**: a k3s install needs root. Re-run with `sudo ./phobos`. +- **"failed to contact kubernetes"**: set `KUBECONFIG` to a valid kubeconfig and check the cluster is reachable. +- **"failed to locate Juno node label"**: label at least one node as shown in "Before you start". +- **Active kube context does not match the selected cluster**: switch context, for example `aws eks update-kubeconfig --name `, and run again. +- **Permission denied writing the settings file**: an old `/tmp/juno_bootstrap_chart_values.yaml` owned by another user is in the way. Remove it or run as the same user. +- **Install failed**: the error screen shows the reason and, for k3s installs, the location of the install log. Include it when contacting support. +- **Verbose logging**: run with `DEBUG=yes ./phobos` to write detailed logs to `debug.log` in the current directory. + +## Support + +- Support: https://www.juno-innovations.com/contact/support +- Documentation: https://docs.juno-innovations.com/Orion-Documentation/latest/ \ No newline at end of file From 25276d98523d420d0640e4fc0bc217c66158a86e Mon Sep 17 00:00:00 2001 From: ptownley Date: Thu, 12 Nov 2026 11:33:00 +0000 Subject: [PATCH 2/6] Populate the logo Add some github action config --- .github/delete-merged-branch-config.yml | 3 ++ .github/pull_request_template.md | 12 +++++ .github/release.yml | 27 +++++++++++ .github/workflows/add-to-project.yaml | 25 +++++++++++ .github/workflows/branch-cleanup.yml | 21 +++++++++ .github/workflows/pr-gChat-notification.yaml | 45 +++++++++++++++++++ .github/workflows/pr-on-branch-creation.yml | 34 ++++++++++++++ .github/workflows/run-cleanup.yml | 30 +++++++++++++ README.md | 7 ++- assets/logo.png | Bin 0 -> 28774 bytes 10 files changed, 202 insertions(+), 2 deletions(-) create mode 100644 .github/delete-merged-branch-config.yml create mode 100644 .github/pull_request_template.md create mode 100644 .github/release.yml create mode 100644 .github/workflows/add-to-project.yaml create mode 100644 .github/workflows/branch-cleanup.yml create mode 100644 .github/workflows/pr-gChat-notification.yaml create mode 100644 .github/workflows/pr-on-branch-creation.yml create mode 100644 .github/workflows/run-cleanup.yml create mode 100644 assets/logo.png diff --git a/.github/delete-merged-branch-config.yml b/.github/delete-merged-branch-config.yml new file mode 100644 index 0000000..1e3de62 --- /dev/null +++ b/.github/delete-merged-branch-config.yml @@ -0,0 +1,3 @@ +delete_closed_pr: true +exclude: + - testing diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000..fe6e1f7 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,12 @@ +## Summary + +### Goal: +What is this branch trying to accomplish? + + +### Changes: +What did you do? + + +### Notes: +Anything reviewers should know? diff --git a/.github/release.yml b/.github/release.yml new file mode 100644 index 0000000..0df4669 --- /dev/null +++ b/.github/release.yml @@ -0,0 +1,27 @@ +runs-on: self-hosted + +changelog: + exclude: + labels: + - ignore-for-release + authors: + - octocat + categories: + - title: '🚀 Features' + labels: + - 'feature' + - 'feature request' + - 'enhancement' + - 'add' + - title: '🐛 Bug Fixes' + labels: + - 'fix' + - 'bugfix' + - 'bug' + - 'broke' + - title: '🧰 Maintenance' + labels: + - 'chore' + - title: Other Changes + labels: + - "*" \ No newline at end of file diff --git a/.github/workflows/add-to-project.yaml b/.github/workflows/add-to-project.yaml new file mode 100644 index 0000000..ff50653 --- /dev/null +++ b/.github/workflows/add-to-project.yaml @@ -0,0 +1,25 @@ +name: Add Issue to Project + +on: + issues: + types: + - opened + + +jobs: + add-to-project: + name: Add Issue to Project + runs-on: self-hosted + steps: + - name: Generate a token + id: generate-token + uses: actions/create-github-app-token@v2 + with: + app-id: ${{ secrets.JUNO_CI_APP_ID }} + private-key: ${{ secrets.JUNO_CI_APP_PRIVATE_KEY }} + owner: ${{ github.repository_owner }} + - uses: actions/add-to-project@main + with: + project-url: https://github.com/orgs/juno-fx/projects/12 + github-token: ${{ steps.generate-token.outputs.token }} + diff --git a/.github/workflows/branch-cleanup.yml b/.github/workflows/branch-cleanup.yml new file mode 100644 index 0000000..2b471d8 --- /dev/null +++ b/.github/workflows/branch-cleanup.yml @@ -0,0 +1,21 @@ +name: Delete Branch on PR Close +on: + pull_request: + types: [closed] + +jobs: + delete-branch: + runs-on: + - self-hosted + steps: + - name: Generate a token + id: generate-token + uses: actions/create-github-app-token@v2 + with: + app-id: ${{ secrets.JUNO_CI_APP_ID }} + private-key: ${{ secrets.JUNO_CI_APP_PRIVATE_KEY }} + owner: ${{ github.repository_owner }} + - name: delete branch + uses: SvanBoxel/delete-merged-branch@main + env: + GITHUB_TOKEN: ${{ steps.generate-token.outputs.token }} diff --git a/.github/workflows/pr-gChat-notification.yaml b/.github/workflows/pr-gChat-notification.yaml new file mode 100644 index 0000000..20f2b08 --- /dev/null +++ b/.github/workflows/pr-gChat-notification.yaml @@ -0,0 +1,45 @@ +name: PR Message + +on: + pull_request: + types: + - review_requested + +jobs: + google-chat-action: + runs-on: self-hosted + steps: + - name: Generate a token + id: generate-token + uses: actions/create-github-app-token@v2 + with: + app-id: ${{ secrets.JUNO_CI_APP_ID }} + private-key: ${{ secrets.JUNO_CI_APP_PRIVATE_KEY }} + owner: ${{ github.repository_owner }} + - name: Checkout CI repository + uses: actions/checkout@v4 + with: + repository: juno-fx/ci + ref: main + path: .juno-ci + token: ${{ steps.generate-token.outputs.token }} + - name: Run Google Chat notification + uses: ./.juno-ci/actions/workflow/pr-gChat-notification + with: + webhookUrl: ${{ secrets.GCHAT_PR_SPACE }} + title: ${{ github.repository }} + subtitle: ${{ github.head_ref }} + additionalSections: > + { + "header": "Requested Reviewer", + "widgets": [ + { + "decoratedText": { + "text": "${{ github.event.requested_reviewer && github.event.requested_reviewer.login || github.event.requested_team && github.event.requested_team.name || 'N/A' }}", + "icon": { + "knownIcon": "PERSON" + } + } + } + ] + } diff --git a/.github/workflows/pr-on-branch-creation.yml b/.github/workflows/pr-on-branch-creation.yml new file mode 100644 index 0000000..242b48d --- /dev/null +++ b/.github/workflows/pr-on-branch-creation.yml @@ -0,0 +1,34 @@ +on: + create: + +permissions: + contents: write + issues: write + pull-requests: write + repository-projects: read # github's current permission scheme makes this necessary: https://github.com/cli/cli/issues/6274 + +jobs: + PR: + runs-on: self-hosted + if: github.event.ref_type == 'branch' + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Generate a token + id: generate-token + uses: actions/create-github-app-token@v2 + with: + app-id: ${{ secrets.JUNO_CI_APP_ID }} + private-key: ${{ secrets.JUNO_CI_APP_PRIVATE_KEY }} + owner: ${{ github.repository_owner }} + - name: Checkout CI repository + uses: actions/checkout@v4 + with: + repository: juno-fx/ci + ref: main + path: .juno-ci + token: ${{ steps.generate-token.outputs.token }} + - name: Run PR on branch creation + uses: ./.juno-ci/actions/workflow/pr-on-branch-creation + with: + gh_token: ${{ steps.generate-token.outputs.token }} diff --git a/.github/workflows/run-cleanup.yml b/.github/workflows/run-cleanup.yml new file mode 100644 index 0000000..889858d --- /dev/null +++ b/.github/workflows/run-cleanup.yml @@ -0,0 +1,30 @@ +name: Delete old workflow runs +on: + push: + paths: + - '.github/workflows/run-cleanup.yml' + workflow_dispatch: + schedule: + - cron: '0 0 * * 1' +jobs: + del_runs: + runs-on: + - self-hosted + permissions: + actions: write + contents: read + steps: + - name: Generate a token + id: generate-token + uses: actions/create-github-app-token@v2 + with: + app-id: ${{ secrets.JUNO_CI_APP_ID }} + private-key: ${{ secrets.JUNO_CI_APP_PRIVATE_KEY }} + owner: ${{ github.repository_owner }} + - name: Delete workflow runs + uses: Mattraks/delete-workflow-runs@v2 + with: + token: ${{ steps.generate-token.outputs.token }} + repository: ${{ github.repository }} + retain_days: 7 + keep_minimum_runs: 6 diff --git a/README.md b/README.md index 43c4364..c9a6b80 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,8 @@ -# Juno Orion Bootstrap wizard - +
+

+ +

Orion Bootstrap Wizard

+

A guided, terminal-based installer for Juno Orion. It walks you through a short series of screens, then either installs a lightweight Kubernetes (k3s) on the local machine and deploys Juno onto it, or deploys Juno onto a Kubernetes cluster you already have. ## Before you start diff --git a/assets/logo.png b/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..6dbbebfc11ffe073bba14c61a4daffb1b0559f19 GIT binary patch literal 28774 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

Kiu@0-);Za4#MBWTux{qL#I#hKR{MLGu+UU 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 Date: Thu, 12 Nov 2026 11:56:34 +0000 Subject: [PATCH 3/6] add a beta disclaimer --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index c9a6b80..a824a30 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,10 @@

A guided, terminal-based installer for Juno Orion. It walks you through a short series of screens, then either installs a lightweight Kubernetes (k3s) on the local machine and deploys Juno onto it, or deploys Juno onto a Kubernetes cluster you already have. +
+ +> **Beta:** This installer is currently in beta. You may encounter rough edges, and behaviour may change between releases. Please report any problems to support (see the Support section below). + ## Before you start **Choose your install type** From fd479564ad2e86527cfe43bc4147c3735ef7f651 Mon Sep 17 00:00:00 2001 From: ptownley Date: Thu, 12 Nov 2026 12:59:13 +0000 Subject: [PATCH 4/6] Update install binary name --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index a824a30..d55fd65 100644 --- a/README.md +++ b/README.md @@ -40,14 +40,14 @@ A guided, terminal-based installer for Juno Orion. It walks you through a short Copy the binary to the target machine and run it in a terminal: ``` -chmod +x phobos -./phobos +chmod +x orion-bootstrap- +./orion-bootstrap- ``` For a k3s install, run it as root: ``` -sudo ./phobos +sudo ./orion-bootstrap- ``` ## Controls @@ -116,13 +116,13 @@ They are saved when you quit with Ctrl+C or when an install step starts, and rel ## Troubleshooting -- **"application is not running as root"**: a k3s install needs root. Re-run with `sudo ./phobos`. +- **"application is not running as root"**: a k3s install needs root. Re-run with `sudo ./orion-bootstrap-`. - **"failed to contact kubernetes"**: set `KUBECONFIG` to a valid kubeconfig and check the cluster is reachable. - **"failed to locate Juno node label"**: label at least one node as shown in "Before you start". - **Active kube context does not match the selected cluster**: switch context, for example `aws eks update-kubeconfig --name `, and run again. - **Permission denied writing the settings file**: an old `/tmp/juno_bootstrap_chart_values.yaml` owned by another user is in the way. Remove it or run as the same user. - **Install failed**: the error screen shows the reason and, for k3s installs, the location of the install log. Include it when contacting support. -- **Verbose logging**: run with `DEBUG=yes ./phobos` to write detailed logs to `debug.log` in the current directory. +- **Verbose logging**: run with `DEBUG=yes ./orion-bootstrap-` to write detailed logs to `debug.log` in the current directory. ## Support From 020475177caf43b438543c006b967c10f07c7990 Mon Sep 17 00:00:00 2001 From: ptownley Date: Thu, 12 Nov 2026 16:35:09 +0000 Subject: [PATCH 5/6] MR comments --- README.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/README.md b/README.md index d55fd65..d5164ea 100644 --- a/README.md +++ b/README.md @@ -72,6 +72,9 @@ sudo ./orion-bootstrap- ### 2. Offline installation details (offline installs only) +[!TIP] +For further information on deploying Juno Orion in an air gapped environment, please see our [Air gapped installation guide](https://docs.juno-innovations.com/Orion-Documentation/latest/installation/advanced/air-gapped/) and our [Air gapped bundler](https://github.com/juno-fx/Airgap-Bundler) for easy image and chart preparation* + Fill in each field and press Enter to move on. Example values are shown in grey and disappear when you start typing. - **Genesis** and **ingress-nginx**: chart URL, whether the source is a git repo (and if so the chart path inside it), and the chart version. @@ -104,6 +107,14 @@ https:///orion/setup/ Open that address in a web browser and complete the Orion Admin setup wizard. +[!NOTE] +There is a chance that the images used to run Orion are taking longer than expected to be pulled into the cluster, we suggest checking your cluster for this by running `kubectl` commands such as `kubectl get pods -A` and searching for pods named as follows. If their status is "ContainerCreating" then more time is required, wait until they show as "Running" then attempt to visit the above URL. + +- genesis-* +- terra-* +- titan-* +- metrics-gatherer-* + ## Saved settings Your answers are saved to: From 288285a1027bebb5d09dc1224da3ce6fdf41d5ea Mon Sep 17 00:00:00 2001 From: ptownley Date: Thu, 12 Nov 2026 16:40:25 +0000 Subject: [PATCH 6/6] Note and tip doesn't work --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index d5164ea..ec06821 100644 --- a/README.md +++ b/README.md @@ -72,8 +72,8 @@ sudo ./orion-bootstrap- ### 2. Offline installation details (offline installs only) -[!TIP] -For further information on deploying Juno Orion in an air gapped environment, please see our [Air gapped installation guide](https://docs.juno-innovations.com/Orion-Documentation/latest/installation/advanced/air-gapped/) and our [Air gapped bundler](https://github.com/juno-fx/Airgap-Bundler) for easy image and chart preparation* +***Note:*** +For further information on deploying Juno Orion in an air gapped environment, please see our [Air gapped installation guide](https://docs.juno-innovations.com/Orion-Documentation/latest/installation/advanced/air-gapped/) and our [Air gapped bundler](https://github.com/juno-fx/Airgap-Bundler) for easy image and chart preparation Fill in each field and press Enter to move on. Example values are shown in grey and disappear when you start typing. @@ -107,7 +107,7 @@ https:///orion/setup/ Open that address in a web browser and complete the Orion Admin setup wizard. -[!NOTE] +***Note:*** There is a chance that the images used to run Orion are taking longer than expected to be pulled into the cluster, we suggest checking your cluster for this by running `kubectl` commands such as `kubectl get pods -A` and searching for pods named as follows. If their status is "ContainerCreating" then more time is required, wait until they show as "Running" then attempt to visit the above URL. - genesis-* @@ -115,6 +115,7 @@ There is a chance that the images used to run Orion are taking longer than expec - titan-* - metrics-gatherer-* + ## Saved settings Your answers are saved to: