From b1dbf9e8aaf97cf69e450a62680e0ad9ea16ce99 Mon Sep 17 00:00:00 2001
From: Erik Brakkee
Date: Tue, 13 Aug 2024 00:50:54 +0200
Subject: [PATCH] updated the about page
---
pkg/server/templates/about.templ | 42 ++++++++++++++++++++++++++------
1 file changed, 34 insertions(+), 8 deletions(-)
diff --git a/pkg/server/templates/about.templ b/pkg/server/templates/about.templ
index 1c5761f..9b120a1 100644
--- a/pkg/server/templates/about.templ
+++ b/pkg/server/templates/about.templ
@@ -75,7 +75,23 @@ templ About() {
having to start over again.
Using authorized keys is made easy through the
usage page, which provides the exact commands to execute based
- on the target environmnet.
+ on the target environmnet. If users are hesitant to use their public key it is also possible
+ to generate a separate ssh key-pair using ssh-keygen
and use that instead.
+
+
+ To be able to use Converge, you must already have access to the configuration of a build job.
+ Having that access means it is possible to execute any command on a build agent. The Converge
+ agent is started by the build job and does not have any additional rights compared to what you
+ could script in the continous integration job definition.
+
+
+ Converge does not provide any stealth features to hide it. The public sessions page show all
+ agents and clients including details about the clients and the agents. The idea is that it should
+ be light-weight and easy to use. There is no reason to hide the fact that someone is debugging
+ a continuous integration job. Also, all activity is logged,]both using standard kubernetes tooling
+ such as (fluentbit/filebat, and loki/elasticsearch depending on the environment). Also, Converge
+ provides a prometheus metrics endpoint which allows user sessions to be tracked over time after
+ the fact. Thie data is also made accessible using a grafana dashboard.
SSH and SFTP
@@ -90,8 +106,14 @@ templ About() {
There is a timeout mechanism in the agent such that jobs do not hang indefinitely
waiting for a connection. This mechanism is useful to make sure build agents do not keep
build agents occupied for a long time. By default, the agent exits with status 0 when
- the first client exits after logging in. The timeout is an inactivity timeout which is reset
- every time the user presses a key on the keyboard.
+ the first client exits after logging in. The timeout is an inactivity timeout. Activity is
+ detected as follows:
+
+ - ssh: any key press is considered activity
+ - sftp: any output from the server side is considered activity. This is done to
+ make sure that longer downloads cannot be killed by a timeout. A simple
ls
command
+ in an sftp session will also lead to activity since the server will output the result of the command.
+
When the user touches a .hold file, the agent keeps waiting for connections even
after the last client logs out, taking into account the timeout. By default the agent
@@ -108,10 +130,14 @@ templ About() {
- The agent sets a agentdir environment variable that points to
+ The agent sets an agentdir environment variable that points to
the directory where the agent is running.
+ The user will get notifications from the agent any time something important happens such
+ as the session being close to timeout.
+
+
other tools
Using available existing tools such as
@@ -125,12 +151,12 @@ templ About() {
- Breakpoint uses an embedded SSH server which is a really good idea but
- uses the QUIC protocol for connecting to a rendez-vous server. The rendez-vous server than
+ uses the QUIC protocol for connecting to a rendez-vous server. The rendez-vous server then
exposes a random port for every client. This make deployment on kubernetes really hard
where fixed ports must be used and QUIC is also not a widely supported protocol.
- The problem with the random ports can be solved by using wstunnel running together
with breakpoint server in a kubernetes pod, where wstunnel can forward traffic over an
- extern websocket connection to the local random port that breakpoint server is listening on.
+ external websocket connection to the local random port that breakpoint server is listening on.
- breakpoint leaves it open on how users install the breakpoint executable (agent).
- Because of the hacky nature of this setup, it is very difficult for users to use
and troubleshoot when things go wrong.
@@ -154,11 +180,11 @@ templ About() {
- User-friendly error messages can be given to users in most case when things do not work
out because of
wsproxy
, an SSH proxy command that also talk to the server
to tell the user if a connection is accepted and if not why not.
- - A live screen showing the current sessions that are running. The sessionw webpage provides
+
- A live screen showing the current sessions that are running. The sessions webpage provides
additional feedback about the running sessions.
- Interactivity in the user's session with notifications about timeouts and a very
simple inactivity timeout mechanism.
- - Possibility for the user to define his own shell.
+ - Possibility for the user to define the remote shell to use.
- Support for unix like bash shells and command prompt and powershell.