Skip to content
design_helm_aas.md 2.85 KiB
Newer Older
Kostis Trantzas's avatar
Kostis Trantzas committed
# Expose Helm charts as Service Specifications
Christos Tranoris's avatar
Christos Tranoris committed

Kostis Trantzas's avatar
Kostis Trantzas committed
**Intended Audience: OpenSlice Service Designers**
Christos Tranoris's avatar
Christos Tranoris committed

Kostis Trantzas's avatar
Kostis Trantzas committed
This section introduces ways to manage Helm charts installations via OpenSlice Service Specifications and Service Orders.
Christos Tranoris's avatar
Christos Tranoris committed

Kostis Trantzas's avatar
Kostis Trantzas committed
## Kubernetes and Helm Introduction
Christos Tranoris's avatar
Christos Tranoris committed

Kostis Trantzas's avatar
Kostis Trantzas committed
Kubernetes is an orchestration system for automating software deployment, scaling, and management. One can interact though the Kubernetes API and it has a set of objects ready for use out of the box.
Christos Tranoris's avatar
Christos Tranoris committed

Kostis Trantzas's avatar
Kostis Trantzas committed
Helm is a tool that automates the creation, packaging, configuration, and deployment of Kubernetes applications by combining your configuration files into a single reusable package.
Christos Tranoris's avatar
Christos Tranoris committed

Kostis Trantzas's avatar
Kostis Trantzas committed
At the heart of Helm is the packaging format called charts. Each chart comprises one or more Kubernetes manifests -- and a given chart can have child charts and dependent charts, as well. Using Helm charts:
Christos Tranoris's avatar
Christos Tranoris committed

Kostis Trantzas's avatar
Kostis Trantzas committed
- Reduces the complexity of deploying Microservices
- Enhances deployment speed
- Developers already know the technology
Christos Tranoris's avatar
Christos Tranoris committed

Kostis Trantzas's avatar
Kostis Trantzas committed
Below the core advantages in using Helms with OpenSlice are presented:
Christos Tranoris's avatar
Christos Tranoris committed

Kostis Trantzas's avatar
Kostis Trantzas committed
- There are many Helm charts and Helm repositories there that are ready to be used
- Enable loose coupling and more orchestration scenarios
- Developers create and deploy applications in things they already know (e.g. Helm charts)
- Usage of the TMF models as wrapper entities around Helm charts
Christos Tranoris's avatar
Christos Tranoris committed


Kostis Trantzas's avatar
Kostis Trantzas committed
Also, OpenSlice can expose them in service catalogs and deploy them in complex scenarios (Service Bundles) involving also other systems:
Christos Tranoris's avatar
Christos Tranoris committed

Kostis Trantzas's avatar
Kostis Trantzas committed
- Include e.g. RAN controllers, 
- Pass values through life cycle rules from one service to another, 
- Manage multiple Helms in multiple clusters
Christos Tranoris's avatar
Christos Tranoris committed


## The installation of HELM charts is based on OpenSlice CRD support

Kostis Trantzas's avatar
Kostis Trantzas committed
Please read more [here](./exposing_kubernetes_resources.md).
Christos Tranoris's avatar
Christos Tranoris committed


Kostis Trantzas's avatar
Kostis Trantzas committed
For installing HELM charts we will use ArgoCD a well known Kubernetes-native continuous deployment (CD) tool. 
Christos Tranoris's avatar
Christos Tranoris committed

> ArgoCD is a Kubernetes-native continuous deployment (CD) tool

Kostis Trantzas's avatar
Kostis Trantzas committed
> While just deploying HELM charts is just a scenario for ArgoCD , in future one can exploit it for many things
Christos Tranoris's avatar
Christos Tranoris committed

> Despite some other tools like FluxCD, it provides also a UI which is useful for management and troubleshooting


We will mainly use the CRD of ```Kind: Application``` that ArgoCD can manage

Before proceeding, install ArgoCD in your management cluster, by following ArgoCD instructions

As soon as you install ArgoCD, OpenSlice is automatically aware for specific new Kinds. The one we will use is is the ```Kind: Application``` that ArgoCD can manage under the apiGroup argoproj.io

Browse to Resource Specifications. You will see an entry like the following:

```Application@argoproj.io/v1alpha1@kubernetes@https://10.10.10.144:6443/```

see image: 

Kostis Trantzas's avatar
Kostis Trantzas committed
![img01.png](../examples/jenkins_helm_install_aas/img01.png)
Christos Tranoris's avatar
Christos Tranoris committed
 
## Probe further
Christos Tranoris's avatar
Christos Tranoris committed

Kostis Trantzas's avatar
Kostis Trantzas committed
See the [Example: Offer Jenkins as a Service via OpenSlice](../examples/jenkins_helm_install_aas/jenkins_helm_install_aas.md)