Overview
Once you're connected to the Cluster (read more here), you can access a Service using its private hostname or full FQDN. For example, you might first want to list all the available Services in the Cluster as follows:
export OCTELIUM_DOMAIN=example.comoctelium get service# OR simplyoctelium get svc
The output of the command above should give your the list of the available Services in your Cluster. Here is an example:
NAME | NAMESPACE | PORT | TYPE | ADDRESSES | DESCRIPTION | TLS | PUBLIC-------------------+-----------+------+------+----------------------------+--------------------------------+------+---------demo-nginx | default | 80 | WEB | 100.64.0.23, fdee:e801::17 | A Demo nginx server that | | True| | | | | is deployed as a managed | || | | | | container and accessible by | || | | | | all Users | || | | | | dashboard | |essh | default | 22 | SSH | 100.64.0.34, fdee:e801::22 | | |pg2 | default | 5432 | TCP | 100.64.0.36, fdee:e801::24 | | |nginx | default | 80 | WEB | 100.64.0.38, fdee:e801::26 | | | Truecode | default | 8080 | WEB | 100.64.0.43, fdee:e801::2b | | | Truessh-h01 | default | 22 | SSH | 100.64.0.42, fdee:e801::2a | | |
For example, the demo-nginx
in the list above is a WEB
, basically an HTTP-based Service. This Service is listening over the standard HTTP port 80
. You can simply access it via curl or your browser at the URL http://demo-nginx
. Here is an example:
curl demo-nginx
You can also use the entire private FQDN of the Service as follows:
curl demo-nginx.local.<DOMAIN>
And you can also directly access the Service via its private IPv6 or IPv4 IP addresses. For example, you might have to directly use the IP addresses if you're disabling the Cluster private DNS Server via the --no-dns
flag in the octelium connect
command (read more here). By default, octelium connect
usually uses IPv6-only tunneling when connected to the Cluster. Here is an example:
curl http://[\fdee:e801::17\]
If your octelium connect
command is enabling IPv4 (read more here), then you can access the Service as follows:
curl http://100.64.0.23
For SSH
-based Services, you can simply use the standard OpenSSH client. For example, there is a ssh-h01
SSH
-based Service in the list above, we can access it simply as follows:
ssh ssh-h01
The ssh-h01
above is listening over the standard SSH port 22
. If it is listening over some custom port number, e.g. 2022
, we can simply use -p
flag as follows:
ssh -p 2022 ssh-h01
The same goes for POSTGRES
-based Services. You can for example use standard psql
as follows:
psql -h my-postgres-db-1
TLS
For Services that are listening over TLS, you should use the full private FQDN of the Service. For example, if the Servicenginx
belonging to the default
Namespace is TLS-enabled and listening over the standard port 443
, then you can access it as follows:
curl https://nginx.local.<DOMAN>
Namespaces
for Service that belong to Namespaces other than the default
Namespace (read more about Namespaces here), you can address them via the hostname <SERVICE_NAME>.<NAMESPACE_NAME>
. For example, if you have an nginx
Service in the production
Namespace. You can access it as follows:
curl nginx.production
And you can also use its full private FQDN as follows:
curl nginx.production.local.<DOMAIN>
While Octelium's private DNS Server can resolve hostnames of Services belonging to Namespaces other than default
(e.g. nginx.production
), it is always much more recommended to use the full private FQDN whenever possible.
Mapping a Service to Localhost
You can also publish, or simply map, a certain Service to your localhost when you connect to the Cluster via the -p
or --publish
flag (read more here). Here is an example:
octelium connect -p demo-nginx:8000
In such case, you can simply access the demo-nginx
as follows:
curl localhost:8000
Accessing Services through mapping them to localhost is the only way possible to access Services when connecting to the Cluster via the rootless mode (i.e. using octelium connect
as an unprivileged/non-root OS user)
Embedded SSH
If you want to access an embedded SSH Service (read more about embedded SSH here), you need to specify the name of the connected Session as the SSH user. For example, you can list the available Cluster's Sessions as follows:
octeliumctl get session#or simplyocteliumctl get sess
The output of the command above should look as following:
NAME | USER | TYPE | EXPIRES IN | AGE | STATE | CONNECTED--------------+------+----------------------+------------+------+--------+------------root-zxklxg | root | CLIENT | 83d | 6d6h | ACTIVE |usr1-9o2ztp | usr1 | CLIENT | 83d | 6d5h | ACTIVE | Trueusr1-pv0mo9 | usr1 | CLIENTLESS (Browser) | 157m | 13h | ACTIVE |
Now, we see that the usr1-9o2ztp
Session is connected. Now, assuming that our embedded SSH Service has the name essh
in the default
Namespace, if that Session is explicitly serving embedded SSH via the --essh
flag (read more here), then we can simply SSH into that Session's host as follows:
ssh usr1-9o2ztp@essh