# Governance App Deployment On Container

Deploying the Governance App on Red Hat OpenShift Service on AWS (ROSA) involves Helm-based configuration, environment variable injection, and proper domain and certificate setup. This document outlines the deployment process in a structured format, covering prerequisites, Helm chart changes, configuration file updates, and final verification.

### Prerequisites

Before starting the deployment, ensure the following:

* **Domain Name:** A registered domain (e.g., https\://\<domain>) to expose the Governance App.
* **ACM Certificate:** An AWS Certificate Manager (ACM) certificate for the above domain (for LoadBalancer SSL termination).
* **Access:** Sufficient permissions to modify and deploy Helm charts in the OpenShift environment.
* **gov.zip:** Contains deployment and service templates for the Governance App (provided by OvalEdge).

## Steps for Governance App Deployment on Container

### Adding Templates to Helm Chart

Navigate to the Helm chart directory where the OvalEdge application is managed.

Extract `gov.zip` provided by OvalEdge.

Copy the following into the `templates/` directory of the Helm chart:

* `gov-deployment.yaml`
* `gov-service.yaml`

#### Modify UI and Job Deployment Files

Update environment variables for the OvalEdge UI and Job pods to connect with Governance App:

**Update User Deployment File**

* Locate the container’s environment variables section.

  Open `userdeployment.yaml` from the helm chart directory. add under container `env`:

  ```yaml
  - name: GOV_APP_HOST
    value: {{ .Values.gov.HOST }}
  - name: GOV_APP_PORT
    value: {{ .Values.gov.PORT }}
  - name: GOV_APP_PROTOCOL
    value: {{ .Values.gov.PROTOCOL }}
  ```

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfMbq59rzKkNuLP-rmrFj5us36pt-XOgVBOGw9ZW9ehDNlXuekzrJN2eqA6yctpMm081nFA0oykSTnlbeajO1GAUi19E5wNZyzZlS_U79j_FQ-8c3eBSeoiBRGlS91wm79yfIzO?key=NaWUm-o3nbTa6FDVhTD0vw" alt=""><figcaption></figcaption></figure>

#### **Update Job Deployment File**

* Open `jobdeployment.yaml`
* Locate the container’s environment variables section.
* Add the same environment variables as above:

  ```yaml
  - name: GOV_APP_HOST
    value: {{ .Values.gov.HOST }}
  - name: GOV_APP_PORT
    value: {{ .Values.gov.PORT }}
  - name: GOV_APP_PROTOCOL
    value: {{ .Values.gov.PROTOCOL }}
  ```

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcVtKMNUdVmN1FmA-k8BPMfXFxJ6z1kPGCfJaVVHnGJwM0MOrqXoiBidZ399u0yy-_ZoP81XrpDHhnRC76_zHQuZYNbDuUrh682ilhCwpG-AIfcvKZbCdmRIxgXUnrXCvDXE_UxeQ?key=NaWUm-o3nbTa6FDVhTD0vw" alt=""><figcaption></figcaption></figure>

#### Update values.yaml

Add the Governance App image and service configuration:

```yaml
image:
  gov_image: <actual_image_name>

gov:
  HOST: gov-service
  PORT: 8081
  PROTOCOL: http
  replicas: 2
  resources:
    requests:
      cpu: 500m
      memory: 1Gi
    limits:
      cpu: 1
      memory: 2Gi
  service:
    type: LoadBalancer
    port: 443
  loadBalancer:
    cert: "arn-of-certificate"
```

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXc651EdVjvYJYme_NmVURj--ClivvmOIqqmcz28wZ7PnJHn24Ud2XX8FcXQudH8HBuLJdqW2V6toFZfsVELhh7-9eFFex6TrrDZnCcIgtaTKkJr1kstCRHrbi0K_pPq-qQv2sp41w?key=NaWUm-o3nbTa6FDVhTD0vw" alt=""><figcaption></figcaption></figure>

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXc2qqsYRQW5dHTskMtjF4bB2i4I4Dfg-rFowsE04rPmtIb1GvoVdyfSX3RRy34S-tHOfo-P-2gCzM1hVcjkiQrq5qUziWTlQYtNplaL8UlV4qkO6phNyLVp6qqDOjxjEKHzAXuf?key=NaWUm-o3nbTa6FDVhTD0vw" alt=""><figcaption></figcaption></figure>

👉 **Best Practices Added**:

* `replicas`: ensures HA by running ≥2 pods.
* `resources`: enforces requests/limits for stability.

#### Apply Helm Upgrade

```bash
helm upgrade --install ovedge ./helm-chart -f values.yaml
```

### Post-Deployment Validation

#### Health Check

* Open: `https://<domain>/actuator/health`\
  \
  \
  \
  \
  \
  \
  \
  \
  \
  \
  \
  \
  \
  \
  &#x20;\
  ![](https://1813356899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhTnkoJQml0pok9awFDhx%2Fuploads%2FVWHUi5dFzOs6ZGMlGG5C%2Fimage.png?alt=media\&token=3337d566-04ec-49bd-a230-4b0e8680d2ea)
* Confirm status = `"UP"`.

#### TLS & Domain Validation

* Verify DNS resolves to LoadBalancer.
* Confirm ACM certificate is correctly attached.

#### Application Integration

* To register the Governance App domain in the OvalEdge application:
  * Log in to the **OvalEdge application**.
  * Navigate to: `Administration → System Settings → Others`.
  * Locate the **key** for Gov App.
  * Update the value with the **Governance App’s** domain name.<br>

    <figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeCepXWp8pGxXIR3EtGPtd_lf0Q_5xFSu0pad7_9FLk9ZRXvQK1ISJSMz_SBiZESraRhekaEC0X8APqqmf2nA2lUD9caWgyRqy0tajfsluQog7kEVfoBQ-eWUj_oHMm51S8wU0Ahg?key=NaWUm-o3nbTa6FDVhTD0vw" alt=""><figcaption></figcaption></figure>

#### Observability

* If issues occur after deployment:
  * Re-check the `gov-deployment.yaml` and  `gov-service.yaml` configurations.
  * Verify if the **domain** resolves correctly and the **ACM certificate** is properly attached to the LoadBalancer.
  * Inspect Helm logs or use kubectl describe and kubectl logs for pod-level diagnostics.

## Conclusion

By following the steps outlined in this guide, the Governance App can be successfully deployed on Red Hat OpenShift Service on AWS (ROSA) using Helm charts. This deployment ensures seamless integration with the OvalEdge application through proper environment configuration, service exposure, and domain setup.

***

Copyright © 2025, OvalEdge LLC, Peachtree Corners, GA, USA.

***
