Commit 746ed54b authored by Christos Tranoris's avatar Christos Tranoris
Browse files

update #9

parent 25a6c261
Loading
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -217,7 +217,7 @@ OSOM sends to CRIDGE a message with the following information:
## What's next?

 -  See examples of exposing operators via OpenSlice:
 	- [Exposing Kubernetes Operators as a Service : Offering "Calculator as a Service" through OpenSlice](ExposingCRDs_aaS_Example_Calculator.md)
 	- [Exposing Kubernetes Operators as a Service : Offering "Calculator as a Service" through OpenSlice](../../service_design/examples/ExposingCRDs_aaS_Example_Calculator/ExposingCRDs_aaS_Example_Calculator.md)

 	
 	
+30 −22
Original line number Diff line number Diff line
@@ -113,11 +113,13 @@ As soon as the CRD is deployed in the cluster (e.g. by your admin via kubctl or
	- Having this OpenSlice can manage resources in multiple clusters


<img src="img07.png" >
![img07.png](./img07.png)


> See also the detailed characteristics. See how OpenSlice makes all characteristics automatically flat and expanded with key-value style

<img src="img08.png" width=1024px>
![img08.png](./img08.png)


---
# Expose to Users
@@ -127,10 +129,9 @@ As soon as the CRD is deployed in the cluster (e.g. by your admin via kubctl or
From the UI menu create a new Service Specification


![img09.png](./img09.png)

<img src="img09.png" width=1024px>
<img src="img10.png" width=1024px>

![img10.png](./img10.png)



@@ -158,7 +159,8 @@ spec:

```
	
<img src="img11.png" width=1024px>
![img11.png](./img11.png)



> However the values are fixed. How do we allow a user to pass parameters through OpenSlice
@@ -174,10 +176,7 @@ Create a new CustomerFacingServiceSpecification
	- Add the following characteristics as the image shows:


<img src="cfs_img12.png" width=1024px>



![cfs_img12.png](./cfs_img12.png)


### Allow users to pass new values through OpenSlice
@@ -191,10 +190,14 @@ We need to Create LCM rules in CustomerFacingServiceSpecification:
	- we will create one rule that will pass the parameters while the service is active (SUPERVISION phase)
	- The rules will be the same

<img src="img12.png" width=1024px>
![img12.png](./img12.png)



If we see one rule it will look like the following:
<img src="img13.png" width=1024px>


![img13.png](./img13.png)

- We need to change the _CR_SPEC characteristic of the referenced ResourceFacingServiceSpecification
- First bring a block from Service>Relationships>Service Refs and drop the "Service MyCalculatorRFS" block
@@ -220,22 +223,25 @@ If we see the SUPERVISION rule it will look like the following:
- Add as name the "status.result" 


<img src="img13_1.png" width=1024px>
![img13_1.png](./img13_1.png)


![img14.png](./img14.png)


<img src="img14.png" width=1024px>

Expose it then to a catalogue for orders through the Service Categories and Service Catalogs


<img src="img15.png">
![img15.png](./img15.png)



### Order the Service

When a user orders the service, it will look like this:

<img src="img16.png" width=1024px>
![img16.png](./img16.png)



@@ -244,20 +250,22 @@ When a user orders the service, it will look like this:
- The Actual resources are running in the Kubernetes cluster managed by OpenSlice
- The result is in the characteristic status.result of the running service

<img src="img17.png" width=800px>

<img src="img18.png" width=1024px>
![img17.png](./img17.png)

![img18.png](./img18.png)


### Modify the running service
 
 The user can modify the service
 
<img src="img19.png" width=1024px>
 ![img19.png](./img19.png)


 
- After a while the update is applied to the cluster, the controller will pick up the resource update and patch the resource
- OpenSlice (via CRIDGE service) updates the Resource in Resource Inventory and OSOM updates the Services in Service Inventory
- The result will be available to the respective characteristic "Result" after a few seconds, as need to go through various steps (OpenSlice orchestrator, down to kubernetes, to Calculator controller and back)


<img src="img20.png" width=1024px>
    	
 No newline at end of file
 ![img20.png](./img20.png)
 No newline at end of file
+3 −3
Original line number Diff line number Diff line
@@ -34,7 +34,8 @@ OpenSlice is capable of exposing Kubernetes Resources and Definitions as Service
 
The following image illustrates the approach.

<img src="img01.png" width=1024px>

![img01.png](./img01.png)

1. A CRD in a cluster will be mapped in TMF model as a Resource specification and therefore can be exposed as a service specification in a catalog
2. Service Orders can be created for this service specification. 
@@ -116,8 +117,7 @@ The following specific characteristics are **added**:
	
	2.3. You Expose configurable values for users to configure during service order

<img src="img06.png" width=1024px>
		
![img06.png](./img06.png)

# Service Orchestration and CRDs/CRs

+67 −0
Original line number Diff line number Diff line
# Expose HELM charts as Service Specifications
Manage Helm charts installations via OpenSlice Service Specifications and Service Orders.
## Intended Audience: Service Designers


> 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. 

> 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

> 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:

>       - Reduces the complexity of deploying Microservices
>       - Enhances deployment speed
>       - Developers already know the technology

> 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)

> Use the TMF models as wrapper entities around Helm charts


Use OpenSlice to expose them in service catalogs and deploy them in complex scenarios (service bundles) involving also other systems:

	- Include e.g. RAN controllers, 
	- Pass values through life cycle rules from one service to another, 
	- Manage multiple Helms in multiple clusters


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

Please read more [here](../ExposingKubernetesResources.md)


For installing HELM charts we will use ArgoCD a well known Kubernetes-native continuous deployment (CD) tool 

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

> While just deploying Heml charts is just a scenario for ArgoCD , in future one can exploit it for many things

> 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: 

![img01.png](./img01.png)
 


## What's next


See the [Example: Offer Jenkins as a Service via Openslice](helm/HELM_Installation_aaS_Jenkins_Example.md) 
+24 −70
Original line number Diff line number Diff line
# Expose HELM charts as Service Specifications
Manage Helm charts installations via OpenSlice Service Specifications and Service Orders.
## Intended Audience: Service Designers


> 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. 

> 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

> 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:

>       - Reduces the complexity of deploying Microservices
>       - Enhances deployment speed
>       - Developers already know the technology

> 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)

> Use the TMF models as wrapper entities around Helm charts


Use OpenSlice to expose them in service catalogs and deploy them in complex scenarios (service bundles) involving also other systems:

	- Include e.g. RAN controllers, 
	- Pass values through life cycle rules from one service to another, 
	- Manage multiple Helms in multiple clusters


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

Please read more [here](../ExposingKubernetesResources.md)


For installing HELM charts we will use ArgoCD a well known Kubernetes-native continuous deployment (CD) tool 

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

> While just deploying Heml charts is just a scenario for ArgoCD , in future one can exploit it for many things

> 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: 

<img src="img01.png" width=1024px>
 
# Example: Offer Jenkins as a Service via Openslice

Before reading this example please make sure that you went through the [Design Helm as a Service](../design_helmaas.md) 

We will use the ```Kind: Application``` of ArgoCD and create a  ResourceFacingServiceSpecification for Jenkins

	1. Go to Service Specifications
@@ -69,15 +10,16 @@ We will use the ```Kind: Application``` of ArgoCD and create a ResourceFacingSe
	4. Go to Resource Specification Relationships
	5. Assign ```Application@argoproj.io/v1alpha1@kubernetes@https://10.10.10.144:6443/```

<img src="img02.png" width=640px>

![img02.png](./img02.png)

Focus now on the characteristics configuration.

First we need to map the lifecycle of ArgoCD Application to TMF Resource State


<img src="img05.png" width=640px>
![img05.png](./img05.png)


In ArgoCD the field **health.status** has the value that we need to check (Healty, Progressing, etc)
 
@@ -138,7 +80,9 @@ On each installation OSOM will change the name of the resource in order to be un
**To avoid this we will create a simple pre-provision rule to change the namespace properly**

See the following image: 
<img src="img06.png" >

![img06.png](./img06.png)

 
1. Drag-Drop the _CR_SPEC characteristic of jenkinsrfs from the Service>Text blocks
2. Drag-Drop Text>Formatted text block
@@ -156,12 +100,17 @@ Expose then as CustomerFacingServiceSpecification by using the previous RFSS as
2. Go to Service Specification Relationships and assign Jenkinsrfs
3. Add also a Logo if you wish

<img src="img03.png" width=640px>
<img src="img04.png" width=640px>
![img03.png](./img03.png)

![img04.png](./img04.png)

 
Expose it now to a Category and a Catalog to be available for ordering.
  
<img src="img061.png" >
![img061.png](./img061.png)




# Order the service

@@ -171,7 +120,9 @@ Order the service from the catalog.
Soon the order will be completed and the Services will be active


<img src="img07.png" width=640px>


![img07.png](./img07.png)

# How to access the Jenkins installation:

@@ -179,13 +130,16 @@ From the Supporting services of the Service Order, select the ResourceFacingServ

The ResourceFacingService has also supporting resources in resource inventory.

<img src="img08.png" width=640px>


![img08.png](./img08.png)

One is the resource reference to the application (e.g. _cr_tmpname_...), the other is a secret (e.g. cr87893...). 

Click to go to the secret resource (This is in the Resource inventory of OpenSlice)

<img src="img09.png" width=640px>

![img09.png](./img09.png)

Use them to login in your Jenkins.

Loading