updates to the about page.

This commit is contained in:
Erik Brakkee 2024-09-06 19:24:43 +02:00
parent 1805542a2a
commit f863e57315

View File

@ -39,20 +39,22 @@ templ About() {
client and agent is established as follows:
<ul>
<li>(1): the agent, started by the continuous integration job, connects to converge server through a websocket, this establishes a connection that
is similar to a TCP connection to converge server. In connecting, the agent specifies a
rendez-vous id. After connecting, the agenta and ocnverge server using multiplexing of connections
over a single connection, allowing the agent to run an embedded SSH server and listen for incoming
is similar to a TCP connection. In connecting, the agent specifies a
rendez-vous id. After connecting, the agenta and Converge server perform multiplexing of connections
over this single connection. This allows the agent to run an embedded SSH server and listen for incoming
connections, just like normally is done with a TCP listener. </li>
<li>(2): the client connects to converge server through SSH and also specifies the same rendez-vous id.
The connection from client to converge server is done through a helper program <code>wsproxy</code>
that is used as a proxy command for SSH allowing SSH to connect to the websocket. Using wsproxy, the
rendez-vous id is passed to the server. </li>
Since SSH by itself cannot connect over websockets, a helper program <code>wsproxy</code> is used as
a proxy command for SSH. Using <code>wsproxy</code>, the rendez-vous id is passed to the server as part
of the websocket URL. </li>
<li>(3): converge server connects the two connections after matching them based on the rendez-vous id.
The role of converge server is imply in forwarding data. </li>
Now when a connection is setup from a client, it can connect to the appropriate agent, identifie dby
rendez-vous id and setup a bi-directional connection. After this, Converge simply copies data between
client and agent. </li>
<li>(4): the agent runs an embedded SSH server and incoming connections to the agent are handed over to
that server. That server in turn spawns a shell (bash, cmd.exe, powershell.exe) and connects it to the
SSH session. At that momenmt an end-to-end SSH session is established and the user can perform interactive
commands. </li>
remote SSH session. At that momenmt an end-to-end SSH session is established and the user can perform interactive
commands. Here any shell program can be used such as bash, command prompt, or powershell. </li>
</ul>
<p>There are a few special situations:
@ -128,14 +130,14 @@ templ About() {
<h2>remote shell usage</h2>
<p>
The agent supports a --shells command-line option by which a comma-separated
The agent supports a <code>--shells</code> command-line option by which a comma-separated
list of shells can be prepended to the default search path for shells, e.g.
<code>--shells zsh,csh,sh</code> (linux) or <code>cmd,powershell</code> for
windows.
</p>
<p>
The agent sets an <coder>agentdir</coder> environment variable that points to
The agent sets an <code>agentdir</code> environment variable that points to
the directory where the agent is running.
</p>
@ -171,7 +173,7 @@ templ About() {
Converve server addresses these issues in the following ways:
<ul>
<li>Use the websocket protocol both for agents and for clients, providing a fixed port and
a supported protocol for kubernetes deploymment. Websockets are also supported by
a supported protocol for kubernetes deployment. Websockets are also supported by
kubernetes ingress controllers so this makes it easy to deploy on kubernetes.
To make this work with SSH which does not natively support websockets, a proxycommand
<code>wsproxy</code> is provided that allows SSH to connect using websockets.