Skip to content

Commit bc53fc3

Browse files
Campfrezbo
authored andcommitted
feat: add Newt extension
Add Newt extension. Signed-off-by: Camp <camp.fred@hotmail.com> Signed-off-by: Noel Georgi <git@frezbo.dev>
1 parent a094039 commit bc53fc3

11 files changed

Lines changed: 149 additions & 2 deletions

File tree

.kres.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ spec:
3333
- mei
3434
- metal-agent
3535
- nebula
36+
- newt
3637
- nfsd
3738
- nut-client
3839
- nvidia-container-toolkit-lts

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ TARGETS += mdadm
8888
TARGETS += mei
8989
TARGETS += metal-agent
9090
TARGETS += nebula
91+
TARGETS += newt
9192
TARGETS += nfsd
9293
TARGETS += nut-client
9394
TARGETS += nvidia-container-toolkit-lts
@@ -264,4 +265,3 @@ release-notes: $(ARTIFACTS)
264265
conformance:
265266
@docker pull $(CONFORMANCE_IMAGE)
266267
@docker run --rm -it -v $(PWD):/src -w /src $(CONFORMANCE_IMAGE) enforce
267-

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ cosign verify --certificate-identity-regexp '@siderolabs\.com$' --certificate-oi
105105
| Name | Image | Description | Version Format |
106106
| ----------------------------------- | ----------------------------------------------------------------------------------------------------- | --------------------------------------------------------- | ------------------ |
107107
| [cloudflared](network/cloudflared/) | [ghcr.io/siderolabs/cloudflared](https://github.com/siderolabs/extensions/pkgs/container/cloudflared) | [Cloudflared](https://github.com/cloudflare/cloudflared/) | `upstream version` |
108+
| [newt](network/newt/) | [ghcr.io/siderolabs/newt](https://github.com/siderolabs/extensions/pkgs/container/newt) | [Cloudflared](https://github.com/fosrl/newt/) | `upstream version` |
108109
| [nebula](network/nebula/) | [ghcr.io/siderolabs/nebula](https://github.com/siderolabs/extensions/pkgs/container/nebula) | [Nebula](https://github.com/slackhq/nebula) | `upstream version` |
109110
| [lldpd](network/lldpd/) | [ghcr.io/siderolabs/lldpd](https://github.com/siderolabs/extensions/pkgs/container/lldpd) | [LLDP](https://github.com/lldpd/lldpd) | `upstream version` |
110111
| [tailscale](network/tailscale/) | [ghcr.io/siderolabs/tailscale](https://github.com/siderolabs/extensions/pkgs/container/tailscale) | [Tailscale](https://tailscale.com) | `upstream version` |

hack/release.toml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ NVIDIA LTS: 535.247.01
3434
NVIDIA Production: 570.140.08
3535
NVIDIA Container Toolkit: 1.17.8
3636
vmtoolsd: 1.1.0
37+
newt: 1.2.1
3738
"""
3839

3940
[notes.youki]
@@ -54,4 +55,10 @@ vmtoolsd: 1.1.0
5455
[HailoRT](https://github.com/hailo-ai/hailort-drivers) driver is now supported as an extension.
5556
"""
5657

58+
[notes.newt]
59+
title = "Newt client"
60+
description = """\
61+
[Newt](https://github.com/fosrl/newt) client is now supported as an extension.
62+
"""
63+
5764
[make_deps]

network/nebula/pkg.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ steps:
1010
- /.cache/go-build
1111
- /tmp/go/pkg
1212
sources:
13-
- url: https://github.com/slackhq/nebula/archive/refs/tags/v{{ .NEBULA_VERSION}}.tar.gz
13+
- url: https://github.com/slackhq/nebula/archive/refs/tags/v{{ .NEBULA_VERSION }}.tar.gz
1414
destination: nebula.tar.gz
1515
sha256: {{ .NEBULA_SHA256 }}
1616
sha512: {{ .NEBULA_SHA512 }}

network/newt/README.md

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
# Newt client
2+
3+
Newt is a fully user space WireGuard tunnel client and TCP/UDP proxy, designed to securely expose private resources controlled by Pangolin.
4+
By using Newt, you don't need to manage complex WireGuard tunnels and NATing.
5+
More info: https://github.com/fosrl/newt
6+
7+
## Installation
8+
9+
Newt system extension can be installed by customising boot assets or after installation with the `installer`
10+
11+
You can use the following schematic file:
12+
```yaml
13+
# newt-ext.yaml
14+
customization:
15+
systemExtensions:
16+
officialExtensions:
17+
- siderolabs/newt
18+
```
19+
20+
Check documentation for install:
21+
* https://www.talos.dev/latest/talos-guides/configuration/system-extensions/
22+
* https://www.talos.dev/latest/talos-guides/install/boot-assets/
23+
24+
## Usage
25+
26+
Configure the extension via `ExtensionServiceConfig` document.
27+
28+
```yaml
29+
# newt-config.yaml
30+
---
31+
apiVersion: v1alpha1
32+
kind: ExtensionServiceConfig
33+
name: newt
34+
environment:
35+
- PANGOLIN_ENDPOINT=https://example.com
36+
- NEWT_ID=2ix2t8xk22ubpfy
37+
- NEWT_SECRET=nnisrfsdfc7prqsp9ewo1dvtvci50j5uiqotez00dgap0ii2
38+
```
39+
40+
Then apply the patch to your node's MachineConfigs
41+
```bash
42+
talosctl patch mc -p @newt-config.yaml
43+
```
44+
45+
You will then be able to verify that it is in place with the following command
46+
```bash
47+
talosctl get extensionserviceconfigs
48+
49+
NODE NAMESPACE TYPE ID VERSION
50+
mynode runtime ExtensionServiceConfig newt 1
51+
```
52+
53+
## Configuration
54+
55+
See all run parameters here (use environment variables): https://docs.fossorial.io/Newt/overview#cli-args

network/newt/manifest.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
version: v1alpha1
2+
metadata:
3+
name: newt
4+
version: "$NEWT_VERSION"
5+
author: Fossorial
6+
description: |
7+
Newt is a fully user space WireGuard tunnel client and TCP/UDP proxy, designed to securely expose private resources controlled by Pangolin.
8+
By using Newt, you don't need to manage complex WireGuard tunnels and NATing.
9+
More info: https://github.com/fosrl/newt
10+
compatibility:
11+
talos:
12+
version: ">= v1.5.0"

network/newt/newt.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
name: newt
2+
depends:
3+
- service: cri
4+
- network:
5+
- addresses
6+
- connectivity
7+
- etcfiles
8+
- hostname
9+
- configuration: true
10+
container:
11+
entrypoint: /usr/local/bin/newt
12+
restart: always

network/newt/pkg.yaml

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
name: newt
2+
variant: scratch
3+
shell: /bin/bash
4+
dependencies:
5+
- stage: base
6+
steps:
7+
- env:
8+
GOPATH: /tmp/go
9+
- cachePaths:
10+
- /.cache/go-build
11+
- /tmp/go/pkg
12+
sources:
13+
- url: https://github.com/fosrl/newt/archive/refs/tags/{{ .NEWT_VERSION }}.tar.gz
14+
destination: newt.tar.gz
15+
sha256: {{ .NEWT_SHA256 }}
16+
sha512: {{ .NEWT_SHA512 }}
17+
- network: default
18+
prepare:
19+
- |
20+
sed -i 's#$NEWT_VERSION#{{ .NEWT_VERSION }}#' /pkg/manifest.yaml
21+
- |
22+
mkdir newt
23+
tar -xzvf newt.tar.gz --strip-components=1 -C newt
24+
- | # https://github.com/fosrl/newt?tab=readme-ov-file#binary
25+
cd newt
26+
if [ -f main.go ]; then
27+
sed -i 's/Newt version replaceme/Newt version '"{{ .NEWT_VERSION }}"'/' main.go
28+
echo "Updated main.go with version {{ .NEWT_VERSION }}"
29+
else
30+
echo "main.go not found"
31+
fi
32+
make local
33+
- network: none
34+
install:
35+
- |
36+
mkdir -p /rootfs/usr/local/lib/containers/newt/usr/local/bin
37+
cp -p newt/newt /rootfs/usr/local/lib/containers/newt/usr/local/bin/
38+
chmod +x /rootfs/usr/local/lib/containers/newt/usr/local/bin/newt
39+
- |
40+
mkdir -p /rootfs/usr/local/etc/containers
41+
cp /pkg/newt.yaml /rootfs/usr/local/etc/containers/
42+
test:
43+
- |
44+
mkdir -p /extensions-validator-rootfs
45+
cp -r /rootfs/ /extensions-validator-rootfs/rootfs
46+
cp /pkg/manifest.yaml /extensions-validator-rootfs/manifest.yaml
47+
/extensions-validator validate --rootfs=/extensions-validator-rootfs --pkg-name="${PKG_NAME}"
48+
- |
49+
[[ $(/rootfs/usr/local/lib/containers/newt/usr/local/bin/newt --version) == *{{ .NEWT_VERSION }}* ]]
50+
finalize:
51+
- from: /rootfs
52+
to: /rootfs
53+
- from: /pkg/manifest.yaml
54+
to: /

network/newt/vars.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
VERSION: "{{ .NEWT_VERSION }}"

0 commit comments

Comments
 (0)