Deploy the full OpenCloud stack in docker, kube or native
Go to file
2024-09-02 11:59:42 +02:00
docker initial draft 2024-07-10 17:05:05 +02:00
docs/diagrams/src chore: Update file path for oc-deploy.puml 2024-09-02 11:59:42 +02:00
helm chore: Moved helm Charts and kube Components 2024-09-02 11:43:11 +02:00
kube chore: Moved helm Charts and kube Components 2024-09-02 11:43:11 +02:00
LICENSE Initial commit 2023-11-02 15:51:57 +01:00
README.md chore: First Update README.md and add oc-deploy component documentation 2024-09-02 11:34:27 +02:00

Purpose of this component

The purpose of oc-deploy, is to deploy all the OC components over a Kubernetes cluster.

An OpenCloud deployment is composed of the following layers:

OpenCloud components | <-- TODO

KubernetesCluster | <-- TODO

IaaS (VMs, LAN) | <-- pre-requisite

HW (network and servers) | <-- pre-requisite

It thus contains a first optional installation layer which deploys the Kubernetes nodes (control plane(s) and workers) above an existing infrastructure (Iaas).

Then the second installation layer uses Helm charts to deploy and configure all the OC components.

This documentation will be updated with the needed command and/or requirements to properly execute the installation.

Deploy cluster

For dev in Docker

Install brew

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Install Talos

brew install siderolabs/tap/talosctl
talosctl cluster create

Install helm

curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh

Create OpenCloud Chart

oc-deploy Component

The oc-deploy component aims to simplify and automate the deployment of OpenCloud components on a Kubernetes cluster through the creation of Helm Charts.

Prerequisites:

  • Access to the OpenCloud forge and the associated Harbor registry: https://registry.o-forge.io/, which will allow pulling OpenCloud release images from the "stable" project.
  • To test the connection to this registry from the Docker client:
    docker login registry.o-forge.io
    
  • A Kubernetes cluster: Minikube, K3s, RKE2, etc. See KubernetesCluster.
  • Helm installed locally

To Be Defined:

Configuring a Docker Secret for Kubernetes

Kubernetes needs to know your credentials to pull images from the "registry.o-forge.io" registry. Create a Docker secret in Kubernetes:

kubectl create secret docker-registry regcred \
  --docker-server=registry.o-forge.io \
  --docker-username=<your_username> \
  --docker-password=<your_password> \
  --docker-email=<your_email>

Checking if Helm Recognizes Your Local Kubernetes Cluster:

1. Verify Connection to Kubernetes:

Before checking Helm, ensure that your kubectl is properly configured to connect to your local Kubernetes cluster. Run the following command to see if you can communicate with the cluster:

kubectl get nodes

If this command returns the list of nodes in your cluster, it means kubectl is properly connected.

2. Verify Helm Configuration:

Now, you can check if Helm can access the cluster by using the following command:

helm version

This command displays the Helm version and the Kubernetes version it is connected to.

Deploying with Helm:

You can deploy the oc-deploy Chart with Helm:

helm install oc-deploy path/to/your/Helm/oc-deploy

Checking Helm Releases:

You can also list the existing releases to see if Helm is properly connected to the cluster:

helm list

If all these commands execute without errors and give the expected results, your Helm installation is correctly configured to recognize and interact with your local Kubernetes cluster