Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 33 additions & 37 deletions pages/kubernetes/how-to/connect-private-cluster.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -29,71 +29,67 @@ To connect to the fully isolated Kubernetes Kapsule control plane, you can open

### Finding your cluster's URL

In the Scaleway console, go to the [Kubernetes product section](https://console.scaleway.com/kubernetes), then click your cluster's name.

Scroll down to the **Network** section, and click on the **URL** value. The URL is copied to your clipboard.
1. Click **Kubernetes** in the **Containers** section of the [Scaleway console](https://console.scaleway.com) side menu. The Kubernetes dashboard displays.
2. From the drop-down menu, select the geographical region you want to manage.
3. Click on the name of the cluster you want to connect to. The cluster overview page displays.
4. Scroll down to the **Network** section, then click the **URL** value. The URL is copied to your clipboard.

### Opening the SSH tunnel

Open a terminal on your computer, then run the following command:

```bash
ssh -fNL 6443:<CLUSTER_URL_WITHOUT_HTTPS> bastion@<PUBLIC_GATEWAY_PUBLIC_IP> -p <SSH_BASTION_PORT>
```

Make sure to replace the values with the appropriate values. `<CLUSTER_URL_WITHOUT_HTTPS>` should end in `:6443`, which is the control plane's port.

Here is an example command:

```bash
ssh -fNL 6443:1379355f-f36a-4383-9791-b6c573dea811.api.k8s.fr-par.scw.cloud:6443 bastion@51.159.153.192 -p 61000
```
```bash
ssh -fNL 6443:<CLUSTER_URL_WITHOUT_HTTPS> bastion@<PUBLIC_GATEWAY_PUBLIC_IP> -p <SSH_BASTION_PORT>
```
Make sure to replace the values with the appropriate values. `<CLUSTER_URL_WITHOUT_HTTPS>` should end in `:6443`, which is the control plane's port.

<Message type="note">
Here is an example command:

The command contains several `ssh` flags:
```bash
ssh -fNL 6443:1379355f-f36a-4383-9791-b6c573dea811.api.k8s.fr-par.scw.cloud:6443 bastion@51.159.153.192 -p 61000
```

- `-f` runs the command in the background;
- `-N` tells `ssh` not to run a remote command, which is the case here since we only want to port-forward;
- `-L` sets up port-forwarding from a local port (here, port `6443`) and a given host and port on the remote side;
- `-p` indicates the remote SSH port.
<Message type="note">
The command contains several `ssh` flags:

</Message>
- `-f` runs the command in the background;
- `-N` tells `ssh` not to run a remote command, which is the case here since we only want to port-forward;
- `-L` sets up port-forwarding from a local port (here, port `6443`) and a given host and port on the remote side;
- `-p` indicates the remote SSH port.
</Message>

A tunnel to the Kubernetes Kapsule control plane is opened: all local traffic to port `6443` will now be redirected to the control plane through the Public Gateway's SSH bastion.

## Accessing the cluster

### Editing the `/etc/hosts` file
### Editing the /etc/hosts file

The downloaded `kubeconfig` file points to the control plane's URL, which is currently unreachable due to its lack of public IP. However, you can redirect traffic to your local port-forwarded port by editing your `/etc/hosts` file.

Open the `/etc/hosts` file on your computer using a text editor, and add the following line:

```
127.0.0.1 <CLUSTER_URL_WITHOUT_HTTPS>
```
```
127.0.0.1 <CLUSTER_URL_WITHOUT_HTTPS>
```

Using the same values as the previous example, the line would be:
Using the same values as the previous example, the line would be:

```
127.0.0.1 1379355f-f36a-4383-9791-b6c573dea811.api.k8s.fr-par.scw.cloud
```
```
127.0.0.1 1379355f-f36a-4383-9791-b6c573dea811.api.k8s.fr-par.scw.cloud
```

Processes on your computer now resolve your cluster's hostname to `127.0.0.1`, your `localhost` address.
Processes on your computer now resolve your cluster's hostname to `127.0.0.1`, your `localhost` address.

### Using `kubectl`
### Using kubectl

You can now manage your cluster using `kubectl`. Run the following command:

```bash
kubectl get nodes
```
```bash
kubectl get nodes
```

A list of nodes from your Kapsule cluster should appear.

<Message type="note">

You need to run the `ssh` command again every time your computer reboots. This can be automated using various tools such as shell scripts.

You need to run the `ssh` command again every time your computer reboots. This can be automated using various tools such as shell scripts.
</Message>
4 changes: 4 additions & 0 deletions pages/kubernetes/menu.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,10 @@ export const kubernetesMenu = {
label: 'Connect to a cluster with kubectl',
slug: 'connect-cluster-kubectl',
},
{
label: 'Connect to a cluster within a Private Network',
slug: 'connect-private-cluster',
},
{
label: 'Manage Kapsule node pools',
slug: 'manage-node-pools',
Expand Down