scale-catalog/old-website/manual/development/questions-yaml/index.html

156 lines
377 KiB
HTML
Raw Normal View History

<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="Project Documentation for TrueCharts"><meta name=author content="TrueCharts Team"><link href=https://truecharts.org/manual/development/questions-yaml/ rel=canonical><link rel=icon href=../../../_static/img/favicon.png><meta name=generator content="mkdocs-1.3.0, mkdocs-material-8.3.8"><title>Questions.yaml - TrueCharts</title><link rel=stylesheet href=../../../assets/stylesheets/main.1d29e8d0.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.cbb835fc.min.css><link rel=preconnect href=https://fonts.gstatic.com crossorigin><link rel=stylesheet href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"><style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style><link rel=stylesheet href=../../../_static/custom.css><script>__md_scope=new URL("../../..",location),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script><script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-6G6694723V"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){this.value&&gtag("event","search",{search_term:this.value})}),"undefined"!=typeof location$&&location$.subscribe(function(e){gtag("config","G-6G6694723V",{page_path:e.pathname})})})</script><script async src="https://www.googletagmanager.com/gtag/js?id=G-6G6694723V"></script></head> <body dir=ltr data-md-color-scheme data-md-color-primary=none data-md-color-accent=none> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#questionsyaml class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title=TrueCharts class="md-header__button md-logo" aria-label=TrueCharts data-md-component=logo> <img src=../../../_static/img/logo1024.png alt=logo> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> TrueCharts </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Questions.yaml </span> </div> </div> </div> <div class=md-header__source> <a href=https://github.com/truecharts/pub title="Go to repository" class=md-source data-md-component=source> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 480 512"><!-- Font Awesome Free 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5
label: &quot;Volume&quot;
schema:
type: dict
$ref:
- &quot;normalize/ixVolume&quot;
attrs:
- variable: mountPath
label: &quot;Mount Path&quot;
description: &quot;Path where the volume will be mounted inside the pod&quot;
schema:
type: path
required: true
- variable: datasetName
label: &quot;Dataset Name&quot;
schema:
type: string
required: true
</code></pre></div> In the above variable we define a <code>$ref</code> in schema which specifies that the system should take some action for normalising the value specified for the variable. In this specific case, <code>ix_volume</code> is a concept introduced where we recommend using a volume which we are able to rollback automatically on chart release rollback. In essence, it is just a <code>hostPath</code> volume for which the system automatically creates the dataset specified. We have following types of actions supported in <code>$ref</code> right now: 1) definitions 2) normalize For (1), system will automatically update schema for a particular definition. For example, <div class=highlight><pre><span></span><code>- variable: hostInterface
description: &quot;Please specify host interface&quot;
label: &quot;Host Interface&quot;
schema:
type: string
required: true
$ref:
- &quot;definitions/interface&quot;
</code></pre></div> System will automatically populate available interfaces for the user based on what interfaces are available on the system. For (2), system will normalize values or perform some actions as discussed above.</p> <h3 id=standardised-questionsyaml-sections>Standardised questions.yaml sections<a class=headerlink href=#standardised-questionsyaml-sections title="Permanent link">&para;</a></h3> <p>To minimise the maintenance load of our App collection, we always aim to standardise as much as possible. The same goes for questions.yaml. Included here are some code standardised code-snippets that are expected to be included in every App. Be aware that sometimes specific functions might or might not completely function. Leaving them out would, however, everely increase the maintenance load and often said functionality will be added in the common-chart later on anyway.</p> <h5 id=groups>Groups<a class=headerlink href=#groups title="Permanent link">&para;</a></h5> <p>To make sure all apps stay somewhat the same, we use a list of standardised groups for the groups section. Please make sure to use these groups in your Apps: <div class=highlight><pre><span></span><code>groups:
- name: &quot;Container Image&quot;
description: &quot;Image to be used for container&quot;
- name: &quot;Workload Configuration&quot;
description: &quot;Configure workload deployment&quot;
- name: &quot;Configuration&quot;
description: &quot;additional container configuration&quot;
- name: &quot;Networking&quot;
description: &quot;Configure Network and Services for container&quot;
- name: &quot;Storage&quot;
description: &quot;Persist and share data that is separate from the lifecycle of the container&quot;
- name: &quot;Resources and Devices&quot;
description: &quot;Specify resources/devices to be allocated to workload&quot;
- name: &quot;Ingress Configuration&quot;
description: &quot;Ingress Configuration&quot;
- name: &quot;Security&quot;
description: &quot;Configure security context&quot;
- name: &quot;Advanced&quot;
description: &quot;Advanced Configuration&quot;
- name: &quot;WARNING&quot;
description: &quot;WARNING&quot;
</code></pre></div></p> <h5 id=general-configuration-options>General Configuration options<a class=headerlink href=#general-configuration-options title="Permanent link">&para;</a></h5> <p>These options are always* included because almost every chart (eventually) has a use for them and/or other parts of the common chart depend on them. They are called general options, because they affect the basic functionalities of a chart. For example: Custom User environment variables, permissions and timezones.</p> <p>*<code>PUID</code>, <code>PGID</code>, <code>UMASK</code> are only included when they are needed.</p> <div class=highlight><pre><span></span><code> - variable: env
group: &quot;Configuration&quot;
label: &quot;Image Environment&quot;
schema:
additional_attrs: true
type: dict
attrs:
- variable: TZ
label: &quot;Timezone&quot;
schema:
type: string
default: &quot;Etc/UTC&quot;
$ref:
- &quot;definitions/timezone&quot;
- variable: PUID
label: &quot;PUID&quot;
description: &quot;Sets the PUID env var for LinuxServer.io (compatible) containers&quot;
schema:
type: int
default: 568
- variable: PGID
label: &quot;PGID&quot;
description: &quot;Sets the PGID env var for LinuxServer.io (compatible) containers&quot;
schema:
type: int
default: 568
- variable: UMASK
label: &quot;UMASK&quot;
description: &quot;Sets the UMASK env var for LinuxServer.io (compatible) containers&quot;
schema:
type: string
default: &quot;002&quot;
# Configure Custom Enviroment Variables
- variable: environmentVariables
label: &quot;Image environment&quot;
group: &quot;Configuration&quot;
schema:
type: list
default: []
items:
- variable: environmentVariable
label: &quot;Environment Variable&quot;
schema:
type: dict
attrs:
- variable: name
label: &quot;Name&quot;
schema:
type: string
- variable: value
label: &quot;Value&quot;
schema:
type: string
</code></pre></div> <h5 id=security-context-configuration-options>Security Context Configuration options<a class=headerlink href=#security-context-configuration-options title="Permanent link">&para;</a></h5> <div class=highlight><pre><span></span><code> # Enable privileged
- variable: securityContext
group: &quot;Security&quot;
label: &quot;Security Context&quot;
schema:
additional_attrs: true
type: dict
attrs:
- variable: privileged
label: &quot;Enable privileged mode for Common-Chart based charts&quot;
schema:
type: boolean
default: false
# Set Pod Security Policy
- variable: podSecurityContext
group: &quot;Security&quot;
label: &quot;Pod Security Context&quot;
schema:
additional_attrs: true
type: dict
attrs:
- variable: runAsNonRoot
label: &quot;runAsNonRoot&quot;
schema:
type: boolean
default: true
- variable: runAsUser
label: &quot;runAsUser&quot;
description: &quot;The UserID of the user running the application&quot;
schema:
type: int
default: 568
- variable: runAsGroup
label: &quot;runAsGroup&quot;
description: The groupID this App of the user running the application&quot;
schema:
type: int
default: 568
- variable: fsGroup
label: &quot;fsGroup&quot;
description: &quot;The group that should own ALL storage.&quot;
schema:
type: int
default: 568
- variable: fsGroupChangePolicy
label: &quot;When should we take ownership?&quot;
schema:
type: string
default: &quot;OnRootMismatch&quot;
enum:
- value: &quot;OnRootMismatch&quot;
description: &quot;OnRootMismatch&quot;
- value: &quot;Always&quot;
description: &quot;Always&quot;
</code></pre></div> </article> </div> </div> </main> <footer class=md-footer> <nav class="md-footer__inner md-grid" aria-label=Footer> <a href=../portal/ class="md-footer__link md-footer__link--prev" aria-label="Previous: Portal Button" rel=prev> <div class="md-footer__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> </div> <div class=md-footer__title> <div class=md-ellipsis> <span class=md-footer__direction> Previous </span> Portal Button </div> </div> </a> <a href=../services/ class="md-footer__link md-footer__link--next" aria-label="Next: Services" rel=next> <div class=md-footer__title> <div class=md-ellipsis> <span class=md-footer__direction> Next </span> Services </div> </div> <div class="md-footer__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4Z"/></svg> </div> </a> </nav> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2020 - 2022 The TrueCharts Project </div> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"base": "../../..", "features": ["navigation.tabs", "navigation.tracking", "navigation.instant", "search.highlight", "search.share", "search.suggest"], "search": "../../../assets/javascripts/workers/search.b97dbffb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version.title": "Select version"}}</script> <script src=../../../assets/javascripts/bundle.0238f547.min.js></script> </body> </html>