<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://ohcnwiki.tellmey.fyi/index.php?action=history&amp;feed=atom&amp;title=Deployment%2FKubernetes%2FDeploying_Care_onto_the_cluster</id>
	<title>Deployment/Kubernetes/Deploying Care onto the cluster - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://ohcnwiki.tellmey.fyi/index.php?action=history&amp;feed=atom&amp;title=Deployment%2FKubernetes%2FDeploying_Care_onto_the_cluster"/>
	<link rel="alternate" type="text/html" href="https://ohcnwiki.tellmey.fyi/index.php?title=Deployment/Kubernetes/Deploying_Care_onto_the_cluster&amp;action=history"/>
	<updated>2026-07-06T05:23:14Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.4</generator>
	<entry>
		<id>https://ohcnwiki.tellmey.fyi/index.php?title=Deployment/Kubernetes/Deploying_Care_onto_the_cluster&amp;diff=402&amp;oldid=prev</id>
		<title>Admin: Add Navbox deployment template before Related (via update-page on MediaWiki MCP Server)</title>
		<link rel="alternate" type="text/html" href="https://ohcnwiki.tellmey.fyi/index.php?title=Deployment/Kubernetes/Deploying_Care_onto_the_cluster&amp;diff=402&amp;oldid=prev"/>
		<updated>2026-07-06T04:02:28Z</updated>

		<summary type="html">&lt;p&gt;Add Navbox deployment template before Related (via update-page on MediaWiki MCP Server)&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 09:32, 6 July 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 111:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 111:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Once Care is running, see [[Deployment/Kubernetes/Day-2 operations|Day-2 operations]] for backups, monitoring, and ongoing maintenance.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Once Care is running, see [[Deployment/Kubernetes/Day-2 operations|Day-2 operations]] for backups, monitoring, and ongoing maintenance.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Navbox deployment}}&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Related}}&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Related}}&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://ohcnwiki.tellmey.fyi/index.php?title=Deployment/Kubernetes/Deploying_Care_onto_the_cluster&amp;diff=204&amp;oldid=prev</id>
		<title>Admin: OHC identity seed</title>
		<link rel="alternate" type="text/html" href="https://ohcnwiki.tellmey.fyi/index.php?title=Deployment/Kubernetes/Deploying_Care_onto_the_cluster&amp;diff=204&amp;oldid=prev"/>
		<updated>2026-07-04T23:07:54Z</updated>

		<summary type="html">&lt;p&gt;OHC identity seed&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Doc header&lt;br /&gt;
|type=guide&lt;br /&gt;
|domain=deployment&lt;br /&gt;
|title=Deploying Care onto the cluster&lt;br /&gt;
|order=5&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
With a Kubernetes cluster provisioned (see [[Deployment/Kubernetes/Provisioning the cluster|Provisioning the cluster]]), Care and its supporting services are rolled out module by module from the [&amp;lt;nowiki/&amp;gt;https://github.com/ohcnetwork/deployment-k8 deployment-k8] repository. This page describes the deployer workflow and the order in which modules are applied.&lt;br /&gt;
&lt;br /&gt;
{{Info|1=The exact commands, variable values, and manifests live in the [&amp;lt;nowiki/&amp;gt;https://github.com/ohcnetwork/deployment-k8 deployment-k8] repo and evolve over time. Treat the commands below as the canonical &amp;#039;&amp;#039;shape&amp;#039;&amp;#039; of each step; always run them from a checkout of the repo so you pick up the current modules and values. A few steps are still being automated — the repo carries &amp;lt;code&amp;gt;TODO&amp;lt;/code&amp;gt; markers for a database migrations job and the terminology server — so expect to perform those manually for now.}}&lt;br /&gt;
&lt;br /&gt;
== The deployer model ==&lt;br /&gt;
&lt;br /&gt;
Deployments are driven by &amp;lt;code&amp;gt;deployer.py&amp;lt;/code&amp;gt;, a [&amp;lt;nowiki/&amp;gt;https://typer.tiangolo.com/ Typer] CLI in the root of the repo, with a &amp;lt;code&amp;gt;Makefile&amp;lt;/code&amp;gt; that proxies the same commands. Both forms are equivalent — use whichever you prefer.&lt;br /&gt;
&lt;br /&gt;
Per-environment configuration lives under &amp;lt;code&amp;gt;environments/&amp;amp;lt;env&amp;amp;gt;/&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! File&lt;br /&gt;
! Purpose&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;config.json&amp;lt;/code&amp;gt;&lt;br /&gt;
| Holds &amp;lt;code&amp;gt;KUBECONFIG_PATH&amp;lt;/code&amp;gt; — the kubeconfig the deployer uses to talk to the cluster.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;variables.tfvars&amp;lt;/code&amp;gt;&lt;br /&gt;
| The OpenTofu variables for that environment.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Select the active environment, then inspect what the deployer will use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;# Select the active environment&lt;br /&gt;
python deployer.py set-current-env &amp;lt;env&amp;gt;&lt;br /&gt;
# or&lt;br /&gt;
make set-current-env &amp;lt;env&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Inspect the current selection and its resolved config&lt;br /&gt;
python deployer.py show-current-env&lt;br /&gt;
python deployer.py show-defaults&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;set-current-env&amp;lt;/code&amp;gt; writes the choice to &amp;lt;code&amp;gt;.current-env.json&amp;lt;/code&amp;gt;, and every subsequent &amp;lt;code&amp;gt;apply-tofu&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;apply-k8&amp;lt;/code&amp;gt; command reads &amp;lt;code&amp;gt;environments/&amp;amp;lt;env&amp;amp;gt;/&amp;lt;/code&amp;gt; from there. You can sanity-check connectivity to the selected cluster at any time:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;python deployer.py check-k8-cluster&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Two operations per module ==&lt;br /&gt;
&lt;br /&gt;
Each module is applied in up to two phases:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Operation&lt;br /&gt;
! What it does&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;apply-tofu &amp;amp;lt;module&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Provisions infrastructure and Helm releases for the module via OpenTofu (&amp;lt;code&amp;gt;tofu init&amp;lt;/code&amp;gt; + &amp;lt;code&amp;gt;tofu apply&amp;lt;/code&amp;gt; against &amp;lt;code&amp;gt;infra/&amp;amp;lt;module&amp;amp;gt;/&amp;lt;/code&amp;gt;).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;apply-k8 &amp;amp;lt;module&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Applies the Kubernetes manifests generated under &amp;lt;code&amp;gt;infra/&amp;amp;lt;module&amp;amp;gt;/resources/&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;kubectl apply&amp;lt;/code&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Both have a &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt; proxy. The two forms for a module are:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;# OpenTofu provisioning&lt;br /&gt;
python deployer.py apply-tofu &amp;lt;module&amp;gt;&lt;br /&gt;
make apply-tofu-&amp;lt;module&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Kubernetes manifests&lt;br /&gt;
python deployer.py apply-k8 &amp;lt;module&amp;gt;&lt;br /&gt;
make apply-k8-&amp;lt;module&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{Note|1=Not every module needs the &amp;lt;code&amp;gt;apply-k8&amp;lt;/code&amp;gt; phase — some are fully provisioned by &amp;lt;code&amp;gt;apply-tofu&amp;lt;/code&amp;gt;. Run &amp;lt;code&amp;gt;apply-k8 &amp;amp;lt;module&amp;amp;gt;&amp;lt;/code&amp;gt; only where the module ships manifests under &amp;lt;code&amp;gt;infra/&amp;amp;lt;module&amp;amp;gt;/resources/&amp;lt;/code&amp;gt; (for example &amp;lt;code&amp;gt;volumes&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;networking&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;database&amp;lt;/code&amp;gt;). The deployer will tell you if the resources directory is missing.}}&lt;br /&gt;
&lt;br /&gt;
== Module rollout order ==&lt;br /&gt;
&lt;br /&gt;
Apply the modules in the order below. Several steps require manual configuration in between (creating secrets, pushing images, creating buckets), so do not batch them blindly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;#039;&amp;#039;&amp;#039;volumes&amp;#039;&amp;#039;&amp;#039; — installs Longhorn for volume management. After Longhorn is up, configure nodes and storage classes, create the Longhorn S3 backup-target secret, then &amp;lt;code&amp;gt;apply-k8 volumes&amp;lt;/code&amp;gt;. Wait a couple of minutes for Longhorn to detect the volumes before continuing.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;#039;&amp;#039;&amp;#039;networking&amp;#039;&amp;#039;&amp;#039; — installs the ingress controllers, then routing. &amp;#039;&amp;#039;&amp;#039;TLS secrets are created per namespace&amp;#039;&amp;#039;&amp;#039; (&amp;lt;code&amp;gt;care-be&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;care-fe&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;odoo&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rustfs&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;metabase&amp;lt;/code&amp;gt;) before &amp;lt;code&amp;gt;apply-k8 networking&amp;lt;/code&amp;gt;:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;kubectl create secret tls lets-encrypt-cert \&lt;br /&gt;
  --cert=fullchain.pem --key=privkey.pem -n &amp;lt;namespace&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;#039;&amp;#039;&amp;#039;registry&amp;#039;&amp;#039;&amp;#039; — provisions the container registry used to store all application images. &amp;#039;&amp;#039;&amp;#039;Then build and push images&amp;#039;&amp;#039;&amp;#039; to the registry using the scripts in &amp;lt;code&amp;gt;build_scripts/&amp;lt;/code&amp;gt; (which has &amp;lt;code&amp;gt;care_be/&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;care_fe/&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;odoo/&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;snowstorm/&amp;lt;/code&amp;gt; builders).&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;#039;&amp;#039;&amp;#039;database&amp;#039;&amp;#039;&amp;#039; — provisions PostgreSQL via the CloudNativePG operator together with Redis/Valkey. Set up WAL archive storage and the required secrets/operator plugins, then &amp;lt;code&amp;gt;apply-k8 database&amp;lt;/code&amp;gt; to create the catalogs, secrets, roles, and databases.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;#039;&amp;#039;&amp;#039;objectstore&amp;#039;&amp;#039;&amp;#039; — provisions RustFS. &amp;#039;&amp;#039;&amp;#039;Then create the required buckets&amp;#039;&amp;#039;&amp;#039;: &amp;lt;code&amp;gt;chunks&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ruler&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;admin&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;care-facility&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;care-fileupload&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;#039;&amp;#039;&amp;#039;monitoring&amp;#039;&amp;#039;&amp;#039; — installs the monitoring stack (Grafana/Loki). Once stable, log in to Grafana and add the Loki datasource and any dashboards you need.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;#039;&amp;#039;&amp;#039;care&amp;#039;&amp;#039;&amp;#039; — deploys the Care backend and frontend.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;#039;&amp;#039;&amp;#039;odoo&amp;#039;&amp;#039;&amp;#039; — deploys Odoo. Perform addon configuration, then update the Care secrets and re-apply the Care config as needed.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;#039;&amp;#039;&amp;#039;opensearch&amp;#039;&amp;#039;&amp;#039; — installs the OpenSearch controller, then &amp;#039;&amp;#039;&amp;#039;apply the cluster manifest&amp;#039;&amp;#039;&amp;#039;:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;kubectl apply -f infra/opensearch/cluster.yaml&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;#039;&amp;#039;&amp;#039;metabase&amp;#039;&amp;#039;&amp;#039; — deploys Metabase.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;#039;&amp;#039;&amp;#039;snowstorm&amp;#039;&amp;#039;&amp;#039; — deploys Snowstorm (the terminology server backing).&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Warning|1=Before deploying &amp;lt;code&amp;gt;care&amp;lt;/code&amp;gt;, confirm that &amp;#039;&amp;#039;&amp;#039;all images have been written to the registry&amp;#039;&amp;#039;&amp;#039; (step 3). The backend and frontend pods pull from the registry provisioned earlier, and a missing image will leave pods in &amp;lt;code&amp;gt;ImagePullBackOff&amp;lt;/code&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
== Image build and push ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;registry&amp;lt;/code&amp;gt; module only provisions the registry — it does not populate it. Building and pushing images is a separate, explicit step that uses the per-application build scripts under &amp;lt;code&amp;gt;build_scripts/&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;build_scripts/&lt;br /&gt;
├── care_be/     # Care backend image&lt;br /&gt;
├── care_fe/     # Care frontend image&lt;br /&gt;
├── odoo/        # Odoo image&lt;br /&gt;
└── snowstorm/   # Snowstorm image&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Run the relevant builders after the &amp;lt;code&amp;gt;registry&amp;lt;/code&amp;gt; module is up and before deploying the modules that consume those images (&amp;lt;code&amp;gt;care&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;odoo&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;snowstorm&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== Known gaps ==&lt;br /&gt;
&lt;br /&gt;
The repo is explicit about steps that are not yet fully automated. Until they land, handle them manually:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Database migrations&amp;#039;&amp;#039;&amp;#039; — a job to run Care migrations and post-deploy cleanups after the &amp;lt;code&amp;gt;care&amp;lt;/code&amp;gt; module is still a &amp;lt;code&amp;gt;TODO&amp;lt;/code&amp;gt;. Run migrations manually until it is wired up.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Terminology server&amp;#039;&amp;#039;&amp;#039; — the terminology-server configuration section is a &amp;lt;code&amp;gt;TODO&amp;lt;/code&amp;gt;. The &amp;lt;code&amp;gt;snowstorm&amp;lt;/code&amp;gt; module deploys the service, but end-to-end configuration is still being documented.&lt;br /&gt;
&lt;br /&gt;
== Next steps ==&lt;br /&gt;
&lt;br /&gt;
Once Care is running, see [[Deployment/Kubernetes/Day-2 operations|Day-2 operations]] for backups, monitoring, and ongoing maintenance.&lt;br /&gt;
&lt;br /&gt;
{{Related}}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>