2022-05-18 13:08:31 -04:00
# Constellation
2022-03-22 11:03:15 -04:00
2022-05-18 13:08:31 -04:00
This is the main repository of Constellation.
2022-03-22 11:03:15 -04:00
2022-07-29 10:37:35 -04:00
![E2ETestAzure ](https://github.com/edgelesssys/constellation/actions/workflows/e2e-test-azure.yml/badge.svg?branch=main )
![E2ETestGCP ](https://github.com/edgelesssys/constellation/actions/workflows/e2e-test-gcp.yml/badge.svg?branch=main )
[![Go Report Card ](https://goreportcard.com/badge/github.com/edgelesssys/constellation )](https://goreportcard.com/report/github.com/edgelesssys/constellation)
[![Discord Chat ](https://img.shields.io/badge/chat-on%20Discord-blue )](https://discord.gg/rH8QTH56JN)
2022-05-18 13:08:31 -04:00
Core components:
2022-03-22 11:03:15 -04:00
2022-06-13 10:23:19 -04:00
* [access_manager ](access_manager ): Contains the access-manager pod used to persist SSH users based on a K8s ConfigMap
2022-05-18 13:08:31 -04:00
* [cli ](cli ): The CLI is used to manage a Constellation cluster
2022-06-29 09:26:29 -04:00
* [bootstrapper ](bootstrapper ): The bootstrapper is a node agent whose most important task is to bootstrap a node
2022-05-18 13:08:31 -04:00
* [image ](image ): Build files for the Constellation disk image
* [kms ](kms ): Constellation's key management client and server
* [mount ](mount ): Package used by CSI plugins to create and mount encrypted block devices
* [state ](state ): Contains the disk-mapper that maps the encrypted node data disk during boot
2022-03-22 11:03:15 -04:00
2022-05-18 13:08:31 -04:00
Development components:
2022-03-22 11:03:15 -04:00
2022-08-03 05:56:10 -04:00
* [3rdparty ](3rdparty ): Contains the third party dependencies used by Constellation
2022-05-18 13:08:31 -04:00
* [conformance ](conformance ): Kubernetes conformance tests
* [debugd ](debugd ): Debug daemon and client
* [hack ](hack ): Development tools
* [proto ](proto ): Proto files generator
2022-05-24 03:57:16 -04:00
* [terraform ](terraform ): Infrastructure management using terraform (instead of `constellation create/destroy` )
* [libvirt ](terraform/libvirt ): Deploy local cluster using terraform, libvirt and QEMU
2022-05-18 13:08:31 -04:00
* [test ](test ): Integration test
2022-03-22 11:03:15 -04:00
2022-05-18 13:08:31 -04:00
Additional repositories:
2022-03-22 11:03:15 -04:00
2022-05-18 13:08:31 -04:00
* [constellation-docs ](https://github.com/edgelesssys/constellation-docs ): End-user documentation
* [constellation-fedora-coreos-config ](https://github.com/edgelesssys/constellation-fedora-coreos-config ): CoreOS build configuration with changes for Constellation
* [edg-azuredisk-csi-driver ](https://github.com/edgelesssys/edg-azuredisk-csi-driver ): Azure CSI driver with encryption on node
* [edg-gcp-compute-persistent-disk-csi-driver ](https://github.com/edgelesssys/edg-gcp-compute-persistent-disk-csi-driver ): GCP CSI driver with encryption on node
2022-03-22 11:03:15 -04:00
2022-05-18 13:08:31 -04:00
## Build
2022-03-22 11:03:15 -04:00
2022-05-18 13:08:31 -04:00
Prerequisites:
2022-03-22 11:03:15 -04:00
2022-05-23 04:35:14 -04:00
* [Go 1.18 ](https://go.dev/doc/install )
* [Docker ](https://docs.docker.com/engine/install/ )
2022-05-18 13:08:31 -04:00
* Packages on Ubuntu:
2022-05-23 04:35:14 -04:00
2022-05-18 13:08:31 -04:00
```sh
sudo apt install build-essential cmake libssl-dev pkg-config libcryptsetup12 libcryptsetup-dev
```
2022-03-22 11:03:15 -04:00
2022-05-23 04:35:14 -04:00
* Packages on Fedora:
```sh
sudo dnf install @development -tools pkg-config cmake openssl-devel cryptsetup-libs cryptsetup-devel
```
2022-05-18 13:08:31 -04:00
```sh
mkdir build
cd build
cmake ..
make -j`nproc`
2022-03-22 11:03:15 -04:00
```
2022-06-30 07:26:21 -04:00
## Testing
You can run all integration and unitttests like this:
```sh
ctest -j `nproc`
```
2022-05-18 13:08:31 -04:00
## Cloud credentials
2022-03-22 11:03:15 -04:00
2022-05-18 13:08:31 -04:00
Using the CLI requires the user to make authorized API calls to the CSP API. See the [docs ](https://constellation-docs.edgeless.systems/6c320851-bdd2-41d5-bf10-e27427398692/#/getting-started/install?id=cloud-credentials ) for configuration.
2022-03-22 11:03:15 -04:00
2022-06-29 09:26:29 -04:00
## Deploying a locally compiled bootstrapper binary
2022-03-22 11:03:15 -04:00
2022-06-29 09:26:29 -04:00
By default, `constellation create ...` will spawn cloud provider instances with a pre-baked bootstrapper binary.
For testing, you can use the constellation debug daemon (debugd) to upload your local bootstrapper binary to running instances and to obtain SSH access.
2022-05-18 13:08:31 -04:00
[Follow this introduction on how to install and setup `cdbg` ](debugd/README.md )
2022-05-09 11:07:41 -04:00
2022-05-18 13:08:31 -04:00
## Development Guides
2022-05-05 10:08:56 -04:00
2022-05-23 04:35:14 -04:00
* [Upgrading Kubernetes ](/docs/upgrade-kubernetes.md )
2022-05-24 03:57:16 -04:00
* [Manual local image testing ](/docs/local-image-testing.md )
2022-05-05 10:08:56 -04:00
2022-05-18 13:08:31 -04:00
## Deployment Guides
2022-05-09 11:07:41 -04:00
2022-05-23 04:35:14 -04:00
* [Onboarding Customers ](/docs/onboarding-customers.md )