@@ -272,13 +272,7 @@ The following pre-built components are available in MDX templates:
272272 - Props: ` language ` (string, optional), ` maxHeight ` (number | string, optional), ` showCopyButton ` (boolean, optional), ` disabled ` (boolean, optional)
273273 - ** Important** : To use template variables inside CodeBlock, wrap them in template literals using curly braces: ` { ` ...` } `
274274 - ** Limitation** : Dynamic user input variables (like ` installOptions.privateRegistryUrl ` , ` installOptions.proxyUrl ` , ` installOptions.adminConsoleUrl ` ) are not currently supported in code components. Use placeholders like ` <YOUR_REGISTRY> ` instead.
275- - Example:
276- ``` mdx
277- <CodeBlock language = " bash" >
278- { ` export REGISTRY=<YOUR_REGISTRY>
279- helm install ${app .slug } --version ${release .versionLabel } ` }
280- </CodeBlock >
281- ```
275+
282276
283277- ` <CommandBlock> ` : Display shell commands with copy functionality
284278 - Props: ` language ` (string, optional), ` maxHeight ` (number | string, optional), ` showCopyButton ` (boolean, optional), ` disabled ` (boolean, optional)
@@ -348,6 +342,158 @@ Here's an example of a custom installation template using MDX with conditional r
348342
349343[ View a larger version of this image] ( /images/enterprise-portal-custom-instructions-linux-online.png )
350344
345+ ``` mdx
346+ # Install { app .name }
347+
348+ <ConditionalRender when = " installOptions.installType === 'helm'" >
349+ ## Helm Installation
350+
351+ <Prerequisites >
352+ - Kubernetes cluster version 1.24 or later
353+ - Helm 3.8 or later installed
354+ - kubectl configured to access your cluster
355+ </Prerequisites >
356+
357+ <InstallStep title = " Configure your private registry" stepNumber = { 1 } >
358+ <PrivateRegistryInput />
359+
360+ <Note >
361+ Save your registry credentials to a Kubernetes secret:
362+ </Note >
363+
364+ <CommandBlock >
365+ { ` kubectl create secret docker-registry ${app .slug }-registry \\
366+ --docker-server=<YOUR_PRIVATE_REGISTRY> \\
367+ --docker-username=<YOUR_USERNAME> \\
368+ --docker-password=<YOUR_PASSWORD> \\
369+ --namespace default ` }
370+ </CommandBlock >
371+ </InstallStep >
372+
373+ <InstallStep title = " Install the Helm chart" stepNumber = { 2 } >
374+ <CommandBlock >
375+ { ` helm install ${app .slug } oci://<YOUR_PRIVATE_REGISTRY>/${app .slug } \\
376+ --version ${release .versionLabel } \\
377+ --namespace default ` }
378+ </CommandBlock >
379+ </InstallStep >
380+
381+ <InstallStep title = " Verify the installation" stepNumber = { 3 } >
382+ <CommandBlock >
383+ { ` kubectl get pods -n default ` }
384+ </CommandBlock >
385+ <br /><br />
386+ <Tip >
387+ All pods should be in the Running state within 5 minutes.
388+ </Tip >
389+ </InstallStep >
390+
391+ <Troubleshooting >
392+ ### Pods are not starting
393+
394+ If your pods are not starting, check the pod logs:
395+
396+ <CommandBlock >
397+ { ` kubectl logs -n default -l app=${app .slug } ` }
398+ </CommandBlock >
399+ <br /><br />
400+ ### Need help?
401+
402+ Contact our support team: <SupportLink href = { branding ?.supportPortalLink } >Get Support</SupportLink >
403+ </Troubleshooting >
404+ </ConditionalRender >
405+
406+ <ConditionalRender when = " installOptions.installType === 'linux'" >
407+ ## Embedded Cluster Installation
408+
409+ <Prerequisites >
410+ - Linux server (Ubuntu 20.04+, RHEL 8+, or equivalent)
411+ - Root or sudo access
412+ - Minimum 4 CPU cores and 8GB RAM
413+ </Prerequisites >
414+
415+ <InstallStep title = " Download the installation assets" stepNumber = { 1 } >
416+ <ConditionalRender when = " installOptions.isAirgap" >
417+ <Note >
418+ Download the air gap bundle to your server:
419+ </Note >
420+ <CommandBlock >
421+ { ` curl -f "https://replicated.app/embedded/${app .slug }/${channel .channelSlug }/${release .versionLabel }?airgap=true" \\
422+ -H "Authorization: YOUR_LICENSE" \\
423+ -o ${app .slug }-${channel .channelSlug }.tgz ` }
424+ </CommandBlock >
425+ </ConditionalRender >
426+
427+ <ConditionalRender when = " !installOptions.isAirgap && installOptions.proxyUrl" >
428+ <Note >
429+ Download the installation assets via proxy:
430+ </Note >
431+ <ProxyURLInput />
432+ <CommandBlock >
433+ { ` curl -f "https://replicated.app/embedded/${app .slug }/${channel .channelSlug }/${release .versionLabel }" \\
434+ -H "Authorization: YOUR_LICENSE" \\
435+ --proxy <YOUR_PROXY_URL> \\
436+ -o ${app .slug }-${channel .channelSlug }.tgz ` }
437+ </CommandBlock >
438+ </ConditionalRender >
439+
440+ <ConditionalRender when = " !installOptions.isAirgap && !installOptions.proxyUrl" >
441+ <Note >
442+ Download the installation assets:
443+ </Note >
444+ <CommandBlock >
445+ { ` curl -f "https://replicated.app/embedded/${app .slug }/${channel .channelSlug }/${release .versionLabel }" \\
446+ -H "Authorization: YOUR_LICENSE" \\
447+ -o ${app .slug }-${channel .channelSlug }.tgz ` }
448+ </CommandBlock >
449+ </ConditionalRender >
450+ </InstallStep >
451+
452+ <InstallStep title = " Extract the installation assets" stepNumber = { 2 } >
453+ <CommandBlock >
454+ { ` tar -xvzf ${app .slug }-${channel .channelSlug }.tgz ` }
455+ </CommandBlock >
456+ </InstallStep >
457+
458+ <InstallStep title = " Run the installer" stepNumber = { 3 } >
459+ <ConditionalRender when = " installOptions.isAirgap" >
460+ <CommandBlock >
461+ { ` sudo ./${app .slug } install --license license.yaml --airgap-bundle ${app .slug }.airgap ` }
462+ </CommandBlock >
463+ </ConditionalRender >
464+
465+ <ConditionalRender when = " !installOptions.isAirgap && installOptions.proxyUrl" >
466+ <CommandBlock >
467+ { ` sudo ./${app .slug } install --license license.yaml --https-proxy=<YOUR_PROXY_URL> ` }
468+ </CommandBlock >
469+ </ConditionalRender >
470+
471+ <ConditionalRender when = " !installOptions.isAirgap && !installOptions.proxyUrl" >
472+ <CommandBlock >
473+ { ` sudo ./${app .slug } install --license license.yaml ` }
474+ </CommandBlock >
475+ </ConditionalRender >
476+ <br /><br />
477+ <Tip >
478+ The installer will provision a Kubernetes cluster and deploy { app .name } .
479+ </Tip >
480+ </InstallStep >
481+
482+ <Troubleshooting >
483+ ### Installation fails
484+
485+ Check the installation logs:
486+
487+ <CommandBlock >
488+ { ` sudo journalctl -u ${app .slug } ` }
489+ </CommandBlock >
490+ <br /><br />
491+ ### Need help?
492+
493+ Visit our <
SupportLink href = " https://support.example.com" >support portal</
SupportLink > or email
[email protected] .
494+ </Troubleshooting >
495+ </ConditionalRender >
496+ ```
351497
352498#### Security and Validation
353499
0 commit comments