Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions content/learn/keyconcepts.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,15 @@ sample/
deployments.
<3> The `values.yaml` file contains default values for the chart.

Helm charts for cluster management, deployment utilities, and security and certificate management are stored in separate repositories under the link:https://github.com/validatedpatterns[Validated Patterns GitHub organization]. The specific Helm chart repositories include:

* link:https://github.com/validatedpatterns/clustergroup-chart[clustergroup-chart]
* link:https://github.com/validatedpatterns/pattern-install-chart[pattern-install-chart]
* link:https://github.com/validatedpatterns/hashicorp-vault-chart[hashicorp-vault-chart]
* link:https://github.com/validatedpatterns/golang-external-secrets-chart[golang-external-secrets-chart]
* link:https://github.com/validatedpatterns/acm-chart[acm-chart]
* link:https://github.com/validatedpatterns/letsencrypt-chart[letsencrypt-chart]

[id="about-helm-argocd"]
== ArgoCD and Helm Integration

Expand Down
178 changes: 72 additions & 106 deletions content/learn/vp_openshift_framework.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ include::modules/comm-attributes.adoc[]

== OpenShift framework fundamentals

The OpenShift validated patterns framework uses https://docs.openshift.com/container-platform/latest/cicd/gitops/understanding-openshift-gitops.html[OpenShift GitOps] (ArgoCD) as the primary driver for deploying patterns and keeping them up to date. Validated patterns use Helm charts as the primary artifacts for GitOps. https://helm.sh/[Helm charts] provide a mechanism for templating that is powerful when building repeatable, automated deployments across different deployment environments (i.e. clouds, data-centers, edge, etc.)
The OpenShift validated patterns framework uses https://docs.openshift.com/container-platform/latest/cicd/gitops/understanding-openshift-gitops.html[OpenShift GitOps] (ArgoCD) as the primary driver for deploying patterns and keeping them up to date. Validated patterns use Helm charts as the primary artifacts for GitOps. https://helm.sh/[Helm charts] offer a powerful templating mechanism for creating repeatable, automated deployments across various environments, including clouds, data centers, and edge locations.

The framework provides consistency across any cloud provider - public or private. So while you could automate the handling for each of the cloud providers, the framework utilizes one Kubernetes distribution that runs on public or private clouds - the hybrid and/or multi cloud model.

Expand All @@ -37,43 +37,38 @@ The Multicloud GitOps approach enables centralized management of multiple cloud
~/g/multicloud-gitops on main ◦ tree -L 2
.
├── ansible
│   └── site.yaml
├── ansible.cfg
├── charts
── all
└── region
   ├── all
   └── region
├── common
│ ├── acm
| ├── ansible
| ├── Changes.md
│ ├── clustergroup
│ ├── common -> .
│ ├── examples
│ ├── golang-external-secrets
│ ├── hashicorp-vault
│ ├── letsencrypt
| ├── LICENSE
| ├── Makefile
| ├── operator-install
| ├── README.md
│ ├── reference-output.yaml
│ ├── scripts
│ ├── tests
│ └── values-global.yaml
│   ├── ansible
│   ├── Changes.md
│   ├── LICENSE
│   ├── Makefile
│   ├── README.md
│   ├── requirements.yml
│   └── scripts
├── LICENSE
├── Makefile
├── overrides
│ ├── values-AWS.yaml
│ └── values-IBMCloud.yaml
│   ├── values-AWS.yaml
│   └── values-IBMCloud.yaml
├── pattern-metadata.yaml
├── pattern.sh -> ./common/scripts/pattern-util.sh
├── README.md
├── tests
│   └── interop
├── values-global.yaml
├── values-global-one.yaml
├── values-group-one.yaml
├── values-hub.yaml
├── values-secret-multicloud-gitops.yaml
└── values-secret.yaml.template
├── values-secret.yaml.template
└── values-standalone.yaml


20 directories, 77 files
11 directories, 20 files
----

First we notice some subdirectories: charts and common, along with `values-` yaml files.
Expand All @@ -85,87 +80,54 @@ First we notice some subdirectories: charts and common, along with `values-` yam
~/g/industrial-edge on stable-2.0 ◦ tree -L 2
.
├── ansible
│   ├── files
│   ├── playbooks
│   └── site.yaml
├── ansible.cfg
├── Changes.md
├── charts
│ ├── datacenter
│ └─ factory
| └── secrets
│   ├── datacenter
│   └── factory
├── common
│ ├── acm
| ├── ansible
| ├── Changes.md
│ ├── clustergroup
│ ├── common -> .
│ ├── examples
│ ├── golang-external-secrets
│ ├── hashicorp-vault
│ ├── letsencrypt
| ├── LICENSE
| ├── Makefile
| ├── operator-install
│ ├── scripts
│ ├── tests
│ └── values-global.yaml
│   ├── Changes.md
│   ├── LICENSE
│   ├── Makefile
│   ├── README.md
│   ├── requirements.yml
│   └── scripts
├── docs
│ ├── images
│ └── old-deployment-map.txt
├── images
│ ├── import-cluster.png
│ ├── import-with-kubeconfig.png
│ └── launch-acm-console.png
│   ├── images
│   └── old-deployment-map.txt
├── LICENSE
├── Makefile
├── overrides
| ├── values-prod-imagedata.yaml
│ └── values-test-imagedata.yaml
│   ├── values-prod-imagedata.yaml
│   └── values-test-imagedata.yaml
├── pattern-metadata.yaml
├── pattern.sh -> ./common/scripts/pattern-util.sh
├── README.md
|── pattern.sh -> ./common/scripts/pattern-util.sh
├── scripts
│ ├── secret.sh
│ └── sleep-seed.sh
│   └── check-pipeline-resources.sh
├── SUPPORT_AGREEMENT.md
├── tests
│   └── interop
├── values-AWS.yaml
├── values-Azure.yaml
├── values-datacenter.yaml
├── values-factory.yaml
├── values-GCP.yaml
├── values-global.yaml
├── values-hub.yaml -> values-datacenter.yaml
└── values-secret.yaml.template

25 directories, 98 files
15 directories, 26 files
----

We see the same or similar files in the both patterns directories.

== The `common` directory

The core components that make the Validated Patterns framework are contained in the common repository. These include:

* OpenShift GitOps configuration
* Supports our clusterGroup and GitOps policies
* Validated Pattern framework build scripts and Makefiles
* Secrets Management with HashiCorp Vault
* Operator CRDs and other assets
* Various utility scripts

The common repository contains all the shared manifests for the Validated Patterns Framework. These components are configured to work together within the GitOps framework. Instead of duplicating configurations across patterns, shared technologies are centralized in this common directory. Pattern-specific post-deployment configurations, if needed, should be added to the Helm charts in the charts directory. Typically, you won't need to modify the common directory unless working on the framework itself.

=== Breakdown of common repository

This table details the key components of the common repository:

[cols="2,2", options="header"]
|===
| Component | Description

| acm | Contains the helm charts which contains policies and is used to configure the deployment of the Advance Cluster Manager.
| ansible | This directory contains the ansible roles and modules that support the secrets management for a pattern.
| clustergroup | Contains the helm chart used to create namespace, subscriptions, projects, and applications described in the values files. This is the seed for all patterns.
| golang-external-secrets | Helm chart for External Secrets Operator that integrates external secret management systems like AWS Secrets Manager, HashiCorp Vault, Google Secrets Manager, Azure Key Vault, IBM Cloud Secrets Manager, Akeyless.
| hashicorp-vault | Contains the helm chart for HashiCorp Vault.
|operator-install | Contains the helm chart used by the Validated Patterns Operator to create the openshift-gitops component and create the initial ArgoCD applications for the Validated Pattern.
| scripts | Directory which contains utility scripts used by the Validated Pattern Framework.
|===
Common is a collection of scripts to start the initial deployment of a pattern using the command line interface. The Makefile contains targets for deploying the pattern. The `Makefile` is the primary entry point for deploying a pattern. To maintain modularity, version control, and independent management, cluster management, deployment utilities, and security and certificate helm charts are stored in separate repositories under the link:https://github.com/validatedpatterns[Validated Patterns GitHub organization]. Ansible automation or utilities are in the link:https://github.com/validatedpatterns/rhvp.cluster_utils[rhvp.cluster_utils].

== The `charts` directory

Expand All @@ -184,43 +146,46 @@ _Application charts_ are a collection of templates that can be packaged into ver
_Library charts_ provide useful utilities or functions for the chart developer. They're included as a dependency of application charts to inject those utilities and functions into the rendering
pipeline. Library charts do not define any templates and therefore cannot be deployed.

These groupings are used by OpenShift GitOps to deploy into the cluster. The configurations for each of the components inside an application are synced every three minutes by OpenShift GitOps to make sure that the site is up to date. The configuration can also be synced manually if you do not wish to wait up to three minutes.
These groupings are used by OpenShift GitOps to deploy into the cluster. The configurations for each of the components inside an application are synced every three minutes by OpenShift GitOps to make sure that the site is up to date. The configuration can also be synced manually if you do not want to wait up to three minutes. For example for industrial-edge the charts directory looks like this:

[source,text]
----
.
├── datacenter
│ ├── external-secrets
│ ├── manuela-data-lake
│ ├── manuela-tst
│ ├── opendatahub
│ └── pipelines
├── factory
│ └── manuela-stormshift
└── secrets
└── pipeline-setup
│   ├── data-science-cluster
│   ├── data-science-project
│   ├── manuela-data-lake
│   ├── manuela-tst
│   └── pipelines
└── factory
└── manuela-stormshift
----
The configuration YAML for each component of the application is stored in the templates subdirectory.

[source,text]
----
.
├── external-secrets
│ ├── Chart.yaml
│ ├── templates
│ └── values.yaml
├── data-science-cluster
│   ├── Chart.yaml
│   ├── kustomization.yaml
│   ├── templates
│   └── values.yaml
├── data-science-project
│   ├── Chart.yaml
│   ├── kustomization.yaml
│   ├── templates
│   └── values.yaml
├── manuela-data-lake
│ ├── Chart.yaml
│ ├── templates
│ └── values.yaml
│   ├── Chart.yaml
│   ├── Kafka2S3Route.java
│   ├── templates
│   └── values.yaml
├── manuela-tst
│ ├── Chart.yaml
│ ├── templates
│ └── values.yaml
├── opendatahub
│ ├── Chart.yaml
│ ├── templates
│ └── values.yaml
│   ├── Chart.yaml
│   ├── Kafka2S3Route.java
│   ├── MQTT2KafkaRoute.java
│   ├── templates
│   └── values.yaml
└── pipelines
├── Chart.yaml
├── extra
Expand All @@ -229,6 +194,7 @@ The configuration YAML for each component of the application is stored in the te
├── templates
└── values.yaml
----

== The `scripts` directory

In some cases, an Operator or Helm chart may require additional configuration. When extra code is needed for deployment, it should be placed in the scripts directory. Typically, consumers of a validated pattern won't interact directly with these scripts, as they are executed by the existing automation (for example through the Makefile or OpenShift GitOps). If extra adjustments are required for your application, place the scripts here and run them through automation. The scripts directory should generally be treated as off-limits unless you're modifying the framework itself.
Expand Down