<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>AI Computer Vision</title><link>https://maximilianopizarro.github.io/ia-computer-vision/</link><description>Recent content on AI Computer Vision</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Wed, 01 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://maximilianopizarro.github.io/ia-computer-vision/index.xml" rel="self" type="application/rss+xml"/><item><title>Getting started</title><link>https://maximilianopizarro.github.io/ia-computer-vision/patterns/ia-computer-vision/getting-started/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://maximilianopizarro.github.io/ia-computer-vision/patterns/ia-computer-vision/getting-started/</guid><description>&lt;div id="preamble"&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;This guide walks you through deploying the AI Computer Vision pattern from a clean environment. Install the east and west spoke clusters first, collect their API tokens, then install the hub last so RHACM can auto-import both spokes. Each section includes verification commands with expected output so you know whether each step succeeded.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="admonitionblock important"&gt;
&lt;table&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td class="icon"&gt;
&lt;i class="fa icon-important" title="Important"&gt;&lt;/i&gt;
&lt;/td&gt;
&lt;td class="content"&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Complete each cluster installation and verification before moving to the next. The hub imports spokes automatically when you provide spoke API tokens in &lt;code&gt;~/values-secret-ia-computer-vision.yaml&lt;/code&gt;. Cross-cluster features such as Skupper, multi-cluster observability, RHACS Secured Cluster registration, and the RHCL inference gateway require imported spokes.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Cluster sizing and version matrix</title><link>https://maximilianopizarro.github.io/ia-computer-vision/patterns/ia-computer-vision/cluster-sizing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://maximilianopizarro.github.io/ia-computer-vision/patterns/ia-computer-vision/cluster-sizing/</guid><description>&lt;div id="preamble"&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;This page documents cluster sizing requirements, network prerequisites, and the tested product version matrix for the AI Computer Vision pattern.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;h2 id="_recommended_aws_sizing"&gt;&lt;a class="anchor" href="#_recommended_aws_sizing"&gt;&lt;/a&gt;&lt;a class="link" href="#_recommended_aws_sizing"&gt;Recommended AWS sizing&lt;/a&gt;&lt;/h2&gt;
&lt;div class="sectionbody"&gt;
&lt;table class="tableblock frame-all grid-all stretch"&gt;
&lt;colgroup&gt;
&lt;col style="width: 25%;"/&gt;
&lt;col style="width: 25%;"/&gt;
&lt;col style="width: 25%;"/&gt;
&lt;col style="width: 25%;"/&gt;
&lt;/colgroup&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="tableblock halign-left valign-top"&gt;Cluster role&lt;/th&gt;
&lt;th class="tableblock halign-left valign-top"&gt;Control plane&lt;/th&gt;
&lt;th class="tableblock halign-left valign-top"&gt;Workers&lt;/th&gt;
&lt;th class="tableblock halign-left valign-top"&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;Hub&lt;/p&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;3 x &lt;code&gt;m6a.2xlarge&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;3 x &lt;code&gt;m6a.4xlarge&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;Hub runs 15+ operators and ~450 pods. &lt;code&gt;m6a.2xlarge&lt;/code&gt; workers (8 vCPU) reach 98-99% CPU request allocation. Use &lt;code&gt;m6a.4xlarge&lt;/code&gt; (16 vCPU, 64 GiB) for production. For sandbox/demo, &lt;code&gt;m6a.2xlarge&lt;/code&gt; works if you remove the &lt;code&gt;NoSchedule&lt;/code&gt; taint from master nodes.&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;East spoke&lt;/p&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;3 x &lt;code&gt;m6a.2xlarge&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;3 x &lt;code&gt;m6a.2xlarge&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;Spoke workloads are lighter (~150 pods). &lt;code&gt;m6a.2xlarge&lt;/code&gt; is sufficient for CPU-only inference.&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;West spoke&lt;/p&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;3 x &lt;code&gt;m6a.2xlarge&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;3 x &lt;code&gt;m6a.2xlarge&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;Same as east.&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Each &lt;code&gt;m6a.2xlarge&lt;/code&gt; instance provides 8 vCPU and 32 GiB memory. Each &lt;code&gt;m6a.4xlarge&lt;/code&gt; provides 16 vCPU and 64 GiB memory.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Architecture</title><link>https://maximilianopizarro.github.io/ia-computer-vision/patterns/ia-computer-vision/architecture/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://maximilianopizarro.github.io/ia-computer-vision/patterns/ia-computer-vision/architecture/</guid><description>&lt;div id="preamble"&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;This document describes the hub-spoke topology, component placement, traffic flow, security model, connectivity, and GitOps workflow for the AI Computer Vision pattern. It also explains why specific Red Hat products were chosen over alternatives.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;h2 id="_overview"&gt;&lt;a class="anchor" href="#_overview"&gt;&lt;/a&gt;&lt;a class="link" href="#_overview"&gt;Overview&lt;/a&gt;&lt;/h2&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;The AI Computer Vision pattern uses a &lt;strong&gt;hub-spoke&lt;/strong&gt; model with one central control plane cluster and two symmetric edge inference clusters. This architecture separates fleet management and developer platform services from latency-sensitive inference workloads.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;You deploy the pattern on three independent OCP 4.20 or later clusters:&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Scaffolding and secrets</title><link>https://maximilianopizarro.github.io/ia-computer-vision/patterns/ia-computer-vision/scaffolding-and-secrets/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://maximilianopizarro.github.io/ia-computer-vision/patterns/ia-computer-vision/scaffolding-and-secrets/</guid><description>&lt;div id="preamble"&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;This document explains how the &lt;strong&gt;AI Computer Vision software template&lt;/strong&gt; orchestrates operators on the hub and spokes, and how &lt;strong&gt;HashiCorp Vault&lt;/strong&gt; with the &lt;strong&gt;External Secrets Operator (ESO)&lt;/strong&gt; delivers credentials to OpenShift without storing secret values in Git.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="imageblock text-center"&gt;
&lt;div class="content"&gt;
&lt;img src="https://maximilianopizarro.github.io/ia-computer-vision/images/ia-computer-vision/scaffolding-vault-eso-flow.png" alt="Scaffolding and Vault/ESO flows — operator interaction and expected results"/&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;h2 id="_ai_computer_vision_software_template"&gt;&lt;a class="anchor" href="#_ai_computer_vision_software_template"&gt;&lt;/a&gt;&lt;a class="link" href="#_ai_computer_vision_software_template"&gt;AI Computer Vision software template&lt;/a&gt;&lt;/h2&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="sect2"&gt;
&lt;h3 id="_what_it_is"&gt;&lt;a class="anchor" href="#_what_it_is"&gt;&lt;/a&gt;&lt;a class="link" href="#_what_it_is"&gt;What it is&lt;/a&gt;&lt;/h3&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;The software template &lt;code&gt;ai-computer-vision&lt;/code&gt; in Red Hat Developer Hub (RHDH) is a Backstage &lt;strong&gt;Template&lt;/strong&gt; resource. It gives workshop users a self-service form to provision a personal &lt;strong&gt;NeuroFace&lt;/strong&gt; stack on a chosen spoke (&lt;code&gt;east&lt;/code&gt; or &lt;code&gt;west&lt;/code&gt;) without opening tickets to platform teams.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Workshop mode</title><link>https://maximilianopizarro.github.io/ia-computer-vision/patterns/ia-computer-vision/workshop/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://maximilianopizarro.github.io/ia-computer-vision/patterns/ia-computer-vision/workshop/</guid><description>&lt;div id="preamble"&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;The AI Computer Vision pattern includes workshop mode for hands-on events. Workshop mode is &lt;strong&gt;enabled by default&lt;/strong&gt; with &lt;strong&gt;30 users&lt;/strong&gt; (&lt;code&gt;user1&lt;/code&gt; through &lt;code&gt;user30&lt;/code&gt;).&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;h2 id="_what_gets_provisioned"&gt;&lt;a class="anchor" href="#_what_gets_provisioned"&gt;&lt;/a&gt;&lt;a class="link" href="#_what_gets_provisioned"&gt;What gets provisioned&lt;/a&gt;&lt;/h2&gt;
&lt;div class="sectionbody"&gt;
&lt;table class="tableblock frame-all grid-all stretch"&gt;
&lt;colgroup&gt;
&lt;col style="width: 28.5714%;"/&gt;
&lt;col style="width: 42.8571%;"/&gt;
&lt;col style="width: 28.5715%;"/&gt;
&lt;/colgroup&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="tableblock halign-left valign-top"&gt;Platform&lt;/th&gt;
&lt;th class="tableblock halign-left valign-top"&gt;Access method&lt;/th&gt;
&lt;th class="tableblock halign-left valign-top"&gt;Default password&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;OCP Console&lt;/p&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;HTPasswd identity provider &lt;code&gt;workshop-users&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;&lt;code&gt;Welcome123!&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;Developer Hub&lt;/p&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;Keycloak realm &lt;code&gt;backstage&lt;/code&gt; (OIDC)&lt;/p&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;&lt;code&gt;Welcome123!&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;GitLab&lt;/p&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;User account + &lt;code&gt;ws-userN&lt;/code&gt; group (owner)&lt;/p&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;&lt;code&gt;Welcome123!&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;DevSpaces&lt;/p&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;Git credentials in &lt;code&gt;userN-devspaces&lt;/code&gt; namespace&lt;/p&gt;&lt;/td&gt;
&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;&lt;code&gt;Welcome123!&lt;/code&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Special accounts: &lt;code&gt;platformadmin&lt;/code&gt; (platform engineering group) and &lt;code&gt;admin&lt;/code&gt; (workshop administrator).&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>Ideas for customization</title><link>https://maximilianopizarro.github.io/ia-computer-vision/patterns/ia-computer-vision/ideas-for-customization/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://maximilianopizarro.github.io/ia-computer-vision/patterns/ia-computer-vision/ideas-for-customization/</guid><description>&lt;div id="preamble"&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;This document describes actionable ways to extend the AI Computer Vision pattern for production or proof-of-concept environments. Each scenario includes context, the exact files and values to change, and a validation command.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;h2 id="_per_user_oidc_gateway_routing_applicationset"&gt;&lt;a class="anchor" href="#_per_user_oidc_gateway_routing_applicationset"&gt;&lt;/a&gt;&lt;a class="link" href="#_per_user_oidc_gateway_routing_applicationset"&gt;Per-user OIDC Gateway routing (ApplicationSet)&lt;/a&gt;&lt;/h2&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="sect2"&gt;
&lt;h3 id="_context"&gt;&lt;a class="anchor" href="#_context"&gt;&lt;/a&gt;&lt;a class="link" href="#_context"&gt;Context&lt;/a&gt;&lt;/h3&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;Workshop users scaffold personal NeuroFace instances via Developer Hub. Each instance gets a unique HTTPRoute path (&lt;code&gt;/user/userN/&lt;/code&gt;) on the shared spoke Gateway and an RHCL &lt;code&gt;AuthPolicy&lt;/code&gt; with OIDC pointing to the user’s RHBK biometric realm.&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>CRD reference</title><link>https://maximilianopizarro.github.io/ia-computer-vision/patterns/ia-computer-vision/crd-reference/</link><pubDate>Wed, 01 Jul 2026 00:00:00 +0000</pubDate><guid>https://maximilianopizarro.github.io/ia-computer-vision/patterns/ia-computer-vision/crd-reference/</guid><description>Annotated YAML examples for custom resources used in the AI Computer Vision pattern.</description></item><item><title>Troubleshooting</title><link>https://maximilianopizarro.github.io/ia-computer-vision/patterns/ia-computer-vision/troubleshooting/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://maximilianopizarro.github.io/ia-computer-vision/patterns/ia-computer-vision/troubleshooting/</guid><description>&lt;div id="preamble"&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;This reference lists common problems during pattern installation and operation. Each entry includes symptoms, probable cause, diagnostic commands, and resolution steps.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;h2 id="_openshift_gitops_application_degraded_or_unknown"&gt;&lt;a class="anchor" href="#_openshift_gitops_application_degraded_or_unknown"&gt;&lt;/a&gt;&lt;a class="link" href="#_openshift_gitops_application_degraded_or_unknown"&gt;OpenShift GitOps application Degraded or Unknown&lt;/a&gt;&lt;/h2&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="sect2"&gt;
&lt;h3 id="_symptom"&gt;&lt;a class="anchor" href="#_symptom"&gt;&lt;/a&gt;&lt;a class="link" href="#_symptom"&gt;Symptom&lt;/a&gt;&lt;/h3&gt;
&lt;div class="paragraph"&gt;
&lt;p&gt;One or more applications in &lt;code&gt;vp-gitops&lt;/code&gt; show &lt;code&gt;Degraded&lt;/code&gt;, &lt;code&gt;Unknown&lt;/code&gt;, or &lt;code&gt;Missing&lt;/code&gt; health status. The &lt;code&gt;ia-computer-vision-hub&lt;/code&gt; parent application may show &lt;code&gt;Degraded&lt;/code&gt; even though individual apps appear healthy.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="sect2"&gt;
&lt;h3 id="_probable_cause"&gt;&lt;a class="anchor" href="#_probable_cause"&gt;&lt;/a&gt;&lt;a class="link" href="#_probable_cause"&gt;Probable cause&lt;/a&gt;&lt;/h3&gt;
&lt;div class="ulist"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Operator CSV not yet &lt;code&gt;Succeeded&lt;/code&gt; — the application synced before the operator was ready&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Duplicate &lt;code&gt;OperatorGroup&lt;/code&gt; in the target namespace (&lt;code&gt;TooManyOperatorGroups&lt;/code&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Stale subscription referencing a deleted or renamed package&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Sync wave ordering — downstream app synced before its prerequisite&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A custom resource requires a CRD that is not yet installed (for example, &lt;code&gt;ObjectBucketClaim&lt;/code&gt; for Quay requires OpenShift Data Foundation)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description></item></channel></rss>