added a picture to the about page.

This commit is contained in:
Erik Brakkee 2024-09-01 10:12:17 +02:00
parent f5d8a5a424
commit b7d009a528
3 changed files with 38 additions and 34 deletions

View File

@ -157,6 +157,9 @@ func (s *IntegrationTestSuite) defineContainer(net *testcontainers.DockerNetwork
WaitingFor: wait.ForLog(waitForLog).WithStartupTimeout(10 * time.Second), WaitingFor: wait.ForLog(waitForLog).WithStartupTimeout(10 * time.Second),
LogConsumerCfg: createLogConsumerConfig(hostname), LogConsumerCfg: createLogConsumerConfig(hostname),
Networks: []string{net.Name}, Networks: []string{net.Name},
//NetworkAliases: map[string][]string{
// net.Name: []string{hostname},
//},
}, },
Started: false, Started: false,
} }

View File

@ -24,42 +24,39 @@ templ About() {
<h2>how it works</h2> <h2>how it works</h2>
<p> The basic principle of converge is described below. Access to a running remote continous integration
The steps involved are as follows: job is usually not possible without a lot of access to the backend environment where jobs are running.
However, the job can connect to a server as well as the client. The connection between
client and agent is established as follows:
<ul> <ul>
<li>The agent connects to converge server and specifies an id, the so-called rendez-vous id, <li>(1): the agent, started by the continuous integration job, connects to converge server through a websocket, this establishes a connection that
identifying the agent. is similar to a TCP connection to converge server. In connecting, the agent specifies a
The agent outputs an example command that can be used to connect to this agent. rendez-vous id. After connecting, the agenta and ocnverge server using multiplexing of connections
</li> over a single connection, allowing the agent to run an embedded SSH server and listen for incoming
<li>The agent sets up multiplexing of connections together with converge server connections, just like normally is done with a TCP listener. </li>
which allows it to listen on incoming connections. <li>(2): the client connects to converge server through SSH and also specifies the same rendez-vous id.
</li> The connection from client to converge server is done through a helper program <code>wsproxy</code>
<li>This is used by the agent for running an embedded SSH server that is listening for that is used as a proxy command for SSH allowing SSH to connect to the websocket. Using wsproxy, the
incoming connection requests from clients. rendez-vous id is passed to the server. </li>
</li> <li>(3): converge server connects the two connections after matching them based on the rendez-vous id.
<li>The client/user connects to the converge server using the command specified by the agent. The role of converge server is imply in forwarding data. </li>
This uses the same id as that used by the agent. The converge server can now match these <li>(4): the agent runs an embedded SSH server and incoming connections to the agent are handed over to
ids an set up an end-to-end connection from client to agent. The role of converge server that server. That server in turn spawns a shell (bash, cmd.exe, powershell.exe) and connects it to the
is simply in matching these ids and connecting the two websocket connections (from agent SSH session. At that momenmt an end-to-end SSH session is established and the user can perform interactive
and from client) together by copying data between them as it arrives. commands. </li>
</li>
<li>The embedded SSH server now performs authentication, after successful login,
a shell is spawned and the session is established. The shell can be any linux
shell but also command prompt and powershell are possible.
The connection is practically identical to a regular terminal connection. To
achieve this, the shell is made to beiieve that it is connected to a
terminal.
</li>
</ul> </ul>
</p>
<p>With regards to the rendez-vous id there are the following remarks: <div>
<img src="../static/images/converge.svg"/>
</div>
<p>There are a few special situations:
<ul> <ul>
<li> If no id is specified than an id is generated. </li> <li> If no id is specified than a rendez-vous id is generated. </li>
<li> If the agent uses an id already in use by another agent, then converge server will <li> If the agent uses an id already in use by another agent, then converge server will
generate a new id. </li> generate a new rendez-vous id. </li>
</ul> </ul>
The agent will always print the id and command required to connect to it to standard output. The agent will always print the rendez-vous id and command required to connect to it.
</p> </p>
<h2>security</h2> <h2>security</h2>

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 83 KiB