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