|
1 | 1 | # Kapsule/Kosmos agent |
2 | 2 |
|
3 | | -A Kubernetes node installer and lifecycle management tool for Scaleway's managed Kubernetes services (Kapsule and Kosmos). |
| 3 | +Kubernetes node installer and lifecycle manager for Scaleway's managed Kubernetes services (Kapsule and Kosmos). |
4 | 4 |
|
5 | | -## Overview |
| 5 | +## Documentation |
6 | 6 |
|
7 | | -k8s-agent is a comprehensive node management solution that bootstraps Kubernetes nodes, manages component lifecycles, and provides ongoing node management through a Kubernetes controller. It's designed to work with Scaleway's infrastructure. |
8 | | - |
9 | | -## Features |
10 | | - |
11 | | -- **Component-based Architecture**: Install and manage Kubernetes components via YAML-defined metadata |
12 | | -- **Template Support**: Dynamic configuration generation with Sprig template functions |
13 | | -- **Version Management**: Track component versions with sub-versioning support |
14 | | -- **Multi-repository Support**: HTTP/HTTPS and ZIP file repositories |
15 | | - |
16 | | -## Architecture |
17 | | - |
18 | | -### Core Components |
19 | | - |
20 | | -- **Bootstrap Mode**: Installs required components and configurations on new nodes |
21 | | -- **Controller Mode**: Kubernetes controller that watches for upgrade requests |
22 | | -- **Metadata Service**: Fetches node configuration from Scaleway infrastructure |
23 | | -- **Component Manager**: Handles installation, upgrades, and lifecycle management |
24 | | -- **Version Tracker**: Maintains component version state in `/etc/scw-k8s-versions.json` |
25 | | - |
26 | | -### Component Processing |
27 | | - |
28 | | -Components are defined in YAML metadata with support for: |
29 | | -- File operations (copy, mkdir, ...) |
30 | | -- Template rendering with node metadata |
31 | | -- Systemd service management |
32 | | -- Script execution |
33 | | - |
34 | | -## Version Management |
35 | | - |
36 | | -Component versions are tracked in `/etc/scw-k8s-versions.json`. The agent supports: |
37 | | -- Semantic versioning |
38 | | -- Sub-versioning with `~` prefix |
39 | | -- Component lifecycle tracking |
40 | | - |
41 | | -## Build and Development |
42 | | - |
43 | | -### Prerequisites |
44 | | - |
45 | | -- Go 1.24+ |
46 | | - |
47 | | -### Building |
48 | | - |
49 | | -```bash |
50 | | -go build -o k8s-agent . |
51 | | -``` |
52 | | - |
53 | | -### Release |
54 | | - |
55 | | -Releases are automated using GoReleaser: |
56 | | - |
57 | | -```bash |
58 | | -goreleaser release |
59 | | -``` |
60 | | - |
61 | | -This creates statically-linked binaries for Linux AMD64 and ARM64 platforms. |
62 | | - |
63 | | -## Contributing |
64 | | - |
65 | | -This project is developed and maintained exclusively by Scaleway. We do not accept external pull requests. |
66 | | - |
67 | | -## Support |
68 | | - |
69 | | -For issues and questions related to Scaleway's managed Kubernetes services, please contact Scaleway support. |
| 7 | +For instructions on creating a Kosmos cluster and using this agent, see the [Scaleway documentation](https://www.scaleway.com/en/docs/kubernetes/how-to/edit-kosmos-cluster/). |
0 commit comments