diff --git a/content/patterns/rhoso-gitops/_index.adoc b/content/patterns/rhoso-gitops/_index.adoc index 9817e8e08..deec77f6a 100644 --- a/content/patterns/rhoso-gitops/_index.adoc +++ b/content/patterns/rhoso-gitops/_index.adoc @@ -27,10 +27,3 @@ include::modules/comm-attributes.adoc[] include::modules/rhoso-gitops/rhoso-gitops-about.adoc[leveloffset=+1] include::modules/rhoso-gitops/rhoso-gitops-architecture.adoc[leveloffset=+1] - -[id="next-steps_rhoso-gitops-index"] -== Next steps - -* link:getting-started[Deploy the pattern] -* link:cluster-sizing[Review cluster sizing requirements] -* link:configuration[Configure upstream pins and overrides] diff --git a/content/patterns/rhoso-gitops/cluster-sizing.adoc b/content/patterns/rhoso-gitops/cluster-sizing.adoc index fe3e9ac0b..69c428824 100644 --- a/content/patterns/rhoso-gitops/cluster-sizing.adoc +++ b/content/patterns/rhoso-gitops/cluster-sizing.adoc @@ -10,25 +10,26 @@ aliases: /rhoso-gitops/cluster-sizing/ include::modules/comm-attributes.adoc[] include::modules/rhoso-gitops/metadata-rhoso-gitops.adoc[] -include::modules/cluster-sizing-template.adoc[] +[id="rhoso-gitops-cluster-requirements"] +== Cluster requirements + +{rh-rhoso-short} requires baremetal infrastructure for both the {rh-ocp} cluster +and the compute nodes. Cloud-based instance types (AWS, GCP, Azure) are not +supported. + +For detailed hardware, software, and network requirements, see +link:https://docs.redhat.com/en/documentation/red_hat_openstack_services_on_openshift/18.0/html/planning_your_deployment/assembly_infrastructure-and-system-requirements[Infrastructure and system requirements] +in the {rh-rhoso} _Planning your deployment_ guide. [id="rhoso-gitops-dataplane-hosts"] == Data plane host requirements -The preceding hub cluster sizing tables cover the {rh-ocp} nodes that host the -{rh-rhoso-short} control plane. -A full {rh-rhoso-short} deployment also -requires separate {rhel-short} hosts for the data plane (compute nodes running -data plane elements). +The {rh-ocp} cluster hosts the {rh-rhoso-short} control plane. A full +{rh-rhoso-short} deployment also requires separate {rhel-short} hosts for the +data plane (compute nodes running data plane elements). Plan additional {rhel-short} capacity beyond the OpenShift worker sizing in `pattern-metadata.yaml`. For Operator stages, sync order, and version pins, see the pattern repository link:https://github.com/validatedpatterns-sandbox/rhoso-gitops/blob/main/VERSIONS.md[VERSIONS.md] file. - -[id="next-steps_rhoso-gitops-cluster-sizing"] -== Next steps - -* link:../getting-started/[Deploy the pattern] -* link:../configuration/[Configure upstream pins and overrides] diff --git a/content/patterns/rhoso-gitops/configuration.adoc b/content/patterns/rhoso-gitops/configuration.adoc index e24d606fd..e5a28a8de 100644 --- a/content/patterns/rhoso-gitops/configuration.adoc +++ b/content/patterns/rhoso-gitops/configuration.adoc @@ -10,9 +10,3 @@ aliases: /rhoso-gitops/configuration/ include::modules/comm-attributes.adoc[] include::modules/rhoso-gitops/rhoso-gitops-configuration.adoc[leveloffset=+1] - -[id="next-steps_rhoso-gitops-configuration"] -== Next steps - -* link:../getting-started/[Deploy the pattern] -* link:../troubleshooting/[Troubleshoot the pattern] diff --git a/content/patterns/rhoso-gitops/getting-started.adoc b/content/patterns/rhoso-gitops/getting-started.adoc index 9e27f0fa3..98ccfc17d 100644 --- a/content/patterns/rhoso-gitops/getting-started.adoc +++ b/content/patterns/rhoso-gitops/getting-started.adoc @@ -10,10 +10,3 @@ aliases: /rhoso-gitops/getting-started/ include::modules/comm-attributes.adoc[] include::modules/rhoso-gitops/rhoso-gitops-deploying.adoc[leveloffset=+1] - -[id="next-steps_rhoso-gitops-getting-started"] -== Next steps - -* link:../configuration/[Configure the pattern] -* link:../cluster-sizing/[Review cluster sizing] -* link:../troubleshooting/[Troubleshoot the pattern] diff --git a/content/patterns/rhoso-gitops/troubleshooting.adoc b/content/patterns/rhoso-gitops/troubleshooting.adoc index ef553201e..396c9bbee 100644 --- a/content/patterns/rhoso-gitops/troubleshooting.adoc +++ b/content/patterns/rhoso-gitops/troubleshooting.adoc @@ -12,8 +12,8 @@ include::modules/comm-attributes.adoc[] [id="troubleshooting-rhoso-gitops"] = Troubleshooting the {rhoso-gitops-pattern} -Use these procedures to validate the pattern, inspect Argo CD application and -pod status, and review known issues for the {rhoso-gitops-pattern}. +Validate the {rhoso-gitops-pattern} deployment, inspect Argo CD application and +pod status, and review known issues. [id="rhoso-gitops-validate-pattern"] == Validating the pattern @@ -62,9 +62,9 @@ $ oc get applications -n rhoso-gitops-standalone . Inspect a child application that is out of sync or unhealthy: + -[source,terminal] +[source,terminal,subs="+quotes"] ---- -$ oc describe application -n rhoso-gitops-standalone +$ oc describe application ____ -n rhoso-gitops-standalone ---- Use the Argo CD UI in the `rhoso-gitops-standalone` namespace to review @@ -83,9 +83,9 @@ $ oc get pods -A | grep -v Running | grep -v Completed Review logs for a specific pod: -[source,terminal] +[source,terminal,subs="+quotes"] ---- -$ oc logs -n +$ oc logs -n ____ ____ ---- [id="rhoso-gitops-known-issues"] @@ -108,9 +108,3 @@ The following known issues can affect pattern deployment: For community support, open an issue in the link:https://github.com/validatedpatterns-sandbox/rhoso-gitops/issues[pattern repository]. - -[id="next-steps_rhoso-gitops-troubleshooting"] -== Next steps - -* link:../getting-started/[Deploy the pattern] -* link:../configuration/[Configure the pattern] diff --git a/modules/rhoso-gitops/rhoso-gitops-about.adoc b/modules/rhoso-gitops/rhoso-gitops-about.adoc index d712aa187..0e4985c23 100644 --- a/modules/rhoso-gitops/rhoso-gitops-about.adoc +++ b/modules/rhoso-gitops/rhoso-gitops-about.adoc @@ -9,7 +9,9 @@ Teams that rely on imperative scripts or manual cluster changes face slow rollouts, configuration drift, and weak audit trails when you upgrade or reproduce the stack. -The {rhoso-gitops-pattern} addresses that by driving {rh-rhoso-short} from public Git through Argo CD: manifests stay declarative and version-controlled, and Argo CD reconciles the cluster to match what the repository declares. +The {rhoso-gitops-pattern} addresses that by driving {rh-rhoso-short} from public +Git through Argo CD. Manifests stay declarative and version-controlled, and +Argo CD reconciles the cluster to match what the repository declares. [id="rhoso-gitops-pattern-goals"] == Pattern goals diff --git a/modules/rhoso-gitops/rhoso-gitops-architecture.adoc b/modules/rhoso-gitops/rhoso-gitops-architecture.adoc index 827630c8f..6e977c5c7 100644 --- a/modules/rhoso-gitops/rhoso-gitops-architecture.adoc +++ b/modules/rhoso-gitops/rhoso-gitops-architecture.adoc @@ -5,9 +5,9 @@ = {rhoso-gitops-pattern} architecture The {rhoso-gitops-pattern} delivers {rh-rhoso-short} configuration through Argo CD -Applications that the *rhoso-gitops* meta-chart creates. Use this overview to -understand GitOps delivery, the dual Argo CD namespaces, infrastructure topology, -and deployment convergence before you deploy or customize the pattern. +Applications that the *rhoso-gitops* meta-chart creates. The pattern uses GitOps +delivery through dual Argo CD namespaces, manages infrastructure topology, and +converges deployment through retry policies. [id="rhoso-gitops-gitops-delivery"] == GitOps delivery flow @@ -25,14 +25,14 @@ The delivery path is: ({solution-name-upstream} GitOps) . The meta-chart renders child Applications in `rhoso-gitops-standalone` (dedicated Argo CD instance) -. The child apps sync upstream `example/*` overlays (Operators, +. The child applications sync upstream `example/*` overlays (Operators, networks, control plane, data plane) and converge through retry policies .GitOps application delivery -image::rhoso-gitops/rhoso-gitops-applications.svg[{rhoso-gitops-pattern} GitOps application delivery,700] +image::rhoso-gitops/rhoso-gitops-applications.png[{rhoso-gitops-pattern} GitOps application delivery] -The diagram shows the parent Application in `vp-gitops`, child Applications in -`rhoso-gitops-standalone`, and the upstream Kustomize overlays they sync. +The parent Application runs in `vp-gitops`. Child Applications in +`rhoso-gitops-standalone` sync upstream Kustomize overlays. All child Applications deploy at sync-wave 0 and converge eventually through retry policies. @@ -54,11 +54,11 @@ An {rh-ocp} cluster hosts the {rh-rhoso-short} control plane (OpenStack Operator and `OpenStackControlPlane` services on control-plane nodes). Separate {rhel-short} hosts run the {rh-rhoso-short} data plane (data plane elements on compute nodes). -The preceding GitOps flow describes *how* GitOps delivers configuration. The -following diagram and list describe *what* gets deployed: +The GitOps delivery flow defines *how* configuration reaches the cluster. The +infrastructure topology defines *what* gets deployed: .{rh-rhoso-short} infrastructure topology -image::rhoso-gitops/rhoso-gitops-infrastructure.svg[{rhoso-gitops-pattern} infrastructure topology,700] +image::rhoso-gitops/rhoso-gitops-infrastructure.png[{rhoso-gitops-pattern} infrastructure topology] * *OpenShift cluster*: Control-plane nodes run OpenStack Operators and `OpenStackControlPlane` services. @@ -73,31 +73,10 @@ reconciles the parent *rhoso-gitops* Application. Argo CD launches every child simultaneously. Each child retries (per `syncPolicy.retry`) until its upstream dependencies resolve and it converges eventually. -[cols="2,3",options="header"] -|=== -| Application | Purpose +For the full list of child applications, their upstream paths, and links to the +corresponding {rh-rhoso} product documentation, see +xref:rhoso-gitops-configuration[Configuration] > +xref:rhoso-gitops-upstream-applications[Upstream applications]. -| `operator-dependencies` -| Infrastructure Operators (cert-manager, MetalLB, nmstate, observability) - -| `openstack-operator` -| OpenStack Operator subscription - -| `openstack-operator-cr` -| Main `OpenStack` custom resource - -| `openstack-secrets` -| Secure-backend sync (disabled by default) - -| `openstack-networks` -| Network configuration - -| `openstack-controlplane` -| `OpenStackControlPlane` - -| `openstack-dataplane` -| Data plane -|=== - -After you change overrides, confirm child apps in the Argo CD UI or with +After you change overrides, confirm child applications in the Argo CD UI or with `oc get applications -n rhoso-gitops-standalone`. diff --git a/modules/rhoso-gitops/rhoso-gitops-configuration.adoc b/modules/rhoso-gitops/rhoso-gitops-configuration.adoc index cc6c7ceee..af6957c47 100644 --- a/modules/rhoso-gitops/rhoso-gitops-configuration.adoc +++ b/modules/rhoso-gitops/rhoso-gitops-configuration.adoc @@ -41,65 +41,69 @@ The clustergroup application in `values-standalone.yaml` points Argo CD at | Optional platform-specific overrides (placeholder) |=== -To change upstream Git content (revision, paths, enable or disable apps), edit +To change upstream Git content (revision, paths, enable or disable applications), edit `overrides/values-rhoso-gitops.yaml` and sync the pattern (or let automated sync reconcile, per `global.options.syncPolicy` in `values-global.yaml`). [id="rhoso-gitops-upstream-applications"] -== Upstream applications (default `v0.1.0`) +== Upstream applications Child Argo CD Applications sync from link:https://github.com/openstack-k8s-operators/gitops[openstack-k8s-operators/gitops] at the revision pinned in `overrides/values-rhoso-gitops.yaml`. +[IMPORTANT] +==== +The `example/` overlays shipped in the upstream repository are *reference samples +only*. They do not produce a working deployment on your infrastructure. +To deploy {rh-rhoso-short}, point each application at your own Git overlay +(see xref:rhoso-gitops-repoint-overlay[Pointing an application to your Git overlay]). +==== + .Default upstream applications -[cols="2,2,1,1",options="header"] +[cols="2,3,2,3",options="header"] |=== -| Argo CD application | Upstream path | Enabled | Sync +| Application | Purpose | Upstream path | {rh-rhoso} docs | `operator-dependencies` -| `example/dependencies` -| Yes -| Automated +| Infrastructure Operators (cert-manager, MetalLB, nmstate, observability) +| link:https://github.com/openstack-k8s-operators/gitops/tree/main/example/dependencies[`example/dependencies`] +| link:https://docs.redhat.com/en/documentation/red_hat_openstack_services_on_openshift/18.0/html/planning_your_deployment/assembly_infrastructure-and-system-requirements#ref_RHOCP-software-requirements_planning[Planning your deployment 3.1.3] | `openstack-operator` -| `example/openstack-operator` -| Yes -| Automated +| OpenStack Operator subscription +| link:https://github.com/openstack-k8s-operators/gitops/tree/main/example/openstack-operator[`example/openstack-operator`] +| link:https://docs.redhat.com/en/documentation/red_hat_openstack_services_on_openshift/18.0/html/deploying_red_hat_openstack_services_on_openshift/assembly_installing-and-preparing-the-openstack-operator[Deploying RHOSO ch. 1] | `openstack-operator-cr` -| `example/openstack-operator-cr` -| Yes -| Automated +| Main `OpenStack` custom resource +| link:https://github.com/openstack-k8s-operators/gitops/tree/main/example/openstack-operator-cr[`example/openstack-operator-cr`] +| link:https://docs.redhat.com/en/documentation/red_hat_openstack_services_on_openshift/18.0/html/deploying_red_hat_openstack_services_on_openshift/assembly_installing-and-preparing-the-openstack-operator[Deploying RHOSO ch. 1] | `openstack-secrets` +| Secure-backend sync (disabled by default) | not configured (`path: TODO`) -| No -| Automated +| link:https://docs.redhat.com/en/documentation/red_hat_openstack_services_on_openshift/18.0/html/deploying_red_hat_openstack_services_on_openshift/assembly_preparing-rhocp-for-rhoso#proc_providing-secure-access-to-the-RHOSO-services_preparing[Deploying RHOSO ch. 2.3] | `openstack-networks` -| `example/openstack-networks` -| Yes -| Automated +| Network configuration +| link:https://github.com/openstack-k8s-operators/gitops/tree/main/example/openstack-networks[`example/openstack-networks`] +| link:https://docs.redhat.com/en/documentation/red_hat_openstack_services_on_openshift/18.0/html/deploying_red_hat_openstack_services_on_openshift/assembly_preparing-rhoso-networks_preparing[Deploying RHOSO ch. 3] | `openstack-controlplane` -| `example/openstack-controlplane` -| Yes -| Automated +| `OpenStackControlPlane` +| link:https://github.com/openstack-k8s-operators/gitops/tree/main/example/openstack-controlplane[`example/openstack-controlplane`] +| link:https://docs.redhat.com/en/documentation/red_hat_openstack_services_on_openshift/18.0/html/deploying_red_hat_openstack_services_on_openshift/assembly_creating-the-control-plane[Deploying RHOSO ch. 4] | `openstack-dataplane` -| `example/openstack-dataplane` -| Yes -| Automated +| Data plane +| link:https://github.com/openstack-k8s-operators/gitops/tree/main/example/openstack-dataplane[`example/openstack-dataplane`] +| link:https://docs.redhat.com/en/documentation/red_hat_openstack_services_on_openshift/18.0/html/deploying_red_hat_openstack_services_on_openshift/assembly_creating-the-data-plane[Deploying RHOSO ch. 5] |=== -All applications include a default retry policy to handle transient failures -during deployment convergence. - -For product, framework, upstream Git, and Operator versions, see the pattern -repository -link:https://github.com/validatedpatterns-sandbox/rhoso-gitops/blob/main/VERSIONS.md[VERSIONS.md] -file. +All applications are enabled by default (except `openstack-secrets`) and use +automated sync with a retry policy to handle transient failures during +deployment convergence. [id="rhoso-gitops-pin-revision"] == Pinning a different upstream revision @@ -222,15 +226,34 @@ README. {hashicorp-vault-short}). Do not store the bootstrap credential in Git. Complete the following steps: -. Create the `openstack` namespace (or the namespace your overlay specifies). -. Create the Kubernetes `Secret` out of band (`oc create secret generic ...`). -. Add a Kustomize overlay in *your* Git repository for secret wiring (non-sensitive - manifests only). -. Enable and configure `applications.openstack-secrets` in - `overrides/values-rhoso-gitops.yaml` (`enabled: true`, `repoURL`, `path`, - `targetRevision`, optional `kustomize` patches). -. Install the secrets Operator through `operator-dependencies` by using - `kustomize.components` URLs from the upstream secrets components. +. Configure the secret wiring *before* deploying the pattern: +.. Add a Kustomize overlay in *your* Git repository for secret wiring (non-sensitive + manifests only). +.. Enable and configure `applications.openstack-secrets` in + `overrides/values-rhoso-gitops.yaml` (`enabled: true`, `repoURL`, `path`, + `targetRevision`, optional `kustomize` patches). +.. Install the secrets Operator through `operator-dependencies` by using + `kustomize.components` URLs from the upstream secrets components. +. While the pattern is deploying, *wait* for the `openstack` namespace to appear + (an earlier Argo CD application creates it). Then inject the bootstrap + `Secret` out of band in a separate terminal (`oc create secret generic ...`). + If you are working remotely, use `tmux` or `screen` so you can monitor the + deployment and inject the secret in parallel. ++ +[IMPORTANT] +==== +Do *not* create the `openstack` namespace manually. Argo CD creates it during +deployment, and a pre-existing namespace causes ownership conflicts. Instead, +poll for the namespace and inject the secret as soon as it appears: + +[source,terminal,subs="+quotes"] +---- +$ while ! oc get namespace openstack &>/dev/null; do sleep 10; done +$ oc create secret generic ____ \ + --from-literal=____=____ \ + -n openstack --dry-run=client -o yaml | oc apply -f - +---- +==== For standalone Helm usage and advanced chart examples, see the upstream link:https://github.com/openstack-k8s-operators/gitops/tree/main/charts/rhoso-apps[rhoso-apps chart]. diff --git a/modules/rhoso-gitops/rhoso-gitops-deploying.adoc b/modules/rhoso-gitops/rhoso-gitops-deploying.adoc index 8f39d8985..b2467bd07 100644 --- a/modules/rhoso-gitops/rhoso-gitops-deploying.adoc +++ b/modules/rhoso-gitops/rhoso-gitops-deploying.adoc @@ -19,8 +19,7 @@ Before you deploy the pattern, verify that you have the following: * link:https://podman.io/[Podman] 4.3 or later for `./pattern.sh`. * {gitops-title} available on the cluster (installed by the pattern framework or pre-installed). -* The link:https://validatedpatterns.io/learn/quickstart/[tool dependencies] are - installed. +* The required link:https://validatedpatterns.io/learn/quickstart/[tool dependencies]. [id="rhoso-gitops-preparing-deployment"] == Preparing for deployment @@ -33,9 +32,9 @@ Before you deploy the pattern, verify that you have the following: . Clone your fork: + -[source,terminal] +[source,terminal,subs="+quotes"] ---- -$ git clone git@github.com:/rhoso-gitops.git +$ git clone git@github.com:____/rhoso-gitops.git ---- . Change to the repository directory: diff --git a/static/images/rhoso-gitops/rhoso-gitops-applications.png b/static/images/rhoso-gitops/rhoso-gitops-applications.png new file mode 100644 index 000000000..d800e9aef Binary files /dev/null and b/static/images/rhoso-gitops/rhoso-gitops-applications.png differ diff --git a/static/images/rhoso-gitops/rhoso-gitops-applications.svg b/static/images/rhoso-gitops/rhoso-gitops-applications.svg deleted file mode 100644 index 8c2453594..000000000 --- a/static/images/rhoso-gitops/rhoso-gitops-applications.svg +++ /dev/null @@ -1,242 +0,0 @@ - - - - - - - - - - - - -Validated Pattern: rhoso-​gitopsoperator-​dependenciesInfra + VSO/ESOopenstack-​operatorOpenStack operatoropenstack-​operator-​crMain OpenStack CRopenstack-​secretsSecure backend syncopenstack-​networksNetworksopenstack-​controlplaneOpenStackControlPlaneopenstack-​dataplaneData planeOpenShift Cluster (OCP)Red Hat OpenStack Services on OpenShift - - creates - - creates - - converges - - converges - - converges - - converges - - converges - - converges - - deploys to \ No newline at end of file diff --git a/static/images/rhoso-gitops/rhoso-gitops-infrastructure.png b/static/images/rhoso-gitops/rhoso-gitops-infrastructure.png new file mode 100644 index 000000000..e0c8f3cd5 Binary files /dev/null and b/static/images/rhoso-gitops/rhoso-gitops-infrastructure.png differ diff --git a/static/images/rhoso-gitops/rhoso-gitops-infrastructure.svg b/static/images/rhoso-gitops/rhoso-gitops-infrastructure.svg deleted file mode 100644 index 323addd9a..000000000 --- a/static/images/rhoso-gitops/rhoso-gitops-infrastructure.svg +++ /dev/null @@ -1,252 +0,0 @@ - - - - - - - - - - - - -OpenShift Cluster (OCP)Control Plane Nodes (3 masters)master-1master-2master-3RHOSO Control PlaneOpenStack OperatorsOpenStackControlPlane ServicesData Plane Hosts (N compute nodes)Compute NodeRHELRHOSO Data Plane Elements (nova-​compute, etc.) - - contains - - includes - - includes - - includes - - contains - - manages - - hosts - - contains - - runs - - supports - - controlsCompute NodeCompute nodes \ No newline at end of file