Commit a5f49e98 authored by Kostis Trantzas's avatar Kostis Trantzas
Browse files

minor documentation clarifications in kubernetes setup and helm chart deployment example

parent 1e74919e
Loading
Loading
Loading
Loading
Loading
+49 −47
Original line number Original line Diff line number Diff line
@@ -49,7 +49,7 @@
            +      kubernetes.io/ingress.global-static-ip-name: web-static-ip 
            +      kubernetes.io/ingress.global-static-ip-name: web-static-ip 
            ```
            ```


    * **Other Ingress Controller:**  For other ingress controllers, modify `[repo-root]/kubernetes/helm/openslice/templates/openslice-ingress.yaml` to meet your controller’s requirements.
    * **Other Ingress Controller:**  For other ingress controllers, modify `ingressClassName` in the `[repo-root]/kubernetes/helm/openslice/values.yaml`. In the rare occasion that the controller requires more configuration (e.g., see GKE above), you should modify the `[repo-root]/kubernetes/helm/openslice/templates/openslice-ingress.yaml` accordingly.


### Exposure
### Exposure


@@ -239,9 +239,9 @@ Similarly, to configure CRIDGE, there are three different ways to provide this k


> **Note:** Regardless of the method you choose, if you're using a non-standard kubeconfig file name, make sure to adjust the references or rename the file as needed.
> **Note:** Regardless of the method you choose, if you're using a non-standard kubeconfig file name, make sure to adjust the references or rename the file as needed.


> **Important Note:** If you are deploying CRIDGE in the same cluster and namespace as OpenSlice, no additional configuration is required for the message bus broker URL and OpenSlice communicates with CRIDGE directly. However, if CRIDGE is installed in a **separate Kubernetes cluster** from the one hosting OpenSlice, it is important to configure the `values.yaml` file for the CRIDGE Helm chart to point to the correct message bus broker URL. Please see [Nginx Ingress Controller (Kubernetes Community Edition) configuration](#software-requirements) on how to properly expose the message bus in such scenario.
> **Important Note:** If you are deploying **CRIDGE in the same cluster** and namespace as OpenSlice, no additional configuration is required for the message bus broker URL and OpenSlice communicates with CRIDGE directly (assuming the 61616 port remains unchanged). However, if CRIDGE is installed in a **separate Kubernetes cluster** from the one hosting OpenSlice, it is important to configure the `values.yaml` file for the CRIDGE Helm chart to point to the correct message bus broker URL. Please see [Nginx Ingress Controller (Kubernetes Community Edition) configuration](#software-requirements) on how to properly expose the message bus in such scenario.


In the `values.yaml` of the CRIDGE Helm chart, you must set `oscreds.activemq.brokerUrl` to point to the IP address of the ingress controller in the OpenSlice cluster, as shown below:
In the scenario of a publicly exposed message bus (separate Kubernetes cluster), in the `values.yaml` of the CRIDGE Helm chart, you must set `oscreds.activemq.brokerUrl` to point to the IP address of the ingress controller in the OpenSlice cluster, as shown below:


```yaml
```yaml
oscreds:
oscreds:
@@ -291,11 +291,13 @@ spring:
To configure the ingress controller and root URL for OpenSlice, update the rooturl field with your ingress load balancer IP or domain. This setting is crucial for external access to your application:
To configure the ingress controller and root URL for OpenSlice, update the rooturl field with your ingress load balancer IP or domain. This setting is crucial for external access to your application:


```yaml
```yaml
rooturl: "http://openslice.com" # Example domain
rooturl: "https://openslice.com" # Example domain
# or
# or
rooturl: "http://3.15.198.35:8080" # Example IP with port
rooturl: "http://3.15.198.35:8080" # Example IP with port
```
```


Additionally, in the event of the non-default (nginx) ingress controller, you should change the `ingress.ingressClassName' property.

### Persistent Volume for MySQL
### Persistent Volume for MySQL


For persistent storage, especially for MySQL, define the storage size under the `mysql` section. This ensures that your database retains data across pod restarts and deployments.
For persistent storage, especially for MySQL, define the storage size under the `mysql` section. This ensures that your database retains data across pod restarts and deployments.
@@ -415,7 +417,7 @@ After configuring the services, and editing the `values.yaml` file accordingly,


```bash
```bash
cd kubernetes/helm/openslice/
cd kubernetes/helm/openslice/
helm install myopenslice . --namespace openslice --create-namespace
helm install openslice . --namespace openslice --create-namespace
```
```


## Validating deployments and container monitoring
## Validating deployments and container monitoring
@@ -431,58 +433,58 @@ To check the status of your deployment, use the following commands. The output s
kubectl get pods -n openslice
kubectl get pods -n openslice


NAME                      READY   UP-TO-DATE   AVAILABLE   AGE
NAME                      READY   UP-TO-DATE   AVAILABLE   AGE
myopenslice-artemis       1/1     1            1           6m28s
openslice-artemis       1/1     1            1           6m28s
myopenslice-blockdiag     1/1     1            1           6m28s
openslice-blockdiag     1/1     1            1           6m28s
myopenslice-bugzilla      1/1     1            1           6m28s
openslice-bugzilla      1/1     1            1           6m28s
myopenslice-centrallog    1/1     1            1           6m28s
openslice-centrallog    1/1     1            1           6m28s
myopenslice-cridge        1/1     1            1           6m28s
openslice-cridge        1/1     1            1           6m28s
myopenslice-keycloak      1/1     1            1           6m28s
openslice-keycloak      1/1     1            1           6m28s
myopenslice-kroki         1/1     1            1           6m28s
openslice-kroki         1/1     1            1           6m28s
myopenslice-manoclient    1/1     1            1           6m28s
openslice-manoclient    1/1     1            1           6m28s
myopenslice-oasapi        1/1     1            1           6m28s
openslice-oasapi        1/1     1            1           6m28s
myopenslice-osom          1/1     1            1           6m28s
openslice-osom          1/1     1            1           6m28s
myopenslice-osportalapi   1/1     1            1           6m28s
openslice-osportalapi   1/1     1            1           6m28s
myopenslice-osscapi       1/1     1            1           6m28s
openslice-osscapi       1/1     1            1           6m28s
myopenslice-portalweb     1/1     1            1           6m28s
openslice-portalweb     1/1     1            1           6m28s
myopenslice-tmfweb        1/1     1            1           6m28s
openslice-tmfweb        1/1     1            1           6m28s
```
```
```bash
```bash
kubectl get deployments -n openslice
kubectl get deployments -n openslice


NAME                      READY   UP-TO-DATE   AVAILABLE   AGE
NAME                      READY   UP-TO-DATE   AVAILABLE   AGE
myopenslice-artemis       1/1     1            1           7m17s
openslice-artemis       1/1     1            1           7m17s
myopenslice-blockdiag     1/1     1            1           7m17s
openslice-blockdiag     1/1     1            1           7m17s
myopenslice-bugzilla      1/1     1            1           7m17s
openslice-bugzilla      1/1     1            1           7m17s
myopenslice-centrallog    1/1     1            1           7m17s
openslice-centrallog    1/1     1            1           7m17s
myopenslice-cridge        1/1     1            1           7m17s
openslice-cridge        1/1     1            1           7m17s
myopenslice-keycloak      1/1     1            1           7m17s
openslice-keycloak      1/1     1            1           7m17s
myopenslice-kroki         1/1     1            1           7m17s
openslice-kroki         1/1     1            1           7m17s
myopenslice-manoclient    1/1     1            1           7m17s
openslice-manoclient    1/1     1            1           7m17s
myopenslice-oasapi        1/1     1            1           7m17s
openslice-oasapi        1/1     1            1           7m17s
myopenslice-osom          1/1     1            1           7m17s
openslice-osom          1/1     1            1           7m17s
myopenslice-osportalapi   1/1     1            1           7m17s
openslice-osportalapi   1/1     1            1           7m17s
myopenslice-osscapi       1/1     1            1           7m17s
openslice-osscapi       1/1     1            1           7m17s
myopenslice-portalweb     1/1     1            1           7m17s
openslice-portalweb     1/1     1            1           7m17s
myopenslice-tmfweb        1/1     1            1           7m17s
openslice-tmfweb        1/1     1            1           7m17s
```
```
```bash
```bash
kubectl get services -n openslice
kubectl get services -n openslice


NAME                      TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                        AGE
NAME                      TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                        AGE
myopenslice-artemis       ClusterIP   10.101.128.223   <none>        8161/TCP,61616/TCP,61613/TCP   7m43s
openslice-artemis       ClusterIP   10.101.128.223   <none>        8161/TCP,61616/TCP,61613/TCP   7m43s
myopenslice-blockdiag     ClusterIP   10.109.196.90    <none>        8001/TCP                       7m43s
openslice-blockdiag     ClusterIP   10.109.196.90    <none>        8001/TCP                       7m43s
myopenslice-bugzilla      ClusterIP   10.107.10.101    <none>        13010/TCP                      7m43s
openslice-bugzilla      ClusterIP   10.107.10.101    <none>        13010/TCP                      7m43s
myopenslice-centrallog    ClusterIP   10.109.84.33     <none>        13013/TCP                      7m43s
openslice-centrallog    ClusterIP   10.109.84.33     <none>        13013/TCP                      7m43s
myopenslice-keycloak      ClusterIP   10.104.172.73    <none>        8080/TCP,8443/TCP              7m43s
openslice-keycloak      ClusterIP   10.104.172.73    <none>        8080/TCP,8443/TCP              7m43s
myopenslice-kroki         ClusterIP   10.106.92.111    <none>        8000/TCP                       7m43s
openslice-kroki         ClusterIP   10.106.92.111    <none>        8000/TCP                       7m43s
myopenslice-manoclient    ClusterIP   10.100.143.154   <none>        13011/TCP                      7m43s
openslice-manoclient    ClusterIP   10.100.143.154   <none>        13011/TCP                      7m43s
myopenslice-mysql         ClusterIP   10.108.206.75    <none>        3306/TCP                       7m43s
openslice-mysql         ClusterIP   10.108.206.75    <none>        3306/TCP                       7m43s
myopenslice-oasapi        ClusterIP   10.100.107.66    <none>        13101/TCP                      7m43s
openslice-oasapi        ClusterIP   10.100.107.66    <none>        13101/TCP                      7m43s
myopenslice-osom          ClusterIP   10.97.88.133     <none>        13100/TCP                      7m43s
openslice-osom          ClusterIP   10.97.88.133     <none>        13100/TCP                      7m43s
myopenslice-osportalapi   ClusterIP   10.111.212.76    <none>        13000/TCP                      7m43s
openslice-osportalapi   ClusterIP   10.111.212.76    <none>        13000/TCP                      7m43s
myopenslice-osscapi       ClusterIP   10.101.84.220    <none>        13082/TCP                      7m43s
openslice-osscapi       ClusterIP   10.101.84.220    <none>        13082/TCP                      7m43s
myopenslice-portalweb     ClusterIP   10.101.16.112    <none>        80/TCP                         7m43s
openslice-portalweb     ClusterIP   10.101.16.112    <none>        80/TCP                         7m43s
myopenslice-tmfweb        ClusterIP   10.101.157.185   <none>        80/TCP                         7m43s
openslice-tmfweb        ClusterIP   10.101.157.185   <none>        80/TCP                         7m43s
```
```


### Accessing Logs for Troubleshooting
### Accessing Logs for Troubleshooting
+12 −8
Original line number Original line Diff line number Diff line
@@ -27,10 +27,14 @@ In ArgoCD, the field **status.health.status** has the value that we need to chec


Also, the different ArgoCD lifycycle states must be captured by the respective **_CR_CHECKVAL_xxx** characteristics, as show in the figure below:
Also, the different ArgoCD lifycycle states must be captured by the respective **_CR_CHECKVAL_xxx** characteristics, as show in the figure below:


> To populate the characteristics, we click the edit characteristic button and input the appropriate value into the service characteristic value field.

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


 
 
After the state mapping, we must provide the template that ArgoCD will use to deploy the Jenkins HELM Chart as an ArgoCD application. For this, we must populate the **_CR_SPEC** characteristic. The _CR_SPEC can be designed first in a YAML or json editor for better parsing. 
After the state mapping, we must provide the template that ArgoCD will use to deploy the Jenkins HELM Chart as an ArgoCD application. For this, we must populate the **_CR_SPEC** characteristic. The _CR_SPEC can be designed first in a YAML or JSON editor for better parsing. 

It is highly recommended to avoid populating the **_CR_SPEC** characteristic with the above procedure (directly pasting the value), as the following process (via simple LCM rule) is extremely more modular. 


Let's see a YAML definition:
Let's see a YAML definition:
 
 
@@ -105,13 +109,13 @@ The LCM rule can be created from the "Life Cycle Rules" tab, pressing the "Creat


Let's create it step-by-step:
Let's create it step-by-step:


1. Drag-Drop the _CR_SPEC block (Set characteristic value) of jenkinsrfs from the Service > Text blocks
1. Drag-Drop the **_CR_SPEC block (Set characteristic value)** of jenkinsrfs from the **Service > Text blocks**
2. Drag-Drop the Text > Formatted text block and attach it after the block from the previous step
2. Drag-Drop the **Text > Formatted text block** and attach it after the block from the previous step
3. Drag-Drop the Text > Multi-line text input block and attach it at the Input(String) connector of the block from the previous text 
3. Drag-Drop the **Text > Multi-line text input block** and attach it at the **Input(String) connector** of the block from the previous text 
4. Copy paste the previously provided YAML text
4. Copy paste the previously **provided YAML text**
5. Change the spec:destination:namespace property to the value %s
5. Change the **spec:destination:namespace property** to the value **%s**
6. Drag-Drop the Lists > Create list block, delete the 2 extra items (click the gear icon). Attach it at the Variables(Array) connector of the formatted text block from the previous step.
6. Drag-Drop the **Lists > Create list block**, delete the 2 extra items (click the gear icon). Attach it at the **Variables(Array) connector** of the formatted text block from the previous step.
7. Drag-Drop the Service > Context > Current Service Order block and select the ID from the drop-down menu. Attach it to the List block of the previous step.
7. Drag-Drop the **Service > Context > Current Service Order block** and **select the ID** from the drop-down menu. Attach it to the List block of the previous step.
8. Save the PRE_PROVISION Rule
8. Save the PRE_PROVISION Rule


## Expose the Jenkins (Customer-Facing) Service to the users
## Expose the Jenkins (Customer-Facing) Service to the users