From 5d004bcb12772e287ad04249455d5eceaa0bf21a Mon Sep 17 00:00:00 2001 From: srodenhuis Date: Tue, 8 Oct 2024 19:33:50 +0000 Subject: [PATCH] deploy: 63b8694d8c2698b83a125f837ca694a1432da346 --- 404.html | 4 ++-- assets/js/2efe03fa.70dc6a36.js | 1 - assets/js/48f8b5b9.970aeb66.js | 1 + assets/js/48f8b5b9.a4fc59d1.js | 1 - assets/js/54cc2d4c.7f5428b1.js | 1 - assets/js/54cc2d4c.f967adbc.js | 1 + assets/js/5bcba466.a42a6709.js | 1 + assets/js/5cb822a3.2e004f9a.js | 1 - assets/js/5cb822a3.b950257a.js | 1 + assets/js/935f2afb.3f637cc0.js | 1 + assets/js/935f2afb.b15ef633.js | 1 - assets/js/94495612.1f0c1c14.js | 1 - assets/js/b3921f18.4e895d26.js | 1 + assets/js/main.1e54f7f7.js | 2 -- assets/js/main.feb72777.js | 2 ++ ...js.LICENSE.txt => main.feb72777.js.LICENSE.txt} | 0 ...e~main.f12d9bc5.js => runtime~main.3d7374db.js} | 2 +- docs.html | 4 ++-- .../{apl => akamai-app-platform}/introduction.html | 14 +++++++------- docs/apps/alertmanager.html | 6 +++--- docs/apps/apps-overview.html | 10 +++++----- docs/apps/argocd.html | 6 +++--- docs/apps/certmanager.html | 6 +++--- docs/apps/cloudnativepg.html | 6 +++--- docs/apps/drone.html | 6 +++--- docs/apps/external-dns.html | 6 +++--- docs/apps/falco.html | 6 +++--- docs/apps/gitea.html | 6 +++--- docs/apps/grafana.html | 6 +++--- docs/apps/harbor.html | 6 +++--- docs/apps/ingress-nginx.html | 6 +++--- docs/apps/istio.html | 6 +++--- docs/apps/jaeger.html | 6 +++--- docs/apps/keycloak.html | 6 +++--- docs/apps/kiali.html | 6 +++--- docs/apps/knative.html | 6 +++--- docs/apps/kured.html | 6 +++--- docs/apps/kyverno.html | 6 +++--- docs/apps/loki.html | 6 +++--- docs/apps/minio.html | 6 +++--- docs/apps/otel.html | 6 +++--- docs/apps/prometheus.html | 6 +++--- docs/apps/rabbitmq.html | 6 +++--- docs/apps/sealed-secrets.html | 6 +++--- docs/apps/tekton.html | 6 +++--- docs/apps/tempo.html | 6 +++--- docs/apps/thanos.html | 4 ++-- docs/apps/trivy.html | 6 +++--- docs/apps/velero.html | 6 +++--- docs/for-devs/console/apps.html | 6 +++--- docs/for-devs/console/builds.html | 6 +++--- docs/for-devs/console/catalog.html | 6 +++--- docs/for-devs/console/dashboard.html | 6 +++--- docs/for-devs/console/deploy-changes.html | 6 +++--- docs/for-devs/console/netpols.html | 6 +++--- docs/for-devs/console/overview.html | 6 +++--- docs/for-devs/console/projects.html | 6 +++--- docs/for-devs/console/secrets.html | 6 +++--- docs/for-devs/console/security-policies.html | 6 +++--- docs/for-devs/console/services.html | 6 +++--- docs/for-devs/console/settings.html | 6 +++--- docs/for-devs/console/shell.html | 6 +++--- docs/for-devs/console/workloads.html | 6 +++--- docs/for-ops/cli/apply.html | 6 +++--- docs/for-ops/cli/bash.html | 6 +++--- docs/for-ops/cli/bootstrap.html | 6 +++--- docs/for-ops/cli/commit.html | 6 +++--- docs/for-ops/cli/decrypt.html | 6 +++--- docs/for-ops/cli/deploying.html | 6 +++--- docs/for-ops/cli/destroy.html | 6 +++--- docs/for-ops/cli/diff.html | 6 +++--- docs/for-ops/cli/encrypt.html | 6 +++--- docs/for-ops/cli/installation.html | 6 +++--- docs/for-ops/cli/known-issues.html | 6 +++--- docs/for-ops/cli/lint.html | 6 +++--- docs/for-ops/cli/pull.html | 6 +++--- docs/for-ops/cli/rotate-keys.html | 6 +++--- docs/for-ops/cli/status.html | 6 +++--- docs/for-ops/cli/sync.html | 8 ++++---- docs/for-ops/cli/template.html | 6 +++--- docs/for-ops/cli/test.html | 6 +++--- docs/for-ops/cli/validate-templates.html | 6 +++--- docs/for-ops/cli/validate-values.html | 6 +++--- docs/for-ops/cli/values.html | 8 ++++---- docs/for-ops/cli/x.html | 6 +++--- docs/for-ops/console/apps.html | 6 +++--- docs/for-ops/console/backups.html | 6 +++--- docs/for-ops/console/builds.html | 6 +++--- docs/for-ops/console/dashboard.html | 6 +++--- docs/for-ops/console/deploy-changes.html | 4 ++-- docs/for-ops/console/maintenance.html | 6 +++--- docs/for-ops/console/netpols.html | 6 +++--- docs/for-ops/console/overview.html | 6 +++--- docs/for-ops/console/projects.html | 6 +++--- docs/for-ops/console/services.html | 6 +++--- docs/for-ops/console/settings/alerts.html | 6 +++--- docs/for-ops/console/settings/backup.html | 6 +++--- docs/for-ops/console/settings/cluster.html | 6 +++--- docs/for-ops/console/settings/dns.html | 6 +++--- docs/for-ops/console/settings/general.html | 6 +++--- docs/for-ops/console/settings/ingress.html | 6 +++--- docs/for-ops/console/settings/key-management.html | 6 +++--- docs/for-ops/console/settings/obj.html | 6 +++--- docs/for-ops/console/settings/oidc.html | 6 +++--- docs/for-ops/console/settings/smtp.html | 6 +++--- docs/for-ops/console/shell.html | 4 ++-- docs/for-ops/console/teams.html | 6 +++--- docs/for-ops/console/workloads.html | 6 +++--- docs/for-ops/how-to/backups.html | 6 +++--- docs/for-ops/how-to/catalog.html | 6 +++--- docs/for-ops/how-to/clone-apl.html | 6 +++--- docs/for-ops/how-to/core-only.html | 6 +++--- docs/for-ops/how-to/ingress-classes.html | 6 +++--- docs/for-ops/how-to/overview.html | 6 +++--- docs/for-ops/how-to/use-team-admin.html | 6 +++--- docs/for-ops/sre/daily.html | 6 +++--- docs/for-ops/sre/overview.html | 6 +++--- docs/for-ops/sre/troubleshooting.html | 6 +++--- docs/get-started.html | 4 ++-- docs/get-started/installation/akamai-cloud.html | 6 +++--- .../installation/byo-wildcard-cert.html | 6 +++--- docs/get-started/installation/custom.html | 6 +++--- docs/get-started/installation/dns.html | 6 +++--- docs/get-started/installation/entrypoint.html | 6 +++--- docs/get-started/installation/helm.html | 6 +++--- docs/get-started/installation/linode.html | 14 +++++++------- docs/get-started/installation/oidc.html | 6 +++--- docs/get-started/installation/overview.html | 10 +++++----- .../installation/post-installation-steps.html | 6 +++--- docs/get-started/installation/sops.html | 6 +++--- docs/get-started/labs/auto-image-update.html | 6 +++--- docs/get-started/labs/build-images.html | 6 +++--- docs/get-started/labs/canary-deployment.html | 6 +++--- docs/get-started/labs/create-netpols.html | 6 +++--- docs/get-started/labs/create-postgresql-db.html | 6 +++--- docs/get-started/labs/create-projects.html | 6 +++--- docs/get-started/labs/create-rabbitmq-cluster.html | 6 +++--- docs/get-started/labs/create-repos.html | 6 +++--- docs/get-started/labs/create-sealed-secrets.html | 6 +++--- docs/get-started/labs/create-workloads.html | 6 +++--- docs/get-started/labs/custom-dashboards.html | 6 +++--- docs/get-started/labs/custom-metrics.html | 6 +++--- docs/get-started/labs/custom-rules.html | 6 +++--- docs/get-started/labs/expose-services.html | 6 +++--- docs/get-started/labs/lab-prerequisites.html | 6 +++--- docs/get-started/labs/monitor-workloads.html | 6 +++--- docs/get-started/labs/overview.html | 6 +++--- docs/get-started/labs/push-images.html | 6 +++--- docs/get-started/labs/scan-containers.html | 6 +++--- docs/get-started/labs/scan-images.html | 6 +++--- docs/get-started/labs/trigger-builds.html | 6 +++--- docs/get-started/labs/use-catalog.html | 6 +++--- docs/get-started/labs/use-otel.html | 6 +++--- docs/get-started/labs/using-argo-cd.html | 6 +++--- docs/get-started/labs/view-logs.html | 6 +++--- docs/get-started/labs/view-metrics.html | 6 +++--- docs/get-started/overview.html | 8 ++++---- index.html | 4 ++-- search.html | 4 ++-- sitemap.xml | 2 +- 160 files changed, 446 insertions(+), 446 deletions(-) delete mode 100644 assets/js/2efe03fa.70dc6a36.js create mode 100644 assets/js/48f8b5b9.970aeb66.js delete mode 100644 assets/js/48f8b5b9.a4fc59d1.js delete mode 100644 assets/js/54cc2d4c.7f5428b1.js create mode 100644 assets/js/54cc2d4c.f967adbc.js create mode 100644 assets/js/5bcba466.a42a6709.js delete mode 100644 assets/js/5cb822a3.2e004f9a.js create mode 100644 assets/js/5cb822a3.b950257a.js create mode 100644 assets/js/935f2afb.3f637cc0.js delete mode 100644 assets/js/935f2afb.b15ef633.js delete mode 100644 assets/js/94495612.1f0c1c14.js create mode 100644 assets/js/b3921f18.4e895d26.js delete mode 100644 assets/js/main.1e54f7f7.js create mode 100644 assets/js/main.feb72777.js rename assets/js/{main.1e54f7f7.js.LICENSE.txt => main.feb72777.js.LICENSE.txt} (100%) rename assets/js/{runtime~main.f12d9bc5.js => runtime~main.3d7374db.js} (72%) rename docs/{apl => akamai-app-platform}/introduction.html (52%) diff --git a/404.html b/404.html index ae74c212d..287415408 100644 --- a/404.html +++ b/404.html @@ -10,8 +10,8 @@ - - + +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

diff --git a/assets/js/2efe03fa.70dc6a36.js b/assets/js/2efe03fa.70dc6a36.js deleted file mode 100644 index c9d74f639..000000000 --- a/assets/js/2efe03fa.70dc6a36.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkredkubes_github_io=self.webpackChunkredkubes_github_io||[]).push([[4351],{5296:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>l,contentTitle:()=>a,default:()=>u,frontMatter:()=>r,metadata:()=>c,toc:()=>s});var o=n(5893),i=n(1151);const r={slug:"introduction",title:"Introduction",sidebar_label:"Introduction"},a=void 0,c={id:"apl/introduction",title:"Introduction",description:"Application Platform for LKE",source:"@site/docs/apl/introduction.md",sourceDirName:"apl",slug:"/apl/introduction",permalink:"/docs/apl/introduction",draft:!1,unlisted:!1,editUrl:"https://github.com/linode/linode.github.io/tree/main/docs/apl/introduction.md",tags:[],version:"current",frontMatter:{slug:"introduction",title:"Introduction",sidebar_label:"Introduction"},sidebar:"mainSidebar",next:{title:"Overview",permalink:"/docs/get-started/overview"}},l={},s=[{value:"Application Platform for LKE",id:"application-platform-for-lke",level:2}];function d(t){const e={a:"a",h2:"h2",p:"p",...(0,i.a)(),...t.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(e.h2,{id:"application-platform-for-lke",children:"Application Platform for LKE"}),"\n",(0,o.jsx)(e.p,{children:"Application Platform for LKE is a platform that combines developer and operations-centric tools, automation and self-service to streamline the application lifecycle when using Kubernetes. From development to delivery to management of containerized application workloads."}),"\n",(0,o.jsx)(e.p,{children:"The platform connects many of the technologies found in the Cloud Native Computing Foundation (CNCF) landscape in a way to provide direct value. No more re-inventing the wheel when building and maintaining your own Kubernetes based platform or bespoke stack."}),"\n",(0,o.jsxs)(e.p,{children:["Application Platform for LKE is optimized to run on Linode Kubernetes Engine (LKE), but can also (manually) be installed on any other ",(0,o.jsx)(e.a,{href:"https://www.cncf.io/training/certification/software-conformance/",children:"conformant Kubernetes cluster"}),"."]})]})}function u(t={}){const{wrapper:e}={...(0,i.a)(),...t.components};return e?(0,o.jsx)(e,{...t,children:(0,o.jsx)(d,{...t})}):d(t)}},1151:(t,e,n)=>{n.d(e,{Z:()=>c,a:()=>a});var o=n(7294);const i={},r=o.createContext(i);function a(t){const e=o.useContext(r);return o.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function c(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(i):t.components||i:a(t.components),o.createElement(r.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/48f8b5b9.970aeb66.js b/assets/js/48f8b5b9.970aeb66.js new file mode 100644 index 000000000..5cf616d08 --- /dev/null +++ b/assets/js/48f8b5b9.970aeb66.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkredkubes_github_io=self.webpackChunkredkubes_github_io||[]).push([[6299],{7966:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>o,contentTitle:()=>a,default:()=>u,frontMatter:()=>s,metadata:()=>l,toc:()=>d});var i=t(5893),r=t(1151);const s={slug:"overview",title:"Installation",sidebar_label:"Overview"},a=void 0,l={id:"get-started/installation/overview",title:"Installation",description:"How to get Akamai Application Platform up and running",source:"@site/docs/get-started/installation/overview.md",sourceDirName:"get-started/installation",slug:"/get-started/installation/overview",permalink:"/docs/get-started/installation/overview",draft:!1,unlisted:!1,editUrl:"https://github.com/linode/linode.github.io/tree/main/docs/get-started/installation/overview.md",tags:[],version:"current",frontMatter:{slug:"overview",title:"Installation",sidebar_label:"Overview"},sidebar:"mainSidebar",previous:{title:"Overview",permalink:"/docs/get-started/overview"},next:{title:"Akamai Cloud",permalink:"/docs/get-started/installation/akamai-cloud"}},o={},d=[{value:"Linode Kubernetes Engine (LKE)",id:"linode-kubernetes-engine-lke",level:3},{value:"Akamai Connected Cloud - Comming soon!",id:"akamai-connected-cloud---comming-soon",level:3},{value:"Custom",id:"custom",level:3},{value:"Helm",id:"helm",level:3},{value:"Use DNS",id:"use-dns",level:3},{value:"Use Azure AD as IDP",id:"use-azure-ad-as-idp",level:3},{value:"Use SOPS for encryption",id:"use-sops-for-encryption",level:3},{value:"Use an entrypoint",id:"use-an-entrypoint",level:3},{value:"Bring Your Own Wild Card Certificate",id:"bring-your-own-wild-card-certificate",level:3}];function c(e){const n={a:"a",h3:"h3",hr:"hr",p:"p",strong:"strong",...(0,r.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"How to get Akamai Application Platform up and running"})}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h3,{id:"linode-kubernetes-engine-lke",children:(0,i.jsx)(n.a,{href:"/docs/get-started/installation/linode",children:"Linode Kubernetes Engine (LKE)"})}),"\n",(0,i.jsx)(n.p,{children:"Create a LKE cluster and manually install the Application Platform."}),"\n",(0,i.jsx)(n.h3,{id:"akamai-connected-cloud---comming-soon",children:(0,i.jsx)(n.a,{href:"/docs/get-started/installation/akamai-cloud",children:"Akamai Connected Cloud - Comming soon!"})}),"\n",(0,i.jsx)(n.p,{children:"Provision LKE with the Application Platform in Akamai Connected Cloud."}),"\n",(0,i.jsx)(n.h3,{id:"custom",children:(0,i.jsx)(n.a,{href:"/docs/get-started/installation/custom",children:"Custom"})}),"\n",(0,i.jsx)(n.p,{children:"Install the Application Platform on any other conformant Kubernetes cluster."}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Other installation resources"})}),"\n",(0,i.jsx)(n.h3,{id:"helm",children:(0,i.jsx)(n.a,{href:"/docs/get-started/installation/helm",children:"Helm"})}),"\n",(0,i.jsx)(n.p,{children:"Instructions for using the Helm chart."}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Advanced configurations"})}),"\n",(0,i.jsx)(n.h3,{id:"use-dns",children:(0,i.jsx)(n.a,{href:"/docs/get-started/installation/dns",children:"Use DNS"})}),"\n",(0,i.jsx)(n.p,{children:"Install with DNS."}),"\n",(0,i.jsx)(n.h3,{id:"use-azure-ad-as-idp",children:(0,i.jsx)(n.a,{href:"/docs/get-started/installation/oidc",children:"Use Azure AD as IDP"})}),"\n",(0,i.jsx)(n.p,{children:"Install with Azure Entra ID for OIDC."}),"\n",(0,i.jsx)(n.h3,{id:"use-sops-for-encryption",children:(0,i.jsx)(n.a,{href:"/docs/get-started/installation/sops",children:"Use SOPS for encryption"})}),"\n",(0,i.jsx)(n.p,{children:"Install with SOPS."}),"\n",(0,i.jsx)(n.h3,{id:"use-an-entrypoint",children:(0,i.jsx)(n.a,{href:"/docs/get-started/installation/entrypoint",children:"Use an entrypoint"})}),"\n",(0,i.jsx)(n.p,{children:"Install with an entrypoint for an external gateway."}),"\n",(0,i.jsx)(n.h3,{id:"bring-your-own-wild-card-certificate",children:(0,i.jsx)(n.a,{href:"/docs/get-started/installation/byo-wildcard-cert",children:"Bring Your Own Wild Card Certificate"})}),"\n",(0,i.jsx)(n.p,{children:"Install using a BYO (wild card) certificate."}),"\n",(0,i.jsx)(n.hr,{})]})}function u(e={}){const{wrapper:n}={...(0,r.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},1151:(e,n,t)=>{t.d(n,{Z:()=>l,a:()=>a});var i=t(7294);const r={},s=i.createContext(r);function a(e){const n=i.useContext(s);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),i.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/48f8b5b9.a4fc59d1.js b/assets/js/48f8b5b9.a4fc59d1.js deleted file mode 100644 index 0bf953863..000000000 --- a/assets/js/48f8b5b9.a4fc59d1.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkredkubes_github_io=self.webpackChunkredkubes_github_io||[]).push([[6299],{7966:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>o,contentTitle:()=>a,default:()=>u,frontMatter:()=>s,metadata:()=>l,toc:()=>d});var i=t(5893),r=t(1151);const s={slug:"overview",title:"Installation",sidebar_label:"Overview"},a=void 0,l={id:"get-started/installation/overview",title:"Installation",description:"How to get Application Platform for LKE up and running",source:"@site/docs/get-started/installation/overview.md",sourceDirName:"get-started/installation",slug:"/get-started/installation/overview",permalink:"/docs/get-started/installation/overview",draft:!1,unlisted:!1,editUrl:"https://github.com/linode/linode.github.io/tree/main/docs/get-started/installation/overview.md",tags:[],version:"current",frontMatter:{slug:"overview",title:"Installation",sidebar_label:"Overview"},sidebar:"mainSidebar",previous:{title:"Overview",permalink:"/docs/get-started/overview"},next:{title:"Akamai Cloud",permalink:"/docs/get-started/installation/akamai-cloud"}},o={},d=[{value:"Linode Kubernetes Engine (LKE)",id:"linode-kubernetes-engine-lke",level:3},{value:"Akamai Connected Cloud - Comming soon!",id:"akamai-connected-cloud---comming-soon",level:3},{value:"Custom",id:"custom",level:3},{value:"Helm",id:"helm",level:3},{value:"Use DNS",id:"use-dns",level:3},{value:"Use Azure AD as IDP",id:"use-azure-ad-as-idp",level:3},{value:"Use SOPS for encryption",id:"use-sops-for-encryption",level:3},{value:"Use an entrypoint",id:"use-an-entrypoint",level:3},{value:"Bring Your Own Wild Card Certificate",id:"bring-your-own-wild-card-certificate",level:3}];function c(e){const n={a:"a",h3:"h3",hr:"hr",p:"p",strong:"strong",...(0,r.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"How to get Application Platform for LKE up and running"})}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h3,{id:"linode-kubernetes-engine-lke",children:(0,i.jsx)(n.a,{href:"/docs/get-started/installation/linode",children:"Linode Kubernetes Engine (LKE)"})}),"\n",(0,i.jsx)(n.p,{children:"Create a LKE cluster and manually install the Application Platform."}),"\n",(0,i.jsx)(n.h3,{id:"akamai-connected-cloud---comming-soon",children:(0,i.jsx)(n.a,{href:"/docs/get-started/installation/akamai-cloud",children:"Akamai Connected Cloud - Comming soon!"})}),"\n",(0,i.jsx)(n.p,{children:"Provision LKE with the Application Platform in Akamai Connected Cloud."}),"\n",(0,i.jsx)(n.h3,{id:"custom",children:(0,i.jsx)(n.a,{href:"/docs/get-started/installation/custom",children:"Custom"})}),"\n",(0,i.jsx)(n.p,{children:"Install the Application Platform for LKE on any other conformant Kubernetes cluster."}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Other installation resources"})}),"\n",(0,i.jsx)(n.h3,{id:"helm",children:(0,i.jsx)(n.a,{href:"/docs/get-started/installation/helm",children:"Helm"})}),"\n",(0,i.jsx)(n.p,{children:"Instructions for using the Helm chart."}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Advanced configurations"})}),"\n",(0,i.jsx)(n.h3,{id:"use-dns",children:(0,i.jsx)(n.a,{href:"/docs/get-started/installation/dns",children:"Use DNS"})}),"\n",(0,i.jsx)(n.p,{children:"Install with DNS."}),"\n",(0,i.jsx)(n.h3,{id:"use-azure-ad-as-idp",children:(0,i.jsx)(n.a,{href:"/docs/get-started/installation/oidc",children:"Use Azure AD as IDP"})}),"\n",(0,i.jsx)(n.p,{children:"Install with Azure Entra ID for OIDC."}),"\n",(0,i.jsx)(n.h3,{id:"use-sops-for-encryption",children:(0,i.jsx)(n.a,{href:"/docs/get-started/installation/sops",children:"Use SOPS for encryption"})}),"\n",(0,i.jsx)(n.p,{children:"Install with SOPS."}),"\n",(0,i.jsx)(n.h3,{id:"use-an-entrypoint",children:(0,i.jsx)(n.a,{href:"/docs/get-started/installation/entrypoint",children:"Use an entrypoint"})}),"\n",(0,i.jsx)(n.p,{children:"Install with an entrypoint for an external gateway."}),"\n",(0,i.jsx)(n.h3,{id:"bring-your-own-wild-card-certificate",children:(0,i.jsx)(n.a,{href:"/docs/get-started/installation/byo-wildcard-cert",children:"Bring Your Own Wild Card Certificate"})}),"\n",(0,i.jsx)(n.p,{children:"Install using a BYO (wild card) certificate."}),"\n",(0,i.jsx)(n.hr,{})]})}function u(e={}){const{wrapper:n}={...(0,r.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},1151:(e,n,t)=>{t.d(n,{Z:()=>l,a:()=>a});var i=t(7294);const r={},s=i.createContext(r);function a(e){const n=i.useContext(s);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),i.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/54cc2d4c.7f5428b1.js b/assets/js/54cc2d4c.7f5428b1.js deleted file mode 100644 index f2b4812e6..000000000 --- a/assets/js/54cc2d4c.7f5428b1.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkredkubes_github_io=self.webpackChunkredkubes_github_io||[]).push([[2036],{6833:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>a,contentTitle:()=>s,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var r=o(5893),n=o(1151);const i={slug:"overview",title:"Overview",sidebar_label:"Overview"},s=void 0,l={id:"get-started/overview",title:"Overview",description:"How to get started with Application Platform for LKE",source:"@site/docs/get-started/overview.md",sourceDirName:"get-started",slug:"/get-started/overview",permalink:"/docs/get-started/overview",draft:!1,unlisted:!1,editUrl:"https://github.com/linode/linode.github.io/tree/main/docs/get-started/overview.md",tags:[],version:"current",frontMatter:{slug:"overview",title:"Overview",sidebar_label:"Overview"},sidebar:"mainSidebar",previous:{title:"Introduction",permalink:"/docs/apl/introduction"},next:{title:"Overview",permalink:"/docs/get-started/installation/overview"}},a={},p=[{value:"Step 1: Install Application Platform for LKE",id:"step-1-install-application-platform-for-lke",level:3},{value:"Step 2: Follow the post installation steps ",id:"step-2-follow-the-post-installation-steps-",level:3},{value:"Step 3: Explore Application Platform for LKE using the Labs",id:"step-3-explore-application-platform-for-lke-using-the-labs",level:3}];function c(e){const t={a:"a",h3:"h3",hr:"hr",p:"p",strong:"strong",...(0,n.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"How to get started with Application Platform for LKE"})}),"\n",(0,r.jsx)(t.hr,{}),"\n",(0,r.jsxs)(t.h3,{id:"step-1-install-application-platform-for-lke",children:["Step 1: ",(0,r.jsx)(t.a,{href:"/docs/get-started/installation/overview",children:"Install Application Platform for LKE"})]}),"\n",(0,r.jsx)(t.p,{children:"Install Application Platform for LKE on Linode Kubernetes Engine (LKE) or any other conformant Kubernetes cluster."}),"\n",(0,r.jsxs)(t.h3,{id:"step-2-follow-the-post-installation-steps-",children:["Step 2: ",(0,r.jsx)(t.a,{href:"/docs/get-started/installation/post-installation-steps",children:"Follow the post installation steps "})]}),"\n",(0,r.jsx)(t.p,{children:"Configure Application Platform for LKE for your use case."}),"\n",(0,r.jsxs)(t.h3,{id:"step-3-explore-application-platform-for-lke-using-the-labs",children:["Step 3: ",(0,r.jsx)(t.a,{href:"/docs/get-started/labs/overview",children:"Explore Application Platform for LKE using the Labs"})]}),"\n",(0,r.jsx)(t.p,{children:"Explore Application Platform for LKE with a comprehensive set of hands-on labs."})]})}function d(e={}){const{wrapper:t}={...(0,n.a)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(c,{...e})}):c(e)}},1151:(e,t,o)=>{o.d(t,{Z:()=>l,a:()=>s});var r=o(7294);const n={},i=r.createContext(n);function s(e){const t=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:s(e.components),r.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/54cc2d4c.f967adbc.js b/assets/js/54cc2d4c.f967adbc.js new file mode 100644 index 000000000..878d6ebf0 --- /dev/null +++ b/assets/js/54cc2d4c.f967adbc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkredkubes_github_io=self.webpackChunkredkubes_github_io||[]).push([[2036],{6833:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>a,contentTitle:()=>s,default:()=>d,frontMatter:()=>n,metadata:()=>l,toc:()=>p});var r=o(5893),i=o(1151);const n={slug:"overview",title:"Overview",sidebar_label:"Overview"},s=void 0,l={id:"get-started/overview",title:"Overview",description:"How to get started with Application Platform for LKE",source:"@site/docs/get-started/overview.md",sourceDirName:"get-started",slug:"/get-started/overview",permalink:"/docs/get-started/overview",draft:!1,unlisted:!1,editUrl:"https://github.com/linode/linode.github.io/tree/main/docs/get-started/overview.md",tags:[],version:"current",frontMatter:{slug:"overview",title:"Overview",sidebar_label:"Overview"},sidebar:"mainSidebar",previous:{title:"Introduction",permalink:"/docs/akamai-app-platform/introduction"},next:{title:"Overview",permalink:"/docs/get-started/installation/overview"}},a={},p=[{value:"Step 1: Install Application Platform for LKE",id:"step-1-install-application-platform-for-lke",level:3},{value:"Step 2: Follow the post installation steps ",id:"step-2-follow-the-post-installation-steps-",level:3},{value:"Step 3: Explore Application Platform for LKE using the Labs",id:"step-3-explore-application-platform-for-lke-using-the-labs",level:3}];function c(e){const t={a:"a",h3:"h3",hr:"hr",p:"p",strong:"strong",...(0,i.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"How to get started with Application Platform for LKE"})}),"\n",(0,r.jsx)(t.hr,{}),"\n",(0,r.jsxs)(t.h3,{id:"step-1-install-application-platform-for-lke",children:["Step 1: ",(0,r.jsx)(t.a,{href:"/docs/get-started/installation/overview",children:"Install Application Platform for LKE"})]}),"\n",(0,r.jsx)(t.p,{children:"Install Application Platform for LKE on Linode Kubernetes Engine (LKE) or any other conformant Kubernetes cluster."}),"\n",(0,r.jsxs)(t.h3,{id:"step-2-follow-the-post-installation-steps-",children:["Step 2: ",(0,r.jsx)(t.a,{href:"/docs/get-started/installation/post-installation-steps",children:"Follow the post installation steps "})]}),"\n",(0,r.jsx)(t.p,{children:"Configure Application Platform for LKE for your use case."}),"\n",(0,r.jsxs)(t.h3,{id:"step-3-explore-application-platform-for-lke-using-the-labs",children:["Step 3: ",(0,r.jsx)(t.a,{href:"/docs/get-started/labs/overview",children:"Explore Application Platform for LKE using the Labs"})]}),"\n",(0,r.jsx)(t.p,{children:"Explore Application Platform for LKE with a comprehensive set of hands-on labs."})]})}function d(e={}){const{wrapper:t}={...(0,i.a)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(c,{...e})}):c(e)}},1151:(e,t,o)=>{o.d(t,{Z:()=>l,a:()=>s});var r=o(7294);const i={},n=r.createContext(i);function s(e){const t=r.useContext(n);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:s(e.components),r.createElement(n.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/5bcba466.a42a6709.js b/assets/js/5bcba466.a42a6709.js new file mode 100644 index 000000000..9024131e6 --- /dev/null +++ b/assets/js/5bcba466.a42a6709.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkredkubes_github_io=self.webpackChunkredkubes_github_io||[]).push([[6932],{4045:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>l,contentTitle:()=>r,default:()=>d,frontMatter:()=>i,metadata:()=>c,toc:()=>s});var o=n(5893),a=n(1151);const i={slug:"introduction",title:"Introduction",sidebar_label:"Introduction"},r=void 0,c={id:"akamai-app-platform/introduction",title:"Introduction",description:"Akamai Application Platform",source:"@site/docs/akamai-app-platform/introduction.md",sourceDirName:"akamai-app-platform",slug:"/akamai-app-platform/introduction",permalink:"/docs/akamai-app-platform/introduction",draft:!1,unlisted:!1,editUrl:"https://github.com/linode/linode.github.io/tree/main/docs/akamai-app-platform/introduction.md",tags:[],version:"current",frontMatter:{slug:"introduction",title:"Introduction",sidebar_label:"Introduction"},sidebar:"mainSidebar",next:{title:"Overview",permalink:"/docs/get-started/overview"}},l={},s=[{value:"Akamai Application Platform",id:"akamai-application-platform",level:2}];function p(t){const e={a:"a",h2:"h2",p:"p",...(0,a.a)(),...t.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(e.h2,{id:"akamai-application-platform",children:"Akamai Application Platform"}),"\n",(0,o.jsx)(e.p,{children:"Akamai Application Platform is a platform that combines developer and operations-centric tools, automation and self-service to streamline the application lifecycle when using Kubernetes. From development to delivery to management of containerized application workloads."}),"\n",(0,o.jsx)(e.p,{children:"The platform connects many of the technologies found in the Cloud Native Computing Foundation (CNCF) landscape in a way to provide direct value. No more re-inventing the wheel when building and maintaining your own Kubernetes based platform or bespoke stack."}),"\n",(0,o.jsxs)(e.p,{children:["The Application Platform is optimized to run on Linode Kubernetes Engine (LKE), but can also (manually) be installed on any other ",(0,o.jsx)(e.a,{href:"https://www.cncf.io/training/certification/software-conformance/",children:"conformant Kubernetes cluster"}),"."]})]})}function d(t={}){const{wrapper:e}={...(0,a.a)(),...t.components};return e?(0,o.jsx)(e,{...t,children:(0,o.jsx)(p,{...t})}):p(t)}},1151:(t,e,n)=>{n.d(e,{Z:()=>c,a:()=>r});var o=n(7294);const a={},i=o.createContext(a);function r(t){const e=o.useContext(i);return o.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function c(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(a):t.components||a:r(t.components),o.createElement(i.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/5cb822a3.2e004f9a.js b/assets/js/5cb822a3.2e004f9a.js deleted file mode 100644 index 097b06ea6..000000000 --- a/assets/js/5cb822a3.2e004f9a.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkredkubes_github_io=self.webpackChunkredkubes_github_io||[]).push([[9216],{752:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>r,contentTitle:()=>o,default:()=>h,frontMatter:()=>t,metadata:()=>a,toc:()=>d});var l=i(5893),s=i(1151);const t={slug:"linode",title:"Linode",sidebar_label:"Linode Kubernetes Engine"},o="Install Application Platform for LKE on LKE with Linode DNS",a={id:"get-started/installation/linode",title:"Linode",description:"Provision a LKE cluster in Cloud Manager or by using the Linode CLI and manually install Application Platform for LKE onto it by using a Linode Domain.",source:"@site/docs/get-started/installation/linode.md",sourceDirName:"get-started/installation",slug:"/get-started/installation/linode",permalink:"/docs/get-started/installation/linode",draft:!1,unlisted:!1,editUrl:"https://github.com/linode/linode.github.io/tree/main/docs/get-started/installation/linode.md",tags:[],version:"current",frontMatter:{slug:"linode",title:"Linode",sidebar_label:"Linode Kubernetes Engine"},sidebar:"mainSidebar",previous:{title:"Akamai Cloud",permalink:"/docs/get-started/installation/akamai-cloud"},next:{title:"Custom",permalink:"/docs/get-started/installation/custom"}},r={},d=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Provision a LKE cluster",id:"provision-a-lke-cluster",level:2},{value:"Using Cloud Manager",id:"using-cloud-manager",level:3},{value:"Using Linode CLI",id:"using-linode-cli",level:3},{value:"Create a Domain",id:"create-a-domain",level:2},{value:"Creating a Personal Access Token",id:"creating-a-personal-access-token",level:2},{value:"Create the values.yaml file",id:"create-the-valuesyaml-file",level:2},{value:"Install Application Platform for LKE",id:"install-application-platform-for-lke",level:2},{value:"Known issues",id:"known-issues",level:2},{value:"During install Pods get stuck in a Pending state",id:"during-install-pods-get-stuck-in-a-pending-state",level:3}];function c(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,s.a)(),...e.components};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(n.h1,{id:"install-application-platform-for-lke-on-lke-with-linode-dns",children:"Install Application Platform for LKE on LKE with Linode DNS"}),"\n",(0,l.jsx)(n.p,{children:"Provision a LKE cluster in Cloud Manager or by using the Linode CLI and manually install Application Platform for LKE onto it by using a Linode Domain."}),"\n",(0,l.jsx)(n.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["Create an account for Linode ",(0,l.jsx)(n.a,{href:"https://cloud.linode.com/",children:"here"})]}),"\n"]}),"\n",(0,l.jsx)(n.h2,{id:"provision-a-lke-cluster",children:"Provision a LKE cluster"}),"\n",(0,l.jsx)(n.h3,{id:"using-cloud-manager",children:"Using Cloud Manager"}),"\n",(0,l.jsx)(n.p,{children:"Provision a LKE cluster with the following specs:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:["Fill in the ",(0,l.jsx)(n.code,{children:"Cluster Label"})]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:["Use Kubernetes version: ",(0,l.jsx)(n.code,{children:"1.30"})]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:"Enable HA Control Plane"}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:"Add Node Pools. Select the Dedicated 8 GB Plan (with 8 GB RAM and 4 CPUs)"}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:["Wait until the nodes are in a ",(0,l.jsx)(n.code,{children:"Running"})," state"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:["Download the ",(0,l.jsx)(n.code,{children:"kubeconfig"})]}),"\n"]}),"\n"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"# Update the KUBECONFIG env to gain access to the cluster\nexport KUBECONFIG=/$CLUSTER_NAME-kubeconfig.yaml\n"})}),"\n",(0,l.jsx)(n.h3,{id:"using-linode-cli",children:"Using Linode CLI"}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.a,{href:"https://techdocs.akamai.com/cloud-computing/docs/install-and-configure-the-cli",children:"Install and configure"})," the CLI."]}),"\n",(0,l.jsx)(n.p,{children:"Provision a LKE cluster using the Linode CLI:"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"linode-cli lke cluster-create \\\n --label $CLUSTER_NAME \\\n --region $REGION \\\n --k8s_version 1.30 \\\n --control_plane.high_availability true \\\n --node_pools.type g6-dedicated-8 \\\n --node_pools.count 3\n"})}),"\n",(0,l.jsx)(n.p,{children:"And get the Kubecfg:"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"linode-cli get-kubeconfig --label $CLUSTER_NAME\nkubectl config use-context lke-ctx\n"})}),"\n",(0,l.jsx)(n.h2,{id:"create-a-domain",children:"Create a Domain"}),"\n",(0,l.jsxs)(n.p,{children:["If you want to learn about how to use Linode DNS Manager read the following tutorial: ",(0,l.jsx)(n.a,{href:"https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-dns-manager",children:"Get started with DNS Manager"}),"."]}),"\n",(0,l.jsx)(n.p,{children:"When you create a domain in Linode, make sure to set the TTL of the SOA Record to 30 seconds:"}),"\n",(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:"Click on your domain."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:["Click on the tree dots on the right of the SOA Record and click ",(0,l.jsx)(n.code,{children:"edit"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:["Change the default TTL to ",(0,l.jsx)(n.code,{children:"30 seconds"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:["Click ",(0,l.jsx)(n.code,{children:"Save"}),"."]}),"\n"]}),"\n"]}),"\n",(0,l.jsx)(n.h2,{id:"creating-a-personal-access-token",children:"Creating a Personal Access Token"}),"\n",(0,l.jsx)(n.p,{children:"Create a new Personal Access Token with Read/Write access for Domains:"}),"\n",(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:"Go to your profile on the top right."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:["Click on ",(0,l.jsx)(n.code,{children:"API Tokens"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:["Click on ",(0,l.jsx)(n.code,{children:"Create A Personal Access Token"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:["Add a ",(0,l.jsx)(n.code,{children:"Label"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:["Select the desired ",(0,l.jsx)(n.code,{children:"Expiry"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:["Select ",(0,l.jsx)(n.code,{children:"No Access"})," for all."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:["Select ",(0,l.jsx)(n.code,{children:"Read/Write"})," for ",(0,l.jsx)(n.code,{children:"Domains"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsxs)(n.p,{children:["Click ",(0,l.jsx)(n.code,{children:"Create Token"}),"."]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:"Copy your Personal Access Token."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:"Set environment variable for the token:"}),"\n"]}),"\n"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'LINODE_TOKEN=""\n'})}),"\n",(0,l.jsx)(n.h2,{id:"create-the-valuesyaml-file",children:"Create the values.yaml file"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"tee values.yaml<\notomi:\n hasExternalDNS: true\ndns:\n domainFilters: \n - \n provider:\n linode:\n apiToken: $LINODE_TOKEN\napps:\n cert-manager:\n issuer: letsencrypt\n stage: production\n email: admin@\nEOF\n"})}),"\n",(0,l.jsxs)(n.p,{children:["Adjust the ",(0,l.jsx)(n.code,{children:"domainSuffix"}),", ",(0,l.jsx)(n.code,{children:"domainFilters"})," and ",(0,l.jsx)(n.code,{children:"email"}),"!"]}),"\n",(0,l.jsx)(n.admonition,{type:"info",children:(0,l.jsxs)(n.p,{children:["You can also use a different DNS provider. See ",(0,l.jsx)(n.a,{href:"/docs/get-started/installation/dns",children:"here"})," for examples on how to use Akamai EdgeDNS, AWS Route53, Cloudflare DNS and many others."]})}),"\n",(0,l.jsx)(n.h2,{id:"install-application-platform-for-lke",children:"Install Application Platform for LKE"}),"\n",(0,l.jsx)(n.p,{children:"Install using Helm:"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"helm repo add apl https://linode.github.io/apl-core\nhelm repo update\nhelm install -f values.yaml apl apl/apl\n"})}),"\n",(0,l.jsx)(n.p,{children:"Monitor the logs of the installer job:"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"kubectl logs jobs/apl -n default -f\n"})}),"\n",(0,l.jsxs)(n.p,{children:["When the installer is finished, copy the ",(0,l.jsx)(n.code,{children:"url"})," and ",(0,l.jsx)(n.code,{children:"admin-password"})," from the console output."]}),"\n",(0,l.jsxs)(n.p,{children:["Follow the post installation steps ",(0,l.jsx)(n.a,{href:"/docs/get-started/installation/post-installation-steps",children:"here"}),"."]}),"\n",(0,l.jsx)(n.admonition,{type:"tip",children:(0,l.jsxs)(n.p,{children:["Like to learn how to use Application Platform for LKE? Go through the ",(0,l.jsx)(n.a,{href:"/docs/get-started/labs/overview",children:"Get Started labs"})]})}),"\n",(0,l.jsx)(n.h2,{id:"known-issues",children:"Known issues"}),"\n",(0,l.jsx)(n.h3,{id:"during-install-pods-get-stuck-in-a-pending-state",children:"During install Pods get stuck in a Pending state"}),"\n",(0,l.jsxs)(n.p,{children:["During the installation, multiple ",(0,l.jsx)(n.code,{children:"StatefullSets"})," are created that require a ",(0,l.jsx)(n.code,{children:"PersistentVolumeClaim"})," (PVC). Each PVC is attached to a ",(0,l.jsx)(n.code,{children:"Volume"})," in Linode. Volumes count towards the account limits. If you see Pods in a ",(0,l.jsx)(n.code,{children:"Pending"})," state, it might be that your're hitting the account limit."]}),"\n",(0,l.jsx)(n.p,{children:"What to do:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:"Delete unused resources in your Linode account (like unused Volumes)."}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:"Create a support ticket and request to increase your account limit."}),"\n"]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,l.jsx)(n,{...e,children:(0,l.jsx)(c,{...e})}):c(e)}},1151:(e,n,i)=>{i.d(n,{Z:()=>a,a:()=>o});var l=i(7294);const s={},t=l.createContext(s);function o(e){const n=l.useContext(t);return l.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),l.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/5cb822a3.b950257a.js b/assets/js/5cb822a3.b950257a.js new file mode 100644 index 000000000..8313afd19 --- /dev/null +++ b/assets/js/5cb822a3.b950257a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkredkubes_github_io=self.webpackChunkredkubes_github_io||[]).push([[9216],{752:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>r,contentTitle:()=>a,default:()=>h,frontMatter:()=>t,metadata:()=>o,toc:()=>d});var s=i(5893),l=i(1151);const t={slug:"linode",title:"Linode",sidebar_label:"Linode Kubernetes Engine"},a="Install Akamai Application Platform on LKE with DNS",o={id:"get-started/installation/linode",title:"Linode",description:"Provision a LKE cluster in Cloud Manager or by using the Linode CLI and manually install the Application Platform onto it by using a Linode Domain for DNS.",source:"@site/docs/get-started/installation/linode.md",sourceDirName:"get-started/installation",slug:"/get-started/installation/linode",permalink:"/docs/get-started/installation/linode",draft:!1,unlisted:!1,editUrl:"https://github.com/linode/linode.github.io/tree/main/docs/get-started/installation/linode.md",tags:[],version:"current",frontMatter:{slug:"linode",title:"Linode",sidebar_label:"Linode Kubernetes Engine"},sidebar:"mainSidebar",previous:{title:"Akamai Cloud",permalink:"/docs/get-started/installation/akamai-cloud"},next:{title:"Custom",permalink:"/docs/get-started/installation/custom"}},r={},d=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Provision a LKE cluster",id:"provision-a-lke-cluster",level:2},{value:"Using Cloud Manager",id:"using-cloud-manager",level:3},{value:"Using Linode CLI",id:"using-linode-cli",level:3},{value:"Create a Domain",id:"create-a-domain",level:2},{value:"Creating a Personal Access Token",id:"creating-a-personal-access-token",level:2},{value:"Create the values.yaml file",id:"create-the-valuesyaml-file",level:2},{value:"Install the Application Platform",id:"install-the-application-platform",level:2},{value:"Known issues",id:"known-issues",level:2},{value:"During install Pods get stuck in a Pending state",id:"during-install-pods-get-stuck-in-a-pending-state",level:3}];function c(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,l.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h1,{id:"install-akamai-application-platform-on-lke-with-dns",children:"Install Akamai Application Platform on LKE with DNS"}),"\n",(0,s.jsx)(n.p,{children:"Provision a LKE cluster in Cloud Manager or by using the Linode CLI and manually install the Application Platform onto it by using a Linode Domain for DNS."}),"\n",(0,s.jsx)(n.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Create an account for Linode ",(0,s.jsx)(n.a,{href:"https://cloud.linode.com/",children:"here"})]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"provision-a-lke-cluster",children:"Provision a LKE cluster"}),"\n",(0,s.jsx)(n.h3,{id:"using-cloud-manager",children:"Using Cloud Manager"}),"\n",(0,s.jsx)(n.p,{children:"Provision a LKE cluster with the following specs:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Fill in the ",(0,s.jsx)(n.code,{children:"Cluster Label"})]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Use Kubernetes version: ",(0,s.jsx)(n.code,{children:"1.30"})]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Enable HA Control Plane"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Add Node Pools. Select the Dedicated 8 GB Plan (with 8 GB RAM and 4 CPUs)"}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Wait until the nodes are in a ",(0,s.jsx)(n.code,{children:"Running"})," state"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Download the ",(0,s.jsx)(n.code,{children:"kubeconfig"})]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"# Update the KUBECONFIG env to gain access to the cluster\nexport KUBECONFIG=/$CLUSTER_NAME-kubeconfig.yaml\n"})}),"\n",(0,s.jsx)(n.h3,{id:"using-linode-cli",children:"Using Linode CLI"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.a,{href:"https://techdocs.akamai.com/cloud-computing/docs/install-and-configure-the-cli",children:"Install and configure"})," the CLI."]}),"\n",(0,s.jsx)(n.p,{children:"Provision a LKE cluster using the Linode CLI:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"linode-cli lke cluster-create \\\n --label $CLUSTER_NAME \\\n --region $REGION \\\n --k8s_version 1.30 \\\n --control_plane.high_availability true \\\n --node_pools.type g6-dedicated-8 \\\n --node_pools.count 3\n"})}),"\n",(0,s.jsx)(n.p,{children:"And get the Kubecfg:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"linode-cli get-kubeconfig --label $CLUSTER_NAME\nkubectl config use-context lke-ctx\n"})}),"\n",(0,s.jsx)(n.h2,{id:"create-a-domain",children:"Create a Domain"}),"\n",(0,s.jsxs)(n.p,{children:["If you want to learn about how to use Linode DNS Manager read the following tutorial: ",(0,s.jsx)(n.a,{href:"https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-dns-manager",children:"Get started with DNS Manager"}),"."]}),"\n",(0,s.jsx)(n.p,{children:"When you create a domain in Linode, make sure to set the TTL of the SOA Record to 30 seconds:"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Click on your domain."}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Click on the tree dots on the right of the SOA Record and click ",(0,s.jsx)(n.code,{children:"edit"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Change the default TTL to ",(0,s.jsx)(n.code,{children:"30 seconds"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Click ",(0,s.jsx)(n.code,{children:"Save"}),"."]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"creating-a-personal-access-token",children:"Creating a Personal Access Token"}),"\n",(0,s.jsx)(n.p,{children:"Create a new Personal Access Token with Read/Write access for Domains:"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Go to your profile on the top right."}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Click on ",(0,s.jsx)(n.code,{children:"API Tokens"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Click on ",(0,s.jsx)(n.code,{children:"Create A Personal Access Token"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Add a ",(0,s.jsx)(n.code,{children:"Label"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Select the desired ",(0,s.jsx)(n.code,{children:"Expiry"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Select ",(0,s.jsx)(n.code,{children:"No Access"})," for all."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Select ",(0,s.jsx)(n.code,{children:"Read/Write"})," for ",(0,s.jsx)(n.code,{children:"Domains"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Click ",(0,s.jsx)(n.code,{children:"Create Token"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Copy your Personal Access Token."}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Set environment variable for the token:"}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'LINODE_TOKEN=""\n'})}),"\n",(0,s.jsx)(n.h2,{id:"create-the-valuesyaml-file",children:"Create the values.yaml file"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"tee values.yaml<\notomi:\n hasExternalDNS: true\ndns:\n domainFilters: \n - \n provider:\n linode:\n apiToken: $LINODE_TOKEN\napps:\n cert-manager:\n issuer: letsencrypt\n stage: production\n email: admin@\nEOF\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Adjust the ",(0,s.jsx)(n.code,{children:"domainSuffix"}),", ",(0,s.jsx)(n.code,{children:"domainFilters"})," and ",(0,s.jsx)(n.code,{children:"email"}),"!"]}),"\n",(0,s.jsx)(n.admonition,{type:"info",children:(0,s.jsxs)(n.p,{children:["You can also use a different DNS provider. See ",(0,s.jsx)(n.a,{href:"/docs/get-started/installation/dns",children:"here"})," for examples on how to use Akamai EdgeDNS, AWS Route53, Cloudflare DNS and many others."]})}),"\n",(0,s.jsx)(n.h2,{id:"install-the-application-platform",children:"Install the Application Platform"}),"\n",(0,s.jsx)(n.p,{children:"Install using Helm:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"helm repo add apl https://linode.github.io/apl-core\nhelm repo update\nhelm install -f values.yaml apl apl/apl\n"})}),"\n",(0,s.jsx)(n.p,{children:"Monitor the logs of the installer job:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"kubectl logs jobs/apl -n default -f\n"})}),"\n",(0,s.jsxs)(n.p,{children:["When the installer is finished, copy the ",(0,s.jsx)(n.code,{children:"url"})," and ",(0,s.jsx)(n.code,{children:"admin-password"})," from the console output."]}),"\n",(0,s.jsxs)(n.p,{children:["Follow the post installation steps ",(0,s.jsx)(n.a,{href:"/docs/get-started/installation/post-installation-steps",children:"here"}),"."]}),"\n",(0,s.jsx)(n.admonition,{type:"tip",children:(0,s.jsxs)(n.p,{children:["Like to learn how to use Application Platform for LKE? Go through the ",(0,s.jsx)(n.a,{href:"/docs/get-started/labs/overview",children:"Get Started labs"})]})}),"\n",(0,s.jsx)(n.h2,{id:"known-issues",children:"Known issues"}),"\n",(0,s.jsx)(n.h3,{id:"during-install-pods-get-stuck-in-a-pending-state",children:"During install Pods get stuck in a Pending state"}),"\n",(0,s.jsxs)(n.p,{children:["During the installation, multiple ",(0,s.jsx)(n.code,{children:"StatefullSets"})," are created that require a ",(0,s.jsx)(n.code,{children:"PersistentVolumeClaim"})," (PVC). Each PVC is attached to a ",(0,s.jsx)(n.code,{children:"Volume"})," in Linode. Volumes count towards the account limits. If you see Pods in a ",(0,s.jsx)(n.code,{children:"Pending"})," state, it might be that your're hitting the account limit."]}),"\n",(0,s.jsx)(n.p,{children:"What to do:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Delete unused resources in your Linode account (like unused Volumes)."}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Create a support ticket and request to increase your account limit."}),"\n"]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,l.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},1151:(e,n,i)=>{i.d(n,{Z:()=>o,a:()=>a});var s=i(7294);const l={},t=s.createContext(l);function a(e){const n=s.useContext(t);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:a(e.components),s.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.3f637cc0.js b/assets/js/935f2afb.3f637cc0.js new file mode 100644 index 000000000..b1028856b --- /dev/null +++ b/assets/js/935f2afb.3f637cc0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkredkubes_github_io=self.webpackChunkredkubes_github_io||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"mainSidebar":[{"type":"category","label":"Akamai Application Platform","items":[{"type":"link","label":"Introduction","href":"/docs/akamai-app-platform/introduction","docId":"akamai-app-platform/introduction","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Getting Started","items":[{"type":"link","label":"Overview","href":"/docs/get-started/overview","docId":"get-started/overview","unlisted":false},{"type":"category","label":"Installation","items":[{"type":"link","label":"Overview","href":"/docs/get-started/installation/overview","docId":"get-started/installation/overview","unlisted":false},{"type":"link","label":"Akamai Cloud","href":"/docs/get-started/installation/akamai-cloud","docId":"get-started/installation/akamai-cloud","unlisted":false},{"type":"link","label":"Linode Kubernetes Engine","href":"/docs/get-started/installation/linode","docId":"get-started/installation/linode","unlisted":false},{"type":"link","label":"Custom","href":"/docs/get-started/installation/custom","docId":"get-started/installation/custom","unlisted":false},{"type":"link","label":"Helm","href":"/docs/get-started/installation/helm","docId":"get-started/installation/helm","unlisted":false},{"type":"link","label":"DNS","href":"/docs/get-started/installation/dns","docId":"get-started/installation/dns","unlisted":false},{"type":"link","label":"OIDC","href":"/docs/get-started/installation/oidc","docId":"get-started/installation/oidc","unlisted":false},{"type":"link","label":"SOPS","href":"/docs/get-started/installation/sops","docId":"get-started/installation/sops","unlisted":false},{"type":"link","label":"Entrypoint","href":"/docs/get-started/installation/entrypoint","docId":"get-started/installation/entrypoint","unlisted":false},{"type":"link","label":"BYO Wild Card Cert","href":"/docs/get-started/installation/byo-wildcard-cert","docId":"get-started/installation/byo-wildcard","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"link","label":"Post Installation Steps","href":"/docs/get-started/installation/post-installation-steps","docId":"get-started/installation/post-install-steps","unlisted":false},{"type":"category","label":"Hands-on Labs","items":[{"type":"link","label":"Labs Overview","href":"/docs/get-started/labs/overview","docId":"get-started/labs/labs-overview","unlisted":false},{"type":"link","label":"Lab Prerequisites","href":"/docs/get-started/labs/lab-prerequisites","docId":"get-started/labs/labs-prerequisites","unlisted":false},{"type":"link","label":"Create GIT repos","href":"/docs/get-started/labs/create-repos","docId":"get-started/labs/create-repos","unlisted":false},{"type":"link","label":"Build Images","href":"/docs/get-started/labs/build-images","docId":"get-started/labs/build-images","unlisted":false},{"type":"link","label":"Trigger Builds","href":"/docs/get-started/labs/trigger-builds","docId":"get-started/labs/trigger-builds","unlisted":false},{"type":"link","label":"Push Images","href":"/docs/get-started/labs/push-images","docId":"get-started/labs/push-images","unlisted":false},{"type":"link","label":"Create Sealed Secrets","href":"/docs/get-started/labs/create-sealed-secrets","docId":"get-started/labs/create-sealed-secrets","unlisted":false},{"type":"link","label":"Using Argo CD","href":"/docs/get-started/labs/using-argo-cd","docId":"get-started/labs/using-argo-cd","unlisted":false},{"type":"link","label":"Use the Catalog","href":"/docs/get-started/labs/use-catalog","docId":"get-started/labs/use-catalog","unlisted":false},{"type":"link","label":"Create Workloads","href":"/docs/get-started/labs/create-workloads","docId":"get-started/labs/create-workloads","unlisted":false},{"type":"link","label":"Expose Services","href":"/docs/get-started/labs/expose-services","docId":"get-started/labs/expose-services","unlisted":false},{"type":"link","label":"Configure Auto Image Updater","href":"/docs/get-started/labs/auto-image-update","docId":"get-started/labs/auto-image-update","unlisted":false},{"type":"link","label":"Create Projects","href":"/docs/get-started/labs/create-projects","docId":"get-started/labs/create-projects","unlisted":false},{"type":"link","label":"Create a Database","href":"/docs/get-started/labs/create-postgresql-db","docId":"get-started/labs/create-postgresql-db","unlisted":false},{"type":"link","label":"Scan Images","href":"/docs/get-started/labs/scan-images","docId":"get-started/labs/scan-images","unlisted":false},{"type":"link","label":"Scan Containers","href":"/docs/get-started/labs/scan-containers","docId":"get-started/labs/scan-containers","unlisted":false},{"type":"link","label":"View Container Logs","href":"/docs/get-started/labs/view-logs","docId":"get-started/labs/view-logs","unlisted":false},{"type":"link","label":"View Container Metrics","href":"/docs/get-started/labs/view-metrics","docId":"get-started/labs/view-metrics","unlisted":false},{"type":"link","label":"Monitor Workloads","href":"/docs/get-started/labs/monitor-workloads","docId":"get-started/labs/monitor-workloads","unlisted":false},{"type":"link","label":"Using custom metrics","href":"/docs/get-started/labs/custom-metrics","docId":"get-started/labs/custom-metrics","unlisted":false},{"type":"link","label":"Create Custom Dashboards","href":"/docs/get-started/labs/custom-dashboards","docId":"get-started/labs/custom-dashboards","unlisted":false},{"type":"link","label":"Create Custom Rules","href":"/docs/get-started/labs/custom-rules","docId":"get-started/labs/custom-rules","unlisted":false},{"type":"link","label":"Create Network Policies","href":"/docs/get-started/labs/create-netpols","docId":"get-started/labs/create-netpols","unlisted":false},{"type":"link","label":"Use OpenTelemery","href":"/docs/get-started/labs/use-otel","docId":"get-started/labs/use-otel","unlisted":false},{"type":"link","label":"Canary Deployment","href":"/docs/get-started/labs/canary-deployment","docId":"get-started/labs/canary-deployment","unlisted":false},{"type":"link","label":"Create RabbitMQ cluster","href":"/docs/get-started/labs/create-rabbitmq-cluster","docId":"get-started/labs/create-rabbitmq-cluster","unlisted":false}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true},{"type":"category","label":"For Developers","items":[{"type":"category","label":"Console - Team View","items":[{"type":"link","label":"Overview","href":"/docs/for-devs/console/overview","docId":"for-devs/console/overview","unlisted":false},{"type":"link","label":"Deploy Changes","href":"/docs/for-devs/console/deploy-changes","docId":"for-devs/console/deploy-changes","unlisted":false},{"type":"link","label":"Dashboard","href":"/docs/for-devs/console/dashboard","docId":"for-devs/console/dashboard","unlisted":false},{"type":"link","label":"Apps","href":"/docs/for-devs/console/apps","docId":"for-devs/console/apps","unlisted":false},{"type":"link","label":"Catalog","href":"/docs/for-devs/console/catalog","docId":"for-devs/console/catalog","unlisted":false},{"type":"link","label":"Projects","href":"/docs/for-devs/console/projects","docId":"for-devs/console/projects","unlisted":false},{"type":"link","label":"Builds","href":"/docs/for-devs/console/builds","docId":"for-devs/console/builds","unlisted":false},{"type":"link","label":"Workloads","href":"/docs/for-devs/console/workloads","docId":"for-devs/console/workloads","unlisted":false},{"type":"link","label":"Network Policies","href":"/docs/for-devs/console/netpols","docId":"for-devs/console/netpols","unlisted":false},{"type":"link","label":"Services","href":"/docs/for-devs/console/services","docId":"for-devs/console/services","unlisted":false},{"type":"link","label":"Security policies","href":"/docs/for-devs/console/security-policies","docId":"for-devs/console/security-policies","unlisted":false},{"type":"link","label":"Sealed Secrets","href":"/docs/for-devs/console/secrets","docId":"for-devs/console/sealed-secrets","unlisted":false},{"type":"link","label":"Shell","href":"/docs/for-devs/console/shell","docId":"for-devs/console/shell","unlisted":false},{"type":"link","label":"Settings","href":"/docs/for-devs/console/settings","docId":"for-devs/console/settings","unlisted":false}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true},{"type":"category","label":"For Platform Admins","items":[{"type":"category","label":"Console - Platform View","items":[{"type":"link","label":"Overview","href":"/docs/for-ops/console/overview","docId":"for-ops/console/overview","unlisted":false},{"type":"link","label":"Dashboard","href":"/docs/for-ops/console/dashboard","docId":"for-ops/console/dashboard","unlisted":false},{"type":"link","label":"Apps","href":"/docs/for-ops/console/apps","docId":"for-ops/console/apps","unlisted":false},{"type":"link","label":"Teams","href":"/docs/for-ops/console/teams","docId":"for-ops/console/teams","unlisted":false},{"type":"link","label":"Projects","href":"/docs/for-ops/console/projects","docId":"for-ops/console/projects","unlisted":false},{"type":"link","label":"Builds","href":"/docs/for-ops/console/builds","docId":"for-ops/console/builds","unlisted":false},{"type":"link","label":"Workloads","href":"/docs/for-ops/console/workloads","docId":"for-ops/console/workloads","unlisted":false},{"type":"link","label":"Network Policies","href":"/docs/for-ops/console/netpols","docId":"for-ops/console/netpols","unlisted":false},{"type":"link","label":"Services","href":"/docs/for-ops/console/services","docId":"for-ops/console/services","unlisted":false},{"type":"link","label":"Backups","href":"/docs/for-ops/console/backups","docId":"for-ops/console/backups","unlisted":false},{"type":"link","label":"Maintenance","href":"/docs/for-ops/console/maintenance","docId":"for-ops/console/maintenance","unlisted":false},{"type":"category","label":"Settings","items":[{"type":"link","label":"Cluster","href":"/docs/for-ops/console/settings/cluster","docId":"for-ops/console/settings/cluster","unlisted":false},{"type":"link","label":"General","href":"/docs/for-ops/console/settings/general","docId":"for-ops/console/settings/general","unlisted":false},{"type":"link","label":"Key Management","href":"/docs/for-ops/console/settings/key-management","docId":"for-ops/console/settings/key-management","unlisted":false},{"type":"link","label":"Alerts","href":"/docs/for-ops/console/settings/alerts","docId":"for-ops/console/settings/alerts","unlisted":false},{"type":"link","label":"DNS","href":"/docs/for-ops/console/settings/dns","docId":"for-ops/console/settings/dns","unlisted":false},{"type":"link","label":"Ingress","href":"/docs/for-ops/console/settings/ingress","docId":"for-ops/console/settings/ingress","unlisted":false},{"type":"link","label":"OIDC","href":"/docs/for-ops/console/settings/oidc","docId":"for-ops/console/settings/oidc","unlisted":false},{"type":"link","label":"SMTP","href":"/docs/for-ops/console/settings/smtp","docId":"for-ops/console/settings/smtp","unlisted":false},{"type":"link","label":"Backup","href":"/docs/for-ops/console/settings/backup","docId":"for-ops/console/settings/backup","unlisted":false},{"type":"link","label":"Object Storage","href":"/docs/for-ops/console/settings/obj","docId":"for-ops/console/settings/obj","unlisted":false}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true},{"type":"category","label":"How To","items":[{"type":"link","label":"Overview","href":"/docs/for-ops/how-to/overview","docId":"for-ops/how-to/overview","unlisted":false},{"type":"link","label":"Manage the Catalog","href":"/docs/for-ops/how-to/catalog","docId":"for-ops/how-to/use-catalog","unlisted":false},{"type":"link","label":"Manage Ingress Controllers","href":"/docs/for-ops/how-to/ingress-classes","docId":"for-ops/how-to/ingress-classes","unlisted":false},{"type":"link","label":"Use Team Admin","href":"/docs/for-ops/how-to/use-team-admin","docId":"for-ops/how-to/use-team-admin","unlisted":false},{"type":"link","label":"Use Core only","href":"/docs/for-ops/how-to/core-only","docId":"for-ops/how-to/core-only","unlisted":false},{"type":"link","label":"Clone the Platform","href":"/docs/for-ops/how-to/clone-apl","docId":"for-ops/how-to/clone-apl","unlisted":false},{"type":"link","label":"Backups","href":"/docs/for-ops/how-to/backups","docId":"for-ops/how-to/backups","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"CLI","items":[{"type":"link","label":"Installation","href":"/docs/for-ops/cli/installation","docId":"for-ops/cli/installation","unlisted":false},{"type":"link","label":"Using the CLI","href":"/docs/for-ops/cli/deploying","docId":"for-ops/cli/deploying","unlisted":false},{"type":"link","label":"Known issues","href":"/docs/for-ops/cli/known-issues","docId":"for-ops/cli/known-issues","unlisted":false},{"type":"category","label":"CLI Commands","items":[{"type":"link","label":"otomi apply","href":"/docs/for-ops/cli/apply","docId":"for-ops/cli/apply","unlisted":false},{"type":"link","label":"otomi bash","href":"/docs/for-ops/cli/bash","docId":"for-ops/cli/bash","unlisted":false},{"type":"link","label":"otomi bootstrap","href":"/docs/for-ops/cli/bootstrap","docId":"for-ops/cli/bootstrap","unlisted":false},{"type":"link","label":"otomi commit","href":"/docs/for-ops/cli/commit","docId":"for-ops/cli/commit","unlisted":false},{"type":"link","label":"otomi decrypt","href":"/docs/for-ops/cli/decrypt","docId":"for-ops/cli/decrypt","unlisted":false},{"type":"link","label":"otomi destroy","href":"/docs/for-ops/cli/destroy","docId":"for-ops/cli/destroy","unlisted":false},{"type":"link","label":"otomi diff","href":"/docs/for-ops/cli/diff","docId":"for-ops/cli/diff","unlisted":false},{"type":"link","label":"otomi encrypt","href":"/docs/for-ops/cli/encrypt","docId":"for-ops/cli/encrypt","unlisted":false},{"type":"link","label":"otomi lint","href":"/docs/for-ops/cli/lint","docId":"for-ops/cli/lint","unlisted":false},{"type":"link","label":"otomi pull","href":"/docs/for-ops/cli/pull","docId":"for-ops/cli/pull","unlisted":false},{"type":"link","label":"otomi rotate-keys","href":"/docs/for-ops/cli/rotate-keys","docId":"for-ops/cli/rotate-keys","unlisted":false},{"type":"link","label":"otomi status","href":"/docs/for-ops/cli/status","docId":"for-ops/cli/status","unlisted":false},{"type":"link","label":"otomi sync","href":"/docs/for-ops/cli/sync","docId":"for-ops/cli/sync","unlisted":false},{"type":"link","label":"otomi template","href":"/docs/for-ops/cli/template","docId":"for-ops/cli/template","unlisted":false},{"type":"link","label":"otomi test","href":"/docs/for-ops/cli/test","docId":"for-ops/cli/test","unlisted":false},{"type":"link","label":"otomi validate-templates","href":"/docs/for-ops/cli/validate-templates","docId":"for-ops/cli/validate-templates","unlisted":false},{"type":"link","label":"otomi validate-values","href":"/docs/for-ops/cli/validate-values","docId":"for-ops/cli/validate-values","unlisted":false},{"type":"link","label":"otomi values","href":"/docs/for-ops/cli/values","docId":"for-ops/cli/values","unlisted":false},{"type":"link","label":"otomi x","href":"/docs/for-ops/cli/x","docId":"for-ops/cli/x","unlisted":false}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true},{"type":"category","label":"SRE","items":[{"type":"link","label":"Overview","href":"/docs/for-ops/sre/overview","docId":"for-ops/sre/overview","unlisted":false},{"type":"link","label":"Daily Routine","href":"/docs/for-ops/sre/daily","docId":"for-ops/sre/daily","unlisted":false},{"type":"link","label":"Troubleshooting","href":"/docs/for-ops/sre/troubleshooting","docId":"for-ops/sre/troubleshooting","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Integrated Apps","items":[{"type":"link","label":"Apps Overview","href":"/docs/apps/apps-overview","docId":"apps/overview","unlisted":false},{"type":"link","label":"Alertmanager","href":"/docs/apps/alertmanager","docId":"apps/alertmanager","unlisted":false},{"type":"link","label":"Argo CD","href":"/docs/apps/argocd","docId":"apps/argocd","unlisted":false},{"type":"link","label":"Cert-Manager","href":"/docs/apps/certmanager","docId":"apps/certmanager","unlisted":false},{"type":"link","label":"Cloudnative Postgresql","href":"/docs/apps/cloudnativepg","docId":"apps/cloudnativepg","unlisted":false},{"type":"link","label":"Drone","href":"/docs/apps/drone","docId":"apps/drone","unlisted":false},{"type":"link","label":"ExternalDNS","href":"/docs/apps/external-dns","docId":"apps/external-dns","unlisted":false},{"type":"link","label":"Falco","href":"/docs/apps/falco","docId":"apps/falco","unlisted":false},{"type":"link","label":"Gitea","href":"/docs/apps/gitea","docId":"apps/gitea","unlisted":false},{"type":"link","label":"Grafana","href":"/docs/apps/grafana","docId":"apps/grafana","unlisted":false},{"type":"link","label":"Harbor","href":"/docs/apps/harbor","docId":"apps/harbor","unlisted":false},{"type":"link","label":"Ingress-nginx","href":"/docs/apps/ingress-nginx","docId":"apps/ingress-nginx","unlisted":false},{"type":"link","label":"Istio","href":"/docs/apps/istio","docId":"apps/istio","unlisted":false},{"type":"link","label":"Jaeger","href":"/docs/apps/jaeger","docId":"apps/jaeger","unlisted":false},{"type":"link","label":"Keycloak","href":"/docs/apps/keycloak","docId":"apps/keycloak","unlisted":false},{"type":"link","label":"Knative","href":"/docs/apps/knative","docId":"apps/knative","unlisted":false},{"type":"link","label":"Kiali","href":"/docs/apps/kiali","docId":"apps/kiali","unlisted":false},{"type":"link","label":"Kyverno","href":"/docs/apps/kyverno","docId":"apps/kyverno","unlisted":false},{"type":"link","label":"Kured","href":"/docs/apps/kured","docId":"apps/kured","unlisted":false},{"type":"link","label":"Loki","href":"/docs/apps/loki","docId":"apps/loki","unlisted":false},{"type":"link","label":"Minio","href":"/docs/apps/minio","docId":"apps/minio","unlisted":false},{"type":"link","label":"Open Telemetry Operator","href":"/docs/apps/otel","docId":"apps/otel","unlisted":false},{"type":"link","label":"Prometheus","href":"/docs/apps/prometheus","docId":"apps/prometheus","unlisted":false},{"type":"link","label":"RabbitMQ","href":"/docs/apps/rabbitmq","docId":"apps/rabbitmq","unlisted":false},{"type":"link","label":"Sealed Secrets","href":"/docs/apps/sealed-secrets","docId":"apps/sealedsecrets","unlisted":false},{"type":"link","label":"Grafana Tempo","href":"/docs/apps/tempo","docId":"apps/tempo","unlisted":false},{"type":"link","label":"Trivy Operator","href":"/docs/apps/trivy","docId":"apps/trivy","unlisted":false},{"type":"link","label":"Tekton","href":"/docs/apps/tekton","docId":"apps/tekton","unlisted":false},{"type":"link","label":"Velero","href":"/docs/apps/velero","docId":"apps/velero","unlisted":false}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true}]},"docs":{"akamai-app-platform/introduction":{"id":"akamai-app-platform/introduction","title":"Introduction","description":"Akamai Application Platform","sidebar":"mainSidebar"},"apps/alertmanager":{"id":"apps/alertmanager","title":"Alertmanager","description":"About","sidebar":"mainSidebar"},"apps/argocd":{"id":"apps/argocd","title":"Argo CD","description":"About","sidebar":"mainSidebar"},"apps/certmanager":{"id":"apps/certmanager","title":"CertManager","description":"About","sidebar":"mainSidebar"},"apps/cloudnativepg":{"id":"apps/cloudnativepg","title":"Cloudnative Postgresql","description":"About","sidebar":"mainSidebar"},"apps/drone":{"id":"apps/drone","title":"Drone","description":"Drone has been deprecated. We advise to use Tekton if you would need to create custom CI/CD pipelines.","sidebar":"mainSidebar"},"apps/external-dns":{"id":"apps/external-dns","title":"External-DNS","description":"About","sidebar":"mainSidebar"},"apps/falco":{"id":"apps/falco","title":"Falco","description":"About","sidebar":"mainSidebar"},"apps/gitea":{"id":"apps/gitea","title":"Gitea","description":"About","sidebar":"mainSidebar"},"apps/grafana":{"id":"apps/grafana","title":"Grafana","description":"About","sidebar":"mainSidebar"},"apps/harbor":{"id":"apps/harbor","title":"Harbor","description":"About","sidebar":"mainSidebar"},"apps/ingress-nginx":{"id":"apps/ingress-nginx","title":"NGINX Ingress","description":"About","sidebar":"mainSidebar"},"apps/istio":{"id":"apps/istio","title":"Istio","description":"About","sidebar":"mainSidebar"},"apps/jaeger":{"id":"apps/jaeger","title":"Jaeger","description":"About","sidebar":"mainSidebar"},"apps/keycloak":{"id":"apps/keycloak","title":"Keycloak","description":"About","sidebar":"mainSidebar"},"apps/kiali":{"id":"apps/kiali","title":"Kiali","description":"About","sidebar":"mainSidebar"},"apps/knative":{"id":"apps/knative","title":"Knative","description":"About","sidebar":"mainSidebar"},"apps/kured":{"id":"apps/kured","title":"Kured","description":"About","sidebar":"mainSidebar"},"apps/kyverno":{"id":"apps/kyverno","title":"Kyverno","description":"About","sidebar":"mainSidebar"},"apps/loki":{"id":"apps/loki","title":"Grafana Loki","description":"About","sidebar":"mainSidebar"},"apps/minio":{"id":"apps/minio","title":"Minio","description":"About","sidebar":"mainSidebar"},"apps/otel":{"id":"apps/otel","title":"Open Telemetry Operator","description":"About","sidebar":"mainSidebar"},"apps/overview":{"id":"apps/overview","title":"Apps Overview","description":"Application Platform for Linode Kubernetes Engine (LKE) integrated Applications","sidebar":"mainSidebar"},"apps/prometheus":{"id":"apps/prometheus","title":"Prometheus","description":"About","sidebar":"mainSidebar"},"apps/rabbitmq":{"id":"apps/rabbitmq","title":"RabbitMQ","description":"About","sidebar":"mainSidebar"},"apps/sealedsecrets":{"id":"apps/sealedsecrets","title":"Sealed Secrets","description":"About","sidebar":"mainSidebar"},"apps/tekton":{"id":"apps/tekton","title":"Tekton","description":"About","sidebar":"mainSidebar"},"apps/tempo":{"id":"apps/tempo","title":"Grafana Tempo","description":"About","sidebar":"mainSidebar"},"apps/thanos":{"id":"apps/thanos","title":"Thanos","description":"About"},"apps/trivy":{"id":"apps/trivy","title":"Trivy Operator","description":"About","sidebar":"mainSidebar"},"apps/velero":{"id":"apps/velero","title":"Velero","description":"About","sidebar":"mainSidebar"},"for-devs/console/apps":{"id":"for-devs/console/apps","title":"Team Apps","description":"The Apps that are available for teams to use. There are 2 types of Apps:","sidebar":"mainSidebar"},"for-devs/console/builds":{"id":"for-devs/console/builds","title":"Team Builds","description":"A Build is a self-service feature for building OCI compliant images based on application source code and store the image in a private Team registry in Harbor.","sidebar":"mainSidebar"},"for-devs/console/catalog":{"id":"for-devs/console/catalog","title":"Catalog","description":"The Catalog is a library of curated Helm charts to create Kubernetes resources. By default the Catalog contains a set of Helm charts provided to get started quickly, but they can also be modified depending on your requirements or be removed from the Catalog.","sidebar":"mainSidebar"},"for-devs/console/dashboard":{"id":"for-devs/console/dashboard","title":"Team Dashboard","description":"The team dashboard gives a global overview of information most relevant to the team.","sidebar":"mainSidebar"},"for-devs/console/deploy-changes":{"id":"for-devs/console/deploy-changes","title":"Deploy changes","description":"When a self-service form (Build, Workload, Service, Backup, Secret) is submitted, a commit in the otomi-values Git repository will be prepared. When the commit is prepared, the Deploy Changes button in the top of the left menu will become active. To commit your changes, click on the Deploy Changes button.","sidebar":"mainSidebar"},"for-devs/console/netpols":{"id":"for-devs/console/netpols","title":"Team Network Policies","description":"A Network Policy is a self-service feature for creating Kubernetes Network Policies (Ingress) and Istio Service Entries (Egress).","sidebar":"mainSidebar"},"for-devs/console/overview":{"id":"for-devs/console/overview","title":"Overview","description":"Console","sidebar":"mainSidebar"},"for-devs/console/projects":{"id":"for-devs/console/projects","title":"Team Projects","description":"A Project is a collection of a Build, a Workload and a Service in ONE form.","sidebar":"mainSidebar"},"for-devs/console/sealed-secrets":{"id":"for-devs/console/sealed-secrets","title":"Team Secrets","description":"Sealed Secrets are encrypted Kubernetes Secrets. The encrypted secrets are stored in the Values Git repository. When a Sealed Secrets secret is created in the Console, the Kubernetes Secret will appear in the Team\'s namespace and can be used as you would use any secret that you would have created directly.","sidebar":"mainSidebar"},"for-devs/console/security-policies":{"id":"for-devs/console/security-policies","title":"Security policies","description":"Ask your platform administrator to activate the Kyverno App to use this feature.","sidebar":"mainSidebar"},"for-devs/console/services":{"id":"for-devs/console/services","title":"Team Services","description":"A Service is a self-service feature for:","sidebar":"mainSidebar"},"for-devs/console/settings":{"id":"for-devs/console/settings","title":"Team Settings","description":"Based on self-service options allowed by the platfrom administrator, team members can change the settings of their team.","sidebar":"mainSidebar"},"for-devs/console/shell":{"id":"for-devs/console/shell","title":"Shell (TTY Console)","description":"The Shell feature allows to start a web based shell in Console with Kube API access. When starting a shell, a dedicated shell instance will be started for the user. The shell includes the following tools:","sidebar":"mainSidebar"},"for-devs/console/workloads":{"id":"for-devs/console/workloads","title":"Team Workloads","description":"A Workload is a self-service feature for creating Kubernetes resources using Helm charts from the Catalog.","sidebar":"mainSidebar"},"for-ops/cli/apply":{"id":"for-ops/cli/apply","title":"otomi apply","description":"otomi apply [options]","sidebar":"mainSidebar"},"for-ops/cli/bash":{"id":"for-ops/cli/bash","title":"otomi bash","description":"otomi bash","sidebar":"mainSidebar"},"for-ops/cli/bootstrap":{"id":"for-ops/cli/bootstrap","title":"otomi bootstrap","description":"otomi bootstrap [options]","sidebar":"mainSidebar"},"for-ops/cli/commit":{"id":"for-ops/cli/commit","title":"otomi commit","description":"otomi commit [options]","sidebar":"mainSidebar"},"for-ops/cli/decrypt":{"id":"for-ops/cli/decrypt","title":"otomi decrypt","description":"otomi decrypt [options]","sidebar":"mainSidebar"},"for-ops/cli/deploying":{"id":"for-ops/cli/deploying","title":"Using the CLI","description":"1. Initialize a values repo","sidebar":"mainSidebar"},"for-ops/cli/destroy":{"id":"for-ops/cli/destroy","title":"otomi destroy","description":"otomi destroy [options]","sidebar":"mainSidebar"},"for-ops/cli/diff":{"id":"for-ops/cli/diff","title":"otomi diff","description":"otomi diff [options]","sidebar":"mainSidebar"},"for-ops/cli/encrypt":{"id":"for-ops/cli/encrypt","title":"otomi encrypt","description":"otomi encrypt [files...] [options]","sidebar":"mainSidebar"},"for-ops/cli/installation":{"id":"for-ops/cli/installation","title":"Installing and using the CLI","description":"Prerequisites","sidebar":"mainSidebar"},"for-ops/cli/known-issues":{"id":"for-ops/cli/known-issues","title":"Known Issues","description":"The otomi (diff|apply|sync|template) commands are delegated to helmfile, which in turn delegates the deployment work to helm. Sometimes it is not clear wether the issue is from Helm or Helmfile, so we will address them together in this section.","sidebar":"mainSidebar"},"for-ops/cli/lint":{"id":"for-ops/cli/lint","title":"otomi lint","description":"otomi lint [options]","sidebar":"mainSidebar"},"for-ops/cli/pull":{"id":"for-ops/cli/pull","title":"otomi pull","description":"otomi pull [options]","sidebar":"mainSidebar"},"for-ops/cli/rotate-keys":{"id":"for-ops/cli/rotate-keys","title":"otomi rotate-keys","description":"otomi rotate-keys [options]","sidebar":"mainSidebar"},"for-ops/cli/status":{"id":"for-ops/cli/status","title":"otomi status","description":"otomi status [options]","sidebar":"mainSidebar"},"for-ops/cli/sync":{"id":"for-ops/cli/sync","title":"otomi sync","description":"otomi sync [options]","sidebar":"mainSidebar"},"for-ops/cli/template":{"id":"for-ops/cli/template","title":"otomi template","description":"otomi template [options]","sidebar":"mainSidebar"},"for-ops/cli/test":{"id":"for-ops/cli/test","title":"otomi test","description":"otomi test [options]","sidebar":"mainSidebar"},"for-ops/cli/validate-templates":{"id":"for-ops/cli/validate-templates","title":"otomi validate-templates","description":"otomi validate-templates [options]","sidebar":"mainSidebar"},"for-ops/cli/validate-values":{"id":"for-ops/cli/validate-values","title":"otomi validate-values","description":"otomi validate-values [options]","sidebar":"mainSidebar"},"for-ops/cli/values":{"id":"for-ops/cli/values","title":"otomi values","description":"otomi values [options]","sidebar":"mainSidebar"},"for-ops/cli/x":{"id":"for-ops/cli/x","title":"otomi x","description":"otomi x","sidebar":"mainSidebar"},"for-ops/console/apps":{"id":"for-ops/console/apps","title":"Platform - Apps","description":"The apps section lists all apps available.","sidebar":"mainSidebar"},"for-ops/console/backups":{"id":"for-ops/console/backups","title":"Platform - Backups","description":"To enable this feature, first make sure Velero is activated and a Linode API Token is added to the Backup section in the Settings.","sidebar":"mainSidebar"},"for-ops/console/builds":{"id":"for-ops/console/builds","title":"Platform - Builds","description":"To enable this feature, first make sure Harbor is activated. To push images to Harbor, DNS and trusted certificates (Lets encrypt with production certificates) need to be configured.","sidebar":"mainSidebar"},"for-ops/console/dashboard":{"id":"for-ops/console/dashboard","title":"Platform Dashboard","description":"The platform dashboard gives a global overview of information most relevant for the platform admin. In the top bar, select the View: platform.","sidebar":"mainSidebar"},"for-ops/console/deploy-changes":{"id":"for-ops/console/deploy-changes","title":"Deploy changes","description":"When a change has been made, by pressing Submit, the Deploy Changes button will light up to deploy the changes you have made in the Console. This will create a commit of the changes to the values repository in Gitea and trigger the Drone pipeline run to generate the new Values used for all Argo CD applications."},"for-ops/console/maintenance":{"id":"for-ops/console/maintenance","title":"Platform - Maintenance","description":"Maintenance actions available for platform administrators.","sidebar":"mainSidebar"},"for-ops/console/netpols":{"id":"for-ops/console/netpols","title":"Platform - Netwok Policies","description":"All known Network Policies on the platform are listed here. Network Policies can be sorted based on:","sidebar":"mainSidebar"},"for-ops/console/overview":{"id":"for-ops/console/overview","title":"Overview","description":"The Console","sidebar":"mainSidebar"},"for-ops/console/projects":{"id":"for-ops/console/projects","title":"Projects","description":"A Project is a collection of a Build, a Workload and a Service in ONE self-service form. When a user creates a project, the name of the project will be used for all created resources (a build, a workload and a service).","sidebar":"mainSidebar"},"for-ops/console/services":{"id":"for-ops/console/services","title":"Platform - Services","description":"All known Services on the platform are listed here. Services can be sorted based on:","sidebar":"mainSidebar"},"for-ops/console/settings/alerts":{"id":"for-ops/console/settings/alerts","title":"Platform settings","description":"Alerts","sidebar":"mainSidebar"},"for-ops/console/settings/backup":{"id":"for-ops/console/settings/backup","title":"Platform settings","description":"Backup","sidebar":"mainSidebar"},"for-ops/console/settings/cluster":{"id":"for-ops/console/settings/cluster","title":"Platform settings","description":"Cluster","sidebar":"mainSidebar"},"for-ops/console/settings/dns":{"id":"for-ops/console/settings/dns","title":"Platform settings","description":"DNS","sidebar":"mainSidebar"},"for-ops/console/settings/general":{"id":"for-ops/console/settings/general","title":"Platform settings","description":"General Settings","sidebar":"mainSidebar"},"for-ops/console/settings/ingress":{"id":"for-ops/console/settings/ingress","title":"Platform settings","description":"Ingress","sidebar":"mainSidebar"},"for-ops/console/settings/key-management":{"id":"for-ops/console/settings/key-management","title":"Platform settings","description":"Key management","sidebar":"mainSidebar"},"for-ops/console/settings/obj":{"id":"for-ops/console/settings/obj","title":"Platform settings","description":"Object Storage","sidebar":"mainSidebar"},"for-ops/console/settings/oidc":{"id":"for-ops/console/settings/oidc","title":"Platform settings","description":"OIDC","sidebar":"mainSidebar"},"for-ops/console/settings/smtp":{"id":"for-ops/console/settings/smtp","title":"Platform settings","description":"SMTP","sidebar":"mainSidebar"},"for-ops/console/shell":{"id":"for-ops/console/shell","title":"Shell","description":"The Shell feature allows to start a web based shell in Otomi Console with Kube API access. When starting a shell, a dedicated shell instance will be started for the user. The shell includes the following tools:"},"for-ops/console/teams":{"id":"for-ops/console/teams","title":"Platform - Teams","description":"About Teams","sidebar":"mainSidebar"},"for-ops/console/workloads":{"id":"for-ops/console/workloads","title":"Platform - Workloads","description":"To enable this feature, first make sure Argo CD is activated.","sidebar":"mainSidebar"},"for-ops/how-to/backups":{"id":"for-ops/how-to/backups","title":"Create/Restore backups","description":"When Velero is activated on the platform level, platform admins can create backups of Persistent Volumes (PVs) in Team namespaces using the Console. When creating backups using the Console, a Velero schedule resource is created that will create the backup at a specified time, defined by a Cron expression.","sidebar":"mainSidebar"},"for-ops/how-to/clone-apl":{"id":"for-ops/how-to/clone-apl","title":"Clone Platform Instance","description":"It may happen that you need to move the platform configuration to another Kubernetes cluster. Because everyting is GitOps driven, you can export the existing setup that can then be used to install it on a new cluster.","sidebar":"mainSidebar"},"for-ops/how-to/core-only":{"id":"for-ops/how-to/core-only","title":"Use Core only","description":"By default Gitea, Tekton, Argo CD, the platform API and the Console are installed. The Console is the self-service UI and uses the platform API to generate validated configuration code. This configuration code is then committed to Gitea (in the otomi-values repository), which will trigger the pre-configured Tekton pipeline to apply the changes.","sidebar":"mainSidebar"},"for-ops/how-to/ingress-classes":{"id":"for-ops/how-to/ingress-classes","title":"Manage Ingress Controllers","description":"Exposure (ingress) for all services (included exposure for platform services) is handeled by the default platform ingress class using a public (cloud) load balancer. It is also possible to use multiple ingress classes. Each class will get a dedicated ingress controller. In case of a security requirement, where platform services are not allowed to be exposed publicly, the default platform class can be configured to use a private load balancer instead of a public one by adding the required annotations. Additional (public) ingress classes can be created to expose team (application) services.","sidebar":"mainSidebar"},"for-ops/how-to/overview":{"id":"for-ops/how-to/overview","title":"How to\'s for Ops","description":"How to\'s for Ops / Platform administrators","sidebar":"mainSidebar"},"for-ops/how-to/use-catalog":{"id":"for-ops/how-to/use-catalog","title":"Managing the Catalog","description":"A Catalog is made available to Teams on the platform to offer them golden path templates (Helm charts). This is how it works:","sidebar":"mainSidebar"},"for-ops/how-to/use-team-admin":{"id":"for-ops/how-to/use-team-admin","title":"Use team-admin","description":"By default a team called team-admin is created. The Admin Team is no regular team. This team for instance has no apps. Instead the admin needs to use the platform apps to see logs and metrics of workloads deployed in the team-admin namespace.","sidebar":"mainSidebar"},"for-ops/sre/daily":{"id":"for-ops/sre/daily","title":"SRE Daily Routine","description":"As an SRE you would like to keep your daily tasks to a minimum and be automatically informed on issues. APL offers the following tooling to automate this:","sidebar":"mainSidebar"},"for-ops/sre/overview":{"id":"for-ops/sre/overview","title":"SRE Overview","description":"APL is a set of functions built on top of a suite of pre-configured and integrated open source applications. Instead of selecting, configuring, and integrating all the parts that are needed to securely manage containerized applications in multi- and hybrid environments, APL offers all required parts in a single package. APL can be seen as any other Kubernetes application or add-on, with the difference that APL is pre-configured and offers a higher abstraction of configuration for all the integrated solutions. All integrated applications can however be used freely, meaning that a user can benefit from the pre-configuration to start using the offered applications.","sidebar":"mainSidebar"},"for-ops/sre/troubleshooting":{"id":"for-ops/sre/troubleshooting","title":"SRE Troubleshooting Checklist","description":"Pods not starting","sidebar":"mainSidebar"},"get-started/installation/akamai-cloud":{"id":"get-started/installation/akamai-cloud","title":"Akamai Connected Cloud","description":"Comming soon!","sidebar":"mainSidebar"},"get-started/installation/byo-wildcard":{"id":"get-started/installation/byo-wildcard","title":"BYO Wild card Certificate","description":"When installing with DNS, there are 3 issuers you can use:","sidebar":"mainSidebar"},"get-started/installation/custom":{"id":"get-started/installation/custom","title":"Custom","description":"To install on any other conformant Kubernetes, use the custom provider. Make sure your infrastructure adheres to the following pre-requisites:","sidebar":"mainSidebar"},"get-started/installation/dns":{"id":"get-started/installation/dns","title":"DNS","description":"The Builds and Projects features are NOT supported without DNS configured. Install with DNS to use all features.","sidebar":"mainSidebar"},"get-started/installation/entrypoint":{"id":"get-started/installation/entrypoint","title":"Install with entrypoint","description":"In some cases, the Kubernetes cluster will de deployed in a private setup where public access is only possible using an external gateway or firewall.","sidebar":"mainSidebar"},"get-started/installation/helm":{"id":"get-started/installation/helm","title":"Helm","description":"Install client binaries","sidebar":"mainSidebar"},"get-started/installation/linode":{"id":"get-started/installation/linode","title":"Linode","description":"Provision a LKE cluster in Cloud Manager or by using the Linode CLI and manually install the Application Platform onto it by using a Linode Domain for DNS.","sidebar":"mainSidebar"},"get-started/installation/oidc":{"id":"get-started/installation/oidc","title":"OIDC","description":"Use Azure Entra ID","sidebar":"mainSidebar"},"get-started/installation/overview":{"id":"get-started/installation/overview","title":"Installation","description":"How to get Akamai Application Platform up and running","sidebar":"mainSidebar"},"get-started/installation/post-install-steps":{"id":"get-started/installation/post-install-steps","title":"Post installation steps","description":"Follow the post-installation steps after initial installation.","sidebar":"mainSidebar"},"get-started/installation/sops":{"id":"get-started/installation/sops","title":"Use SOPS for value encryption","description":"If you would like sensitive information in the values repository to be encrypted, you will have to use sops.","sidebar":"mainSidebar"},"get-started/labs/auto-image-update":{"id":"get-started/labs/auto-image-update","title":"Configure auto image updater","description":"When using the Workload feature to deploy Helm charts from the Catalog, then you can also use the Auto image updater feature to to automatically update the container images of Kubernetes workloads.","sidebar":"mainSidebar"},"get-started/labs/build-images":{"id":"get-started/labs/build-images","title":"Build images from application source","description":"Harbor needs to be activated for this lab.","sidebar":"mainSidebar"},"get-started/labs/canary-deployment":{"id":"get-started/labs/canary-deployment","title":"Canary deployment","description":"In this lab we are going to create a canary deployment. The idea behind canary deployment (or rollout) is to introduce a new version of an application by first testing it using a small percentage of user traffic, and then if all goes well increasing the percentage while simultaneously phasing out the old version.","sidebar":"mainSidebar"},"get-started/labs/create-netpols":{"id":"get-started/labs/create-netpols","title":"Configuring network policies","description":"In some cases you want to explicitly allow access to your application. This can be done by creating network policies. 2 types of network policies are supported:","sidebar":"mainSidebar"},"get-started/labs/create-postgresql-db":{"id":"get-started/labs/create-postgresql-db","title":"Create a PostgreSQL database","description":"The Cloudnative POstgreSQL database operator is installed by default. Teams can use the operator and the postgresql quick start to create their own PostgreSQL databases.","sidebar":"mainSidebar"},"get-started/labs/create-projects":{"id":"get-started/labs/create-projects","title":"Create projects","description":"A Project is a collection of a Build, a Workload and a Service. The benefit of using Projects is that you can create a Build, a Workload and a Service in one run. Projects are ideal for developers to run multiple code branches next to each other and automatically update the deployment based on a push. In this lab we are going to create a Project and see how everything now comes together is one simple form.","sidebar":"mainSidebar"},"get-started/labs/create-rabbitmq-cluster":{"id":"get-started/labs/create-rabbitmq-cluster","title":"Create rabbitMQ Cluster","description":"In this lab we will create a RabbitMQ Cluster using the quick start Rabbitmq Helm chart from the Catalog.","sidebar":"mainSidebar"},"get-started/labs/create-repos":{"id":"get-started/labs/create-repos","title":"Create a private Git repo","description":"As a developer you\'ll need a Git repository for your code. Most organizations will probably have a central code repository like Gitlab, or use Github. But if you don\'t, you can use the integrated Git service.","sidebar":"mainSidebar"},"get-started/labs/create-sealed-secrets":{"id":"get-started/labs/create-sealed-secrets","title":"Create Sealed Secrets","description":"In this lab we will create sealed secrets and see how to securely sensitive information in git repository.","sidebar":"mainSidebar"},"get-started/labs/create-workloads":{"id":"get-started/labs/create-workloads","title":"Create Workloads","description":"In the previous lab we deployed a workload using Argo CD with a BYO manifest and we explored the Catalog. In this lab we\'ll create a Workload (a Kubernetes Deployment) using the Catalog and the Workload self-service feature.","sidebar":"mainSidebar"},"get-started/labs/custom-dashboards":{"id":"get-started/labs/custom-dashboards","title":"Create custom dashboards","description":"In the lab Using custom metrics we created a Workload with a ServiceMonitor so the Team\'s Prometheus can scrape our custom metrics. In this lab we are going to create a custom Grafana dashboard and add the dashboard to a Configmap so the Team\'s Grafana will automatically load the dashboard.","sidebar":"mainSidebar"},"get-started/labs/custom-metrics":{"id":"get-started/labs/custom-metrics","title":"Using custom metrics","description":"For this lab Prometheus and Grafana need to be enabled for the Team.","sidebar":"mainSidebar"},"get-started/labs/custom-rules":{"id":"get-started/labs/custom-rules","title":"Create custom rules","description":"Now we are exporting metrics, these metrics can also be used to generate alerts. To generate alerts, we first need to create a Prometheus Rule:","sidebar":"mainSidebar"},"get-started/labs/expose-services":{"id":"get-started/labs/expose-services","title":"Publicly expose workloads","description":"When you have deployed your application using the Workloads feature, you will probably like to expose it publicly. In this lab we\'ll create a Service to publicly expose your application. When you create a Service, the Istio virtual service and and ingress resource for your application will be created automatically.","sidebar":"mainSidebar"},"get-started/labs/labs-overview":{"id":"get-started/labs/labs-overview","title":"Labs Overview","description":"Welcome to the Application Platform for LKE labs! If you are going to use the Application Platform for LKE or like to learn Kubernetes, these labs are for you. Step by step we\'ll guide you in how to build, deploy, secure and observe containerized applications on Kubernetes. The labs cover the most common activities performed by developer- and/or DevOps teams.","sidebar":"mainSidebar"},"get-started/labs/labs-prerequisites":{"id":"get-started/labs/labs-prerequisites","title":"Lab Prerequisites","description":"Prerequisites","sidebar":"mainSidebar"},"get-started/labs/monitor-workloads":{"id":"get-started/labs/monitor-workloads","title":"Monitoring availability","description":"When your application is deployed, you would of course like to get an alert when you application (service) is not available anymore. To automatically monitor you applications for availability, a prope to monitor your service is automatically configured.","sidebar":"mainSidebar"},"get-started/labs/push-images":{"id":"get-started/labs/push-images","title":"Push images to Harbor","description":"For this lab, Harbor needs to be activated and the cluster needs to be configured with trusted certificates (like Let\'s Encrypt using production certificate).","sidebar":"mainSidebar"},"get-started/labs/scan-containers":{"id":"get-started/labs/scan-containers","title":"Scan your running containers for vulnerabilities","description":"Trivy Operator needs to be activated for this lab.","sidebar":"mainSidebar"},"get-started/labs/scan-images":{"id":"get-started/labs/scan-images","title":"Scan your images for vulnerabilities","description":"Prerequisites","sidebar":"mainSidebar"},"get-started/labs/trigger-builds":{"id":"get-started/labs/trigger-builds","title":"Trigger Builds","description":"In the previous lab we created a Build using the blue repo in Gitea. In this lab we\'ll create a build for the green repo and trigger the build based on a webhook.","sidebar":"mainSidebar"},"get-started/labs/use-catalog":{"id":"get-started/labs/use-catalog","title":"Use the Catalog","description":"In this lab we are going to explore the Catalog. The Catalog is a library of curated Helm charts to create Kubernetes resources. By default the Catalog contains a set of Helm charts to get started quickly, but they can also be modified depending on your requirements or be removed from the Catalog. The contents of the Catalog and the RBAC configuration (which Team can use which Helm chart) are managed by the platform administrator. Contact the platform administrator if you would like to add your own charts to use within your Team.","sidebar":"mainSidebar"},"get-started/labs/use-otel":{"id":"get-started/labs/use-otel","title":"OpenTelemetry","description":"In order to make a system observable, it must be instrumented. Language specific implementation of OpenTelemetry provides a way to instrument your application without touching your source code. In this lab we\'re going to instrument a Java application.","sidebar":"mainSidebar"},"get-started/labs/using-argo-cd":{"id":"get-started/labs/using-argo-cd","title":"Using Argo CD","description":"Creating Kubernetes resources using kubectl apply -f can be inefficient. As a developer, managing resources based on code stored in Git enhances control and traceability. Argo CD is integrated to provide a seamless GitOps experience, streamlining your deployment process.","sidebar":"mainSidebar"},"get-started/labs/view-logs":{"id":"get-started/labs/view-logs","title":"View container logs","description":"Loki needs to be enabled on the platform level and Grafana needs to be enabled for the Team.","sidebar":"mainSidebar"},"get-started/labs/view-metrics":{"id":"get-started/labs/view-metrics","title":"View container metrics","description":"Prometheus and Grafana for the Team need to be activated for this lab.","sidebar":"mainSidebar"},"get-started/overview":{"id":"get-started/overview","title":"Overview","description":"How to get started with Application Platform for LKE","sidebar":"mainSidebar"}}}')}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.b15ef633.js b/assets/js/935f2afb.b15ef633.js deleted file mode 100644 index c38eda2e1..000000000 --- a/assets/js/935f2afb.b15ef633.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkredkubes_github_io=self.webpackChunkredkubes_github_io||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"mainSidebar":[{"type":"category","label":"App Platform for LKE","items":[{"type":"link","label":"Introduction","href":"/docs/apl/introduction","docId":"apl/introduction","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Getting Started","items":[{"type":"link","label":"Overview","href":"/docs/get-started/overview","docId":"get-started/overview","unlisted":false},{"type":"category","label":"Installation","items":[{"type":"link","label":"Overview","href":"/docs/get-started/installation/overview","docId":"get-started/installation/overview","unlisted":false},{"type":"link","label":"Akamai Cloud","href":"/docs/get-started/installation/akamai-cloud","docId":"get-started/installation/akamai-cloud","unlisted":false},{"type":"link","label":"Linode Kubernetes Engine","href":"/docs/get-started/installation/linode","docId":"get-started/installation/linode","unlisted":false},{"type":"link","label":"Custom","href":"/docs/get-started/installation/custom","docId":"get-started/installation/custom","unlisted":false},{"type":"link","label":"Helm","href":"/docs/get-started/installation/helm","docId":"get-started/installation/helm","unlisted":false},{"type":"link","label":"DNS","href":"/docs/get-started/installation/dns","docId":"get-started/installation/dns","unlisted":false},{"type":"link","label":"OIDC","href":"/docs/get-started/installation/oidc","docId":"get-started/installation/oidc","unlisted":false},{"type":"link","label":"SOPS","href":"/docs/get-started/installation/sops","docId":"get-started/installation/sops","unlisted":false},{"type":"link","label":"Entrypoint","href":"/docs/get-started/installation/entrypoint","docId":"get-started/installation/entrypoint","unlisted":false},{"type":"link","label":"BYO Wild Card Cert","href":"/docs/get-started/installation/byo-wildcard-cert","docId":"get-started/installation/byo-wildcard","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"link","label":"Post Installation Steps","href":"/docs/get-started/installation/post-installation-steps","docId":"get-started/installation/post-install-steps","unlisted":false},{"type":"category","label":"Hands-on Labs","items":[{"type":"link","label":"Labs Overview","href":"/docs/get-started/labs/overview","docId":"get-started/labs/labs-overview","unlisted":false},{"type":"link","label":"Lab Prerequisites","href":"/docs/get-started/labs/lab-prerequisites","docId":"get-started/labs/labs-prerequisites","unlisted":false},{"type":"link","label":"Create GIT repos","href":"/docs/get-started/labs/create-repos","docId":"get-started/labs/create-repos","unlisted":false},{"type":"link","label":"Build Images","href":"/docs/get-started/labs/build-images","docId":"get-started/labs/build-images","unlisted":false},{"type":"link","label":"Trigger Builds","href":"/docs/get-started/labs/trigger-builds","docId":"get-started/labs/trigger-builds","unlisted":false},{"type":"link","label":"Push Images","href":"/docs/get-started/labs/push-images","docId":"get-started/labs/push-images","unlisted":false},{"type":"link","label":"Create Sealed Secrets","href":"/docs/get-started/labs/create-sealed-secrets","docId":"get-started/labs/create-sealed-secrets","unlisted":false},{"type":"link","label":"Using Argo CD","href":"/docs/get-started/labs/using-argo-cd","docId":"get-started/labs/using-argo-cd","unlisted":false},{"type":"link","label":"Use the Catalog","href":"/docs/get-started/labs/use-catalog","docId":"get-started/labs/use-catalog","unlisted":false},{"type":"link","label":"Create Workloads","href":"/docs/get-started/labs/create-workloads","docId":"get-started/labs/create-workloads","unlisted":false},{"type":"link","label":"Expose Services","href":"/docs/get-started/labs/expose-services","docId":"get-started/labs/expose-services","unlisted":false},{"type":"link","label":"Configure Auto Image Updater","href":"/docs/get-started/labs/auto-image-update","docId":"get-started/labs/auto-image-update","unlisted":false},{"type":"link","label":"Create Projects","href":"/docs/get-started/labs/create-projects","docId":"get-started/labs/create-projects","unlisted":false},{"type":"link","label":"Create a Database","href":"/docs/get-started/labs/create-postgresql-db","docId":"get-started/labs/create-postgresql-db","unlisted":false},{"type":"link","label":"Scan Images","href":"/docs/get-started/labs/scan-images","docId":"get-started/labs/scan-images","unlisted":false},{"type":"link","label":"Scan Containers","href":"/docs/get-started/labs/scan-containers","docId":"get-started/labs/scan-containers","unlisted":false},{"type":"link","label":"View Container Logs","href":"/docs/get-started/labs/view-logs","docId":"get-started/labs/view-logs","unlisted":false},{"type":"link","label":"View Container Metrics","href":"/docs/get-started/labs/view-metrics","docId":"get-started/labs/view-metrics","unlisted":false},{"type":"link","label":"Monitor Workloads","href":"/docs/get-started/labs/monitor-workloads","docId":"get-started/labs/monitor-workloads","unlisted":false},{"type":"link","label":"Using custom metrics","href":"/docs/get-started/labs/custom-metrics","docId":"get-started/labs/custom-metrics","unlisted":false},{"type":"link","label":"Create Custom Dashboards","href":"/docs/get-started/labs/custom-dashboards","docId":"get-started/labs/custom-dashboards","unlisted":false},{"type":"link","label":"Create Custom Rules","href":"/docs/get-started/labs/custom-rules","docId":"get-started/labs/custom-rules","unlisted":false},{"type":"link","label":"Create Network Policies","href":"/docs/get-started/labs/create-netpols","docId":"get-started/labs/create-netpols","unlisted":false},{"type":"link","label":"Use OpenTelemery","href":"/docs/get-started/labs/use-otel","docId":"get-started/labs/use-otel","unlisted":false},{"type":"link","label":"Canary Deployment","href":"/docs/get-started/labs/canary-deployment","docId":"get-started/labs/canary-deployment","unlisted":false},{"type":"link","label":"Create RabbitMQ cluster","href":"/docs/get-started/labs/create-rabbitmq-cluster","docId":"get-started/labs/create-rabbitmq-cluster","unlisted":false}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true},{"type":"category","label":"For Developers","items":[{"type":"category","label":"Console - Team View","items":[{"type":"link","label":"Overview","href":"/docs/for-devs/console/overview","docId":"for-devs/console/overview","unlisted":false},{"type":"link","label":"Deploy Changes","href":"/docs/for-devs/console/deploy-changes","docId":"for-devs/console/deploy-changes","unlisted":false},{"type":"link","label":"Dashboard","href":"/docs/for-devs/console/dashboard","docId":"for-devs/console/dashboard","unlisted":false},{"type":"link","label":"Apps","href":"/docs/for-devs/console/apps","docId":"for-devs/console/apps","unlisted":false},{"type":"link","label":"Catalog","href":"/docs/for-devs/console/catalog","docId":"for-devs/console/catalog","unlisted":false},{"type":"link","label":"Projects","href":"/docs/for-devs/console/projects","docId":"for-devs/console/projects","unlisted":false},{"type":"link","label":"Builds","href":"/docs/for-devs/console/builds","docId":"for-devs/console/builds","unlisted":false},{"type":"link","label":"Workloads","href":"/docs/for-devs/console/workloads","docId":"for-devs/console/workloads","unlisted":false},{"type":"link","label":"Network Policies","href":"/docs/for-devs/console/netpols","docId":"for-devs/console/netpols","unlisted":false},{"type":"link","label":"Services","href":"/docs/for-devs/console/services","docId":"for-devs/console/services","unlisted":false},{"type":"link","label":"Security policies","href":"/docs/for-devs/console/security-policies","docId":"for-devs/console/security-policies","unlisted":false},{"type":"link","label":"Sealed Secrets","href":"/docs/for-devs/console/secrets","docId":"for-devs/console/sealed-secrets","unlisted":false},{"type":"link","label":"Shell","href":"/docs/for-devs/console/shell","docId":"for-devs/console/shell","unlisted":false},{"type":"link","label":"Settings","href":"/docs/for-devs/console/settings","docId":"for-devs/console/settings","unlisted":false}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true},{"type":"category","label":"For Platform Admins","items":[{"type":"category","label":"Console - Platform View","items":[{"type":"link","label":"Overview","href":"/docs/for-ops/console/overview","docId":"for-ops/console/overview","unlisted":false},{"type":"link","label":"Dashboard","href":"/docs/for-ops/console/dashboard","docId":"for-ops/console/dashboard","unlisted":false},{"type":"link","label":"Apps","href":"/docs/for-ops/console/apps","docId":"for-ops/console/apps","unlisted":false},{"type":"link","label":"Teams","href":"/docs/for-ops/console/teams","docId":"for-ops/console/teams","unlisted":false},{"type":"link","label":"Projects","href":"/docs/for-ops/console/projects","docId":"for-ops/console/projects","unlisted":false},{"type":"link","label":"Builds","href":"/docs/for-ops/console/builds","docId":"for-ops/console/builds","unlisted":false},{"type":"link","label":"Workloads","href":"/docs/for-ops/console/workloads","docId":"for-ops/console/workloads","unlisted":false},{"type":"link","label":"Network Policies","href":"/docs/for-ops/console/netpols","docId":"for-ops/console/netpols","unlisted":false},{"type":"link","label":"Services","href":"/docs/for-ops/console/services","docId":"for-ops/console/services","unlisted":false},{"type":"link","label":"Backups","href":"/docs/for-ops/console/backups","docId":"for-ops/console/backups","unlisted":false},{"type":"link","label":"Maintenance","href":"/docs/for-ops/console/maintenance","docId":"for-ops/console/maintenance","unlisted":false},{"type":"category","label":"Settings","items":[{"type":"link","label":"Cluster","href":"/docs/for-ops/console/settings/cluster","docId":"for-ops/console/settings/cluster","unlisted":false},{"type":"link","label":"General","href":"/docs/for-ops/console/settings/general","docId":"for-ops/console/settings/general","unlisted":false},{"type":"link","label":"Key Management","href":"/docs/for-ops/console/settings/key-management","docId":"for-ops/console/settings/key-management","unlisted":false},{"type":"link","label":"Alerts","href":"/docs/for-ops/console/settings/alerts","docId":"for-ops/console/settings/alerts","unlisted":false},{"type":"link","label":"DNS","href":"/docs/for-ops/console/settings/dns","docId":"for-ops/console/settings/dns","unlisted":false},{"type":"link","label":"Ingress","href":"/docs/for-ops/console/settings/ingress","docId":"for-ops/console/settings/ingress","unlisted":false},{"type":"link","label":"OIDC","href":"/docs/for-ops/console/settings/oidc","docId":"for-ops/console/settings/oidc","unlisted":false},{"type":"link","label":"SMTP","href":"/docs/for-ops/console/settings/smtp","docId":"for-ops/console/settings/smtp","unlisted":false},{"type":"link","label":"Backup","href":"/docs/for-ops/console/settings/backup","docId":"for-ops/console/settings/backup","unlisted":false},{"type":"link","label":"Object Storage","href":"/docs/for-ops/console/settings/obj","docId":"for-ops/console/settings/obj","unlisted":false}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true},{"type":"category","label":"How To","items":[{"type":"link","label":"Overview","href":"/docs/for-ops/how-to/overview","docId":"for-ops/how-to/overview","unlisted":false},{"type":"link","label":"Manage the Catalog","href":"/docs/for-ops/how-to/catalog","docId":"for-ops/how-to/use-catalog","unlisted":false},{"type":"link","label":"Manage Ingress Controllers","href":"/docs/for-ops/how-to/ingress-classes","docId":"for-ops/how-to/ingress-classes","unlisted":false},{"type":"link","label":"Use Team Admin","href":"/docs/for-ops/how-to/use-team-admin","docId":"for-ops/how-to/use-team-admin","unlisted":false},{"type":"link","label":"Use Core only","href":"/docs/for-ops/how-to/core-only","docId":"for-ops/how-to/core-only","unlisted":false},{"type":"link","label":"Clone the Platform","href":"/docs/for-ops/how-to/clone-apl","docId":"for-ops/how-to/clone-apl","unlisted":false},{"type":"link","label":"Backups","href":"/docs/for-ops/how-to/backups","docId":"for-ops/how-to/backups","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"CLI","items":[{"type":"link","label":"Installation","href":"/docs/for-ops/cli/installation","docId":"for-ops/cli/installation","unlisted":false},{"type":"link","label":"Using the CLI","href":"/docs/for-ops/cli/deploying","docId":"for-ops/cli/deploying","unlisted":false},{"type":"link","label":"Known issues","href":"/docs/for-ops/cli/known-issues","docId":"for-ops/cli/known-issues","unlisted":false},{"type":"category","label":"CLI Commands","items":[{"type":"link","label":"otomi apply","href":"/docs/for-ops/cli/apply","docId":"for-ops/cli/apply","unlisted":false},{"type":"link","label":"otomi bash","href":"/docs/for-ops/cli/bash","docId":"for-ops/cli/bash","unlisted":false},{"type":"link","label":"otomi bootstrap","href":"/docs/for-ops/cli/bootstrap","docId":"for-ops/cli/bootstrap","unlisted":false},{"type":"link","label":"otomi commit","href":"/docs/for-ops/cli/commit","docId":"for-ops/cli/commit","unlisted":false},{"type":"link","label":"otomi decrypt","href":"/docs/for-ops/cli/decrypt","docId":"for-ops/cli/decrypt","unlisted":false},{"type":"link","label":"otomi destroy","href":"/docs/for-ops/cli/destroy","docId":"for-ops/cli/destroy","unlisted":false},{"type":"link","label":"otomi diff","href":"/docs/for-ops/cli/diff","docId":"for-ops/cli/diff","unlisted":false},{"type":"link","label":"otomi encrypt","href":"/docs/for-ops/cli/encrypt","docId":"for-ops/cli/encrypt","unlisted":false},{"type":"link","label":"otomi lint","href":"/docs/for-ops/cli/lint","docId":"for-ops/cli/lint","unlisted":false},{"type":"link","label":"otomi pull","href":"/docs/for-ops/cli/pull","docId":"for-ops/cli/pull","unlisted":false},{"type":"link","label":"otomi rotate-keys","href":"/docs/for-ops/cli/rotate-keys","docId":"for-ops/cli/rotate-keys","unlisted":false},{"type":"link","label":"otomi status","href":"/docs/for-ops/cli/status","docId":"for-ops/cli/status","unlisted":false},{"type":"link","label":"otomi sync","href":"/docs/for-ops/cli/sync","docId":"for-ops/cli/sync","unlisted":false},{"type":"link","label":"otomi template","href":"/docs/for-ops/cli/template","docId":"for-ops/cli/template","unlisted":false},{"type":"link","label":"otomi test","href":"/docs/for-ops/cli/test","docId":"for-ops/cli/test","unlisted":false},{"type":"link","label":"otomi validate-templates","href":"/docs/for-ops/cli/validate-templates","docId":"for-ops/cli/validate-templates","unlisted":false},{"type":"link","label":"otomi validate-values","href":"/docs/for-ops/cli/validate-values","docId":"for-ops/cli/validate-values","unlisted":false},{"type":"link","label":"otomi values","href":"/docs/for-ops/cli/values","docId":"for-ops/cli/values","unlisted":false},{"type":"link","label":"otomi x","href":"/docs/for-ops/cli/x","docId":"for-ops/cli/x","unlisted":false}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true},{"type":"category","label":"SRE","items":[{"type":"link","label":"Overview","href":"/docs/for-ops/sre/overview","docId":"for-ops/sre/overview","unlisted":false},{"type":"link","label":"Daily Routine","href":"/docs/for-ops/sre/daily","docId":"for-ops/sre/daily","unlisted":false},{"type":"link","label":"Troubleshooting","href":"/docs/for-ops/sre/troubleshooting","docId":"for-ops/sre/troubleshooting","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Integrated Apps","items":[{"type":"link","label":"Apps Overview","href":"/docs/apps/apps-overview","docId":"apps/apps-overview","unlisted":false},{"type":"link","label":"Alertmanager","href":"/docs/apps/alertmanager","docId":"apps/alertmanager","unlisted":false},{"type":"link","label":"Argo CD","href":"/docs/apps/argocd","docId":"apps/argocd","unlisted":false},{"type":"link","label":"Cert-Manager","href":"/docs/apps/certmanager","docId":"apps/certmanager","unlisted":false},{"type":"link","label":"Cloudnative Postgresql","href":"/docs/apps/cloudnativepg","docId":"apps/cloudnativepg","unlisted":false},{"type":"link","label":"Drone","href":"/docs/apps/drone","docId":"apps/drone","unlisted":false},{"type":"link","label":"ExternalDNS","href":"/docs/apps/external-dns","docId":"apps/external-dns","unlisted":false},{"type":"link","label":"Falco","href":"/docs/apps/falco","docId":"apps/falco","unlisted":false},{"type":"link","label":"Gitea","href":"/docs/apps/gitea","docId":"apps/gitea","unlisted":false},{"type":"link","label":"Grafana","href":"/docs/apps/grafana","docId":"apps/grafana","unlisted":false},{"type":"link","label":"Harbor","href":"/docs/apps/harbor","docId":"apps/harbor","unlisted":false},{"type":"link","label":"Ingress-nginx","href":"/docs/apps/ingress-nginx","docId":"apps/ingress-nginx","unlisted":false},{"type":"link","label":"Istio","href":"/docs/apps/istio","docId":"apps/istio","unlisted":false},{"type":"link","label":"Jaeger","href":"/docs/apps/jaeger","docId":"apps/jaeger","unlisted":false},{"type":"link","label":"Keycloak","href":"/docs/apps/keycloak","docId":"apps/keycloak","unlisted":false},{"type":"link","label":"Knative","href":"/docs/apps/knative","docId":"apps/knative","unlisted":false},{"type":"link","label":"Kiali","href":"/docs/apps/kiali","docId":"apps/kiali","unlisted":false},{"type":"link","label":"Kyverno","href":"/docs/apps/kyverno","docId":"apps/kyverno","unlisted":false},{"type":"link","label":"Kured","href":"/docs/apps/kured","docId":"apps/kured","unlisted":false},{"type":"link","label":"Loki","href":"/docs/apps/loki","docId":"apps/loki","unlisted":false},{"type":"link","label":"Minio","href":"/docs/apps/minio","docId":"apps/minio","unlisted":false},{"type":"link","label":"Open Telemetry Operator","href":"/docs/apps/otel","docId":"apps/otel","unlisted":false},{"type":"link","label":"Prometheus","href":"/docs/apps/prometheus","docId":"apps/prometheus","unlisted":false},{"type":"link","label":"RabbitMQ","href":"/docs/apps/rabbitmq","docId":"apps/rabbitmq","unlisted":false},{"type":"link","label":"Sealed Secrets","href":"/docs/apps/sealed-secrets","docId":"apps/sealedsecrets","unlisted":false},{"type":"link","label":"Grafana Tempo","href":"/docs/apps/tempo","docId":"apps/tempo","unlisted":false},{"type":"link","label":"Trivy Operator","href":"/docs/apps/trivy","docId":"apps/trivy","unlisted":false},{"type":"link","label":"Tekton","href":"/docs/apps/tekton","docId":"apps/tekton","unlisted":false},{"type":"link","label":"Velero","href":"/docs/apps/velero","docId":"apps/velero","unlisted":false}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true}]},"docs":{"apl/introduction":{"id":"apl/introduction","title":"Introduction","description":"Application Platform for LKE","sidebar":"mainSidebar"},"apps/alertmanager":{"id":"apps/alertmanager","title":"Alertmanager","description":"About","sidebar":"mainSidebar"},"apps/apps-overview":{"id":"apps/apps-overview","title":"Apps Overview","description":"Application Platform for Linode Kubernetes Engine (LKE) integrated Applications","sidebar":"mainSidebar"},"apps/argocd":{"id":"apps/argocd","title":"Argo CD","description":"About","sidebar":"mainSidebar"},"apps/certmanager":{"id":"apps/certmanager","title":"CertManager","description":"About","sidebar":"mainSidebar"},"apps/cloudnativepg":{"id":"apps/cloudnativepg","title":"Cloudnative Postgresql","description":"About","sidebar":"mainSidebar"},"apps/drone":{"id":"apps/drone","title":"Drone","description":"Drone has been deprecated. We advise to use Tekton if you would need to create custom CI/CD pipelines.","sidebar":"mainSidebar"},"apps/external-dns":{"id":"apps/external-dns","title":"External-DNS","description":"About","sidebar":"mainSidebar"},"apps/falco":{"id":"apps/falco","title":"Falco","description":"About","sidebar":"mainSidebar"},"apps/gitea":{"id":"apps/gitea","title":"Gitea","description":"About","sidebar":"mainSidebar"},"apps/grafana":{"id":"apps/grafana","title":"Grafana","description":"About","sidebar":"mainSidebar"},"apps/harbor":{"id":"apps/harbor","title":"Harbor","description":"About","sidebar":"mainSidebar"},"apps/ingress-nginx":{"id":"apps/ingress-nginx","title":"NGINX Ingress","description":"About","sidebar":"mainSidebar"},"apps/istio":{"id":"apps/istio","title":"Istio","description":"About","sidebar":"mainSidebar"},"apps/jaeger":{"id":"apps/jaeger","title":"Jaeger","description":"About","sidebar":"mainSidebar"},"apps/keycloak":{"id":"apps/keycloak","title":"Keycloak","description":"About","sidebar":"mainSidebar"},"apps/kiali":{"id":"apps/kiali","title":"Kiali","description":"About","sidebar":"mainSidebar"},"apps/knative":{"id":"apps/knative","title":"Knative","description":"About","sidebar":"mainSidebar"},"apps/kured":{"id":"apps/kured","title":"Kured","description":"About","sidebar":"mainSidebar"},"apps/kyverno":{"id":"apps/kyverno","title":"Kyverno","description":"About","sidebar":"mainSidebar"},"apps/loki":{"id":"apps/loki","title":"Grafana Loki","description":"About","sidebar":"mainSidebar"},"apps/minio":{"id":"apps/minio","title":"Minio","description":"About","sidebar":"mainSidebar"},"apps/otel":{"id":"apps/otel","title":"Open Telemetry Operator","description":"About","sidebar":"mainSidebar"},"apps/prometheus":{"id":"apps/prometheus","title":"Prometheus","description":"About","sidebar":"mainSidebar"},"apps/rabbitmq":{"id":"apps/rabbitmq","title":"RabbitMQ","description":"About","sidebar":"mainSidebar"},"apps/sealedsecrets":{"id":"apps/sealedsecrets","title":"Sealed Secrets","description":"About","sidebar":"mainSidebar"},"apps/tekton":{"id":"apps/tekton","title":"Tekton","description":"About","sidebar":"mainSidebar"},"apps/tempo":{"id":"apps/tempo","title":"Grafana Tempo","description":"About","sidebar":"mainSidebar"},"apps/thanos":{"id":"apps/thanos","title":"Thanos","description":"About"},"apps/trivy":{"id":"apps/trivy","title":"Trivy Operator","description":"About","sidebar":"mainSidebar"},"apps/velero":{"id":"apps/velero","title":"Velero","description":"About","sidebar":"mainSidebar"},"for-devs/console/apps":{"id":"for-devs/console/apps","title":"Team Apps","description":"The Apps that are available for teams to use. There are 2 types of Apps:","sidebar":"mainSidebar"},"for-devs/console/builds":{"id":"for-devs/console/builds","title":"Team Builds","description":"A Build is a self-service feature for building OCI compliant images based on application source code and store the image in a private Team registry in Harbor.","sidebar":"mainSidebar"},"for-devs/console/catalog":{"id":"for-devs/console/catalog","title":"Catalog","description":"The Catalog is a library of curated Helm charts to create Kubernetes resources. By default the Catalog contains a set of Helm charts provided to get started quickly, but they can also be modified depending on your requirements or be removed from the Catalog.","sidebar":"mainSidebar"},"for-devs/console/dashboard":{"id":"for-devs/console/dashboard","title":"Team Dashboard","description":"The team dashboard gives a global overview of information most relevant to the team.","sidebar":"mainSidebar"},"for-devs/console/deploy-changes":{"id":"for-devs/console/deploy-changes","title":"Deploy changes","description":"When a self-service form (Build, Workload, Service, Backup, Secret) is submitted, a commit in the otomi-values Git repository will be prepared. When the commit is prepared, the Deploy Changes button in the top of the left menu will become active. To commit your changes, click on the Deploy Changes button.","sidebar":"mainSidebar"},"for-devs/console/netpols":{"id":"for-devs/console/netpols","title":"Team Network Policies","description":"A Network Policy is a self-service feature for creating Kubernetes Network Policies (Ingress) and Istio Service Entries (Egress).","sidebar":"mainSidebar"},"for-devs/console/overview":{"id":"for-devs/console/overview","title":"Overview","description":"Console","sidebar":"mainSidebar"},"for-devs/console/projects":{"id":"for-devs/console/projects","title":"Team Projects","description":"A Project is a collection of a Build, a Workload and a Service in ONE form.","sidebar":"mainSidebar"},"for-devs/console/sealed-secrets":{"id":"for-devs/console/sealed-secrets","title":"Team Secrets","description":"Sealed Secrets are encrypted Kubernetes Secrets. The encrypted secrets are stored in the Values Git repository. When a Sealed Secrets secret is created in the Console, the Kubernetes Secret will appear in the Team\'s namespace and can be used as you would use any secret that you would have created directly.","sidebar":"mainSidebar"},"for-devs/console/security-policies":{"id":"for-devs/console/security-policies","title":"Security policies","description":"Ask your platform administrator to activate the Kyverno App to use this feature.","sidebar":"mainSidebar"},"for-devs/console/services":{"id":"for-devs/console/services","title":"Team Services","description":"A Service is a self-service feature for:","sidebar":"mainSidebar"},"for-devs/console/settings":{"id":"for-devs/console/settings","title":"Team Settings","description":"Based on self-service options allowed by the platfrom administrator, team members can change the settings of their team.","sidebar":"mainSidebar"},"for-devs/console/shell":{"id":"for-devs/console/shell","title":"Shell (TTY Console)","description":"The Shell feature allows to start a web based shell in Console with Kube API access. When starting a shell, a dedicated shell instance will be started for the user. The shell includes the following tools:","sidebar":"mainSidebar"},"for-devs/console/workloads":{"id":"for-devs/console/workloads","title":"Team Workloads","description":"A Workload is a self-service feature for creating Kubernetes resources using Helm charts from the Catalog.","sidebar":"mainSidebar"},"for-ops/cli/apply":{"id":"for-ops/cli/apply","title":"otomi apply","description":"otomi apply [options]","sidebar":"mainSidebar"},"for-ops/cli/bash":{"id":"for-ops/cli/bash","title":"otomi bash","description":"otomi bash","sidebar":"mainSidebar"},"for-ops/cli/bootstrap":{"id":"for-ops/cli/bootstrap","title":"otomi bootstrap","description":"otomi bootstrap [options]","sidebar":"mainSidebar"},"for-ops/cli/commit":{"id":"for-ops/cli/commit","title":"otomi commit","description":"otomi commit [options]","sidebar":"mainSidebar"},"for-ops/cli/decrypt":{"id":"for-ops/cli/decrypt","title":"otomi decrypt","description":"otomi decrypt [options]","sidebar":"mainSidebar"},"for-ops/cli/deploying":{"id":"for-ops/cli/deploying","title":"Using the CLI","description":"1. Initialize a values repo","sidebar":"mainSidebar"},"for-ops/cli/destroy":{"id":"for-ops/cli/destroy","title":"otomi destroy","description":"otomi destroy [options]","sidebar":"mainSidebar"},"for-ops/cli/diff":{"id":"for-ops/cli/diff","title":"otomi diff","description":"otomi diff [options]","sidebar":"mainSidebar"},"for-ops/cli/encrypt":{"id":"for-ops/cli/encrypt","title":"otomi encrypt","description":"otomi encrypt [files...] [options]","sidebar":"mainSidebar"},"for-ops/cli/installation":{"id":"for-ops/cli/installation","title":"Installing and using the CLI","description":"Prerequisites","sidebar":"mainSidebar"},"for-ops/cli/known-issues":{"id":"for-ops/cli/known-issues","title":"Known Issues","description":"The otomi (diff|apply|sync|template) commands are delegated to helmfile, which in turn delegates the deployment work to helm. Sometimes it is not clear wether the issue is from Helm or Helmfile, so we will address them together in this section.","sidebar":"mainSidebar"},"for-ops/cli/lint":{"id":"for-ops/cli/lint","title":"otomi lint","description":"otomi lint [options]","sidebar":"mainSidebar"},"for-ops/cli/pull":{"id":"for-ops/cli/pull","title":"otomi pull","description":"otomi pull [options]","sidebar":"mainSidebar"},"for-ops/cli/rotate-keys":{"id":"for-ops/cli/rotate-keys","title":"otomi rotate-keys","description":"otomi rotate-keys [options]","sidebar":"mainSidebar"},"for-ops/cli/status":{"id":"for-ops/cli/status","title":"otomi status","description":"otomi status [options]","sidebar":"mainSidebar"},"for-ops/cli/sync":{"id":"for-ops/cli/sync","title":"otomi sync","description":"otomi sync [options]","sidebar":"mainSidebar"},"for-ops/cli/template":{"id":"for-ops/cli/template","title":"otomi template","description":"otomi template [options]","sidebar":"mainSidebar"},"for-ops/cli/test":{"id":"for-ops/cli/test","title":"otomi test","description":"otomi test [options]","sidebar":"mainSidebar"},"for-ops/cli/validate-templates":{"id":"for-ops/cli/validate-templates","title":"otomi validate-templates","description":"otomi validate-templates [options]","sidebar":"mainSidebar"},"for-ops/cli/validate-values":{"id":"for-ops/cli/validate-values","title":"otomi validate-values","description":"otomi validate-values [options]","sidebar":"mainSidebar"},"for-ops/cli/values":{"id":"for-ops/cli/values","title":"otomi values","description":"otomi values [options]","sidebar":"mainSidebar"},"for-ops/cli/x":{"id":"for-ops/cli/x","title":"otomi x","description":"otomi x","sidebar":"mainSidebar"},"for-ops/console/apps":{"id":"for-ops/console/apps","title":"Platform - Apps","description":"The apps section lists all apps available.","sidebar":"mainSidebar"},"for-ops/console/backups":{"id":"for-ops/console/backups","title":"Platform - Backups","description":"To enable this feature, first make sure Velero is activated and a Linode API Token is added to the Backup section in the Settings.","sidebar":"mainSidebar"},"for-ops/console/builds":{"id":"for-ops/console/builds","title":"Platform - Builds","description":"To enable this feature, first make sure Harbor is activated. To push images to Harbor, DNS and trusted certificates (Lets encrypt with production certificates) need to be configured.","sidebar":"mainSidebar"},"for-ops/console/dashboard":{"id":"for-ops/console/dashboard","title":"Platform Dashboard","description":"The platform dashboard gives a global overview of information most relevant for the platform admin. In the top bar, select the View: platform.","sidebar":"mainSidebar"},"for-ops/console/deploy-changes":{"id":"for-ops/console/deploy-changes","title":"Deploy changes","description":"When a change has been made, by pressing Submit, the Deploy Changes button will light up to deploy the changes you have made in the Console. This will create a commit of the changes to the values repository in Gitea and trigger the Drone pipeline run to generate the new Values used for all Argo CD applications."},"for-ops/console/maintenance":{"id":"for-ops/console/maintenance","title":"Platform - Maintenance","description":"Maintenance actions available for platform administrators.","sidebar":"mainSidebar"},"for-ops/console/netpols":{"id":"for-ops/console/netpols","title":"Platform - Netwok Policies","description":"All known Network Policies on the platform are listed here. Network Policies can be sorted based on:","sidebar":"mainSidebar"},"for-ops/console/overview":{"id":"for-ops/console/overview","title":"Overview","description":"The Console","sidebar":"mainSidebar"},"for-ops/console/projects":{"id":"for-ops/console/projects","title":"Projects","description":"A Project is a collection of a Build, a Workload and a Service in ONE self-service form. When a user creates a project, the name of the project will be used for all created resources (a build, a workload and a service).","sidebar":"mainSidebar"},"for-ops/console/services":{"id":"for-ops/console/services","title":"Platform - Services","description":"All known Services on the platform are listed here. Services can be sorted based on:","sidebar":"mainSidebar"},"for-ops/console/settings/alerts":{"id":"for-ops/console/settings/alerts","title":"Platform settings","description":"Alerts","sidebar":"mainSidebar"},"for-ops/console/settings/backup":{"id":"for-ops/console/settings/backup","title":"Platform settings","description":"Backup","sidebar":"mainSidebar"},"for-ops/console/settings/cluster":{"id":"for-ops/console/settings/cluster","title":"Platform settings","description":"Cluster","sidebar":"mainSidebar"},"for-ops/console/settings/dns":{"id":"for-ops/console/settings/dns","title":"Platform settings","description":"DNS","sidebar":"mainSidebar"},"for-ops/console/settings/general":{"id":"for-ops/console/settings/general","title":"Platform settings","description":"General Settings","sidebar":"mainSidebar"},"for-ops/console/settings/ingress":{"id":"for-ops/console/settings/ingress","title":"Platform settings","description":"Ingress","sidebar":"mainSidebar"},"for-ops/console/settings/key-management":{"id":"for-ops/console/settings/key-management","title":"Platform settings","description":"Key management","sidebar":"mainSidebar"},"for-ops/console/settings/obj":{"id":"for-ops/console/settings/obj","title":"Platform settings","description":"Object Storage","sidebar":"mainSidebar"},"for-ops/console/settings/oidc":{"id":"for-ops/console/settings/oidc","title":"Platform settings","description":"OIDC","sidebar":"mainSidebar"},"for-ops/console/settings/smtp":{"id":"for-ops/console/settings/smtp","title":"Platform settings","description":"SMTP","sidebar":"mainSidebar"},"for-ops/console/shell":{"id":"for-ops/console/shell","title":"Shell","description":"The Shell feature allows to start a web based shell in Otomi Console with Kube API access. When starting a shell, a dedicated shell instance will be started for the user. The shell includes the following tools:"},"for-ops/console/teams":{"id":"for-ops/console/teams","title":"Platform - Teams","description":"About Teams","sidebar":"mainSidebar"},"for-ops/console/workloads":{"id":"for-ops/console/workloads","title":"Platform - Workloads","description":"To enable this feature, first make sure Argo CD is activated.","sidebar":"mainSidebar"},"for-ops/how-to/backups":{"id":"for-ops/how-to/backups","title":"Create/Restore backups","description":"When Velero is activated on the platform level, platform admins can create backups of Persistent Volumes (PVs) in Team namespaces using the Console. When creating backups using the Console, a Velero schedule resource is created that will create the backup at a specified time, defined by a Cron expression.","sidebar":"mainSidebar"},"for-ops/how-to/clone-apl":{"id":"for-ops/how-to/clone-apl","title":"Clone Platform Instance","description":"It may happen that you need to move the platform configuration to another Kubernetes cluster. Because everyting is GitOps driven, you can export the existing setup that can then be used to install it on a new cluster.","sidebar":"mainSidebar"},"for-ops/how-to/core-only":{"id":"for-ops/how-to/core-only","title":"Use Core only","description":"By default Gitea, Tekton, Argo CD, the platform API and the Console are installed. The Console is the self-service UI and uses the platform API to generate validated configuration code. This configuration code is then committed to Gitea (in the otomi-values repository), which will trigger the pre-configured Tekton pipeline to apply the changes.","sidebar":"mainSidebar"},"for-ops/how-to/ingress-classes":{"id":"for-ops/how-to/ingress-classes","title":"Manage Ingress Controllers","description":"Exposure (ingress) for all services (included exposure for platform services) is handeled by the default platform ingress class using a public (cloud) load balancer. It is also possible to use multiple ingress classes. Each class will get a dedicated ingress controller. In case of a security requirement, where platform services are not allowed to be exposed publicly, the default platform class can be configured to use a private load balancer instead of a public one by adding the required annotations. Additional (public) ingress classes can be created to expose team (application) services.","sidebar":"mainSidebar"},"for-ops/how-to/overview":{"id":"for-ops/how-to/overview","title":"How to\'s for Ops","description":"How to\'s for Ops / Platform administrators","sidebar":"mainSidebar"},"for-ops/how-to/use-catalog":{"id":"for-ops/how-to/use-catalog","title":"Managing the Catalog","description":"A Catalog is made available to Teams on the platform to offer them golden path templates (Helm charts). This is how it works:","sidebar":"mainSidebar"},"for-ops/how-to/use-team-admin":{"id":"for-ops/how-to/use-team-admin","title":"Use team-admin","description":"By default a team called team-admin is created. The Admin Team is no regular team. This team for instance has no apps. Instead the admin needs to use the platform apps to see logs and metrics of workloads deployed in the team-admin namespace.","sidebar":"mainSidebar"},"for-ops/sre/daily":{"id":"for-ops/sre/daily","title":"SRE Daily Routine","description":"As an SRE you would like to keep your daily tasks to a minimum and be automatically informed on issues. APL offers the following tooling to automate this:","sidebar":"mainSidebar"},"for-ops/sre/overview":{"id":"for-ops/sre/overview","title":"SRE Overview","description":"APL is a set of functions built on top of a suite of pre-configured and integrated open source applications. Instead of selecting, configuring, and integrating all the parts that are needed to securely manage containerized applications in multi- and hybrid environments, APL offers all required parts in a single package. APL can be seen as any other Kubernetes application or add-on, with the difference that APL is pre-configured and offers a higher abstraction of configuration for all the integrated solutions. All integrated applications can however be used freely, meaning that a user can benefit from the pre-configuration to start using the offered applications.","sidebar":"mainSidebar"},"for-ops/sre/troubleshooting":{"id":"for-ops/sre/troubleshooting","title":"SRE Troubleshooting Checklist","description":"Pods not starting","sidebar":"mainSidebar"},"get-started/installation/akamai-cloud":{"id":"get-started/installation/akamai-cloud","title":"Akamai Connected Cloud","description":"Comming soon!","sidebar":"mainSidebar"},"get-started/installation/byo-wildcard":{"id":"get-started/installation/byo-wildcard","title":"BYO Wild card Certificate","description":"When installing with DNS, there are 3 issuers you can use:","sidebar":"mainSidebar"},"get-started/installation/custom":{"id":"get-started/installation/custom","title":"Custom","description":"To install on any other conformant Kubernetes, use the custom provider. Make sure your infrastructure adheres to the following pre-requisites:","sidebar":"mainSidebar"},"get-started/installation/dns":{"id":"get-started/installation/dns","title":"DNS","description":"The Builds and Projects features are NOT supported without DNS configured. Install with DNS to use all features.","sidebar":"mainSidebar"},"get-started/installation/entrypoint":{"id":"get-started/installation/entrypoint","title":"Install with entrypoint","description":"In some cases, the Kubernetes cluster will de deployed in a private setup where public access is only possible using an external gateway or firewall.","sidebar":"mainSidebar"},"get-started/installation/helm":{"id":"get-started/installation/helm","title":"Helm","description":"Install client binaries","sidebar":"mainSidebar"},"get-started/installation/linode":{"id":"get-started/installation/linode","title":"Linode","description":"Provision a LKE cluster in Cloud Manager or by using the Linode CLI and manually install Application Platform for LKE onto it by using a Linode Domain.","sidebar":"mainSidebar"},"get-started/installation/oidc":{"id":"get-started/installation/oidc","title":"OIDC","description":"Use Azure Entra ID","sidebar":"mainSidebar"},"get-started/installation/overview":{"id":"get-started/installation/overview","title":"Installation","description":"How to get Application Platform for LKE up and running","sidebar":"mainSidebar"},"get-started/installation/post-install-steps":{"id":"get-started/installation/post-install-steps","title":"Post installation steps","description":"Follow the post-installation steps after initial installation.","sidebar":"mainSidebar"},"get-started/installation/sops":{"id":"get-started/installation/sops","title":"Use SOPS for value encryption","description":"If you would like sensitive information in the values repository to be encrypted, you will have to use sops.","sidebar":"mainSidebar"},"get-started/labs/auto-image-update":{"id":"get-started/labs/auto-image-update","title":"Configure auto image updater","description":"When using the Workload feature to deploy Helm charts from the Catalog, then you can also use the Auto image updater feature to to automatically update the container images of Kubernetes workloads.","sidebar":"mainSidebar"},"get-started/labs/build-images":{"id":"get-started/labs/build-images","title":"Build images from application source","description":"Harbor needs to be activated for this lab.","sidebar":"mainSidebar"},"get-started/labs/canary-deployment":{"id":"get-started/labs/canary-deployment","title":"Canary deployment","description":"In this lab we are going to create a canary deployment. The idea behind canary deployment (or rollout) is to introduce a new version of an application by first testing it using a small percentage of user traffic, and then if all goes well increasing the percentage while simultaneously phasing out the old version.","sidebar":"mainSidebar"},"get-started/labs/create-netpols":{"id":"get-started/labs/create-netpols","title":"Configuring network policies","description":"In some cases you want to explicitly allow access to your application. This can be done by creating network policies. 2 types of network policies are supported:","sidebar":"mainSidebar"},"get-started/labs/create-postgresql-db":{"id":"get-started/labs/create-postgresql-db","title":"Create a PostgreSQL database","description":"The Cloudnative POstgreSQL database operator is installed by default. Teams can use the operator and the postgresql quick start to create their own PostgreSQL databases.","sidebar":"mainSidebar"},"get-started/labs/create-projects":{"id":"get-started/labs/create-projects","title":"Create projects","description":"A Project is a collection of a Build, a Workload and a Service. The benefit of using Projects is that you can create a Build, a Workload and a Service in one run. Projects are ideal for developers to run multiple code branches next to each other and automatically update the deployment based on a push. In this lab we are going to create a Project and see how everything now comes together is one simple form.","sidebar":"mainSidebar"},"get-started/labs/create-rabbitmq-cluster":{"id":"get-started/labs/create-rabbitmq-cluster","title":"Create rabbitMQ Cluster","description":"In this lab we will create a RabbitMQ Cluster using the quick start Rabbitmq Helm chart from the Catalog.","sidebar":"mainSidebar"},"get-started/labs/create-repos":{"id":"get-started/labs/create-repos","title":"Create a private Git repo","description":"As a developer you\'ll need a Git repository for your code. Most organizations will probably have a central code repository like Gitlab, or use Github. But if you don\'t, you can use the integrated Git service.","sidebar":"mainSidebar"},"get-started/labs/create-sealed-secrets":{"id":"get-started/labs/create-sealed-secrets","title":"Create Sealed Secrets","description":"In this lab we will create sealed secrets and see how to securely sensitive information in git repository.","sidebar":"mainSidebar"},"get-started/labs/create-workloads":{"id":"get-started/labs/create-workloads","title":"Create Workloads","description":"In the previous lab we deployed a workload using Argo CD with a BYO manifest and we explored the Catalog. In this lab we\'ll create a Workload (a Kubernetes Deployment) using the Catalog and the Workload self-service feature.","sidebar":"mainSidebar"},"get-started/labs/custom-dashboards":{"id":"get-started/labs/custom-dashboards","title":"Create custom dashboards","description":"In the lab Using custom metrics we created a Workload with a ServiceMonitor so the Team\'s Prometheus can scrape our custom metrics. In this lab we are going to create a custom Grafana dashboard and add the dashboard to a Configmap so the Team\'s Grafana will automatically load the dashboard.","sidebar":"mainSidebar"},"get-started/labs/custom-metrics":{"id":"get-started/labs/custom-metrics","title":"Using custom metrics","description":"For this lab Prometheus and Grafana need to be enabled for the Team.","sidebar":"mainSidebar"},"get-started/labs/custom-rules":{"id":"get-started/labs/custom-rules","title":"Create custom rules","description":"Now we are exporting metrics, these metrics can also be used to generate alerts. To generate alerts, we first need to create a Prometheus Rule:","sidebar":"mainSidebar"},"get-started/labs/expose-services":{"id":"get-started/labs/expose-services","title":"Publicly expose workloads","description":"When you have deployed your application using the Workloads feature, you will probably like to expose it publicly. In this lab we\'ll create a Service to publicly expose your application. When you create a Service, the Istio virtual service and and ingress resource for your application will be created automatically.","sidebar":"mainSidebar"},"get-started/labs/labs-overview":{"id":"get-started/labs/labs-overview","title":"Labs Overview","description":"Welcome to the Application Platform for LKE labs! If you are going to use the Application Platform for LKE or like to learn Kubernetes, these labs are for you. Step by step we\'ll guide you in how to build, deploy, secure and observe containerized applications on Kubernetes. The labs cover the most common activities performed by developer- and/or DevOps teams.","sidebar":"mainSidebar"},"get-started/labs/labs-prerequisites":{"id":"get-started/labs/labs-prerequisites","title":"Lab Prerequisites","description":"Prerequisites","sidebar":"mainSidebar"},"get-started/labs/monitor-workloads":{"id":"get-started/labs/monitor-workloads","title":"Monitoring availability","description":"When your application is deployed, you would of course like to get an alert when you application (service) is not available anymore. To automatically monitor you applications for availability, a prope to monitor your service is automatically configured.","sidebar":"mainSidebar"},"get-started/labs/push-images":{"id":"get-started/labs/push-images","title":"Push images to Harbor","description":"For this lab, Harbor needs to be activated and the cluster needs to be configured with trusted certificates (like Let\'s Encrypt using production certificate).","sidebar":"mainSidebar"},"get-started/labs/scan-containers":{"id":"get-started/labs/scan-containers","title":"Scan your running containers for vulnerabilities","description":"Trivy Operator needs to be activated for this lab.","sidebar":"mainSidebar"},"get-started/labs/scan-images":{"id":"get-started/labs/scan-images","title":"Scan your images for vulnerabilities","description":"Prerequisites","sidebar":"mainSidebar"},"get-started/labs/trigger-builds":{"id":"get-started/labs/trigger-builds","title":"Trigger Builds","description":"In the previous lab we created a Build using the blue repo in Gitea. In this lab we\'ll create a build for the green repo and trigger the build based on a webhook.","sidebar":"mainSidebar"},"get-started/labs/use-catalog":{"id":"get-started/labs/use-catalog","title":"Use the Catalog","description":"In this lab we are going to explore the Catalog. The Catalog is a library of curated Helm charts to create Kubernetes resources. By default the Catalog contains a set of Helm charts to get started quickly, but they can also be modified depending on your requirements or be removed from the Catalog. The contents of the Catalog and the RBAC configuration (which Team can use which Helm chart) are managed by the platform administrator. Contact the platform administrator if you would like to add your own charts to use within your Team.","sidebar":"mainSidebar"},"get-started/labs/use-otel":{"id":"get-started/labs/use-otel","title":"OpenTelemetry","description":"In order to make a system observable, it must be instrumented. Language specific implementation of OpenTelemetry provides a way to instrument your application without touching your source code. In this lab we\'re going to instrument a Java application.","sidebar":"mainSidebar"},"get-started/labs/using-argo-cd":{"id":"get-started/labs/using-argo-cd","title":"Using Argo CD","description":"Creating Kubernetes resources using kubectl apply -f can be inefficient. As a developer, managing resources based on code stored in Git enhances control and traceability. Argo CD is integrated to provide a seamless GitOps experience, streamlining your deployment process.","sidebar":"mainSidebar"},"get-started/labs/view-logs":{"id":"get-started/labs/view-logs","title":"View container logs","description":"Loki needs to be enabled on the platform level and Grafana needs to be enabled for the Team.","sidebar":"mainSidebar"},"get-started/labs/view-metrics":{"id":"get-started/labs/view-metrics","title":"View container metrics","description":"Prometheus and Grafana for the Team need to be activated for this lab.","sidebar":"mainSidebar"},"get-started/overview":{"id":"get-started/overview","title":"Overview","description":"How to get started with Application Platform for LKE","sidebar":"mainSidebar"}}}')}}]); \ No newline at end of file diff --git a/assets/js/94495612.1f0c1c14.js b/assets/js/94495612.1f0c1c14.js deleted file mode 100644 index f42033df4..000000000 --- a/assets/js/94495612.1f0c1c14.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkredkubes_github_io=self.webpackChunkredkubes_github_io||[]).push([[6733],{4346:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>l,contentTitle:()=>t,default:()=>p,frontMatter:()=>s,metadata:()=>o,toc:()=>d});var i=r(5893),a=r(1151);const s={slug:"apps-overview",title:"Apps Overview",sidebar_label:"Apps Overview"},t=void 0,o={id:"apps/apps-overview",title:"Apps Overview",description:"Application Platform for Linode Kubernetes Engine (LKE) integrated Applications",source:"@site/docs/apps/apps-overview.md",sourceDirName:"apps",slug:"/apps/apps-overview",permalink:"/docs/apps/apps-overview",draft:!1,unlisted:!1,editUrl:"https://github.com/linode/linode.github.io/tree/main/docs/apps/apps-overview.md",tags:[],version:"current",frontMatter:{slug:"apps-overview",title:"Apps Overview",sidebar_label:"Apps Overview"},sidebar:"mainSidebar",previous:{title:"Troubleshooting",permalink:"/docs/for-ops/sre/troubleshooting"},next:{title:"Alertmanager",permalink:"/docs/apps/alertmanager"}},l={},d=[{value:"Application Platform for Linode Kubernetes Engine (LKE) integrated Applications",id:"application-platform-for-linode-kubernetes-engine-lke-integrated-applications",level:2},{value:"Image Build and CI/CD",id:"image-build-and-cicd",level:3},{value:"Argo CD",id:"argo-cd",level:3},{value:"Gitea",id:"gitea",level:3},{value:"Tekton",id:"tekton",level:3},{value:"Harbor",id:"harbor",level:3},{value:"Knative",id:"knative",level:3},{value:"Security, Compliance & Key Management",id:"security-compliance--key-management",level:3},{value:"Kyverno",id:"kyverno",level:3},{value:"Trivy Operator",id:"trivy-operator",level:3},{value:"Keycloak",id:"keycloak",level:3},{value:"Cert-Manager",id:"cert-manager",level:3},{value:"Sealed Secrets",id:"sealed-secrets",level:3},{value:"Falco",id:"falco",level:3},{value:"ExternalDNS",id:"externaldns",level:3},{value:"Monitoring, Logging & Tracing",id:"monitoring-logging--tracing",level:3},{value:"Prometheus",id:"prometheus",level:3},{value:"Alertmanager",id:"alertmanager",level:3},{value:"Grafana Loki",id:"grafana-loki",level:3},{value:"Grafana",id:"grafana",level:3},{value:"Kiali",id:"kiali",level:3},{value:"Jaeger",id:"jaeger",level:3},{value:"Grafana Tempo",id:"grafana-tempo",level:3},{value:"Open Telemetry Operator",id:"open-telemetry-operator",level:3},{value:"Service Mesh & Proxy",id:"service-mesh--proxy",level:3},{value:"Istio",id:"istio",level:3},{value:"Nginx Ingress Controller",id:"nginx-ingress-controller",level:3},{value:"Streaming & Messaging",id:"streaming--messaging",level:3},{value:"RabbitMQ",id:"rabbitmq",level:3},{value:"Scheduling",id:"scheduling",level:3},{value:"Kured",id:"kured",level:3},{value:"Cloud Native Storage",id:"cloud-native-storage",level:3},{value:"Velero",id:"velero",level:3},{value:"CloudNative PG",id:"cloudnative-pg",level:3},{value:"Minio",id:"minio",level:3}];function c(e){const n={a:"a",h2:"h2",h3:"h3",hr:"hr",img:"img",p:"p",...(0,a.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h2,{id:"application-platform-for-linode-kubernetes-engine-lke-integrated-applications",children:"Application Platform for Linode Kubernetes Engine (LKE) integrated Applications"}),"\n",(0,i.jsx)(n.p,{children:"Enable all the Kubernetes Applications you need with just one click!"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"integrated-apps",src:r(7376).Z+"",width:"3210",height:"2116"})}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h3,{id:"image-build-and-cicd",children:"Image Build and CI/CD"}),"\n",(0,i.jsx)(n.h3,{id:"argo-cd",children:(0,i.jsx)(n.a,{href:"/docs/apps/argocd",children:"Argo CD"})}),"\n",(0,i.jsx)(n.p,{children:"Declarative GitOps Continuous Delivery for Kubernetes"}),"\n",(0,i.jsx)(n.h3,{id:"gitea",children:(0,i.jsx)(n.a,{href:"/docs/apps/gitea",children:"Gitea"})}),"\n",(0,i.jsx)(n.p,{children:"Gitea is a painless self-hosted Git service."}),"\n",(0,i.jsx)(n.h3,{id:"tekton",children:(0,i.jsx)(n.a,{href:"/docs/apps/tekton",children:"Tekton"})}),"\n",(0,i.jsx)(n.p,{children:"Tekton Pipelines provides Kubernetes custom resources for declaring CI/CD-style pipelines."}),"\n",(0,i.jsx)(n.h3,{id:"harbor",children:(0,i.jsx)(n.a,{href:"/docs/apps/harbor",children:"Harbor"})}),"\n",(0,i.jsx)(n.p,{children:"Harbor is a cloud native registry that stores, signs, and scans content."}),"\n",(0,i.jsx)(n.h3,{id:"knative",children:(0,i.jsx)(n.a,{href:"/docs/apps/knative",children:"Knative"})}),"\n",(0,i.jsx)(n.p,{children:"Knative Serving builds on Kubernetes to support deploying and serving of applications and functions as serverless containers."}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h3,{id:"security-compliance--key-management",children:"Security, Compliance & Key Management"}),"\n",(0,i.jsx)(n.h3,{id:"kyverno",children:(0,i.jsx)(n.a,{href:"/docs/apps/kyverno",children:"Kyverno"})}),"\n",(0,i.jsx)(n.p,{children:"Kyverno is a policy engine designed for Kubernetes. It can validate, mutate, and generate configurations using admission controls and background scans."}),"\n",(0,i.jsx)(n.h3,{id:"trivy-operator",children:(0,i.jsx)(n.a,{href:"/docs/apps/trivy",children:"Trivy Operator"})}),"\n",(0,i.jsx)(n.p,{children:"Trivy Operator continuously scans your Kubernetes cluster for security issues, and generates security reports as Kubernetes Custom Resources."}),"\n",(0,i.jsx)(n.h3,{id:"keycloak",children:(0,i.jsx)(n.a,{href:"/docs/apps/keycloak",children:"Keycloak"})}),"\n",(0,i.jsx)(n.p,{children:"Keycloak is an Open Source Identity and Access Management solution for modern Applications and Services."}),"\n",(0,i.jsx)(n.h3,{id:"cert-manager",children:(0,i.jsx)(n.a,{href:"/docs/apps/certmanager",children:"Cert-Manager"})}),"\n",(0,i.jsx)(n.p,{children:"X.509 certificate management for Kubernetes."}),"\n",(0,i.jsx)(n.h3,{id:"sealed-secrets",children:(0,i.jsx)(n.a,{href:"/docs/apps/sealed-secrets",children:"Sealed Secrets"})}),"\n",(0,i.jsx)(n.p,{children:"Sealed Secrets is a Kubernetes Custom Resource Definition Controller which allows you to store even sensitive information in Git repositories."}),"\n",(0,i.jsx)(n.h3,{id:"falco",children:(0,i.jsx)(n.a,{href:"/docs/apps/falco",children:"Falco"})}),"\n",(0,i.jsx)(n.p,{children:"Falco is an open source cloud native runtime security tool that makes it easy to consume kernel events, and enrich those events with information from Kubernetes."}),"\n",(0,i.jsx)(n.h3,{id:"externaldns",children:(0,i.jsx)(n.a,{href:"external-dns",children:"ExternalDNS"})}),"\n",(0,i.jsx)(n.p,{children:"ExternalDNS synchronizes exposed Kubernetes Services and Ingresses with DNS providers."}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h3,{id:"monitoring-logging--tracing",children:"Monitoring, Logging & Tracing"}),"\n",(0,i.jsx)(n.h3,{id:"prometheus",children:(0,i.jsx)(n.a,{href:"/docs/apps/prometheus",children:"Prometheus"})}),"\n",(0,i.jsx)(n.p,{children:"Prometheus monitors systems and services by collecting metrics from targets at intervals, evaluating rules, displaying results, and triggering alerts for specified conditions."}),"\n",(0,i.jsx)(n.h3,{id:"alertmanager",children:(0,i.jsx)(n.a,{href:"/docs/apps/alertmanager",children:"Alertmanager"})}),"\n",(0,i.jsx)(n.p,{children:"Alertmanager handles alerts sent by client applications such as Prometheus."}),"\n",(0,i.jsx)(n.h3,{id:"grafana-loki",children:(0,i.jsx)(n.a,{href:"/docs/apps/loki",children:"Grafana Loki"})}),"\n",(0,i.jsx)(n.p,{children:"Loki is a horizontally-scalable, highly-available, multi-tenant log aggregation system inspired by Prometheus."}),"\n",(0,i.jsx)(n.h3,{id:"grafana",children:(0,i.jsx)(n.a,{href:"/docs/apps/grafana",children:"Grafana"})}),"\n",(0,i.jsx)(n.p,{children:"Grafana allows you to query, visualize, alert on and understand your metrics no matter where they are stored."}),"\n",(0,i.jsx)(n.h3,{id:"kiali",children:(0,i.jsx)(n.a,{href:"/docs/apps/kiali",children:"Kiali"})}),"\n",(0,i.jsx)(n.p,{children:"Kiali is a management console for Istio to manage, visualize, validate and troubleshoot the service mesh."}),"\n",(0,i.jsx)(n.h3,{id:"jaeger",children:(0,i.jsx)(n.a,{href:"/docs/apps/jaeger",children:"Jaeger"})}),"\n",(0,i.jsx)(n.p,{children:"Jaeger is a distributed tracing platform."}),"\n",(0,i.jsx)(n.h3,{id:"grafana-tempo",children:(0,i.jsx)(n.a,{href:"/docs/apps/tempo",children:"Grafana Tempo"})}),"\n",(0,i.jsx)(n.p,{children:"Grafana Tempo is an open source, easy-to-use and high-scale distributed tracing backend."}),"\n",(0,i.jsx)(n.h3,{id:"open-telemetry-operator",children:(0,i.jsx)(n.a,{href:"/docs/apps/otel",children:"Open Telemetry Operator"})}),"\n",(0,i.jsx)(n.p,{children:"The Open Telemetry Operator offers a vendor-agnostic implementation on how to receive, process and export telemetry data."}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h3,{id:"service-mesh--proxy",children:"Service Mesh & Proxy"}),"\n",(0,i.jsx)(n.h3,{id:"istio",children:(0,i.jsx)(n.a,{href:"/docs/apps/istio",children:"Istio"})}),"\n",(0,i.jsx)(n.p,{children:"Istio is a Service Mesh for providing a uniform way to integrate microservices, manage traffic flow across microservices, enforce policies and aggregate telemetry data."}),"\n",(0,i.jsx)(n.h3,{id:"nginx-ingress-controller",children:(0,i.jsx)(n.a,{href:"/docs/apps/ingress-nginx",children:"Nginx Ingress Controller"})}),"\n",(0,i.jsx)(n.p,{children:"Nginx Ingress Controller is an Ingress controller for Kubernetes using NGINX as a reverse proxy and load balancer."}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h3,{id:"streaming--messaging",children:"Streaming & Messaging"}),"\n",(0,i.jsx)(n.h3,{id:"rabbitmq",children:(0,i.jsx)(n.a,{href:"/docs/apps/rabbitmq",children:"RabbitMQ"})}),"\n",(0,i.jsx)(n.p,{children:"RabbitMQ is the most widely deployed open source message broker."}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h3,{id:"scheduling",children:"Scheduling"}),"\n",(0,i.jsx)(n.h3,{id:"kured",children:(0,i.jsx)(n.a,{href:"/docs/apps/kured",children:"Kured"})}),"\n",(0,i.jsx)(n.p,{children:"Kured (KUbernetes REboot Daemon) is a Kubernetes daemonset that performs safe automatic node reboots when the need to do so is indicated by the package management system of the underlying OS."}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h3,{id:"cloud-native-storage",children:"Cloud Native Storage"}),"\n",(0,i.jsx)(n.h3,{id:"velero",children:(0,i.jsx)(n.a,{href:"/docs/apps/velero",children:"Velero"})}),"\n",(0,i.jsx)(n.p,{children:"Velero is a tool to back up and restore Kubernetes cluster resources and persistent volumes."}),"\n",(0,i.jsx)(n.h3,{id:"cloudnative-pg",children:(0,i.jsx)(n.a,{href:"/docs/apps/cloudnativepg",children:"CloudNative PG"})}),"\n",(0,i.jsx)(n.p,{children:"CloudNative PostgreSQL is an open source operator designed to manage PostgreSQL workloads on Kubernetes."}),"\n",(0,i.jsx)(n.h3,{id:"minio",children:(0,i.jsx)(n.a,{href:"/docs/apps/minio",children:"Minio"})}),"\n",(0,i.jsx)(n.p,{children:"MinIO is a High Performance Object Storage and its API is compatible with the Amazon Web Services S3 cloud storage service."})]})}function p(e={}){const{wrapper:n}={...(0,a.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},7376:(e,n,r)=>{r.d(n,{Z:()=>i});const i=r.p+"assets/images/integrated-apps-ecae3877f8f66917ba2863126b0f355c.png"},1151:(e,n,r)=>{r.d(n,{Z:()=>o,a:()=>t});var i=r(7294);const a={},s=i.createContext(a);function t(e){const n=i.useContext(s);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:t(e.components),i.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b3921f18.4e895d26.js b/assets/js/b3921f18.4e895d26.js new file mode 100644 index 000000000..0ec3cb6f8 --- /dev/null +++ b/assets/js/b3921f18.4e895d26.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkredkubes_github_io=self.webpackChunkredkubes_github_io||[]).push([[3256],{7396:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>l,contentTitle:()=>t,default:()=>p,frontMatter:()=>s,metadata:()=>o,toc:()=>d});var i=r(5893),a=r(1151);const s={slug:"apps-overview",title:"Apps Overview",sidebar_label:"Apps Overview"},t=void 0,o={id:"apps/overview",title:"Apps Overview",description:"Application Platform for Linode Kubernetes Engine (LKE) integrated Applications",source:"@site/docs/apps/overview.md",sourceDirName:"apps",slug:"/apps/apps-overview",permalink:"/docs/apps/apps-overview",draft:!1,unlisted:!1,editUrl:"https://github.com/linode/linode.github.io/tree/main/docs/apps/overview.md",tags:[],version:"current",frontMatter:{slug:"apps-overview",title:"Apps Overview",sidebar_label:"Apps Overview"},sidebar:"mainSidebar",previous:{title:"Troubleshooting",permalink:"/docs/for-ops/sre/troubleshooting"},next:{title:"Alertmanager",permalink:"/docs/apps/alertmanager"}},l={},d=[{value:"Application Platform for Linode Kubernetes Engine (LKE) integrated Applications",id:"application-platform-for-linode-kubernetes-engine-lke-integrated-applications",level:2},{value:"Image Build and CI/CD",id:"image-build-and-cicd",level:3},{value:"Argo CD",id:"argo-cd",level:3},{value:"Gitea",id:"gitea",level:3},{value:"Tekton",id:"tekton",level:3},{value:"Harbor",id:"harbor",level:3},{value:"Knative",id:"knative",level:3},{value:"Security, Compliance & Key Management",id:"security-compliance--key-management",level:3},{value:"Kyverno",id:"kyverno",level:3},{value:"Trivy Operator",id:"trivy-operator",level:3},{value:"Keycloak",id:"keycloak",level:3},{value:"Cert-Manager",id:"cert-manager",level:3},{value:"Sealed Secrets",id:"sealed-secrets",level:3},{value:"Falco",id:"falco",level:3},{value:"ExternalDNS",id:"externaldns",level:3},{value:"Monitoring, Logging & Tracing",id:"monitoring-logging--tracing",level:3},{value:"Prometheus",id:"prometheus",level:3},{value:"Alertmanager",id:"alertmanager",level:3},{value:"Grafana Loki",id:"grafana-loki",level:3},{value:"Grafana",id:"grafana",level:3},{value:"Kiali",id:"kiali",level:3},{value:"Jaeger",id:"jaeger",level:3},{value:"Grafana Tempo",id:"grafana-tempo",level:3},{value:"Open Telemetry Operator",id:"open-telemetry-operator",level:3},{value:"Service Mesh & Proxy",id:"service-mesh--proxy",level:3},{value:"Istio",id:"istio",level:3},{value:"Nginx Ingress Controller",id:"nginx-ingress-controller",level:3},{value:"Streaming & Messaging",id:"streaming--messaging",level:3},{value:"RabbitMQ",id:"rabbitmq",level:3},{value:"Scheduling",id:"scheduling",level:3},{value:"Kured",id:"kured",level:3},{value:"Cloud Native Storage",id:"cloud-native-storage",level:3},{value:"Velero",id:"velero",level:3},{value:"CloudNative PG",id:"cloudnative-pg",level:3},{value:"Minio",id:"minio",level:3}];function c(e){const n={a:"a",h2:"h2",h3:"h3",hr:"hr",img:"img",p:"p",...(0,a.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h2,{id:"application-platform-for-linode-kubernetes-engine-lke-integrated-applications",children:"Application Platform for Linode Kubernetes Engine (LKE) integrated Applications"}),"\n",(0,i.jsx)(n.p,{children:"Enable all the Kubernetes Applications you need with just one click!"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"integrated-apps",src:r(7376).Z+"",width:"3210",height:"2116"})}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h3,{id:"image-build-and-cicd",children:"Image Build and CI/CD"}),"\n",(0,i.jsx)(n.h3,{id:"argo-cd",children:(0,i.jsx)(n.a,{href:"/docs/apps/argocd",children:"Argo CD"})}),"\n",(0,i.jsx)(n.p,{children:"Declarative GitOps Continuous Delivery for Kubernetes"}),"\n",(0,i.jsx)(n.h3,{id:"gitea",children:(0,i.jsx)(n.a,{href:"/docs/apps/gitea",children:"Gitea"})}),"\n",(0,i.jsx)(n.p,{children:"Gitea is a painless self-hosted Git service."}),"\n",(0,i.jsx)(n.h3,{id:"tekton",children:(0,i.jsx)(n.a,{href:"/docs/apps/tekton",children:"Tekton"})}),"\n",(0,i.jsx)(n.p,{children:"Tekton Pipelines provides Kubernetes custom resources for declaring CI/CD-style pipelines."}),"\n",(0,i.jsx)(n.h3,{id:"harbor",children:(0,i.jsx)(n.a,{href:"/docs/apps/harbor",children:"Harbor"})}),"\n",(0,i.jsx)(n.p,{children:"Harbor is a cloud native registry that stores, signs, and scans content."}),"\n",(0,i.jsx)(n.h3,{id:"knative",children:(0,i.jsx)(n.a,{href:"/docs/apps/knative",children:"Knative"})}),"\n",(0,i.jsx)(n.p,{children:"Knative Serving builds on Kubernetes to support deploying and serving of applications and functions as serverless containers."}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h3,{id:"security-compliance--key-management",children:"Security, Compliance & Key Management"}),"\n",(0,i.jsx)(n.h3,{id:"kyverno",children:(0,i.jsx)(n.a,{href:"/docs/apps/kyverno",children:"Kyverno"})}),"\n",(0,i.jsx)(n.p,{children:"Kyverno is a policy engine designed for Kubernetes. It can validate, mutate, and generate configurations using admission controls and background scans."}),"\n",(0,i.jsx)(n.h3,{id:"trivy-operator",children:(0,i.jsx)(n.a,{href:"/docs/apps/trivy",children:"Trivy Operator"})}),"\n",(0,i.jsx)(n.p,{children:"Trivy Operator continuously scans your Kubernetes cluster for security issues, and generates security reports as Kubernetes Custom Resources."}),"\n",(0,i.jsx)(n.h3,{id:"keycloak",children:(0,i.jsx)(n.a,{href:"/docs/apps/keycloak",children:"Keycloak"})}),"\n",(0,i.jsx)(n.p,{children:"Keycloak is an Open Source Identity and Access Management solution for modern Applications and Services."}),"\n",(0,i.jsx)(n.h3,{id:"cert-manager",children:(0,i.jsx)(n.a,{href:"/docs/apps/certmanager",children:"Cert-Manager"})}),"\n",(0,i.jsx)(n.p,{children:"X.509 certificate management for Kubernetes."}),"\n",(0,i.jsx)(n.h3,{id:"sealed-secrets",children:(0,i.jsx)(n.a,{href:"/docs/apps/sealed-secrets",children:"Sealed Secrets"})}),"\n",(0,i.jsx)(n.p,{children:"Sealed Secrets is a Kubernetes Custom Resource Definition Controller which allows you to store even sensitive information in Git repositories."}),"\n",(0,i.jsx)(n.h3,{id:"falco",children:(0,i.jsx)(n.a,{href:"/docs/apps/falco",children:"Falco"})}),"\n",(0,i.jsx)(n.p,{children:"Falco is an open source cloud native runtime security tool that makes it easy to consume kernel events, and enrich those events with information from Kubernetes."}),"\n",(0,i.jsx)(n.h3,{id:"externaldns",children:(0,i.jsx)(n.a,{href:"external-dns",children:"ExternalDNS"})}),"\n",(0,i.jsx)(n.p,{children:"ExternalDNS synchronizes exposed Kubernetes Services and Ingresses with DNS providers."}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h3,{id:"monitoring-logging--tracing",children:"Monitoring, Logging & Tracing"}),"\n",(0,i.jsx)(n.h3,{id:"prometheus",children:(0,i.jsx)(n.a,{href:"/docs/apps/prometheus",children:"Prometheus"})}),"\n",(0,i.jsx)(n.p,{children:"Prometheus monitors systems and services by collecting metrics from targets at intervals, evaluating rules, displaying results, and triggering alerts for specified conditions."}),"\n",(0,i.jsx)(n.h3,{id:"alertmanager",children:(0,i.jsx)(n.a,{href:"/docs/apps/alertmanager",children:"Alertmanager"})}),"\n",(0,i.jsx)(n.p,{children:"Alertmanager handles alerts sent by client applications such as Prometheus."}),"\n",(0,i.jsx)(n.h3,{id:"grafana-loki",children:(0,i.jsx)(n.a,{href:"/docs/apps/loki",children:"Grafana Loki"})}),"\n",(0,i.jsx)(n.p,{children:"Loki is a horizontally-scalable, highly-available, multi-tenant log aggregation system inspired by Prometheus."}),"\n",(0,i.jsx)(n.h3,{id:"grafana",children:(0,i.jsx)(n.a,{href:"/docs/apps/grafana",children:"Grafana"})}),"\n",(0,i.jsx)(n.p,{children:"Grafana allows you to query, visualize, alert on and understand your metrics no matter where they are stored."}),"\n",(0,i.jsx)(n.h3,{id:"kiali",children:(0,i.jsx)(n.a,{href:"/docs/apps/kiali",children:"Kiali"})}),"\n",(0,i.jsx)(n.p,{children:"Kiali is a management console for Istio to manage, visualize, validate and troubleshoot the service mesh."}),"\n",(0,i.jsx)(n.h3,{id:"jaeger",children:(0,i.jsx)(n.a,{href:"/docs/apps/jaeger",children:"Jaeger"})}),"\n",(0,i.jsx)(n.p,{children:"Jaeger is a distributed tracing platform."}),"\n",(0,i.jsx)(n.h3,{id:"grafana-tempo",children:(0,i.jsx)(n.a,{href:"/docs/apps/tempo",children:"Grafana Tempo"})}),"\n",(0,i.jsx)(n.p,{children:"Grafana Tempo is an open source, easy-to-use and high-scale distributed tracing backend."}),"\n",(0,i.jsx)(n.h3,{id:"open-telemetry-operator",children:(0,i.jsx)(n.a,{href:"/docs/apps/otel",children:"Open Telemetry Operator"})}),"\n",(0,i.jsx)(n.p,{children:"The Open Telemetry Operator offers a vendor-agnostic implementation on how to receive, process and export telemetry data."}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h3,{id:"service-mesh--proxy",children:"Service Mesh & Proxy"}),"\n",(0,i.jsx)(n.h3,{id:"istio",children:(0,i.jsx)(n.a,{href:"/docs/apps/istio",children:"Istio"})}),"\n",(0,i.jsx)(n.p,{children:"Istio is a Service Mesh for providing a uniform way to integrate microservices, manage traffic flow across microservices, enforce policies and aggregate telemetry data."}),"\n",(0,i.jsx)(n.h3,{id:"nginx-ingress-controller",children:(0,i.jsx)(n.a,{href:"/docs/apps/ingress-nginx",children:"Nginx Ingress Controller"})}),"\n",(0,i.jsx)(n.p,{children:"Nginx Ingress Controller is an Ingress controller for Kubernetes using NGINX as a reverse proxy and load balancer."}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h3,{id:"streaming--messaging",children:"Streaming & Messaging"}),"\n",(0,i.jsx)(n.h3,{id:"rabbitmq",children:(0,i.jsx)(n.a,{href:"/docs/apps/rabbitmq",children:"RabbitMQ"})}),"\n",(0,i.jsx)(n.p,{children:"RabbitMQ is the most widely deployed open source message broker."}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h3,{id:"scheduling",children:"Scheduling"}),"\n",(0,i.jsx)(n.h3,{id:"kured",children:(0,i.jsx)(n.a,{href:"/docs/apps/kured",children:"Kured"})}),"\n",(0,i.jsx)(n.p,{children:"Kured (KUbernetes REboot Daemon) is a Kubernetes daemonset that performs safe automatic node reboots when the need to do so is indicated by the package management system of the underlying OS."}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h3,{id:"cloud-native-storage",children:"Cloud Native Storage"}),"\n",(0,i.jsx)(n.h3,{id:"velero",children:(0,i.jsx)(n.a,{href:"/docs/apps/velero",children:"Velero"})}),"\n",(0,i.jsx)(n.p,{children:"Velero is a tool to back up and restore Kubernetes cluster resources and persistent volumes."}),"\n",(0,i.jsx)(n.h3,{id:"cloudnative-pg",children:(0,i.jsx)(n.a,{href:"/docs/apps/cloudnativepg",children:"CloudNative PG"})}),"\n",(0,i.jsx)(n.p,{children:"CloudNative PostgreSQL is an open source operator designed to manage PostgreSQL workloads on Kubernetes."}),"\n",(0,i.jsx)(n.h3,{id:"minio",children:(0,i.jsx)(n.a,{href:"/docs/apps/minio",children:"Minio"})}),"\n",(0,i.jsx)(n.p,{children:"MinIO is a High Performance Object Storage and its API is compatible with the Amazon Web Services S3 cloud storage service."})]})}function p(e={}){const{wrapper:n}={...(0,a.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},7376:(e,n,r)=>{r.d(n,{Z:()=>i});const i=r.p+"assets/images/integrated-apps-ecae3877f8f66917ba2863126b0f355c.png"},1151:(e,n,r)=>{r.d(n,{Z:()=>o,a:()=>t});var i=r(7294);const a={},s=i.createContext(a);function t(e){const n=i.useContext(s);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:t(e.components),i.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/main.1e54f7f7.js b/assets/js/main.1e54f7f7.js deleted file mode 100644 index 8549bd2ef..000000000 --- a/assets/js/main.1e54f7f7.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see main.1e54f7f7.js.LICENSE.txt */ -(self.webpackChunkredkubes_github_io=self.webpackChunkredkubes_github_io||[]).push([[179],{830:(e,t,n)=>{"use strict";n.d(t,{W:()=>o});var r=n(7294);function o(){return r.createElement("svg",{width:"20",height:"20",className:"DocSearch-Search-Icon",viewBox:"0 0 20 20"},r.createElement("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}},723:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});n(7294);var r=n(8356),o=n.n(r),a=n(6887);const i={"00210a32":[()=>n.e(2098).then(n.bind(n,1623)),"@site/docs/apps/gitea.md",1623],"0097d0fa":[()=>n.e(9832).then(n.bind(n,9101)),"@site/docs/get-started/labs/push-images.md",9101],"052260a8":[()=>n.e(3272).then(n.bind(n,9914)),"@site/docs/for-ops/cli/encrypt.md",9914],"090174e7":[()=>n.e(4019).then(n.bind(n,9260)),"@site/docs/get-started/labs/trigger-builds.md",9260],"09735fc0":[()=>n.e(1591).then(n.bind(n,6001)),"@site/docs/apps/jaeger.md",6001],"0be2dc55":[()=>n.e(8392).then(n.bind(n,1915)),"@site/docs/for-ops/cli/template.md",1915],"0c3fdeeb":[()=>n.e(6096).then(n.bind(n,1573)),"@site/docs/for-ops/console/overview.md",1573],"0d519d5d":[()=>n.e(634).then(n.bind(n,2672)),"@site/docs/for-devs/console/deploy-changes.md",2672],"0fafd5e8":[()=>n.e(5112).then(n.bind(n,1416)),"@site/docs/get-started/labs/monitor-workloads.md",1416],10959509:[()=>n.e(2704).then(n.bind(n,6255)),"@site/docs/for-ops/sre/troubleshooting.md",6255],11153061:[()=>n.e(9063).then(n.bind(n,3946)),"@site/docs/get-started/labs/canary-deployment.md",3946],"13689ae4":[()=>n.e(3576).then(n.bind(n,382)),"@site/docs/for-ops/console/backups.md",382],"14bc3799":[()=>n.e(2722).then(n.bind(n,8963)),"@site/docs/for-ops/cli/bootstrap.md",8963],17896441:[()=>Promise.all([n.e(532),n.e(7918)]).then(n.bind(n,7310)),"@theme/DocItem",7310],"17a7c5fe":[()=>n.e(3126).then(n.bind(n,9076)),"@site/docs/for-ops/console/settings/key-management.md",9076],"1830c2e3":[()=>n.e(1195).then(n.bind(n,6189)),"@site/docs/apps/certmanager.md",6189],"188da18d":[()=>n.e(2430).then(n.bind(n,2385)),"@site/docs/apps/trivy.md",2385],"1a23fb22":[()=>n.e(4234).then(n.bind(n,5320)),"@site/docs/get-started/installation/byo-wildcard.md",5320],"1a4e3797":[()=>Promise.all([n.e(532),n.e(7920)]).then(n.bind(n,6675)),"@theme/SearchPage",6675],"1afc8419":[()=>n.e(8344).then(n.bind(n,8300)),"@site/docs/for-ops/sre/overview.md",8300],"1d3542c3":[()=>n.e(4473).then(n.bind(n,5408)),"@site/docs/for-ops/console/settings/smtp.md",5408],"1d911987":[()=>n.e(912).then(n.bind(n,4080)),"@site/docs/for-ops/console/settings/ingress.md",4080],"1db000ad":[()=>n.e(7578).then(n.bind(n,3498)),"@site/docs/for-ops/how-to/clone-apl.md",3498],"1dcded0d":[()=>n.e(7282).then(n.bind(n,7930)),"@site/docs/apps/grafana.md",7930],"1df93b7f":[()=>n.e(3237).then(n.bind(n,9754)),"@site/src/pages/index.tsx",9754],"1f668492":[()=>n.e(2237).then(n.bind(n,9456)),"@site/docs/apps/falco.md",9456],"1f918bbd":[()=>n.e(3635).then(n.bind(n,3020)),"@site/docs/get-started/installation/oidc.md",3020],"20b057c1":[()=>n.e(5827).then(n.bind(n,5625)),"@site/docs/apps/kyverno.md",5625],"219ad9fa":[()=>n.e(4986).then(n.bind(n,4530)),"@site/docs/for-devs/console/netpols.md",4530],"246b758f":[()=>n.e(8383).then(n.bind(n,4829)),"@site/docs/for-ops/console/dashboard.md",4829],"2548183b":[()=>n.e(9717).then(n.bind(n,2394)),"@site/docs/get-started/labs/create-sealed-secrets.md",2394],"270f6692":[()=>n.e(7674).then(n.bind(n,6012)),"@site/docs/for-devs/console/catalog.md",6012],"28c78037":[()=>n.e(7386).then(n.bind(n,1245)),"@site/docs/for-devs/console/dashboard.md",1245],"2a3fc902":[()=>n.e(4655).then(n.bind(n,6791)),"@site/docs/for-ops/how-to/use-team-admin.md",6791],"2b4f9f78":[()=>n.e(2930).then(n.bind(n,9519)),"@site/docs/get-started/installation/post-install-steps.md",9519],"2df7e88d":[()=>n.e(8607).then(n.bind(n,7407)),"@site/docs/for-ops/cli/sync.md",7407],"2e429803":[()=>n.e(5786).then(n.bind(n,181)),"@site/docs/get-started/labs/scan-containers.md",181],"2efe03fa":[()=>n.e(4351).then(n.bind(n,5296)),"@site/docs/apl/introduction.md",5296],"2f447487":[()=>n.e(5935).then(n.bind(n,4238)),"@site/docs/get-started/labs/view-logs.md",4238],"30f4d83c":[()=>n.e(8129).then(n.bind(n,4746)),"@site/docs/for-devs/console/shell.md",4746],"31647fbf":[()=>n.e(670).then(n.bind(n,6060)),"@site/docs/get-started/labs/use-catalog.md",6060],"3379d6c0":[()=>n.e(5195).then(n.bind(n,1333)),"@site/docs/for-ops/console/settings/dns.md",1333],"385dd0a0":[()=>n.e(5940).then(n.bind(n,1505)),"@site/docs/for-ops/how-to/overview.md",1505],"386e030b":[()=>n.e(7878).then(n.bind(n,3860)),"@site/docs/apps/kiali.md",3860],"397109c3":[()=>n.e(2717).then(n.bind(n,1549)),"@site/docs/apps/kured.md",1549],"399357cc":[()=>n.e(4778).then(n.bind(n,1437)),"@site/docs/get-started/labs/create-rabbitmq-cluster.md",1437],"3c110fea":[()=>n.e(2780).then(n.bind(n,6563)),"@site/docs/for-ops/console/settings/backup.md",6563],"3fd50427":[()=>n.e(3418).then(n.bind(n,3922)),"@site/docs/for-ops/console/deploy-changes.md",3922],"4380e181":[()=>n.e(1113).then(n.bind(n,2226)),"@site/docs/apps/loki.md",2226],"43db5d1f":[()=>n.e(4247).then(n.bind(n,1311)),"@site/docs/for-ops/console/maintenance.md",1311],"443e3a65":[()=>n.e(1254).then(n.bind(n,8414)),"@site/docs/for-ops/console/teams.md",8414],"46a4fdf9":[()=>n.e(5775).then(n.bind(n,6979)),"@site/docs/for-devs/console/projects.md",6979],"46be4bcd":[()=>n.e(7973).then(n.bind(n,1645)),"@site/docs/for-devs/console/workloads.md",1645],"48f8b5b9":[()=>n.e(6299).then(n.bind(n,7966)),"@site/docs/get-started/installation/overview.md",7966],"490175b0":[()=>n.e(8036).then(n.t.bind(n,7085,19)),"/home/runner/work/apl-docs/apl-docs/.docusaurus/docusaurus-theme-search-algolia/default/plugin-route-context-module-100.json",7085],"541249eb":[()=>n.e(8696).then(n.bind(n,8153)),"@site/docs/for-ops/cli/diff.md",8153],"54cc2d4c":[()=>n.e(2036).then(n.bind(n,6833)),"@site/docs/get-started/overview.md",6833],"5c5eecab":[()=>n.e(4559).then(n.bind(n,3724)),"@site/docs/for-ops/cli/status.md",3724],"5cb822a3":[()=>n.e(9216).then(n.bind(n,752)),"@site/docs/get-started/installation/linode.md",752],"5ce65c80":[()=>n.e(2280).then(n.bind(n,5222)),"@site/docs/for-ops/cli/installation.md",5222],"5e95c892":[()=>n.e(9661).then(n.bind(n,1892)),"@theme/DocsRoot",1892],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,6809)),"@generated/docusaurus.config",6809],"5f4e8093":[()=>n.e(3942).then(n.bind(n,542)),"@site/docs/for-ops/console/workloads.md",542],"612b9100":[()=>n.e(4576).then(n.bind(n,9387)),"@site/docs/apps/otel.md",9387],"62e5798c":[()=>n.e(117).then(n.bind(n,1398)),"@site/src/pages/docs/index.tsx",1398],"6340fb34":[()=>n.e(6781).then(n.bind(n,6535)),"@site/docs/for-devs/console/security-policies.md",6535],"646a49d4":[()=>n.e(5720).then(n.bind(n,6968)),"@site/docs/for-ops/cli/commit.md",6968],"69fd0b9a":[()=>n.e(1730).then(n.bind(n,6248)),"@site/docs/for-ops/sre/daily.md",6248],"6d553b82":[()=>n.e(4321).then(n.bind(n,8857)),"@site/docs/for-devs/console/services.md",8857],"6ebb893e":[()=>n.e(9091).then(n.t.bind(n,5745,19)),"/home/runner/work/apl-docs/apl-docs/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json",5745],"6ef6f599":[()=>n.e(1164).then(n.bind(n,6041)),"@site/docs/get-started/labs/use-otel.md",6041],"7d144271":[()=>n.e(1701).then(n.bind(n,1553)),"@site/docs/for-ops/console/settings/general.md",1553],"7e13be3f":[()=>n.e(7702).then(n.bind(n,4894)),"@site/docs/get-started/labs/labs-prerequisites.md",4894],"7ea98ab3":[()=>n.e(9683).then(n.bind(n,9381)),"@site/docs/for-ops/console/apps.md",9381],"7f5d7fca":[()=>n.e(2020).then(n.bind(n,8121)),"@site/docs/for-ops/how-to/backups.md",8121],"80b07506":[()=>n.e(3599).then(n.bind(n,1864)),"@site/docs/get-started/labs/labs-overview.md",1864],"80cc8fc2":[()=>n.e(411).then(n.bind(n,7783)),"@site/docs/get-started/installation/entrypoint.md",7783],"80f670fe":[()=>n.e(2477).then(n.bind(n,9765)),"@site/docs/get-started/labs/build-images.md",9765],"81e06d7e":[()=>n.e(5824).then(n.bind(n,6805)),"@site/docs/apps/istio.md",6805],"83b70ecd":[()=>n.e(6128).then(n.bind(n,4422)),"@site/docs/for-ops/how-to/use-catalog.md",4422],"871ddaf7":[()=>n.e(5018).then(n.bind(n,8635)),"@site/docs/get-started/installation/custom.md",8635],"88cad7e1":[()=>n.e(8760).then(n.bind(n,4636)),"@site/docs/get-started/labs/view-metrics.md",4636],"8afa6453":[()=>n.e(4385).then(n.bind(n,7604)),"@site/docs/get-started/labs/expose-services.md",7604],"8b7dda8f":[()=>n.e(4584).then(n.bind(n,8250)),"@site/docs/get-started/labs/custom-metrics.md",8250],"8dc82fcd":[()=>n.e(263).then(n.bind(n,3230)),"@site/src/pages/docs/get-started/index.tsx",3230],"8ef33b61":[()=>n.e(1902).then(n.bind(n,5187)),"@site/docs/get-started/installation/dns.md",5187],"903141a5":[()=>n.e(3039).then(n.bind(n,1817)),"@site/docs/get-started/labs/custom-dashboards.md",1817],"9184e37b":[()=>n.e(6535).then(n.bind(n,7667)),"@site/docs/apps/rabbitmq.md",7667],"935f2afb":[()=>n.e(53).then(n.t.bind(n,1109,19)),"~docs/default/version-current-metadata-prop-751.json",1109],"942f06e2":[()=>n.e(9011).then(n.bind(n,718)),"@site/docs/get-started/labs/custom-rules.md",718],94495612:[()=>n.e(6733).then(n.bind(n,4346)),"@site/docs/apps/apps-overview.md",4346],"96d3f3ac":[()=>n.e(1390).then(n.bind(n,5101)),"@site/docs/for-devs/console/apps.md",5101],98242336:[()=>n.e(5290).then(n.bind(n,3051)),"@site/docs/for-ops/cli/validate-values.md",3051],"9824b3d7":[()=>n.e(443).then(n.bind(n,2694)),"@site/docs/for-devs/console/settings.md",2694],"9899ea6d":[()=>n.e(8506).then(n.bind(n,4342)),"@site/docs/for-ops/console/settings/cluster.md",4342],"98c047c6":[()=>n.e(48).then(n.bind(n,986)),"@site/docs/get-started/installation/sops.md",986],"9a6fbba2":[()=>n.e(5996).then(n.bind(n,1138)),"@site/docs/for-ops/console/settings/obj.md",1138],"9b2db8ea":[()=>n.e(8852).then(n.bind(n,9081)),"@site/docs/for-ops/cli/rotate-keys.md",9081],"9cb4274e":[()=>n.e(1391).then(n.bind(n,6929)),"@site/docs/for-ops/cli/lint.md",6929],"9ed16ae1":[()=>n.e(7896).then(n.bind(n,3521)),"@site/docs/get-started/installation/helm.md",3521],a1e5de72:[()=>n.e(6935).then(n.bind(n,5673)),"@site/docs/get-started/labs/auto-image-update.md",5673],a3cca685:[()=>n.e(4791).then(n.bind(n,8677)),"@site/docs/for-ops/console/builds.md",8677],a47e2810:[()=>n.e(7984).then(n.bind(n,6465)),"@site/docs/for-ops/console/services.md",6465],a6a14297:[()=>n.e(6866).then(n.bind(n,4030)),"@site/docs/apps/knative.md",4030],a722ee7a:[()=>n.e(1573).then(n.bind(n,5799)),"@site/docs/for-ops/console/shell.md",5799],a7bd4aaa:[()=>n.e(8518).then(n.bind(n,8564)),"@theme/DocVersionRoot",8564],a94703ab:[()=>Promise.all([n.e(532),n.e(4368)]).then(n.bind(n,2674)),"@theme/DocRoot",2674],aa3203ff:[()=>n.e(2144).then(n.bind(n,4037)),"@site/docs/for-devs/console/builds.md",4037],abc5e328:[()=>n.e(2115).then(n.bind(n,2477)),"@site/docs/get-started/labs/create-netpols.md",2477],af477ebb:[()=>n.e(8897).then(n.bind(n,516)),"@site/docs/for-ops/cli/validate-templates.md",516],af8b4e82:[()=>n.e(7444).then(n.bind(n,9663)),"@site/docs/apps/tekton.md",9663],af9df136:[()=>n.e(6888).then(n.bind(n,8749)),"@site/docs/for-ops/cli/bash.md",8749],afd24866:[()=>n.e(2370).then(n.bind(n,2889)),"@site/docs/apps/argocd.md",2889],b04270fa:[()=>n.e(5920).then(n.bind(n,3576)),"@site/docs/apps/ingress-nginx.md",3576],b4e198bf:[()=>n.e(7360).then(n.bind(n,2741)),"@site/docs/get-started/labs/create-projects.md",2741],bcbdbf75:[()=>n.e(6576).then(n.bind(n,3231)),"@site/docs/for-ops/cli/x.md",3231],bd8a3d8f:[()=>n.e(256).then(n.bind(n,7521)),"@site/docs/get-started/labs/create-postgresql-db.md",7521],bde17074:[()=>n.e(9237).then(n.bind(n,4608)),"@site/docs/apps/thanos.md",4608],be94a9c8:[()=>n.e(1854).then(n.bind(n,9237)),"@site/docs/for-ops/cli/deploying.md",9237],bf0e2243:[()=>n.e(1313).then(n.bind(n,9794)),"@site/docs/get-started/labs/create-repos.md",9794],c0f9889b:[()=>n.e(7638).then(n.bind(n,5986)),"@site/docs/get-started/labs/create-workloads.md",5986],c3394322:[()=>n.e(9742).then(n.bind(n,8439)),"@site/docs/for-ops/cli/values.md",8439],c3a9c637:[()=>n.e(1576).then(n.bind(n,8962)),"@site/docs/apps/alertmanager.md",8962],c42226db:[()=>n.e(1872).then(n.bind(n,1984)),"@site/docs/apps/cloudnativepg.md",1984],c4d36760:[()=>n.e(8028).then(n.bind(n,5878)),"@site/docs/apps/external-dns.md",5878],c5c74bfd:[()=>n.e(5616).then(n.bind(n,3985)),"@site/docs/for-ops/console/settings/alerts.md",3985],c730f480:[()=>n.e(5649).then(n.bind(n,4205)),"@site/docs/get-started/installation/akamai-cloud.md",4205],c9644b78:[()=>n.e(537).then(n.bind(n,8828)),"@site/docs/for-ops/console/settings/oidc.md",8828],c9ff9b08:[()=>n.e(1913).then(n.bind(n,6869)),"@site/docs/for-ops/console/projects.md",6869],ca4242f5:[()=>n.e(5033).then(n.bind(n,4118)),"@site/docs/for-ops/cli/known-issues.md",4118],cba11a7e:[()=>n.e(3063).then(n.bind(n,1420)),"@site/docs/for-devs/console/overview.md",1420],cd151fd5:[()=>n.e(3544).then(n.bind(n,9507)),"@site/docs/apps/prometheus.md",9507],d1254c3d:[()=>n.e(7159).then(n.t.bind(n,3769,19)),"/home/runner/work/apl-docs/apl-docs/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",3769],d1409995:[()=>n.e(3611).then(n.bind(n,8737)),"@site/docs/for-devs/console/sealed-secrets.md",8737],d248c736:[()=>n.e(7787).then(n.bind(n,66)),"@site/docs/get-started/labs/using-argo-cd.md",66],d53aaf7f:[()=>n.e(965).then(n.bind(n,1025)),"@site/docs/for-ops/cli/apply.md",1025],d76c6a89:[()=>n.e(4717).then(n.bind(n,7114)),"@site/docs/apps/harbor.md",7114],d8a040d1:[()=>n.e(2615).then(n.bind(n,8507)),"@site/docs/for-ops/cli/pull.md",8507],d9893b92:[()=>n.e(2668).then(n.bind(n,1755)),"@site/docs/for-ops/cli/destroy.md",1755],db2fd2f7:[()=>n.e(439).then(n.bind(n,9286)),"@site/docs/apps/minio.md",9286],df2434c5:[()=>n.e(767).then(n.bind(n,4097)),"@site/docs/apps/drone.md",4097],e2cc03cb:[()=>n.e(1241).then(n.bind(n,1534)),"@site/docs/for-ops/how-to/ingress-classes.md",1534],e65ca800:[()=>n.e(6306).then(n.bind(n,3659)),"@site/docs/for-ops/cli/decrypt.md",3659],e7ee1f4e:[()=>n.e(4722).then(n.bind(n,2973)),"@site/docs/for-ops/how-to/core-only.md",2973],ed3faf6d:[()=>n.e(9153).then(n.bind(n,6209)),"@site/docs/apps/keycloak.md",6209],f34c6cc5:[()=>n.e(1515).then(n.bind(n,8718)),"@site/docs/apps/velero.md",8718],f4935766:[()=>n.e(6907).then(n.bind(n,9641)),"@site/docs/apps/sealedsecrets.md",9641],f9528352:[()=>n.e(1470).then(n.bind(n,4075)),"@site/docs/get-started/labs/scan-images.md",4075],fd458deb:[()=>n.e(725).then(n.bind(n,3358)),"@site/docs/for-ops/console/netpols.md",3358],feda9f98:[()=>n.e(4011).then(n.bind(n,6023)),"@site/docs/for-ops/cli/test.md",6023],ffd636c4:[()=>n.e(1020).then(n.bind(n,591)),"@site/docs/apps/tempo.md",591]};var s=n(5893);function l(e){let{error:t,retry:n,pastDelay:r}=e;return t?(0,s.jsxs)("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"},children:[(0,s.jsx)("p",{children:String(t)}),(0,s.jsx)("div",{children:(0,s.jsx)("button",{type:"button",onClick:n,children:"Retry"})})]}):r?(0,s.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:(0,s.jsx)("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb",children:(0,s.jsxs)("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2",children:[(0,s.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,s.jsx)("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,s.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,s.jsx)("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,s.jsx)("circle",{cx:"22",cy:"22",r:"8",children:(0,s.jsx)("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"})})]})})}):null}var c=n(9670),u=n(226);function d(e,t){if("*"===e)return o()({loading:l,loader:()=>n.e(1772).then(n.bind(n,1772)),modules:["@theme/NotFound"],webpack:()=>[1772],render(e,t){const n=e.default;return(0,s.jsx)(u.z,{value:{plugin:{name:"native",id:"default"}},children:(0,s.jsx)(n,{...t})})}});const r=a[`${e}-${t}`],d={},p=[],f=[],m=(0,c.Z)(r);return Object.entries(m).forEach((e=>{let[t,n]=e;const r=i[n];r&&(d[t]=r[0],p.push(r[1]),f.push(r[2]))})),o().Map({loading:l,loader:d,modules:p,webpack:()=>f,render(t,n){const o=JSON.parse(JSON.stringify(r));Object.entries(t).forEach((t=>{let[n,r]=t;const a=r.default;if(!a)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof a&&"function"!=typeof a||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{a[e]=r[e]}));let i=o;const s=n.split(".");s.slice(0,-1).forEach((e=>{i=i[e]})),i[s[s.length-1]]=a}));const a=o.__comp;delete o.__comp;const i=o.__context;return delete o.__context,(0,s.jsx)(u.z,{value:i,children:(0,s.jsx)(a,{...o,...n})})}})}const p=[{path:"/docs",component:d("/docs","3bd"),exact:!0},{path:"/docs/get-started",component:d("/docs/get-started","605"),exact:!0},{path:"/search",component:d("/search","dea"),exact:!0},{path:"/docs",component:d("/docs","014"),routes:[{path:"/docs",component:d("/docs","8a1"),routes:[{path:"/docs",component:d("/docs","d02"),routes:[{path:"/docs/apl/introduction",component:d("/docs/apl/introduction","fe5"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/apps/alertmanager",component:d("/docs/apps/alertmanager","5d5"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/apps/apps-overview",component:d("/docs/apps/apps-overview","12f"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/apps/argocd",component:d("/docs/apps/argocd","d53"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/apps/certmanager",component:d("/docs/apps/certmanager","2e5"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/apps/cloudnativepg",component:d("/docs/apps/cloudnativepg","a99"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/apps/drone",component:d("/docs/apps/drone","98f"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/apps/external-dns",component:d("/docs/apps/external-dns","412"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/apps/falco",component:d("/docs/apps/falco","ad8"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/apps/gitea",component:d("/docs/apps/gitea","b47"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/apps/grafana",component:d("/docs/apps/grafana","947"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/apps/harbor",component:d("/docs/apps/harbor","b89"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/apps/ingress-nginx",component:d("/docs/apps/ingress-nginx","4a8"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/apps/istio",component:d("/docs/apps/istio","05b"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/apps/jaeger",component:d("/docs/apps/jaeger","8a6"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/apps/keycloak",component:d("/docs/apps/keycloak","316"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/apps/kiali",component:d("/docs/apps/kiali","1db"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/apps/knative",component:d("/docs/apps/knative","49e"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/apps/kured",component:d("/docs/apps/kured","5a0"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/apps/kyverno",component:d("/docs/apps/kyverno","e0f"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/apps/loki",component:d("/docs/apps/loki","266"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/apps/minio",component:d("/docs/apps/minio","804"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/apps/otel",component:d("/docs/apps/otel","49e"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/apps/prometheus",component:d("/docs/apps/prometheus","523"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/apps/rabbitmq",component:d("/docs/apps/rabbitmq","b34"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/apps/sealed-secrets",component:d("/docs/apps/sealed-secrets","452"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/apps/tekton",component:d("/docs/apps/tekton","2af"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/apps/tempo",component:d("/docs/apps/tempo","915"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/apps/thanos",component:d("/docs/apps/thanos","277"),exact:!0},{path:"/docs/apps/trivy",component:d("/docs/apps/trivy","323"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/apps/velero",component:d("/docs/apps/velero","2e5"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-devs/console/apps",component:d("/docs/for-devs/console/apps","05b"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-devs/console/builds",component:d("/docs/for-devs/console/builds","b55"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-devs/console/catalog",component:d("/docs/for-devs/console/catalog","52b"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-devs/console/dashboard",component:d("/docs/for-devs/console/dashboard","83e"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-devs/console/deploy-changes",component:d("/docs/for-devs/console/deploy-changes","e7f"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-devs/console/netpols",component:d("/docs/for-devs/console/netpols","518"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-devs/console/overview",component:d("/docs/for-devs/console/overview","250"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-devs/console/projects",component:d("/docs/for-devs/console/projects","140"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-devs/console/secrets",component:d("/docs/for-devs/console/secrets","07e"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-devs/console/security-policies",component:d("/docs/for-devs/console/security-policies","352"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-devs/console/services",component:d("/docs/for-devs/console/services","367"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-devs/console/settings",component:d("/docs/for-devs/console/settings","898"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-devs/console/shell",component:d("/docs/for-devs/console/shell","2e9"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-devs/console/workloads",component:d("/docs/for-devs/console/workloads","f60"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/cli/apply",component:d("/docs/for-ops/cli/apply","f61"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/cli/bash",component:d("/docs/for-ops/cli/bash","408"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/cli/bootstrap",component:d("/docs/for-ops/cli/bootstrap","3a6"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/cli/commit",component:d("/docs/for-ops/cli/commit","8f3"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/cli/decrypt",component:d("/docs/for-ops/cli/decrypt","e7f"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/cli/deploying",component:d("/docs/for-ops/cli/deploying","b05"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/cli/destroy",component:d("/docs/for-ops/cli/destroy","6ff"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/cli/diff",component:d("/docs/for-ops/cli/diff","2eb"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/cli/encrypt",component:d("/docs/for-ops/cli/encrypt","689"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/cli/installation",component:d("/docs/for-ops/cli/installation","af1"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/cli/known-issues",component:d("/docs/for-ops/cli/known-issues","548"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/cli/lint",component:d("/docs/for-ops/cli/lint","770"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/cli/pull",component:d("/docs/for-ops/cli/pull","83f"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/cli/rotate-keys",component:d("/docs/for-ops/cli/rotate-keys","f9d"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/cli/status",component:d("/docs/for-ops/cli/status","b45"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/cli/sync",component:d("/docs/for-ops/cli/sync","e42"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/cli/template",component:d("/docs/for-ops/cli/template","4e3"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/cli/test",component:d("/docs/for-ops/cli/test","a8c"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/cli/validate-templates",component:d("/docs/for-ops/cli/validate-templates","9a5"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/cli/validate-values",component:d("/docs/for-ops/cli/validate-values","9ed"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/cli/values",component:d("/docs/for-ops/cli/values","4af"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/cli/x",component:d("/docs/for-ops/cli/x","da3"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/console/apps",component:d("/docs/for-ops/console/apps","a5e"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/console/backups",component:d("/docs/for-ops/console/backups","795"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/console/builds",component:d("/docs/for-ops/console/builds","ec9"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/console/dashboard",component:d("/docs/for-ops/console/dashboard","0db"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/console/deploy-changes",component:d("/docs/for-ops/console/deploy-changes","a49"),exact:!0},{path:"/docs/for-ops/console/maintenance",component:d("/docs/for-ops/console/maintenance","327"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/console/netpols",component:d("/docs/for-ops/console/netpols","439"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/console/overview",component:d("/docs/for-ops/console/overview","e4a"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/console/projects",component:d("/docs/for-ops/console/projects","75a"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/console/services",component:d("/docs/for-ops/console/services","c27"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/console/settings/alerts",component:d("/docs/for-ops/console/settings/alerts","ed2"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/console/settings/backup",component:d("/docs/for-ops/console/settings/backup","501"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/console/settings/cluster",component:d("/docs/for-ops/console/settings/cluster","66d"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/console/settings/dns",component:d("/docs/for-ops/console/settings/dns","853"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/console/settings/general",component:d("/docs/for-ops/console/settings/general","706"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/console/settings/ingress",component:d("/docs/for-ops/console/settings/ingress","d6e"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/console/settings/key-management",component:d("/docs/for-ops/console/settings/key-management","2a4"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/console/settings/obj",component:d("/docs/for-ops/console/settings/obj","f6c"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/console/settings/oidc",component:d("/docs/for-ops/console/settings/oidc","6e2"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/console/settings/smtp",component:d("/docs/for-ops/console/settings/smtp","bcd"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/console/shell",component:d("/docs/for-ops/console/shell","d61"),exact:!0},{path:"/docs/for-ops/console/teams",component:d("/docs/for-ops/console/teams","a65"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/console/workloads",component:d("/docs/for-ops/console/workloads","d65"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/how-to/backups",component:d("/docs/for-ops/how-to/backups","43b"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/how-to/catalog",component:d("/docs/for-ops/how-to/catalog","22f"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/how-to/clone-apl",component:d("/docs/for-ops/how-to/clone-apl","27e"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/how-to/core-only",component:d("/docs/for-ops/how-to/core-only","415"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/how-to/ingress-classes",component:d("/docs/for-ops/how-to/ingress-classes","0ae"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/how-to/overview",component:d("/docs/for-ops/how-to/overview","68a"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/how-to/use-team-admin",component:d("/docs/for-ops/how-to/use-team-admin","fbd"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/sre/daily",component:d("/docs/for-ops/sre/daily","532"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/sre/overview",component:d("/docs/for-ops/sre/overview","461"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/for-ops/sre/troubleshooting",component:d("/docs/for-ops/sre/troubleshooting","1f6"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/get-started/installation/akamai-cloud",component:d("/docs/get-started/installation/akamai-cloud","f99"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/get-started/installation/byo-wildcard-cert",component:d("/docs/get-started/installation/byo-wildcard-cert","2fe"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/get-started/installation/custom",component:d("/docs/get-started/installation/custom","ccc"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/get-started/installation/dns",component:d("/docs/get-started/installation/dns","b87"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/get-started/installation/entrypoint",component:d("/docs/get-started/installation/entrypoint","d8d"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/get-started/installation/helm",component:d("/docs/get-started/installation/helm","efc"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/get-started/installation/linode",component:d("/docs/get-started/installation/linode","719"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/get-started/installation/oidc",component:d("/docs/get-started/installation/oidc","f3f"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/get-started/installation/overview",component:d("/docs/get-started/installation/overview","04e"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/get-started/installation/post-installation-steps",component:d("/docs/get-started/installation/post-installation-steps","43e"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/get-started/installation/sops",component:d("/docs/get-started/installation/sops","a94"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/get-started/labs/auto-image-update",component:d("/docs/get-started/labs/auto-image-update","ba0"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/get-started/labs/build-images",component:d("/docs/get-started/labs/build-images","1ad"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/get-started/labs/canary-deployment",component:d("/docs/get-started/labs/canary-deployment","80c"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/get-started/labs/create-netpols",component:d("/docs/get-started/labs/create-netpols","0cc"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/get-started/labs/create-postgresql-db",component:d("/docs/get-started/labs/create-postgresql-db","2b1"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/get-started/labs/create-projects",component:d("/docs/get-started/labs/create-projects","d89"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/get-started/labs/create-rabbitmq-cluster",component:d("/docs/get-started/labs/create-rabbitmq-cluster","cce"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/get-started/labs/create-repos",component:d("/docs/get-started/labs/create-repos","90b"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/get-started/labs/create-sealed-secrets",component:d("/docs/get-started/labs/create-sealed-secrets","f09"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/get-started/labs/create-workloads",component:d("/docs/get-started/labs/create-workloads","4ed"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/get-started/labs/custom-dashboards",component:d("/docs/get-started/labs/custom-dashboards","fc5"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/get-started/labs/custom-metrics",component:d("/docs/get-started/labs/custom-metrics","a41"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/get-started/labs/custom-rules",component:d("/docs/get-started/labs/custom-rules","fbc"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/get-started/labs/expose-services",component:d("/docs/get-started/labs/expose-services","b29"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/get-started/labs/lab-prerequisites",component:d("/docs/get-started/labs/lab-prerequisites","89e"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/get-started/labs/monitor-workloads",component:d("/docs/get-started/labs/monitor-workloads","2e8"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/get-started/labs/overview",component:d("/docs/get-started/labs/overview","bce"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/get-started/labs/push-images",component:d("/docs/get-started/labs/push-images","a38"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/get-started/labs/scan-containers",component:d("/docs/get-started/labs/scan-containers","76c"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/get-started/labs/scan-images",component:d("/docs/get-started/labs/scan-images","e58"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/get-started/labs/trigger-builds",component:d("/docs/get-started/labs/trigger-builds","2c9"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/get-started/labs/use-catalog",component:d("/docs/get-started/labs/use-catalog","a83"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/get-started/labs/use-otel",component:d("/docs/get-started/labs/use-otel","a50"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/get-started/labs/using-argo-cd",component:d("/docs/get-started/labs/using-argo-cd","2bb"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/get-started/labs/view-logs",component:d("/docs/get-started/labs/view-logs","08e"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/get-started/labs/view-metrics",component:d("/docs/get-started/labs/view-metrics","69d"),exact:!0,sidebar:"mainSidebar"},{path:"/docs/get-started/overview",component:d("/docs/get-started/overview","935"),exact:!0,sidebar:"mainSidebar"}]}]}]},{path:"/",component:d("/","36e"),exact:!0},{path:"*",component:d("*")}]},8934:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,t:()=>i});var r=n(7294),o=n(5893);const a=r.createContext(!1);function i(e){let{children:t}=e;const[n,i]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{i(!0)}),[]),(0,o.jsx)(a.Provider,{value:n,children:t})}},7221:(e,t,n)=>{"use strict";var r=n(7294),o=n(745),a=n(3727),i=n(405),s=n(412);const l=[n(6657),n(2497),n(3310),n(8320),n(2295)];var c=n(723),u=n(6550),d=n(8790),p=n(5893);function f(e){let{children:t}=e;return(0,p.jsx)(p.Fragment,{children:t})}var m=n(5742),h=n(2263),g=n(4996),b=n(6668),y=n(833),v=n(4711),w=n(9727),k=n(3320),x=n(8780),S=n(197);function _(){const{i18n:{currentLocale:e,defaultLocale:t,localeConfigs:n}}=(0,h.Z)(),r=(0,v.l)(),o=n[e].htmlLang,a=e=>e.replace("-","_");return(0,p.jsxs)(m.Z,{children:[Object.entries(n).map((e=>{let[t,{htmlLang:n}]=e;return(0,p.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:n},t)})),(0,p.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:"x-default"}),(0,p.jsx)("meta",{property:"og:locale",content:a(o)}),Object.values(n).filter((e=>o!==e.htmlLang)).map((e=>(0,p.jsx)("meta",{property:"og:locale:alternate",content:a(e.htmlLang)},`meta-og-${e.htmlLang}`)))]})}function E(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,h.Z)(),r=function(){const{siteConfig:{url:e,baseUrl:t,trailingSlash:n}}=(0,h.Z)(),{pathname:r}=(0,u.TH)();return e+(0,x.applyTrailingSlash)((0,g.Z)(r),{trailingSlash:n,baseUrl:t})}(),o=t?`${n}${t}`:r;return(0,p.jsxs)(m.Z,{children:[(0,p.jsx)("meta",{property:"og:url",content:o}),(0,p.jsx)("link",{rel:"canonical",href:o})]})}function C(){const{i18n:{currentLocale:e}}=(0,h.Z)(),{metadata:t,image:n}=(0,b.L)();return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)(m.Z,{children:[(0,p.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,p.jsx)("body",{className:w.h})]}),n&&(0,p.jsx)(y.d,{image:n}),(0,p.jsx)(E,{}),(0,p.jsx)(_,{}),(0,p.jsx)(S.Z,{tag:k.HX,locale:e}),(0,p.jsx)(m.Z,{children:t.map(((e,t)=>(0,p.jsx)("meta",{...e},t)))})]})}const T=new Map;function j(e){if(T.has(e.pathname))return{...e,pathname:T.get(e.pathname)};if((0,d.f)(c.Z,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return T.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return T.set(e.pathname,t),{...e,pathname:t}}var A=n(8934),L=n(8940),R=n(469);function N(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>o.forEach((e=>e?.()))}const P=function(e){let{children:t,location:n,previousLocation:r}=e;return(0,R.Z)((()=>{r!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,o=t.hash===n.hash,a=t.search===n.search;if(r&&o&&!a)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:r}),N("onRouteDidUpdate",{previousLocation:r,location:n}))}),[r,n]),t};function O(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,d.f)(c.Z,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class I extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=s.Z.canUseDOM?N("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=N("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),O(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return(0,p.jsx)(P,{previousLocation:this.previousLocation,location:t,children:(0,p.jsx)(u.AW,{location:t,render:()=>e})})}}const D=I,M="__docusaurus-base-url-issue-banner-container",F="__docusaurus-base-url-issue-banner",z="__docusaurus-base-url-issue-banner-suggestion-container";function B(e){return`\ndocument.addEventListener('DOMContentLoaded', function maybeInsertBanner() {\n var shouldInsert = typeof window['docusaurus'] === 'undefined';\n shouldInsert && insertBanner();\n});\n\nfunction insertBanner() {\n var bannerContainer = document.createElement('div');\n bannerContainer.id = '${M}';\n var bannerHtml = ${JSON.stringify(function(e){return`\n
\n

Your Docusaurus site did not load properly.

\n

A very common reason is a wrong site baseUrl configuration.

\n

Current configured baseUrl = ${e} ${"/"===e?" (default value)":""}

\n

We suggest trying baseUrl =

\n
\n`}(e)).replace(/{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();const o=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;o?.appendChild(r)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))};var Q=n(9670);const Y=new Set,X=new Set,J=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,ee={prefetch(e){if(!(e=>!J()&&!X.has(e)&&!Y.has(e))(e))return!1;Y.add(e);const t=(0,d.f)(c.Z,e).flatMap((e=>{return t=e.route.path,Object.entries(W).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,Q.Z)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?K(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!J()&&!X.has(e))(e)&&(X.add(e),O(e))},te=Object.freeze(ee),ne=Boolean(!0);if(s.Z.canUseDOM){window.docusaurus=te;const e=document.getElementById("__docusaurus"),t=(0,p.jsx)(i.B6,{children:(0,p.jsx)(a.VK,{children:(0,p.jsx)(V,{})})}),n=(e,t)=>{console.error("Docusaurus React Root onRecoverableError:",e,t)},s=()=>{if(ne)r.startTransition((()=>{o.hydrateRoot(e,t,{onRecoverableError:n})}));else{const a=o.createRoot(e,{onRecoverableError:n});r.startTransition((()=>{a.render(t)}))}};O(window.location.pathname).then(s)}},8940:(e,t,n)=>{"use strict";n.d(t,{_:()=>d,M:()=>p});var r=n(7294),o=n(6809);const a=JSON.parse('{"docusaurus-plugin-google-gtag":{"default":{"trackingID":["G-KKV4ZVDEKQ"],"anonymizeIP":false,"id":"default"}},"docusaurus-plugin-content-docs":{"default":{"path":"/docs","versions":[{"name":"current","label":"Next","isLast":true,"path":"/docs","mainDocId":"apl/introduction","docs":[{"id":"apl/introduction","path":"/docs/apl/introduction","sidebar":"mainSidebar"},{"id":"apps/alertmanager","path":"/docs/apps/alertmanager","sidebar":"mainSidebar"},{"id":"apps/apps-overview","path":"/docs/apps/apps-overview","sidebar":"mainSidebar"},{"id":"apps/argocd","path":"/docs/apps/argocd","sidebar":"mainSidebar"},{"id":"apps/certmanager","path":"/docs/apps/certmanager","sidebar":"mainSidebar"},{"id":"apps/cloudnativepg","path":"/docs/apps/cloudnativepg","sidebar":"mainSidebar"},{"id":"apps/drone","path":"/docs/apps/drone","sidebar":"mainSidebar"},{"id":"apps/external-dns","path":"/docs/apps/external-dns","sidebar":"mainSidebar"},{"id":"apps/falco","path":"/docs/apps/falco","sidebar":"mainSidebar"},{"id":"apps/gitea","path":"/docs/apps/gitea","sidebar":"mainSidebar"},{"id":"apps/grafana","path":"/docs/apps/grafana","sidebar":"mainSidebar"},{"id":"apps/harbor","path":"/docs/apps/harbor","sidebar":"mainSidebar"},{"id":"apps/ingress-nginx","path":"/docs/apps/ingress-nginx","sidebar":"mainSidebar"},{"id":"apps/istio","path":"/docs/apps/istio","sidebar":"mainSidebar"},{"id":"apps/jaeger","path":"/docs/apps/jaeger","sidebar":"mainSidebar"},{"id":"apps/keycloak","path":"/docs/apps/keycloak","sidebar":"mainSidebar"},{"id":"apps/kiali","path":"/docs/apps/kiali","sidebar":"mainSidebar"},{"id":"apps/knative","path":"/docs/apps/knative","sidebar":"mainSidebar"},{"id":"apps/kured","path":"/docs/apps/kured","sidebar":"mainSidebar"},{"id":"apps/kyverno","path":"/docs/apps/kyverno","sidebar":"mainSidebar"},{"id":"apps/loki","path":"/docs/apps/loki","sidebar":"mainSidebar"},{"id":"apps/minio","path":"/docs/apps/minio","sidebar":"mainSidebar"},{"id":"apps/otel","path":"/docs/apps/otel","sidebar":"mainSidebar"},{"id":"apps/prometheus","path":"/docs/apps/prometheus","sidebar":"mainSidebar"},{"id":"apps/rabbitmq","path":"/docs/apps/rabbitmq","sidebar":"mainSidebar"},{"id":"apps/sealedsecrets","path":"/docs/apps/sealed-secrets","sidebar":"mainSidebar"},{"id":"apps/tekton","path":"/docs/apps/tekton","sidebar":"mainSidebar"},{"id":"apps/tempo","path":"/docs/apps/tempo","sidebar":"mainSidebar"},{"id":"apps/thanos","path":"/docs/apps/thanos"},{"id":"apps/trivy","path":"/docs/apps/trivy","sidebar":"mainSidebar"},{"id":"apps/velero","path":"/docs/apps/velero","sidebar":"mainSidebar"},{"id":"for-devs/console/apps","path":"/docs/for-devs/console/apps","sidebar":"mainSidebar"},{"id":"for-devs/console/builds","path":"/docs/for-devs/console/builds","sidebar":"mainSidebar"},{"id":"for-devs/console/catalog","path":"/docs/for-devs/console/catalog","sidebar":"mainSidebar"},{"id":"for-devs/console/dashboard","path":"/docs/for-devs/console/dashboard","sidebar":"mainSidebar"},{"id":"for-devs/console/deploy-changes","path":"/docs/for-devs/console/deploy-changes","sidebar":"mainSidebar"},{"id":"for-devs/console/netpols","path":"/docs/for-devs/console/netpols","sidebar":"mainSidebar"},{"id":"for-devs/console/overview","path":"/docs/for-devs/console/overview","sidebar":"mainSidebar"},{"id":"for-devs/console/projects","path":"/docs/for-devs/console/projects","sidebar":"mainSidebar"},{"id":"for-devs/console/sealed-secrets","path":"/docs/for-devs/console/secrets","sidebar":"mainSidebar"},{"id":"for-devs/console/security-policies","path":"/docs/for-devs/console/security-policies","sidebar":"mainSidebar"},{"id":"for-devs/console/services","path":"/docs/for-devs/console/services","sidebar":"mainSidebar"},{"id":"for-devs/console/settings","path":"/docs/for-devs/console/settings","sidebar":"mainSidebar"},{"id":"for-devs/console/shell","path":"/docs/for-devs/console/shell","sidebar":"mainSidebar"},{"id":"for-devs/console/workloads","path":"/docs/for-devs/console/workloads","sidebar":"mainSidebar"},{"id":"for-ops/cli/apply","path":"/docs/for-ops/cli/apply","sidebar":"mainSidebar"},{"id":"for-ops/cli/bash","path":"/docs/for-ops/cli/bash","sidebar":"mainSidebar"},{"id":"for-ops/cli/bootstrap","path":"/docs/for-ops/cli/bootstrap","sidebar":"mainSidebar"},{"id":"for-ops/cli/commit","path":"/docs/for-ops/cli/commit","sidebar":"mainSidebar"},{"id":"for-ops/cli/decrypt","path":"/docs/for-ops/cli/decrypt","sidebar":"mainSidebar"},{"id":"for-ops/cli/deploying","path":"/docs/for-ops/cli/deploying","sidebar":"mainSidebar"},{"id":"for-ops/cli/destroy","path":"/docs/for-ops/cli/destroy","sidebar":"mainSidebar"},{"id":"for-ops/cli/diff","path":"/docs/for-ops/cli/diff","sidebar":"mainSidebar"},{"id":"for-ops/cli/encrypt","path":"/docs/for-ops/cli/encrypt","sidebar":"mainSidebar"},{"id":"for-ops/cli/installation","path":"/docs/for-ops/cli/installation","sidebar":"mainSidebar"},{"id":"for-ops/cli/known-issues","path":"/docs/for-ops/cli/known-issues","sidebar":"mainSidebar"},{"id":"for-ops/cli/lint","path":"/docs/for-ops/cli/lint","sidebar":"mainSidebar"},{"id":"for-ops/cli/pull","path":"/docs/for-ops/cli/pull","sidebar":"mainSidebar"},{"id":"for-ops/cli/rotate-keys","path":"/docs/for-ops/cli/rotate-keys","sidebar":"mainSidebar"},{"id":"for-ops/cli/status","path":"/docs/for-ops/cli/status","sidebar":"mainSidebar"},{"id":"for-ops/cli/sync","path":"/docs/for-ops/cli/sync","sidebar":"mainSidebar"},{"id":"for-ops/cli/template","path":"/docs/for-ops/cli/template","sidebar":"mainSidebar"},{"id":"for-ops/cli/test","path":"/docs/for-ops/cli/test","sidebar":"mainSidebar"},{"id":"for-ops/cli/validate-templates","path":"/docs/for-ops/cli/validate-templates","sidebar":"mainSidebar"},{"id":"for-ops/cli/validate-values","path":"/docs/for-ops/cli/validate-values","sidebar":"mainSidebar"},{"id":"for-ops/cli/values","path":"/docs/for-ops/cli/values","sidebar":"mainSidebar"},{"id":"for-ops/cli/x","path":"/docs/for-ops/cli/x","sidebar":"mainSidebar"},{"id":"for-ops/console/apps","path":"/docs/for-ops/console/apps","sidebar":"mainSidebar"},{"id":"for-ops/console/backups","path":"/docs/for-ops/console/backups","sidebar":"mainSidebar"},{"id":"for-ops/console/builds","path":"/docs/for-ops/console/builds","sidebar":"mainSidebar"},{"id":"for-ops/console/dashboard","path":"/docs/for-ops/console/dashboard","sidebar":"mainSidebar"},{"id":"for-ops/console/deploy-changes","path":"/docs/for-ops/console/deploy-changes"},{"id":"for-ops/console/maintenance","path":"/docs/for-ops/console/maintenance","sidebar":"mainSidebar"},{"id":"for-ops/console/netpols","path":"/docs/for-ops/console/netpols","sidebar":"mainSidebar"},{"id":"for-ops/console/overview","path":"/docs/for-ops/console/overview","sidebar":"mainSidebar"},{"id":"for-ops/console/projects","path":"/docs/for-ops/console/projects","sidebar":"mainSidebar"},{"id":"for-ops/console/services","path":"/docs/for-ops/console/services","sidebar":"mainSidebar"},{"id":"for-ops/console/settings/alerts","path":"/docs/for-ops/console/settings/alerts","sidebar":"mainSidebar"},{"id":"for-ops/console/settings/backup","path":"/docs/for-ops/console/settings/backup","sidebar":"mainSidebar"},{"id":"for-ops/console/settings/cluster","path":"/docs/for-ops/console/settings/cluster","sidebar":"mainSidebar"},{"id":"for-ops/console/settings/dns","path":"/docs/for-ops/console/settings/dns","sidebar":"mainSidebar"},{"id":"for-ops/console/settings/general","path":"/docs/for-ops/console/settings/general","sidebar":"mainSidebar"},{"id":"for-ops/console/settings/ingress","path":"/docs/for-ops/console/settings/ingress","sidebar":"mainSidebar"},{"id":"for-ops/console/settings/key-management","path":"/docs/for-ops/console/settings/key-management","sidebar":"mainSidebar"},{"id":"for-ops/console/settings/obj","path":"/docs/for-ops/console/settings/obj","sidebar":"mainSidebar"},{"id":"for-ops/console/settings/oidc","path":"/docs/for-ops/console/settings/oidc","sidebar":"mainSidebar"},{"id":"for-ops/console/settings/smtp","path":"/docs/for-ops/console/settings/smtp","sidebar":"mainSidebar"},{"id":"for-ops/console/shell","path":"/docs/for-ops/console/shell"},{"id":"for-ops/console/teams","path":"/docs/for-ops/console/teams","sidebar":"mainSidebar"},{"id":"for-ops/console/workloads","path":"/docs/for-ops/console/workloads","sidebar":"mainSidebar"},{"id":"for-ops/how-to/backups","path":"/docs/for-ops/how-to/backups","sidebar":"mainSidebar"},{"id":"for-ops/how-to/clone-apl","path":"/docs/for-ops/how-to/clone-apl","sidebar":"mainSidebar"},{"id":"for-ops/how-to/core-only","path":"/docs/for-ops/how-to/core-only","sidebar":"mainSidebar"},{"id":"for-ops/how-to/ingress-classes","path":"/docs/for-ops/how-to/ingress-classes","sidebar":"mainSidebar"},{"id":"for-ops/how-to/overview","path":"/docs/for-ops/how-to/overview","sidebar":"mainSidebar"},{"id":"for-ops/how-to/use-catalog","path":"/docs/for-ops/how-to/catalog","sidebar":"mainSidebar"},{"id":"for-ops/how-to/use-team-admin","path":"/docs/for-ops/how-to/use-team-admin","sidebar":"mainSidebar"},{"id":"for-ops/sre/daily","path":"/docs/for-ops/sre/daily","sidebar":"mainSidebar"},{"id":"for-ops/sre/overview","path":"/docs/for-ops/sre/overview","sidebar":"mainSidebar"},{"id":"for-ops/sre/troubleshooting","path":"/docs/for-ops/sre/troubleshooting","sidebar":"mainSidebar"},{"id":"get-started/installation/akamai-cloud","path":"/docs/get-started/installation/akamai-cloud","sidebar":"mainSidebar"},{"id":"get-started/installation/byo-wildcard","path":"/docs/get-started/installation/byo-wildcard-cert","sidebar":"mainSidebar"},{"id":"get-started/installation/custom","path":"/docs/get-started/installation/custom","sidebar":"mainSidebar"},{"id":"get-started/installation/dns","path":"/docs/get-started/installation/dns","sidebar":"mainSidebar"},{"id":"get-started/installation/entrypoint","path":"/docs/get-started/installation/entrypoint","sidebar":"mainSidebar"},{"id":"get-started/installation/helm","path":"/docs/get-started/installation/helm","sidebar":"mainSidebar"},{"id":"get-started/installation/linode","path":"/docs/get-started/installation/linode","sidebar":"mainSidebar"},{"id":"get-started/installation/oidc","path":"/docs/get-started/installation/oidc","sidebar":"mainSidebar"},{"id":"get-started/installation/overview","path":"/docs/get-started/installation/overview","sidebar":"mainSidebar"},{"id":"get-started/installation/post-install-steps","path":"/docs/get-started/installation/post-installation-steps","sidebar":"mainSidebar"},{"id":"get-started/installation/sops","path":"/docs/get-started/installation/sops","sidebar":"mainSidebar"},{"id":"get-started/labs/auto-image-update","path":"/docs/get-started/labs/auto-image-update","sidebar":"mainSidebar"},{"id":"get-started/labs/build-images","path":"/docs/get-started/labs/build-images","sidebar":"mainSidebar"},{"id":"get-started/labs/canary-deployment","path":"/docs/get-started/labs/canary-deployment","sidebar":"mainSidebar"},{"id":"get-started/labs/create-netpols","path":"/docs/get-started/labs/create-netpols","sidebar":"mainSidebar"},{"id":"get-started/labs/create-postgresql-db","path":"/docs/get-started/labs/create-postgresql-db","sidebar":"mainSidebar"},{"id":"get-started/labs/create-projects","path":"/docs/get-started/labs/create-projects","sidebar":"mainSidebar"},{"id":"get-started/labs/create-rabbitmq-cluster","path":"/docs/get-started/labs/create-rabbitmq-cluster","sidebar":"mainSidebar"},{"id":"get-started/labs/create-repos","path":"/docs/get-started/labs/create-repos","sidebar":"mainSidebar"},{"id":"get-started/labs/create-sealed-secrets","path":"/docs/get-started/labs/create-sealed-secrets","sidebar":"mainSidebar"},{"id":"get-started/labs/create-workloads","path":"/docs/get-started/labs/create-workloads","sidebar":"mainSidebar"},{"id":"get-started/labs/custom-dashboards","path":"/docs/get-started/labs/custom-dashboards","sidebar":"mainSidebar"},{"id":"get-started/labs/custom-metrics","path":"/docs/get-started/labs/custom-metrics","sidebar":"mainSidebar"},{"id":"get-started/labs/custom-rules","path":"/docs/get-started/labs/custom-rules","sidebar":"mainSidebar"},{"id":"get-started/labs/expose-services","path":"/docs/get-started/labs/expose-services","sidebar":"mainSidebar"},{"id":"get-started/labs/labs-overview","path":"/docs/get-started/labs/overview","sidebar":"mainSidebar"},{"id":"get-started/labs/labs-prerequisites","path":"/docs/get-started/labs/lab-prerequisites","sidebar":"mainSidebar"},{"id":"get-started/labs/monitor-workloads","path":"/docs/get-started/labs/monitor-workloads","sidebar":"mainSidebar"},{"id":"get-started/labs/push-images","path":"/docs/get-started/labs/push-images","sidebar":"mainSidebar"},{"id":"get-started/labs/scan-containers","path":"/docs/get-started/labs/scan-containers","sidebar":"mainSidebar"},{"id":"get-started/labs/scan-images","path":"/docs/get-started/labs/scan-images","sidebar":"mainSidebar"},{"id":"get-started/labs/trigger-builds","path":"/docs/get-started/labs/trigger-builds","sidebar":"mainSidebar"},{"id":"get-started/labs/use-catalog","path":"/docs/get-started/labs/use-catalog","sidebar":"mainSidebar"},{"id":"get-started/labs/use-otel","path":"/docs/get-started/labs/use-otel","sidebar":"mainSidebar"},{"id":"get-started/labs/using-argo-cd","path":"/docs/get-started/labs/using-argo-cd","sidebar":"mainSidebar"},{"id":"get-started/labs/view-logs","path":"/docs/get-started/labs/view-logs","sidebar":"mainSidebar"},{"id":"get-started/labs/view-metrics","path":"/docs/get-started/labs/view-metrics","sidebar":"mainSidebar"},{"id":"get-started/overview","path":"/docs/get-started/overview","sidebar":"mainSidebar"}],"draftIds":[],"sidebars":{"mainSidebar":{"link":{"path":"/docs/apl/introduction","label":"apl/introduction"}}}}],"breadcrumbs":false}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var s=n(7529);const l=JSON.parse('{"docusaurusVersion":"3.1.1","siteVersion":"0.16.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"3.1.1"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"3.1.1"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"3.1.1"},"docusaurus-plugin-google-gtag":{"type":"package","name":"@docusaurus/plugin-google-gtag","version":"3.1.1"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"3.1.1"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"3.1.1"},"docusaurus-theme-search-algolia":{"type":"package","name":"@docusaurus/theme-search-algolia","version":"3.1.1"}}}');var c=n(5893);const u={siteConfig:o.default,siteMetadata:l,globalData:a,i18n:i,codeTranslations:s},d=r.createContext(u);function p(e){let{children:t}=e;return(0,c.jsx)(d.Provider,{value:u,children:t})}},4763:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(7294),o=n(412),a=n(5742),i=n(8780),s=n(7372),l=n(5893);function c(e){let{error:t,tryAgain:n}=e;return(0,l.jsxs)("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"},children:[(0,l.jsx)("h1",{style:{fontSize:"3rem"},children:"This page crashed"}),(0,l.jsx)("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"},children:"Try again"}),(0,l.jsx)(u,{error:t})]})}function u(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,l.jsx)("p",{style:{whiteSpace:"pre-wrap"},children:n})}function d(e){let{error:t,tryAgain:n}=e;return(0,l.jsxs)(f,{fallback:()=>(0,l.jsx)(c,{error:t,tryAgain:n}),children:[(0,l.jsx)(a.Z,{children:(0,l.jsx)("title",{children:"Page Error"})}),(0,l.jsx)(s.Z,{children:(0,l.jsx)(c,{error:t,tryAgain:n})})]})}const p=e=>(0,l.jsx)(d,{...e});class f extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){o.Z.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??p)(e)}return e??null}}},412:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,o={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},5742:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});n(7294);var r=n(405),o=n(5893);function a(e){return(0,o.jsx)(r.ql,{...e})}},3692:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(7294),o=n(3727),a=n(8780),i=n(2263),s=n(3919),l=n(412),c=n(8138),u=n(4996),d=n(5893);function p(e,t){let{isNavLink:n,to:p,href:f,activeClassName:m,isActive:h,"data-noBrokenLinkCheck":g,autoAddBaseUrl:b=!0,...y}=e;const{siteConfig:{trailingSlash:v,baseUrl:w}}=(0,i.Z)(),{withBaseUrl:k}=(0,u.C)(),x=(0,c.Z)(),S=(0,r.useRef)(null);(0,r.useImperativeHandle)(t,(()=>S.current));const _=p||f;const E=(0,s.Z)(_),C=_?.replace("pathname://","");let T=void 0!==C?(j=C,b&&(e=>e.startsWith("/"))(j)?k(j):j):void 0;var j;T&&E&&(T=(0,a.applyTrailingSlash)(T,{trailingSlash:v,baseUrl:w}));const A=(0,r.useRef)(!1),L=n?o.OL:o.rU,R=l.Z.canUseIntersectionObserver,N=(0,r.useRef)(),P=()=>{A.current||null==T||(window.docusaurus.preload(T),A.current=!0)};(0,r.useEffect)((()=>(!R&&E&&null!=T&&window.docusaurus.prefetch(T),()=>{R&&N.current&&N.current.disconnect()})),[N,T,R,E]);const O=T?.startsWith("#")??!1,I=!y.target||"_self"===y.target,D=!T||!E||!I||O;return g||!O&&D||x.collectLink(T),y.id&&x.collectAnchor(y.id),D?(0,d.jsx)("a",{ref:S,href:T,..._&&!E&&{target:"_blank",rel:"noopener noreferrer"},...y}):(0,d.jsx)(L,{...y,onMouseEnter:P,onTouchStart:P,innerRef:e=>{S.current=e,R&&e&&E&&(N.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(N.current.unobserve(e),N.current.disconnect(),null!=T&&window.docusaurus.prefetch(T))}))})),N.current.observe(e))},to:T,...n&&{isActive:h,activeClassName:m}})}const f=r.forwardRef(p)},5999:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c,I:()=>l});var r=n(7294),o=n(5893);function a(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var i=n(7529);function s(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return i[t??n]??n??t}function l(e,t){let{message:n,id:r}=e;return a(s({message:n,id:r}),t)}function c(e){let{children:t,id:n,values:r}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal children",t),new Error("The Docusaurus component only accept simple string values");const i=s({message:t,id:n});return(0,o.jsx)(o.Fragment,{children:a(i,r)})}},9935:(e,t,n)=>{"use strict";n.d(t,{m:()=>r});const r="default"},3919:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function o(e){return void 0!==e&&!r(e)}n.d(t,{Z:()=>o,b:()=>r})},4996:(e,t,n)=>{"use strict";n.d(t,{C:()=>i,Z:()=>s});var r=n(7294),o=n(2263),a=n(3919);function i(){const{siteConfig:{baseUrl:e,url:t}}=(0,o.Z)(),n=(0,r.useCallback)(((n,r)=>function(e,t,n,r){let{forcePrependBaseUrl:o=!1,absolute:i=!1}=void 0===r?{}:r;if(!n||n.startsWith("#")||(0,a.b)(n))return n;if(o)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const s=n.startsWith(t)?n:t+n.replace(/^\//,"");return i?e+s:s}(t,e,n,r)),[t,e]);return{withBaseUrl:n}}function s(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},8138:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var r=n(7294);n(5893);const o=r.createContext({collectAnchor:()=>{},collectLink:()=>{}}),a=()=>(0,r.useContext)(o);function i(){return a()}},2263:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(7294),o=n(8940);function a(){return(0,r.useContext)(o._)}},2389:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(7294),o=n(8934);function a(){return(0,r.useContext)(o._)}},469:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294);const o=n(412).Z.canUseDOM?r.useLayoutEffect:r.useEffect},9670:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function o(e){const t={};return function e(n,o){Object.entries(n).forEach((n=>{let[a,i]=n;const s=o?`${o}.${a}`:a;r(i)?e(i,s):t[s]=i}))}(e),t}},226:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,z:()=>i});var r=n(7294),o=n(5893);const a=r.createContext(null);function i(e){let{children:t,value:n}=e;const i=r.useContext(a),s=(0,r.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const r={...t.data,...n?.data};return{plugin:t.plugin,data:r}}({parent:i,value:n})),[i,n]);return(0,o.jsx)(a.Provider,{value:s,children:t})}},143:(e,t,n)=>{"use strict";n.d(t,{Iw:()=>b,gA:()=>f,WS:()=>m,_r:()=>d,Jo:()=>y,zh:()=>p,yW:()=>g,gB:()=>h});var r=n(6550),o=n(2263),a=n(9935);function i(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,o.Z)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}const s=e=>e.versions.find((e=>e.isLast));function l(e,t){const n=s(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.LX)(t,{path:e.path,exact:!1,strict:!1})))}function c(e,t){const n=l(e,t),o=n?.docs.find((e=>!!(0,r.LX)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:o,alternateDocVersions:o?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(o.id):{}}}const u={},d=()=>i("docusaurus-plugin-content-docs")??u,p=e=>function(e,t,n){void 0===t&&(t=a.m),void 0===n&&(n={});const r=i(e),o=r?.[t];if(!o&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return o}("docusaurus-plugin-content-docs",e,{failfast:!0});function f(e){void 0===e&&(e={});const t=d(),{pathname:n}=(0,r.TH)();return function(e,t,n){void 0===n&&(n={});const o=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,r.LX)(t,{path:n.path,exact:!1,strict:!1})})),a=o?{pluginId:o[0],pluginData:o[1]}:void 0;if(!a&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return a}(t,n,e)}function m(e){void 0===e&&(e={});const t=f(e),{pathname:n}=(0,r.TH)();if(!t)return;return{activePlugin:t,activeVersion:l(t.pluginData,n)}}function h(e){return p(e).versions}function g(e){const t=p(e);return s(t)}function b(e){const t=p(e),{pathname:n}=(0,r.TH)();return c(t,n)}function y(e){const t=p(e),{pathname:n}=(0,r.TH)();return function(e,t){const n=s(e);return{latestDocSuggestion:c(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},6657:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={onRouteDidUpdate(e){let{location:t,previousLocation:n}=e;!n||t.pathname===n.pathname&&t.search===n.search&&t.hash===n.hash||setTimeout((()=>{window.gtag("set","page_path",t.pathname+t.search+t.hash),window.gtag("event","page_view")}))}}},8320:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>a});var r=n(4865),o=n.n(r);o().configure({showSpinner:!1});const a={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{o().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){o().done()}}},3310:(e,t,n)=>{"use strict";n.r(t);var r=n(2573),o=n(6809);!function(e){const{themeConfig:{prism:t}}=o.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{"php"===e&&n(6854),n(6726)(`./prism-${e}`)})),delete globalThis.Prism}(r.p1)},2503:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});n(7294);var r=n(512),o=n(5999),a=n(6668),i=n(3692),s=n(8138);const l={anchorWithStickyNavbar:"anchorWithStickyNavbar_LWe7",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_WYt5"};var c=n(5893);function u(e){let{as:t,id:n,...u}=e;const d=(0,s.Z)(),{navbar:{hideOnScroll:p}}=(0,a.L)();if("h1"===t||!n)return(0,c.jsx)(t,{...u,id:void 0});d.collectAnchor(n);const f=(0,o.I)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof u.children?u.children:n});return(0,c.jsxs)(t,{...u,className:(0,r.Z)("anchor",p?l.anchorWithHideOnScrollNavbar:l.anchorWithStickyNavbar,u.className),id:n,children:[u.children,(0,c.jsx)(i.Z,{className:"hash-link",to:`#${n}`,"aria-label":f,title:f,children:"\u200b"})]})}},9471:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});n(7294);const r={iconExternalLink:"iconExternalLink_nPIU"};var o=n(5893);function a(e){let{width:t=13.5,height:n=13.5}=e;return(0,o.jsx)("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:r.iconExternalLink,children:(0,o.jsx)("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"})})}},7372:(e,t,n)=>{"use strict";n.d(t,{Z:()=>Nt});var r=n(7294),o=n(512),a=n(4763),i=n(833),s=n(6550),l=n(5999),c=n(5936),u=n(5893);const d="__docusaurus_skipToContent_fallback";function p(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function f(){const e=(0,r.useRef)(null),{action:t}=(0,s.k6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&p(t)}),[]);return(0,c.S)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&p(e.current)})),{containerRef:e,onClick:n}}const m=(0,l.I)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function h(e){const t=e.children??m,{containerRef:n,onClick:r}=f();return(0,u.jsx)("div",{ref:n,role:"region","aria-label":m,children:(0,u.jsx)("a",{...e,href:`#${d}`,onClick:r,children:t})})}var g=n(5281),b=n(9727);const y={skipToContent:"skipToContent_fXgn"};function v(){return(0,u.jsx)(h,{className:y.skipToContent})}var w=n(6668),k=n(9689);function x(e){let{width:t=21,height:n=21,color:r="currentColor",strokeWidth:o=1.2,className:a,...i}=e;return(0,u.jsx)("svg",{viewBox:"0 0 15 15",width:t,height:n,...i,children:(0,u.jsx)("g",{stroke:r,strokeWidth:o,children:(0,u.jsx)("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})})})}const S={closeButton:"closeButton_CVFx"};function _(e){return(0,u.jsx)("button",{type:"button","aria-label":(0,l.I)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"}),...e,className:(0,o.Z)("clean-btn close",S.closeButton,e.className),children:(0,u.jsx)(x,{width:14,height:14,strokeWidth:3.1})})}const E={content:"content_knG7"};function C(e){const{announcementBar:t}=(0,w.L)(),{content:n}=t;return(0,u.jsx)("div",{...e,className:(0,o.Z)(E.content,e.className),dangerouslySetInnerHTML:{__html:n}})}const T={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function j(){const{announcementBar:e}=(0,w.L)(),{isActive:t,close:n}=(0,k.nT)();if(!t)return null;const{backgroundColor:r,textColor:o,isCloseable:a}=e;return(0,u.jsxs)("div",{className:T.announcementBar,style:{backgroundColor:r,color:o},role:"banner",children:[a&&(0,u.jsx)("div",{className:T.announcementBarPlaceholder}),(0,u.jsx)(C,{className:T.announcementBarContent}),a&&(0,u.jsx)(_,{onClick:n,className:T.announcementBarClose})]})}var A=n(3163),L=n(2466);var R=n(902),N=n(3102);const P=r.createContext(null);function O(e){let{children:t}=e;const n=function(){const e=(0,A.e)(),t=(0,N.HY)(),[n,o]=(0,r.useState)(!1),a=null!==t.component,i=(0,R.D9)(a);return(0,r.useEffect)((()=>{a&&!i&&o(!0)}),[a,i]),(0,r.useEffect)((()=>{a?e.shown||o(!0):o(!1)}),[e.shown,a]),(0,r.useMemo)((()=>[n,o]),[n])}();return(0,u.jsx)(P.Provider,{value:n,children:t})}function I(e){if(e.component){const t=e.component;return(0,u.jsx)(t,{...e.props})}}function D(){const e=(0,r.useContext)(P);if(!e)throw new R.i6("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,o=(0,r.useCallback)((()=>n(!1)),[n]),a=(0,N.HY)();return(0,r.useMemo)((()=>({shown:t,hide:o,content:I(a)})),[o,a,t])}function M(e){let{header:t,primaryMenu:n,secondaryMenu:r}=e;const{shown:a}=D();return(0,u.jsxs)("div",{className:"navbar-sidebar",children:[t,(0,u.jsxs)("div",{className:(0,o.Z)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":a}),children:[(0,u.jsx)("div",{className:"navbar-sidebar__item menu",children:n}),(0,u.jsx)("div",{className:"navbar-sidebar__item menu",children:r})]})]})}var F=n(2949),z=n(2389);function B(e){return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,u.jsx)("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"})})}function U(e){return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,u.jsx)("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"})})}const $={toggle:"toggle_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function q(e){let{className:t,buttonClassName:n,value:r,onChange:a}=e;const i=(0,z.Z)(),s=(0,l.I)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===r?(0,l.I)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,l.I)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return(0,u.jsx)("div",{className:(0,o.Z)($.toggle,t),children:(0,u.jsxs)("button",{className:(0,o.Z)("clean-btn",$.toggleButton,!i&&$.toggleButtonDisabled,n),type:"button",onClick:()=>a("dark"===r?"light":"dark"),disabled:!i,title:s,"aria-label":s,"aria-live":"polite",children:[(0,u.jsx)(B,{className:(0,o.Z)($.toggleIcon,$.lightToggleIcon)}),(0,u.jsx)(U,{className:(0,o.Z)($.toggleIcon,$.darkToggleIcon)})]})})}const Z=r.memo(q),H={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function G(e){let{className:t}=e;const n=(0,w.L)().navbar.style,r=(0,w.L)().colorMode.disableSwitch,{colorMode:o,setColorMode:a}=(0,F.I)();return r?null:(0,u.jsx)(Z,{className:t,buttonClassName:"dark"===n?H.darkNavbarColorModeToggle:void 0,value:o,onChange:a})}var V=n(1327);function W(){return(0,u.jsx)(V.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function K(){const e=(0,A.e)();return(0,u.jsx)("button",{type:"button","aria-label":(0,l.I)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle(),children:(0,u.jsx)(x,{color:"var(--ifm-color-emphasis-600)"})})}function Q(){return(0,u.jsxs)("div",{className:"navbar-sidebar__brand",children:[(0,u.jsx)(W,{}),(0,u.jsx)(G,{className:"margin-right--md"}),(0,u.jsx)(K,{})]})}var Y=n(3692),X=n(4996),J=n(3919),ee=n(8022),te=n(9471);function ne(e){let{activeBasePath:t,activeBaseRegex:n,to:r,href:o,label:a,html:i,isDropdownLink:s,prependBaseUrlToHref:l,...c}=e;const d=(0,X.Z)(r),p=(0,X.Z)(t),f=(0,X.Z)(o,{forcePrependBaseUrl:!0}),m=a&&o&&!(0,J.Z)(o),h=i?{dangerouslySetInnerHTML:{__html:i}}:{children:(0,u.jsxs)(u.Fragment,{children:[a,m&&(0,u.jsx)(te.Z,{...s&&{width:12,height:12}})]})};return o?(0,u.jsx)(Y.Z,{href:l?f:o,...c,...h}):(0,u.jsx)(Y.Z,{to:d,isNavLink:!0,...(t||n)&&{isActive:(e,t)=>n?(0,ee.F)(n,t.pathname):t.pathname.startsWith(p)},...c,...h})}function re(e){let{className:t,isDropdownItem:n=!1,...r}=e;const a=(0,u.jsx)(ne,{className:(0,o.Z)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n,...r});return n?(0,u.jsx)("li",{children:a}):a}function oe(e){let{className:t,isDropdownItem:n,...r}=e;return(0,u.jsx)("li",{className:"menu__list-item",children:(0,u.jsx)(ne,{className:(0,o.Z)("menu__link",t),...r})})}function ae(e){let{mobile:t=!1,position:n,...r}=e;const o=t?oe:re;return(0,u.jsx)(o,{...r,activeClassName:r.activeClassName??(t?"menu__link--active":"navbar__link--active")})}var ie=n(6043),se=n(8596),le=n(2263);const ce={dropdownNavbarItemMobile:"dropdownNavbarItemMobile_S0Fm"};function ue(e,t){return e.some((e=>function(e,t){return!!(0,se.Mg)(e.to,t)||!!(0,ee.F)(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function de(e){let{items:t,position:n,className:a,onClick:i,...s}=e;const l=(0,r.useRef)(null),[c,d]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{l.current&&!l.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[l]),(0,u.jsxs)("div",{ref:l,className:(0,o.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":c}),children:[(0,u.jsx)(ne,{"aria-haspopup":"true","aria-expanded":c,role:"button",href:s.to?void 0:"#",className:(0,o.Z)("navbar__link",a),...s,onClick:s.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!c))},children:s.children??s.label}),(0,u.jsx)("ul",{className:"dropdown__menu",children:t.map(((e,t)=>(0,r.createElement)(Ze,{isDropdownItem:!0,activeClassName:"dropdown__link--active",...e,key:t})))})]})}function pe(e){let{items:t,className:n,position:a,onClick:i,...l}=e;const c=function(){const{siteConfig:{baseUrl:e}}=(0,le.Z)(),{pathname:t}=(0,s.TH)();return t.replace(e,"/")}(),d=ue(t,c),{collapsed:p,toggleCollapsed:f,setCollapsed:m}=(0,ie.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&m(!d)}),[c,d,m]),(0,u.jsxs)("li",{className:(0,o.Z)("menu__list-item",{"menu__list-item--collapsed":p}),children:[(0,u.jsx)(ne,{role:"button",className:(0,o.Z)(ce.dropdownNavbarItemMobile,"menu__link menu__link--sublist menu__link--sublist-caret",n),...l,onClick:e=>{e.preventDefault(),f()},children:l.children??l.label}),(0,u.jsx)(ie.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:p,children:t.map(((e,t)=>(0,r.createElement)(Ze,{mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active",...e,key:t})))})]})}function fe(e){let{mobile:t=!1,...n}=e;const r=t?pe:de;return(0,u.jsx)(r,{...n})}var me=n(4711);function he(e){let{width:t=20,height:n=20,...r}=e;return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0,...r,children:(0,u.jsx)("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"})})}const ge="iconLanguage_nlXk";var be=n(3935);function ye(){return r.createElement("svg",{width:"15",height:"15",className:"DocSearch-Control-Key-Icon"},r.createElement("path",{d:"M4.505 4.496h2M5.505 5.496v5M8.216 4.496l.055 5.993M10 7.5c.333.333.5.667.5 1v2M12.326 4.5v5.996M8.384 4.496c1.674 0 2.116 0 2.116 1.5s-.442 1.5-2.116 1.5M3.205 9.303c-.09.448-.277 1.21-1.241 1.203C1 10.5.5 9.513.5 8V7c0-1.57.5-2.5 1.464-2.494.964.006 1.134.598 1.24 1.342M12.553 10.5h1.953",strokeWidth:"1.2",stroke:"currentColor",fill:"none",strokeLinecap:"square"}))}var ve=n(830),we=["translations"];function ke(){return ke=Object.assign||function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var Ee="Ctrl";var Ce=r.forwardRef((function(e,t){var n=e.translations,o=void 0===n?{}:n,a=_e(e,we),i=o.buttonText,s=void 0===i?"Search":i,l=o.buttonAriaLabel,c=void 0===l?"Search":l,u=xe((0,r.useState)(null),2),d=u[0],p=u[1];return(0,r.useEffect)((function(){"undefined"!=typeof navigator&&(/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)?p("\u2318"):p(Ee))}),[]),r.createElement("button",ke({type:"button",className:"DocSearch DocSearch-Button","aria-label":c},a,{ref:t}),r.createElement("span",{className:"DocSearch-Button-Container"},r.createElement(ve.W,null),r.createElement("span",{className:"DocSearch-Button-Placeholder"},s)),r.createElement("span",{className:"DocSearch-Button-Keys"},null!==d&&r.createElement(r.Fragment,null,r.createElement("kbd",{className:"DocSearch-Button-Key"},d===Ee?r.createElement(ye,null):d),r.createElement("kbd",{className:"DocSearch-Button-Key"},"K"))))})),Te=n(5742),je=n(6177),Ae=n(239),Le=n(3320);const Re={button:{buttonText:(0,l.I)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"}),buttonAriaLabel:(0,l.I)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"})},modal:{searchBox:{resetButtonTitle:(0,l.I)({id:"theme.SearchModal.searchBox.resetButtonTitle",message:"Clear the query",description:"The label and ARIA label for search box reset button"}),resetButtonAriaLabel:(0,l.I)({id:"theme.SearchModal.searchBox.resetButtonTitle",message:"Clear the query",description:"The label and ARIA label for search box reset button"}),cancelButtonText:(0,l.I)({id:"theme.SearchModal.searchBox.cancelButtonText",message:"Cancel",description:"The label and ARIA label for search box cancel button"}),cancelButtonAriaLabel:(0,l.I)({id:"theme.SearchModal.searchBox.cancelButtonText",message:"Cancel",description:"The label and ARIA label for search box cancel button"})},startScreen:{recentSearchesTitle:(0,l.I)({id:"theme.SearchModal.startScreen.recentSearchesTitle",message:"Recent",description:"The title for recent searches"}),noRecentSearchesText:(0,l.I)({id:"theme.SearchModal.startScreen.noRecentSearchesText",message:"No recent searches",description:"The text when no recent searches"}),saveRecentSearchButtonTitle:(0,l.I)({id:"theme.SearchModal.startScreen.saveRecentSearchButtonTitle",message:"Save this search",description:"The label for save recent search button"}),removeRecentSearchButtonTitle:(0,l.I)({id:"theme.SearchModal.startScreen.removeRecentSearchButtonTitle",message:"Remove this search from history",description:"The label for remove recent search button"}),favoriteSearchesTitle:(0,l.I)({id:"theme.SearchModal.startScreen.favoriteSearchesTitle",message:"Favorite",description:"The title for favorite searches"}),removeFavoriteSearchButtonTitle:(0,l.I)({id:"theme.SearchModal.startScreen.removeFavoriteSearchButtonTitle",message:"Remove this search from favorites",description:"The label for remove favorite search button"})},errorScreen:{titleText:(0,l.I)({id:"theme.SearchModal.errorScreen.titleText",message:"Unable to fetch results",description:"The title for error screen of search modal"}),helpText:(0,l.I)({id:"theme.SearchModal.errorScreen.helpText",message:"You might want to check your network connection.",description:"The help text for error screen of search modal"})},footer:{selectText:(0,l.I)({id:"theme.SearchModal.footer.selectText",message:"to select",description:"The explanatory text of the action for the enter key"}),selectKeyAriaLabel:(0,l.I)({id:"theme.SearchModal.footer.selectKeyAriaLabel",message:"Enter key",description:"The ARIA label for the Enter key button that makes the selection"}),navigateText:(0,l.I)({id:"theme.SearchModal.footer.navigateText",message:"to navigate",description:"The explanatory text of the action for the Arrow up and Arrow down key"}),navigateUpKeyAriaLabel:(0,l.I)({id:"theme.SearchModal.footer.navigateUpKeyAriaLabel",message:"Arrow up",description:"The ARIA label for the Arrow up key button that makes the navigation"}),navigateDownKeyAriaLabel:(0,l.I)({id:"theme.SearchModal.footer.navigateDownKeyAriaLabel",message:"Arrow down",description:"The ARIA label for the Arrow down key button that makes the navigation"}),closeText:(0,l.I)({id:"theme.SearchModal.footer.closeText",message:"to close",description:"The explanatory text of the action for Escape key"}),closeKeyAriaLabel:(0,l.I)({id:"theme.SearchModal.footer.closeKeyAriaLabel",message:"Escape key",description:"The ARIA label for the Escape key button that close the modal"}),searchByText:(0,l.I)({id:"theme.SearchModal.footer.searchByText",message:"Search by",description:"The text explain that the search is making by Algolia"})},noResultsScreen:{noResultsText:(0,l.I)({id:"theme.SearchModal.noResultsScreen.noResultsText",message:"No results for",description:"The text explains that there are no results for the following search"}),suggestedQueryText:(0,l.I)({id:"theme.SearchModal.noResultsScreen.suggestedQueryText",message:"Try searching for",description:"The text for the suggested query when no results are found for the following search"}),reportMissingResultsText:(0,l.I)({id:"theme.SearchModal.noResultsScreen.reportMissingResultsText",message:"Believe this query should return results?",description:"The text for the question where the user thinks there are missing results"}),reportMissingResultsLinkText:(0,l.I)({id:"theme.SearchModal.noResultsScreen.reportMissingResultsLinkText",message:"Let us know.",description:"The text for the link to report missing results"})}},placeholder:(0,l.I)({id:"theme.SearchModal.placeholder",message:"Search docs",description:"The placeholder of the input of the DocSearch pop-up modal"})};let Ne=null;function Pe(e){let{hit:t,children:n}=e;return(0,u.jsx)(Y.Z,{to:t.url,children:n})}function Oe(e){let{state:t,onClose:n}=e;const r=(0,je.M)();return(0,u.jsx)(Y.Z,{to:r(t.query),onClick:n,children:(0,u.jsx)(l.Z,{id:"theme.SearchBar.seeAll",values:{count:t.context.nbHits},children:"See all {count} results"})})}function Ie(e){let{contextualSearch:t,externalUrlRegex:o,...a}=e;const{siteMetadata:i}=(0,le.Z)(),l=(0,Ae.l)(),c=function(){const{locale:e,tags:t}=(0,Le._q)();return[`language:${e}`,t.map((e=>`docusaurus_tag:${e}`))]}(),d=a.searchParameters?.facetFilters??[],p=t?function(e,t){const n=e=>"string"==typeof e?[e]:e;return[...n(e),...n(t)]}(c,d):d,f={...a.searchParameters,facetFilters:p},m=(0,s.k6)(),h=(0,r.useRef)(null),g=(0,r.useRef)(null),[b,y]=(0,r.useState)(!1),[v,w]=(0,r.useState)(void 0),k=(0,r.useCallback)((()=>Ne?Promise.resolve():Promise.all([n.e(1426).then(n.bind(n,1426)),Promise.all([n.e(532),n.e(6945)]).then(n.bind(n,6945)),Promise.all([n.e(532),n.e(8894)]).then(n.bind(n,8894))]).then((e=>{let[{DocSearchModal:t}]=e;Ne=t}))),[]),x=(0,r.useCallback)((()=>{k().then((()=>{h.current=document.createElement("div"),document.body.insertBefore(h.current,document.body.firstChild),y(!0)}))}),[k,y]),S=(0,r.useCallback)((()=>{y(!1),h.current?.remove()}),[y]),_=(0,r.useCallback)((e=>{k().then((()=>{y(!0),w(e.key)}))}),[k,y,w]),E=(0,r.useRef)({navigate(e){let{itemUrl:t}=e;(0,ee.F)(o,t)?window.location.href=t:m.push(t)}}).current,C=(0,r.useRef)((e=>a.transformItems?a.transformItems(e):e.map((e=>({...e,url:l(e.url)}))))).current,T=(0,r.useMemo)((()=>e=>(0,u.jsx)(Oe,{...e,onClose:S})),[S]),j=(0,r.useCallback)((e=>(e.addAlgoliaAgent("docusaurus",i.docusaurusVersion),e)),[i.docusaurusVersion]);return function(e){var t=e.isOpen,n=e.onOpen,o=e.onClose,a=e.onInput,i=e.searchButtonRef;r.useEffect((function(){function e(e){var r;(27===e.keyCode&&t||"k"===(null===(r=e.key)||void 0===r?void 0:r.toLowerCase())&&(e.metaKey||e.ctrlKey)||!function(e){var t=e.target,n=t.tagName;return t.isContentEditable||"INPUT"===n||"SELECT"===n||"TEXTAREA"===n}(e)&&"/"===e.key&&!t)&&(e.preventDefault(),t?o():document.body.classList.contains("DocSearch--active")||document.body.classList.contains("DocSearch--active")||n()),i&&i.current===document.activeElement&&a&&/[a-zA-Z0-9]/.test(String.fromCharCode(e.keyCode))&&a(e)}return window.addEventListener("keydown",e),function(){window.removeEventListener("keydown",e)}}),[t,n,o,a,i])}({isOpen:b,onOpen:x,onClose:S,onInput:_,searchButtonRef:g}),(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(Te.Z,{children:(0,u.jsx)("link",{rel:"preconnect",href:`https://${a.appId}-dsn.algolia.net`,crossOrigin:"anonymous"})}),(0,u.jsx)(Ce,{onTouchStart:k,onFocus:k,onMouseOver:k,onClick:x,ref:g,translations:Re.button}),b&&Ne&&h.current&&(0,be.createPortal)((0,u.jsx)(Ne,{onClose:S,initialScrollY:window.scrollY,initialQuery:v,navigator:E,transformItems:C,hitComponent:Pe,transformSearchClient:j,...a.searchPagePath&&{resultsFooterComponent:T},...a,searchParameters:f,placeholder:Re.placeholder,translations:Re.modal}),h.current)]})}function De(){const{siteConfig:e}=(0,le.Z)();return(0,u.jsx)(Ie,{...e.themeConfig.algolia})}const Me={navbarSearchContainer:"navbarSearchContainer_Bca1"};function Fe(e){let{children:t,className:n}=e;return(0,u.jsx)("div",{className:(0,o.Z)(n,Me.navbarSearchContainer),children:t})}var ze=n(143),Be=n(2802);var Ue=n(373);const $e=e=>e.docs.find((t=>t.id===e.mainDocId));const qe={default:ae,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:r,queryString:o="",...a}=e;const{i18n:{currentLocale:i,locales:c,localeConfigs:d}}=(0,le.Z)(),p=(0,me.l)(),{search:f,hash:m}=(0,s.TH)(),h=[...n,...c.map((e=>{const n=`${`pathname://${p.createUrl({locale:e,fullyQualified:!1})}`}${f}${m}${o}`;return{label:d[e].label,lang:d[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===i?t?"menu__link--active":"dropdown__link--active":""}})),...r],g=t?(0,l.I)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[i].label;return(0,u.jsx)(fe,{...a,mobile:t,label:(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(he,{className:ge}),g]}),items:h})},search:function(e){let{mobile:t,className:n}=e;return t?null:(0,u.jsx)(Fe,{className:n,children:(0,u.jsx)(De,{})})},dropdown:fe,html:function(e){let{value:t,className:n,mobile:r=!1,isDropdownItem:a=!1}=e;const i=a?"li":"div";return(0,u.jsx)(i,{className:(0,o.Z)({navbar__item:!r&&!a,"menu__list-item":r},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:r,...o}=e;const{activeDoc:a}=(0,ze.Iw)(r),i=(0,Be.vY)(t,r),s=a?.path===i?.path;return null===i||i.unlisted&&!s?null:(0,u.jsx)(ae,{exact:!0,...o,isActive:()=>s||!!a?.sidebar&&a.sidebar===i.sidebar,label:n??i.id,to:i.path})},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:r,...o}=e;const{activeDoc:a}=(0,ze.Iw)(r),i=(0,Be.oz)(t,r).link;if(!i)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return(0,u.jsx)(ae,{exact:!0,...o,isActive:()=>a?.sidebar===t,label:n??i.label,to:i.path})},docsVersion:function(e){let{label:t,to:n,docsPluginId:r,...o}=e;const a=(0,Be.lO)(r)[0],i=t??a.label,s=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(a).path;return(0,u.jsx)(ae,{...o,label:i,to:s})},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:r,dropdownItemsBefore:o,dropdownItemsAfter:a,...i}=e;const{search:c,hash:d}=(0,s.TH)(),p=(0,ze.Iw)(n),f=(0,ze.gB)(n),{savePreferredVersionName:m}=(0,Ue.J)(n),h=[...o,...f.map((e=>{const t=p.alternateDocVersions[e.name]??$e(e);return{label:e.label,to:`${t.path}${c}${d}`,isActive:()=>e===p.activeVersion,onClick:()=>m(e.name)}})),...a],g=(0,Be.lO)(n)[0],b=t&&h.length>1?(0,l.I)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):g.label,y=t&&h.length>1?void 0:$e(g).path;return h.length<=1?(0,u.jsx)(ae,{...i,mobile:t,label:b,to:y,isActive:r?()=>!1:void 0}):(0,u.jsx)(fe,{...i,mobile:t,label:b,to:y,items:h,isActive:r?()=>!1:void 0})}};function Ze(e){let{type:t,...n}=e;const r=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),o=qe[r];if(!o)throw new Error(`No NavbarItem component found for type "${t}".`);return(0,u.jsx)(o,{...n})}function He(){const e=(0,A.e)(),t=(0,w.L)().navbar.items;return(0,u.jsx)("ul",{className:"menu__list",children:t.map(((t,n)=>(0,r.createElement)(Ze,{mobile:!0,...t,onClick:()=>e.toggle(),key:n})))})}function Ge(e){return(0,u.jsx)("button",{...e,type:"button",className:"clean-btn navbar-sidebar__back",children:(0,u.jsx)(l.Z,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)",children:"\u2190 Back to main menu"})})}function Ve(){const e=0===(0,w.L)().navbar.items.length,t=D();return(0,u.jsxs)(u.Fragment,{children:[!e&&(0,u.jsx)(Ge,{onClick:()=>t.hide()}),t.content]})}function We(){const e=(0,A.e)();var t;return void 0===(t=e.shown)&&(t=!0),(0,r.useEffect)((()=>(document.body.style.overflow=t?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[t]),e.shouldRender?(0,u.jsx)(M,{header:(0,u.jsx)(Q,{}),primaryMenu:(0,u.jsx)(He,{}),secondaryMenu:(0,u.jsx)(Ve,{})}):null}const Ke={navbarHideable:"navbarHideable_m1mJ",navbarHidden:"navbarHidden_jGov"};function Qe(e){return(0,u.jsx)("div",{role:"presentation",...e,className:(0,o.Z)("navbar-sidebar__backdrop",e.className)})}function Ye(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:a}}=(0,w.L)(),i=(0,A.e)(),{navbarRef:s,isNavbarVisible:d}=function(e){const[t,n]=(0,r.useState)(e),o=(0,r.useRef)(!1),a=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(a.current=e.getBoundingClientRect().height)}),[]);return(0,L.RF)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i=s?n(!1):i+c{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return o.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return(0,u.jsxs)("nav",{ref:s,"aria-label":(0,l.I)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,o.Z)("navbar","navbar--fixed-top",n&&[Ke.navbarHideable,!d&&Ke.navbarHidden],{"navbar--dark":"dark"===a,"navbar--primary":"primary"===a,"navbar-sidebar--show":i.shown}),children:[t,(0,u.jsx)(Qe,{onClick:i.toggle}),(0,u.jsx)(We,{})]})}var Xe=n(8780);const Je={errorBoundaryError:"errorBoundaryError_a6uf",errorBoundaryFallback:"errorBoundaryFallback_VBag"};function et(e){return(0,u.jsx)("button",{type:"button",...e,children:(0,u.jsx)(l.Z,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error",children:"Try again"})})}function tt(e){let{error:t}=e;const n=(0,Xe.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,u.jsx)("p",{className:Je.errorBoundaryError,children:n})}class nt extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}const rt="right";function ot(e){let{width:t=30,height:n=30,className:r,...o}=e;return(0,u.jsx)("svg",{className:r,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true",...o,children:(0,u.jsx)("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"})})}function at(){const{toggle:e,shown:t}=(0,A.e)();return(0,u.jsx)("button",{onClick:e,"aria-label":(0,l.I)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button",children:(0,u.jsx)(ot,{})})}const it={colorModeToggle:"colorModeToggle_DEke"};function st(e){let{items:t}=e;return(0,u.jsx)(u.Fragment,{children:t.map(((e,t)=>(0,u.jsx)(nt,{onError:t=>new Error(`A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n${JSON.stringify(e,null,2)}`,{cause:t}),children:(0,u.jsx)(Ze,{...e})},t)))})}function lt(e){let{left:t,right:n}=e;return(0,u.jsxs)("div",{className:"navbar__inner",children:[(0,u.jsx)("div",{className:"navbar__items",children:t}),(0,u.jsx)("div",{className:"navbar__items navbar__items--right",children:n})]})}function ct(){const e=(0,A.e)(),t=(0,w.L)().navbar.items,[n,r]=function(e){function t(e){return"left"===(e.position??rt)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),o=t.find((e=>"search"===e.type));return(0,u.jsx)(lt,{left:(0,u.jsxs)(u.Fragment,{children:[!e.disabled&&(0,u.jsx)(at,{}),(0,u.jsx)(W,{}),(0,u.jsx)(st,{items:n})]}),right:(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(st,{items:r}),(0,u.jsx)(G,{className:it.colorModeToggle}),!o&&(0,u.jsx)(Fe,{children:(0,u.jsx)(De,{})})]})})}function ut(){return(0,u.jsx)(Ye,{children:(0,u.jsx)(ct,{})})}function dt(e){let{item:t}=e;const{to:n,href:r,label:o,prependBaseUrlToHref:a,...i}=t,s=(0,X.Z)(n),l=(0,X.Z)(r,{forcePrependBaseUrl:!0});return(0,u.jsxs)(Y.Z,{className:"footer__link-item",...r?{href:a?l:r}:{to:s},...i,children:[o,r&&!(0,J.Z)(r)&&(0,u.jsx)(te.Z,{})]})}function pt(e){let{item:t}=e;return t.html?(0,u.jsx)("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):(0,u.jsx)("li",{className:"footer__item",children:(0,u.jsx)(dt,{item:t})},t.href??t.to)}function ft(e){let{column:t}=e;return(0,u.jsxs)("div",{className:"col footer__col",children:[(0,u.jsx)("div",{className:"footer__title",children:t.title}),(0,u.jsx)("ul",{className:"footer__items clean-list",children:t.items.map(((e,t)=>(0,u.jsx)(pt,{item:e},t)))})]})}function mt(e){let{columns:t}=e;return(0,u.jsx)("div",{className:"row footer__links",children:t.map(((e,t)=>(0,u.jsx)(ft,{column:e},t)))})}function ht(){return(0,u.jsx)("span",{className:"footer__link-separator",children:"\xb7"})}function gt(e){let{item:t}=e;return t.html?(0,u.jsx)("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):(0,u.jsx)(dt,{item:t})}function bt(e){let{links:t}=e;return(0,u.jsx)("div",{className:"footer__links text--center",children:(0,u.jsx)("div",{className:"footer__links",children:t.map(((e,n)=>(0,u.jsxs)(r.Fragment,{children:[(0,u.jsx)(gt,{item:e}),t.length!==n+1&&(0,u.jsx)(ht,{})]},n)))})})}function yt(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?(0,u.jsx)(mt,{columns:t}):(0,u.jsx)(bt,{links:t})}var vt=n(9965);const wt={footerLogoLink:"footerLogoLink_BH7S"};function kt(e){let{logo:t}=e;const{withBaseUrl:n}=(0,X.C)(),r={light:n(t.src),dark:n(t.srcDark??t.src)};return(0,u.jsx)(vt.Z,{className:(0,o.Z)("footer__logo",t.className),alt:t.alt,sources:r,width:t.width,height:t.height,style:t.style})}function xt(e){let{logo:t}=e;return t.href?(0,u.jsx)(Y.Z,{href:t.href,className:wt.footerLogoLink,target:t.target,children:(0,u.jsx)(kt,{logo:t})}):(0,u.jsx)(kt,{logo:t})}function St(e){let{copyright:t}=e;return(0,u.jsx)("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function _t(e){let{style:t,links:n,logo:r,copyright:a}=e;return(0,u.jsx)("footer",{className:(0,o.Z)("footer",{"footer--dark":"dark"===t}),children:(0,u.jsxs)("div",{className:"container container-fluid",children:[n,(r||a)&&(0,u.jsxs)("div",{className:"footer__bottom text--center",children:[r&&(0,u.jsx)("div",{className:"margin-bottom--sm",children:r}),a]})]})})}function Et(){const{footer:e}=(0,w.L)();if(!e)return null;const{copyright:t,links:n,logo:r,style:o}=e;return(0,u.jsx)(_t,{style:o,links:n&&n.length>0&&(0,u.jsx)(yt,{links:n}),logo:r&&(0,u.jsx)(xt,{logo:r}),copyright:t&&(0,u.jsx)(St,{copyright:t})})}const Ct=r.memo(Et),Tt=(0,R.Qc)([F.S,k.pl,L.OC,Ue.L5,i.VC,function(e){let{children:t}=e;return(0,u.jsx)(N.n2,{children:(0,u.jsx)(A.M,{children:(0,u.jsx)(O,{children:t})})})}]);function jt(e){let{children:t}=e;return(0,u.jsx)(Tt,{children:t})}var At=n(2503);function Lt(e){let{error:t,tryAgain:n}=e;return(0,u.jsx)("main",{className:"container margin-vert--xl",children:(0,u.jsx)("div",{className:"row",children:(0,u.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,u.jsx)(At.Z,{as:"h1",className:"hero__title",children:(0,u.jsx)(l.Z,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed",children:"This page crashed."})}),(0,u.jsx)("div",{className:"margin-vert--lg",children:(0,u.jsx)(et,{onClick:n,className:"button button--primary shadow--lw"})}),(0,u.jsx)("hr",{}),(0,u.jsx)("div",{className:"margin-vert--md",children:(0,u.jsx)(tt,{error:t})})]})})})}const Rt={mainWrapper:"mainWrapper_z2l0"};function Nt(e){const{children:t,noFooter:n,wrapperClassName:r,title:s,description:l}=e;return(0,b.t)(),(0,u.jsxs)(jt,{children:[(0,u.jsx)(i.d,{title:s,description:l}),(0,u.jsx)(v,{}),(0,u.jsx)(j,{}),(0,u.jsx)(ut,{}),(0,u.jsx)("div",{id:d,className:(0,o.Z)(g.k.wrapper.main,Rt.mainWrapper,r),children:(0,u.jsx)(a.Z,{fallback:e=>(0,u.jsx)(Lt,{...e}),children:t})}),!n&&(0,u.jsx)(Ct,{})]})}},1327:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});n(7294);var r=n(3692),o=n(4996),a=n(2263),i=n(6668),s=n(9965),l=n(5893);function c(e){let{logo:t,alt:n,imageClassName:r}=e;const a={light:(0,o.Z)(t.src),dark:(0,o.Z)(t.srcDark||t.src)},i=(0,l.jsx)(s.Z,{className:t.className,sources:a,height:t.height,width:t.width,alt:n,style:t.style});return r?(0,l.jsx)("div",{className:r,children:i}):i}function u(e){const{siteConfig:{title:t}}=(0,a.Z)(),{navbar:{title:n,logo:s}}=(0,i.L)(),{imageClassName:u,titleClassName:d,...p}=e,f=(0,o.Z)(s?.href||"/"),m=n?"":t,h=s?.alt??m;return(0,l.jsxs)(r.Z,{to:f,...p,...s?.target&&{target:s.target},children:[s&&(0,l.jsx)(c,{logo:s,alt:h,imageClassName:u}),null!=n&&(0,l.jsx)("b",{className:d,children:n})]})}},197:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});n(7294);var r=n(5742),o=n(5893);function a(e){let{locale:t,version:n,tag:a}=e;const i=t;return(0,o.jsxs)(r.Z,{children:[t&&(0,o.jsx)("meta",{name:"docusaurus_locale",content:t}),n&&(0,o.jsx)("meta",{name:"docusaurus_version",content:n}),a&&(0,o.jsx)("meta",{name:"docusaurus_tag",content:a}),i&&(0,o.jsx)("meta",{name:"docsearch:language",content:i}),n&&(0,o.jsx)("meta",{name:"docsearch:version",content:n}),a&&(0,o.jsx)("meta",{name:"docsearch:docusaurus_tag",content:a})]})}},9965:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var r=n(7294),o=n(512),a=n(2389),i=n(2949);const s={themedComponent:"themedComponent_mlkZ","themedComponent--light":"themedComponent--light_NVdE","themedComponent--dark":"themedComponent--dark_xIcU"};var l=n(5893);function c(e){let{className:t,children:n}=e;const c=(0,a.Z)(),{colorMode:u}=(0,i.I)();return(0,l.jsx)(l.Fragment,{children:(c?"dark"===u?["dark"]:["light"]:["light","dark"]).map((e=>{const a=n({theme:e,className:(0,o.Z)(t,s.themedComponent,s[`themedComponent--${e}`])});return(0,l.jsx)(r.Fragment,{children:a},e)}))})}function u(e){const{sources:t,className:n,alt:r,...o}=e;return(0,l.jsx)(c,{className:n,children:e=>{let{theme:n,className:a}=e;return(0,l.jsx)("img",{src:t[n],alt:r,className:a,...o})}})}},6043:(e,t,n)=>{"use strict";n.d(t,{u:()=>c,z:()=>b});var r=n(7294),o=n(412),a=n(469),i=n(1442),s=n(5893);const l="ease-in-out";function c(e){let{initialState:t}=e;const[n,o]=(0,r.useState)(t??!1),a=(0,r.useCallback)((()=>{o((e=>!e))}),[]);return{collapsed:n,setCollapsed:o,toggleCollapsed:a}}const u={display:"none",overflow:"hidden",height:"0px"},d={display:"block",overflow:"visible",height:"auto"};function p(e,t){const n=t?u:d;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function f(e){let{collapsibleRef:t,collapsed:n,animation:o}=e;const a=(0,r.useRef)(!1);(0,r.useEffect)((()=>{const e=t.current;function r(){const t=e.scrollHeight,n=o?.duration??function(e){if((0,i.n)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${o?.easing??l}`,height:`${t}px`}}function s(){const t=r();e.style.transition=t.transition,e.style.height=t.height}if(!a.current)return p(e,n),void(a.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(s(),requestAnimationFrame((()=>{e.style.height=u.height,e.style.overflow=u.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{s()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,o])}function m(e){if(!o.Z.canUseDOM)return e?u:d}function h(e){let{as:t="div",collapsed:n,children:o,animation:a,onCollapseTransitionEnd:i,className:l,disableSSRStyle:c}=e;const u=(0,r.useRef)(null);return f({collapsibleRef:u,collapsed:n,animation:a}),(0,s.jsx)(t,{ref:u,style:c?void 0:m(n),onTransitionEnd:e=>{"height"===e.propertyName&&(p(u.current,n),i?.(n))},className:l,children:o})}function g(e){let{collapsed:t,...n}=e;const[o,i]=(0,r.useState)(!t),[l,c]=(0,r.useState)(t);return(0,a.Z)((()=>{t||i(!0)}),[t]),(0,a.Z)((()=>{o&&c(t)}),[o,t]),o?(0,s.jsx)(h,{...n,collapsed:l}):null}function b(e){let{lazy:t,...n}=e;const r=t?g:h;return(0,s.jsx)(r,{...n})}},9689:(e,t,n)=>{"use strict";n.d(t,{nT:()=>h,pl:()=>m});var r=n(7294),o=n(2389),a=n(12),i=n(902),s=n(6668),l=n(5893);const c=(0,a.WA)("docusaurus.announcement.dismiss"),u=(0,a.WA)("docusaurus.announcement.id"),d=()=>"true"===c.get(),p=e=>c.set(String(e)),f=r.createContext(null);function m(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,s.L)(),t=(0,o.Z)(),[n,a]=(0,r.useState)((()=>!!t&&d()));(0,r.useEffect)((()=>{a(d())}),[]);const i=(0,r.useCallback)((()=>{p(!0),a(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=u.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;u.set(t),r&&p(!1),!r&&d()||a(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return(0,l.jsx)(f.Provider,{value:n,children:t})}function h(){const e=(0,r.useContext)(f);if(!e)throw new i.i6("AnnouncementBarProvider");return e}},2949:(e,t,n)=>{"use strict";n.d(t,{I:()=>b,S:()=>g});var r=n(7294),o=n(412),a=n(902),i=n(12),s=n(6668),l=n(5893);const c=r.createContext(void 0),u="theme",d=(0,i.WA)(u),p={light:"light",dark:"dark"},f=e=>e===p.dark?p.dark:p.light,m=e=>o.Z.canUseDOM?f(document.documentElement.getAttribute("data-theme")):f(e),h=e=>{d.set(f(e))};function g(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,s.L)(),[o,a]=(0,r.useState)(m(e));(0,r.useEffect)((()=>{t&&d.del()}),[t]);const i=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:o=!0}=r;t?(a(t),o&&h(t)):(a(n?window.matchMedia("(prefers-color-scheme: dark)").matches?p.dark:p.light:e),d.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",f(o))}),[o]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==u)return;const t=d.get();null!==t&&i(f(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,i]);const l=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{window.matchMedia("print").matches||l.current?l.current=window.matchMedia("print").matches:i(null)};return e.addListener(r),()=>e.removeListener(r)}),[i,t,n]),(0,r.useMemo)((()=>({colorMode:o,setColorMode:i,get isDarkTheme(){return o===p.dark},setLightTheme(){i(p.light)},setDarkTheme(){i(p.dark)}})),[o,i])}();return(0,l.jsx)(c.Provider,{value:n,children:t})}function b(){const e=(0,r.useContext)(c);if(null==e)throw new a.i6("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},373:(e,t,n)=>{"use strict";n.d(t,{J:()=>v,L5:()=>b,Oh:()=>w});var r=n(7294),o=n(143),a=n(9935),i=n(6668),s=n(2802),l=n(902),c=n(12),u=n(5893);const d=e=>`docs-preferred-version-${e}`,p={save:(e,t,n)=>{(0,c.WA)(d(e),{persistence:t}).set(n)},read:(e,t)=>(0,c.WA)(d(e),{persistence:t}).get(),clear:(e,t)=>{(0,c.WA)(d(e),{persistence:t}).del()}},f=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const m=r.createContext(null);function h(){const e=(0,o._r)(),t=(0,i.L)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[a,s]=(0,r.useState)((()=>f(n)));(0,r.useEffect)((()=>{s(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function o(e){const t=p.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(p.clear(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,o(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[a,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){p.save(e,t,n),s((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function g(e){let{children:t}=e;const n=h();return(0,u.jsx)(m.Provider,{value:n,children:t})}function b(e){let{children:t}=e;return s.cE?(0,u.jsx)(g,{children:t}):(0,u.jsx)(u.Fragment,{children:t})}function y(){const e=(0,r.useContext)(m);if(!e)throw new l.i6("DocsPreferredVersionContextProvider");return e}function v(e){void 0===e&&(e=a.m);const t=(0,o.zh)(e),[n,i]=y(),{preferredVersionName:s}=n[e];return{preferredVersion:t.versions.find((e=>e.name===s))??null,savePreferredVersionName:(0,r.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}function w(){const e=(0,o._r)(),[t]=y();function n(n){const r=e[n],{preferredVersionName:o}=t[n];return r.versions.find((e=>e.name===o))??null}const r=Object.keys(e);return Object.fromEntries(r.map((e=>[e,n(e)])))}},1116:(e,t,n)=>{"use strict";n.d(t,{V:()=>c,b:()=>l});var r=n(7294),o=n(902),a=n(5893);const i=Symbol("EmptyContext"),s=r.createContext(i);function l(e){let{children:t,name:n,items:o}=e;const i=(0,r.useMemo)((()=>n&&o?{name:n,items:o}:null),[n,o]);return(0,a.jsx)(s.Provider,{value:i,children:t})}function c(){const e=(0,r.useContext)(s);if(e===i)throw new o.i6("DocsSidebarProvider");return e}},4477:(e,t,n)=>{"use strict";n.d(t,{E:()=>l,q:()=>s});var r=n(7294),o=n(902),a=n(5893);const i=r.createContext(null);function s(e){let{children:t,version:n}=e;return(0,a.jsx)(i.Provider,{value:n,children:t})}function l(){const e=(0,r.useContext)(i);if(null===e)throw new o.i6("DocsVersionProvider");return e}},3163:(e,t,n)=>{"use strict";n.d(t,{M:()=>p,e:()=>f});var r=n(7294),o=n(3102),a=n(7524),i=n(1980),s=n(6668),l=n(902),c=n(5893);const u=r.createContext(void 0);function d(){const e=function(){const e=(0,o.HY)(),{items:t}=(0,s.L)().navbar;return 0===t.length&&!e.component}(),t=(0,a.i)(),n=!e&&"mobile"===t,[l,c]=(0,r.useState)(!1);(0,i.Rb)((()=>{if(l)return c(!1),!1}));const u=(0,r.useCallback)((()=>{c((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&c(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:u,shown:l})),[e,n,u,l])}function p(e){let{children:t}=e;const n=d();return(0,c.jsx)(u.Provider,{value:n,children:t})}function f(){const e=r.useContext(u);if(void 0===e)throw new l.i6("NavbarMobileSidebarProvider");return e}},3102:(e,t,n)=>{"use strict";n.d(t,{HY:()=>l,Zo:()=>c,n2:()=>s});var r=n(7294),o=n(902),a=n(5893);const i=r.createContext(null);function s(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return(0,a.jsx)(i.Provider,{value:n,children:t})}function l(){const e=(0,r.useContext)(i);if(!e)throw new o.i6("NavbarSecondaryMenuContentProvider");return e[0]}function c(e){let{component:t,props:n}=e;const a=(0,r.useContext)(i);if(!a)throw new o.i6("NavbarSecondaryMenuContentProvider");const[,s]=a,l=(0,o.Ql)(n);return(0,r.useEffect)((()=>{s({component:t,props:l})}),[s,t,l]),(0,r.useEffect)((()=>()=>s({component:null,props:null})),[s]),null}},9727:(e,t,n)=>{"use strict";n.d(t,{h:()=>o,t:()=>a});var r=n(7294);const o="navigation-with-keyboard";function a(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(o),"mousedown"===e.type&&document.body.classList.remove(o)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(o),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},6177:(e,t,n)=>{"use strict";n.d(t,{K:()=>s,M:()=>l});var r=n(7294),o=n(2263),a=n(1980);const i="q";function s(){return(0,a.Nc)(i)}function l(){const{siteConfig:{baseUrl:e,themeConfig:t}}=(0,o.Z)(),{algolia:{searchPagePath:n}}=t;return(0,r.useCallback)((t=>`${e}${n}?${i}=${encodeURIComponent(t)}`),[e,n])}},7524:(e,t,n)=>{"use strict";n.d(t,{i:()=>s});var r=n(7294),o=n(412);const a={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function s(e){let{desktopBreakpoint:t=i}=void 0===e?{}:e;const[n,s]=(0,r.useState)((()=>"ssr"));return(0,r.useEffect)((()=>{function e(){s(function(e){if(!o.Z.canUseDOM)throw new Error("getWindowSize() should only be called after React hydration");return window.innerWidth>e?a.desktop:a.mobile}(t))}return e(),window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e)}}),[t]),n}},5281:(e,t,n)=>{"use strict";n.d(t,{k:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",unlistedBanner:"theme-unlisted-banner",admonitionType:e=>`theme-admonition-${e}`},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{}}},1442:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{n:()=>r})},2802:(e,t,n)=>{"use strict";n.d(t,{LM:()=>f,_F:()=>g,cE:()=>p,SN:()=>_,lO:()=>k,vY:()=>S,oz:()=>x,s1:()=>w,f:()=>y});var r=n(7294),o=n(6550),a=n(8790),i=n(143),s=n(373),l=n(4477),c=n(1116);function u(e){return Array.from(new Set(e))}var d=n(8596);const p=!!i._r;function f(e){return"link"!==e.type||e.unlisted?"category"===e.type?function(e){if(e.href&&!e.linkUnlisted)return e.href;for(const t of e.items){const e=f(t);if(e)return e}}(e):void 0:e.href}const m=(e,t)=>void 0!==e&&(0,d.Mg)(e,t),h=(e,t)=>e.some((e=>g(e,t)));function g(e,t){return"link"===e.type?m(e.href,t):"category"===e.type&&(m(e.href,t)||h(e.items,t))}function b(e,t){switch(e.type){case"category":return g(e,t)||e.items.some((e=>b(e,t)));case"link":return!e.unlisted||g(e,t);default:return!0}}function y(e,t){return(0,r.useMemo)((()=>e.filter((e=>b(e,t)))),[e,t])}function v(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const o=[];return function e(t){for(const a of t)if("category"===a.type&&((0,d.Mg)(a.href,n)||e(a.items))||"link"===a.type&&(0,d.Mg)(a.href,n)){return r&&"category"!==a.type||o.unshift(a),!0}return!1}(t),o}function w(){const e=(0,c.V)(),{pathname:t}=(0,o.TH)(),n=(0,i.gA)()?.pluginData.breadcrumbs;return!1!==n&&e?v({sidebarItems:e.items,pathname:t}):null}function k(e){const{activeVersion:t}=(0,i.Iw)(e),{preferredVersion:n}=(0,s.J)(e),o=(0,i.yW)(e);return(0,r.useMemo)((()=>u([t,n,o].filter(Boolean))),[t,n,o])}function x(e,t){const n=k(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),r=t.find((t=>t[0]===e));if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable sidebar ids are:\n- ${t.map((e=>e[0])).join("\n- ")}`);return r[1]}),[e,n])}function S(e,t){const n=k(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),r=t.find((t=>t.id===e));if(!r){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error(`Couldn't find any doc with id "${e}" in version${n.length>1?"s":""} "${n.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${u(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function _(e){let{route:t}=e;const n=(0,o.TH)(),r=(0,l.E)(),i=t.routes,s=i.find((e=>(0,o.LX)(n.pathname,e)));if(!s)return null;const c=s.sidebar,u=c?r.docsSidebars[c]:void 0;return{docElement:(0,a.H)(i),sidebarName:c,sidebarItems:u}}},2128:(e,t,n)=>{"use strict";n.d(t,{p:()=>o});var r=n(2263);function o(e){const{siteConfig:t}=(0,r.Z)(),{title:n,titleDelimiter:o}=t;return e?.trim().length?`${e.trim()} ${o} ${n}`:n}},1980:(e,t,n)=>{"use strict";n.d(t,{Nc:()=>l,Rb:()=>i});var r=n(7294),o=n(6550),a=n(902);function i(e){!function(e){const t=(0,o.k6)(),n=(0,a.zX)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}function s(e){return function(e){const t=(0,o.k6)();return(0,r.useSyncExternalStore)(t.listen,(()=>e(t)),(()=>e(t)))}((t=>null===e?null:new URLSearchParams(t.location.search).get(e)))}function l(e){const t=s(e)??"",n=function(){const e=(0,o.k6)();return(0,r.useCallback)(((t,n,r)=>{const o=new URLSearchParams(e.location.search);n?o.set(t,n):o.delete(t),(r?.push?e.push:e.replace)({search:o.toString()})}),[e])}();return[t,(0,r.useCallback)(((t,r)=>{n(e,t,r)}),[n,e])]}},833:(e,t,n)=>{"use strict";n.d(t,{FG:()=>f,d:()=>d,VC:()=>m});var r=n(7294),o=n(512),a=n(5742),i=n(226);function s(){const e=r.useContext(i._);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var l=n(4996),c=n(2128),u=n(5893);function d(e){let{title:t,description:n,keywords:r,image:o,children:i}=e;const s=(0,c.p)(t),{withBaseUrl:d}=(0,l.C)(),p=o?d(o,{absolute:!0}):void 0;return(0,u.jsxs)(a.Z,{children:[t&&(0,u.jsx)("title",{children:s}),t&&(0,u.jsx)("meta",{property:"og:title",content:s}),n&&(0,u.jsx)("meta",{name:"description",content:n}),n&&(0,u.jsx)("meta",{property:"og:description",content:n}),r&&(0,u.jsx)("meta",{name:"keywords",content:Array.isArray(r)?r.join(","):r}),p&&(0,u.jsx)("meta",{property:"og:image",content:p}),p&&(0,u.jsx)("meta",{name:"twitter:image",content:p}),i]})}const p=r.createContext(void 0);function f(e){let{className:t,children:n}=e;const i=r.useContext(p),s=(0,o.Z)(i,t);return(0,u.jsxs)(p.Provider,{value:s,children:[(0,u.jsx)(a.Z,{children:(0,u.jsx)("html",{className:s})}),n]})}function m(e){let{children:t}=e;const n=s(),r=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const a=`plugin-id-${n.plugin.id}`;return(0,u.jsx)(f,{className:(0,o.Z)(r,a),children:t})}},902:(e,t,n)=>{"use strict";n.d(t,{D9:()=>s,Qc:()=>u,Ql:()=>c,i6:()=>l,zX:()=>i});var r=n(7294),o=n(469),a=n(5893);function i(e){const t=(0,r.useRef)(e);return(0,o.Z)((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function s(e){const t=(0,r.useRef)();return(0,o.Z)((()=>{t.current=e})),t.current}class l extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function c(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,r.useMemo)((()=>e),t.flat())}function u(e){return t=>{let{children:n}=t;return(0,a.jsx)(a.Fragment,{children:e.reduceRight(((e,t)=>(0,a.jsx)(t,{children:e})),n)})}}},8022:(e,t,n)=>{"use strict";function r(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}n.d(t,{F:()=>r})},8596:(e,t,n)=>{"use strict";n.d(t,{Mg:()=>i,Ns:()=>s});var r=n(7294),o=n(723),a=n(2263);function i(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function s(){const{baseUrl:e}=(0,a.Z)().siteConfig;return(0,r.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function r(e){return e.path===t&&!0===e.exact}function o(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(o).flatMap((e=>e.routes??[])))}(n)}({routes:o.Z,baseUrl:e})),[e])}},2466:(e,t,n)=>{"use strict";n.d(t,{Ct:()=>f,OC:()=>c,RF:()=>p});var r=n(7294),o=n(412),a=n(2389),i=(n(469),n(902)),s=n(5893);const l=r.createContext(void 0);function c(e){let{children:t}=e;const n=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return(0,s.jsx)(l.Provider,{value:n,children:t})}function u(){const e=(0,r.useContext)(l);if(null==e)throw new i.i6("ScrollControllerProvider");return e}const d=()=>o.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function p(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=u(),o=(0,r.useRef)(d()),a=(0,i.zX)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=d();a(e,o.current),o.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[a,n,...t])}function f(){const e=(0,r.useRef)(null),t=(0,a.Z)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const o=document.documentElement.scrollTop;(n&&o>e||!n&&ot&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},3320:(e,t,n)=>{"use strict";n.d(t,{HX:()=>i,_q:()=>l,os:()=>s});var r=n(143),o=n(2263),a=n(373);const i="default";function s(e,t){return`docs-${e}-${t}`}function l(){const{i18n:e}=(0,o.Z)(),t=(0,r._r)(),n=(0,r.WS)(),l=(0,a.Oh)();const c=[i,...Object.keys(t).map((function(e){const r=n?.activePlugin.pluginId===e?n.activeVersion:void 0,o=l[e],a=t[e].versions.find((e=>e.isLast));return s(e,(r??o??a).name)}))];return{locale:e.currentLocale,tags:c}}},12:(e,t,n)=>{"use strict";n.d(t,{WA:()=>l});n(7294);const r="localStorage";function o(e){let{key:t,oldValue:n,newValue:r,storage:o}=e;if(n===r)return;const a=document.createEvent("StorageEvent");a.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,o),window.dispatchEvent(a)}function a(e){if(void 0===e&&(e=r),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,i||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),i=!0),null}var t}let i=!1;const s={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function l(e,t){if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t,listen:t}}(e);const n=a(t?.persistence);return null===n?s:{get:()=>{try{return n.getItem(e)}catch(t){return console.error(`Docusaurus storage error, can't get key=${e}`,t),null}},set:t=>{try{const r=n.getItem(e);n.setItem(e,t),o({key:e,oldValue:r,newValue:t,storage:n})}catch(r){console.error(`Docusaurus storage error, can't set ${e}=${t}`,r)}},del:()=>{try{const t=n.getItem(e);n.removeItem(e),o({key:e,oldValue:t,newValue:null,storage:n})}catch(t){console.error(`Docusaurus storage error, can't delete key=${e}`,t)}},listen:t=>{try{const r=r=>{r.storageArea===n&&r.key===e&&t(r)};return window.addEventListener("storage",r),()=>window.removeEventListener("storage",r)}catch(r){return console.error(`Docusaurus storage error, can't listen for changes of key=${e}`,r),()=>{}}}}}},4711:(e,t,n)=>{"use strict";n.d(t,{l:()=>i});var r=n(2263),o=n(6550),a=n(8780);function i(){const{siteConfig:{baseUrl:e,url:t,trailingSlash:n},i18n:{defaultLocale:i,currentLocale:s}}=(0,r.Z)(),{pathname:l}=(0,o.TH)(),c=(0,a.applyTrailingSlash)(l,{trailingSlash:n,baseUrl:e}),u=s===i?e:e.replace(`/${s}/`,"/"),d=c.replace(e,"");return{createUrl:function(e){let{locale:n,fullyQualified:r}=e;return`${r?t:""}${function(e){return e===i?`${u}`:`${u}${e}/`}(n)}${d}`}}}},5936:(e,t,n)=>{"use strict";n.d(t,{S:()=>i});var r=n(7294),o=n(6550),a=n(902);function i(e){const t=(0,o.TH)(),n=(0,a.D9)(t),i=(0,a.zX)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},6668:(e,t,n)=>{"use strict";n.d(t,{L:()=>o});var r=n(2263);function o(){return(0,r.Z)().siteConfig.themeConfig}},6278:(e,t,n)=>{"use strict";n.d(t,{L:()=>o});var r=n(2263);function o(){const{siteConfig:{themeConfig:e}}=(0,r.Z)();return e}},239:(e,t,n)=>{"use strict";n.d(t,{l:()=>s});var r=n(7294),o=n(8022),a=n(4996),i=n(6278);function s(){const{withBaseUrl:e}=(0,a.C)(),{algolia:{externalUrlRegex:t,replaceSearchResultPathname:n}}=(0,i.L)();return(0,r.useCallback)((r=>{const a=new URL(r);if((0,o.F)(t,a.href))return r;const i=`${a.pathname+a.hash}`;return e(function(e,t){return t?e.replaceAll(new RegExp(t.from,"g"),t.to):e}(i,n))}),[e,t,n])}},8802:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[o]=e.split(/[#?]/),a="/"===o||o===r?o:(i=o,n?function(e){return e.endsWith("/")?e:`${e}/`}(i):function(e){return e.endsWith("/")?e.slice(0,-1):e}(i));var i;return e.replace(o,a)}},4143:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=void 0,t.getErrorCausalChain=function e(t){return t.cause?[t,...e(t.cause)]:[t]}},8780:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="__blog-post-container";var o=n(8802);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(o).default}});var a=n(4143);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return a.getErrorCausalChain}})},2358:(e,t,n)=>{"use strict";n.d(t,{lX:()=>S,q_:()=>A,ob:()=>h,PP:()=>R,Ep:()=>m,Hp:()=>g});var r=n(7462);function o(e){return"/"===e.charAt(0)}function a(e,t){for(var n=t,r=n+1,o=e.length;r=0;p--){var f=i[p];"."===f?a(i,p):".."===f?(a(i,p),d++):d&&(a(i,p),d--)}if(!c)for(;d--;d)i.unshift("..");!c||""===i[0]||i[0]&&o(i[0])||i.unshift("");var m=i.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};function s(e){return e.valueOf?e.valueOf():Object.prototype.valueOf.call(e)}const l=function e(t,n){if(t===n)return!0;if(null==t||null==n)return!1;if(Array.isArray(t))return Array.isArray(n)&&t.length===n.length&&t.every((function(t,r){return e(t,n[r])}));if("object"==typeof t||"object"==typeof n){var r=s(t),o=s(n);return r!==t||o!==n?e(r,o):Object.keys(Object.assign({},t,n)).every((function(r){return e(t[r],n[r])}))}return!1};var c=n(8776);function u(e){return"/"===e.charAt(0)?e:"/"+e}function d(e){return"/"===e.charAt(0)?e.substr(1):e}function p(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function f(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function m(e){var t=e.pathname,n=e.search,r=e.hash,o=t||"/";return n&&"?"!==n&&(o+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(o+="#"===r.charAt(0)?r:"#"+r),o}function h(e,t,n,o){var a;"string"==typeof e?(a=function(e){var t=e||"/",n="",r="",o=t.indexOf("#");-1!==o&&(r=t.substr(o),t=t.substr(0,o));var a=t.indexOf("?");return-1!==a&&(n=t.substr(a),t=t.substr(0,a)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),a.state=t):(void 0===(a=(0,r.Z)({},e)).pathname&&(a.pathname=""),a.search?"?"!==a.search.charAt(0)&&(a.search="?"+a.search):a.search="",a.hash?"#"!==a.hash.charAt(0)&&(a.hash="#"+a.hash):a.hash="",void 0!==t&&void 0===a.state&&(a.state=t));try{a.pathname=decodeURI(a.pathname)}catch(s){throw s instanceof URIError?new URIError('Pathname "'+a.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):s}return n&&(a.key=n),o?a.pathname?"/"!==a.pathname.charAt(0)&&(a.pathname=i(a.pathname,o.pathname)):a.pathname=o.pathname:a.pathname||(a.pathname="/"),a}function g(e,t){return e.pathname===t.pathname&&e.search===t.search&&e.hash===t.hash&&e.key===t.key&&l(e.state,t.state)}function b(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,o){if(null!=e){var a="function"==typeof e?e(t,n):e;"string"==typeof a?"function"==typeof r?r(a,o):o(!0):o(!1!==a)}else o(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;rt?n.splice(t,n.length-t,o):n.push(o),d({action:r,location:o,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",o=h(e,t,p(),w.location);u.confirmTransitionTo(o,r,n,(function(e){e&&(w.entries[w.index]=o,d({action:r,location:o}))}))},go:v,goBack:function(){v(-1)},goForward:function(){v(1)},canGo:function(e){var t=w.index+e;return t>=0&&t{"use strict";var r=n(9864),o={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},a={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};function l(e){return r.isMemo(e)?i:s[e.$$typeof]||o}s[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},s[r.Memo]=i;var c=Object.defineProperty,u=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var o=f(n);o&&o!==m&&e(t,o,r)}var i=u(n);d&&(i=i.concat(d(n)));for(var s=l(t),h=l(n),g=0;g{"use strict";e.exports=function(e,t,n,r,o,a,i,s){if(!e){var l;if(void 0===t)l=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var c=[n,r,o,a,i,s],u=0;(l=new Error(t.replace(/%s/g,(function(){return c[u++]})))).name="Invariant Violation"}throw l.framesToPop=1,l}}},5826:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},2497:(e,t,n)=>{"use strict";n.r(t)},2295:(e,t,n)=>{"use strict";n.r(t)},4865:function(e,t,n){var r,o;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'
'};function o(e,t,n){return en?n:e}function a(e){return 100*(-1+e)}function i(e,t,n){var o;return(o="translate3d"===r.positionUsing?{transform:"translate3d("+a(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+a(e)+"%,0)"}:{"margin-left":a(e)+"%"}).transition="all "+t+"ms "+n,o}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=o(e,r.minimum,1),n.status=1===e?null:e;var a=n.render(!t),c=a.querySelector(r.barSelector),u=r.speed,d=r.easing;return a.offsetWidth,s((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),l(c,i(e,u,d)),1===e?(l(a,{transition:"none",opacity:1}),a.offsetWidth,setTimeout((function(){l(a,{transition:"all "+u+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),u)}),u)):setTimeout(t,u)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*o(Math.random()*t,.1,.95)),t=o(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");u(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var o,i=t.querySelector(r.barSelector),s=e?"-100":a(n.status||0),c=document.querySelector(r.parent);return l(i,{transition:"all 0 linear",transform:"translate3d("+s+"%,0,0)"}),r.showSpinner||(o=t.querySelector(r.spinnerSelector))&&f(o),c!=document.body&&u(c,"nprogress-custom-parent"),c.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&f(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var s=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),l=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,o=e.length,a=t.charAt(0).toUpperCase()+t.slice(1);o--;)if((r=e[o]+a)in n)return r;return t}function o(e){return e=n(e),t[e]||(t[e]=r(e))}function a(e,t,n){t=o(t),e.style[t]=n}return function(e,t){var n,r,o=arguments;if(2==o.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&a(e,n,r);else a(e,o[1],o[2])}}();function c(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function u(e,t){var n=p(e),r=n+t;c(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=p(e);c(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function f(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(o="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=o)},4779:(e,t,n)=>{var r=n(5826);e.exports=f,e.exports.parse=a,e.exports.compile=function(e,t){return s(a(e,t),t)},e.exports.tokensToFunction=s,e.exports.tokensToRegExp=p;var o=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function a(e,t){for(var n,r=[],a=0,i=0,s="",u=t&&t.delimiter||"/";null!=(n=o.exec(e));){var d=n[0],p=n[1],f=n.index;if(s+=e.slice(i,f),i=f+d.length,p)s+=p[1];else{var m=e[i],h=n[2],g=n[3],b=n[4],y=n[5],v=n[6],w=n[7];s&&(r.push(s),s="");var k=null!=h&&null!=m&&m!==h,x="+"===v||"*"===v,S="?"===v||"*"===v,_=n[2]||u,E=b||y;r.push({name:g||a++,prefix:h||"",delimiter:_,optional:S,repeat:x,partial:k,asterisk:!!w,pattern:E?c(E):w?".*":"[^"+l(_)+"]+?"})}}return i{e.exports&&(e.exports={core:{meta:{path:"components/prism-core.js",option:"mandatory"},core:"Core"},themes:{meta:{path:"themes/{id}.css",link:"index.html?theme={id}",exclusive:!0},prism:{title:"Default",option:"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{title:"Okaidia",owner:"ocodia"},"prism-twilight":{title:"Twilight",owner:"remybach"},"prism-coy":{title:"Coy",owner:"tshedor"},"prism-solarizedlight":{title:"Solarized Light",owner:"hectormatos2011 "},"prism-tomorrow":{title:"Tomorrow Night",owner:"Rosey"}},languages:{meta:{path:"components/prism-{id}",noCSS:!0,examplesPath:"examples/prism-{id}",addCheckAll:!0},markup:{title:"Markup",alias:["html","xml","svg","mathml","ssml","atom","rss"],aliasTitles:{html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",atom:"Atom",rss:"RSS"},option:"default"},css:{title:"CSS",option:"default",modify:"markup"},clike:{title:"C-like",option:"default"},javascript:{title:"JavaScript",require:"clike",modify:"markup",optional:"regex",alias:"js",option:"default"},abap:{title:"ABAP",owner:"dellagustin"},abnf:{title:"ABNF",owner:"RunDevelopment"},actionscript:{title:"ActionScript",require:"javascript",modify:"markup",owner:"Golmote"},ada:{title:"Ada",owner:"Lucretia"},agda:{title:"Agda",owner:"xy-ren"},al:{title:"AL",owner:"RunDevelopment"},antlr4:{title:"ANTLR4",alias:"g4",owner:"RunDevelopment"},apacheconf:{title:"Apache Configuration",owner:"GuiTeK"},apex:{title:"Apex",require:["clike","sql"],owner:"RunDevelopment"},apl:{title:"APL",owner:"ngn"},applescript:{title:"AppleScript",owner:"Golmote"},aql:{title:"AQL",owner:"RunDevelopment"},arduino:{title:"Arduino",require:"cpp",alias:"ino",owner:"dkern"},arff:{title:"ARFF",owner:"Golmote"},armasm:{title:"ARM Assembly",alias:"arm-asm",owner:"RunDevelopment"},arturo:{title:"Arturo",alias:"art",optional:["bash","css","javascript","markup","markdown","sql"],owner:"drkameleon"},asciidoc:{alias:"adoc",title:"AsciiDoc",owner:"Golmote"},aspnet:{title:"ASP.NET (C#)",require:["markup","csharp"],owner:"nauzilus"},asm6502:{title:"6502 Assembly",owner:"kzurawel"},asmatmel:{title:"Atmel AVR Assembly",owner:"cerkit"},autohotkey:{title:"AutoHotkey",owner:"aviaryan"},autoit:{title:"AutoIt",owner:"Golmote"},avisynth:{title:"AviSynth",alias:"avs",owner:"Zinfidel"},"avro-idl":{title:"Avro IDL",alias:"avdl",owner:"RunDevelopment"},awk:{title:"AWK",alias:"gawk",aliasTitles:{gawk:"GAWK"},owner:"RunDevelopment"},bash:{title:"Bash",alias:["sh","shell"],aliasTitles:{sh:"Shell",shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},bbj:{title:"BBj",owner:"hyyan"},bicep:{title:"Bicep",owner:"johnnyreilly"},birb:{title:"Birb",require:"clike",owner:"Calamity210"},bison:{title:"Bison",require:"c",owner:"Golmote"},bnf:{title:"BNF",alias:"rbnf",aliasTitles:{rbnf:"RBNF"},owner:"RunDevelopment"},bqn:{title:"BQN",owner:"yewscion"},brainfuck:{title:"Brainfuck",owner:"Golmote"},brightscript:{title:"BrightScript",owner:"RunDevelopment"},bro:{title:"Bro",owner:"wayward710"},bsl:{title:"BSL (1C:Enterprise)",alias:"oscript",aliasTitles:{oscript:"OneScript"},owner:"Diversus23"},c:{title:"C",require:"clike",owner:"zeitgeist87"},csharp:{title:"C#",require:"clike",alias:["cs","dotnet"],owner:"mvalipour"},cpp:{title:"C++",require:"c",owner:"zeitgeist87"},cfscript:{title:"CFScript",require:"clike",alias:"cfc",owner:"mjclemente"},chaiscript:{title:"ChaiScript",require:["clike","cpp"],owner:"RunDevelopment"},cil:{title:"CIL",owner:"sbrl"},cilkc:{title:"Cilk/C",require:"c",alias:"cilk-c",owner:"OpenCilk"},cilkcpp:{title:"Cilk/C++",require:"cpp",alias:["cilk-cpp","cilk"],owner:"OpenCilk"},clojure:{title:"Clojure",owner:"troglotit"},cmake:{title:"CMake",owner:"mjrogozinski"},cobol:{title:"COBOL",owner:"RunDevelopment"},coffeescript:{title:"CoffeeScript",require:"javascript",alias:"coffee",owner:"R-osey"},concurnas:{title:"Concurnas",alias:"conc",owner:"jasontatton"},csp:{title:"Content-Security-Policy",owner:"ScottHelme"},cooklang:{title:"Cooklang",owner:"ahue"},coq:{title:"Coq",owner:"RunDevelopment"},crystal:{title:"Crystal",require:"ruby",owner:"MakeNowJust"},"css-extras":{title:"CSS Extras",require:"css",modify:"css",owner:"milesj"},csv:{title:"CSV",owner:"RunDevelopment"},cue:{title:"CUE",owner:"RunDevelopment"},cypher:{title:"Cypher",owner:"RunDevelopment"},d:{title:"D",require:"clike",owner:"Golmote"},dart:{title:"Dart",require:"clike",owner:"Golmote"},dataweave:{title:"DataWeave",owner:"machaval"},dax:{title:"DAX",owner:"peterbud"},dhall:{title:"Dhall",owner:"RunDevelopment"},diff:{title:"Diff",owner:"uranusjr"},django:{title:"Django/Jinja2",require:"markup-templating",alias:"jinja2",owner:"romanvm"},"dns-zone-file":{title:"DNS zone file",owner:"RunDevelopment",alias:"dns-zone"},docker:{title:"Docker",alias:"dockerfile",owner:"JustinBeckwith"},dot:{title:"DOT (Graphviz)",alias:"gv",optional:"markup",owner:"RunDevelopment"},ebnf:{title:"EBNF",owner:"RunDevelopment"},editorconfig:{title:"EditorConfig",owner:"osipxd"},eiffel:{title:"Eiffel",owner:"Conaclos"},ejs:{title:"EJS",require:["javascript","markup-templating"],owner:"RunDevelopment",alias:"eta",aliasTitles:{eta:"Eta"}},elixir:{title:"Elixir",owner:"Golmote"},elm:{title:"Elm",owner:"zwilias"},etlua:{title:"Embedded Lua templating",require:["lua","markup-templating"],owner:"RunDevelopment"},erb:{title:"ERB",require:["ruby","markup-templating"],owner:"Golmote"},erlang:{title:"Erlang",owner:"Golmote"},"excel-formula":{title:"Excel Formula",alias:["xlsx","xls"],owner:"RunDevelopment"},fsharp:{title:"F#",require:"clike",owner:"simonreynolds7"},factor:{title:"Factor",owner:"catb0t"},false:{title:"False",owner:"edukisto"},"firestore-security-rules":{title:"Firestore security rules",require:"clike",owner:"RunDevelopment"},flow:{title:"Flow",require:"javascript",owner:"Golmote"},fortran:{title:"Fortran",owner:"Golmote"},ftl:{title:"FreeMarker Template Language",require:"markup-templating",owner:"RunDevelopment"},gml:{title:"GameMaker Language",alias:"gamemakerlanguage",require:"clike",owner:"LiarOnce"},gap:{title:"GAP (CAS)",owner:"RunDevelopment"},gcode:{title:"G-code",owner:"RunDevelopment"},gdscript:{title:"GDScript",owner:"RunDevelopment"},gedcom:{title:"GEDCOM",owner:"Golmote"},gettext:{title:"gettext",alias:"po",owner:"RunDevelopment"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},gn:{title:"GN",alias:"gni",owner:"RunDevelopment"},"linker-script":{title:"GNU Linker Script",alias:"ld",owner:"RunDevelopment"},go:{title:"Go",require:"clike",owner:"arnehormann"},"go-module":{title:"Go module",alias:"go-mod",owner:"RunDevelopment"},gradle:{title:"Gradle",require:"clike",owner:"zeabdelkhalek-badido18"},graphql:{title:"GraphQL",optional:"markdown",owner:"Golmote"},groovy:{title:"Groovy",require:"clike",owner:"robfletcher"},haml:{title:"Haml",require:"ruby",optional:["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],owner:"Golmote"},handlebars:{title:"Handlebars",require:"markup-templating",alias:["hbs","mustache"],aliasTitles:{mustache:"Mustache"},owner:"Golmote"},haskell:{title:"Haskell",alias:"hs",owner:"bholst"},haxe:{title:"Haxe",require:"clike",optional:"regex",owner:"Golmote"},hcl:{title:"HCL",owner:"outsideris"},hlsl:{title:"HLSL",require:"c",owner:"RunDevelopment"},hoon:{title:"Hoon",owner:"matildepark"},http:{title:"HTTP",optional:["csp","css","hpkp","hsts","javascript","json","markup","uri"],owner:"danielgtaylor"},hpkp:{title:"HTTP Public-Key-Pins",owner:"ScottHelme"},hsts:{title:"HTTP Strict-Transport-Security",owner:"ScottHelme"},ichigojam:{title:"IchigoJam",owner:"BlueCocoa"},icon:{title:"Icon",owner:"Golmote"},"icu-message-format":{title:"ICU Message Format",owner:"RunDevelopment"},idris:{title:"Idris",alias:"idr",owner:"KeenS",require:"haskell"},ignore:{title:".ignore",owner:"osipxd",alias:["gitignore","hgignore","npmignore"],aliasTitles:{gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore"}},inform7:{title:"Inform 7",owner:"Golmote"},ini:{title:"Ini",owner:"aviaryan"},io:{title:"Io",owner:"AlesTsurko"},j:{title:"J",owner:"Golmote"},java:{title:"Java",require:"clike",owner:"sherblot"},javadoc:{title:"JavaDoc",require:["markup","java","javadoclike"],modify:"java",optional:"scala",owner:"RunDevelopment"},javadoclike:{title:"JavaDoc-like",modify:["java","javascript","php"],owner:"RunDevelopment"},javastacktrace:{title:"Java stack trace",owner:"RunDevelopment"},jexl:{title:"Jexl",owner:"czosel"},jolie:{title:"Jolie",require:"clike",owner:"thesave"},jq:{title:"JQ",owner:"RunDevelopment"},jsdoc:{title:"JSDoc",require:["javascript","javadoclike","typescript"],modify:"javascript",optional:["actionscript","coffeescript"],owner:"RunDevelopment"},"js-extras":{title:"JS Extras",require:"javascript",modify:"javascript",optional:["actionscript","coffeescript","flow","n4js","typescript"],owner:"RunDevelopment"},json:{title:"JSON",alias:"webmanifest",aliasTitles:{webmanifest:"Web App Manifest"},owner:"CupOfTea696"},json5:{title:"JSON5",require:"json",owner:"RunDevelopment"},jsonp:{title:"JSONP",require:"json",owner:"RunDevelopment"},jsstacktrace:{title:"JS stack trace",owner:"sbrl"},"js-templates":{title:"JS Templates",require:"javascript",modify:"javascript",optional:["css","css-extras","graphql","markdown","markup","sql"],owner:"RunDevelopment"},julia:{title:"Julia",owner:"cdagnino"},keepalived:{title:"Keepalived Configure",owner:"dev-itsheng"},keyman:{title:"Keyman",owner:"mcdurdin"},kotlin:{title:"Kotlin",alias:["kt","kts"],aliasTitles:{kts:"Kotlin Script"},require:"clike",owner:"Golmote"},kumir:{title:"KuMir (\u041a\u0443\u041c\u0438\u0440)",alias:"kum",owner:"edukisto"},kusto:{title:"Kusto",owner:"RunDevelopment"},latex:{title:"LaTeX",alias:["tex","context"],aliasTitles:{tex:"TeX",context:"ConTeXt"},owner:"japborst"},latte:{title:"Latte",require:["clike","markup-templating","php"],owner:"nette"},less:{title:"Less",require:"css",optional:"css-extras",owner:"Golmote"},lilypond:{title:"LilyPond",require:"scheme",alias:"ly",owner:"RunDevelopment"},liquid:{title:"Liquid",require:"markup-templating",owner:"cinhtau"},lisp:{title:"Lisp",alias:["emacs","elisp","emacs-lisp"],owner:"JuanCaicedo"},livescript:{title:"LiveScript",owner:"Golmote"},llvm:{title:"LLVM IR",owner:"porglezomp"},log:{title:"Log file",optional:"javastacktrace",owner:"RunDevelopment"},lolcode:{title:"LOLCODE",owner:"Golmote"},lua:{title:"Lua",owner:"Golmote"},magma:{title:"Magma (CAS)",owner:"RunDevelopment"},makefile:{title:"Makefile",owner:"Golmote"},markdown:{title:"Markdown",require:"markup",optional:"yaml",alias:"md",owner:"Golmote"},"markup-templating":{title:"Markup templating",require:"markup",owner:"Golmote"},mata:{title:"Mata",owner:"RunDevelopment"},matlab:{title:"MATLAB",owner:"Golmote"},maxscript:{title:"MAXScript",owner:"RunDevelopment"},mel:{title:"MEL",owner:"Golmote"},mermaid:{title:"Mermaid",owner:"RunDevelopment"},metafont:{title:"METAFONT",owner:"LaeriExNihilo"},mizar:{title:"Mizar",owner:"Golmote"},mongodb:{title:"MongoDB",owner:"airs0urce",require:"javascript"},monkey:{title:"Monkey",owner:"Golmote"},moonscript:{title:"MoonScript",alias:"moon",owner:"RunDevelopment"},n1ql:{title:"N1QL",owner:"TMWilds"},n4js:{title:"N4JS",require:"javascript",optional:"jsdoc",alias:"n4jsd",owner:"bsmith-n4"},"nand2tetris-hdl":{title:"Nand To Tetris HDL",owner:"stephanmax"},naniscript:{title:"Naninovel Script",owner:"Elringus",alias:"nani"},nasm:{title:"NASM",owner:"rbmj"},neon:{title:"NEON",owner:"nette"},nevod:{title:"Nevod",owner:"nezaboodka"},nginx:{title:"nginx",owner:"volado"},nim:{title:"Nim",owner:"Golmote"},nix:{title:"Nix",owner:"Golmote"},nsis:{title:"NSIS",owner:"idleberg"},objectivec:{title:"Objective-C",require:"c",alias:"objc",owner:"uranusjr"},ocaml:{title:"OCaml",owner:"Golmote"},odin:{title:"Odin",owner:"edukisto"},opencl:{title:"OpenCL",require:"c",modify:["c","cpp"],owner:"Milania1"},openqasm:{title:"OpenQasm",alias:"qasm",owner:"RunDevelopment"},oz:{title:"Oz",owner:"Golmote"},parigp:{title:"PARI/GP",owner:"Golmote"},parser:{title:"Parser",require:"markup",owner:"Golmote"},pascal:{title:"Pascal",alias:"objectpascal",aliasTitles:{objectpascal:"Object Pascal"},owner:"Golmote"},pascaligo:{title:"Pascaligo",owner:"DefinitelyNotAGoat"},psl:{title:"PATROL Scripting Language",owner:"bertysentry"},pcaxis:{title:"PC-Axis",alias:"px",owner:"RunDevelopment"},peoplecode:{title:"PeopleCode",alias:"pcode",owner:"RunDevelopment"},perl:{title:"Perl",owner:"Golmote"},php:{title:"PHP",require:"markup-templating",owner:"milesj"},phpdoc:{title:"PHPDoc",require:["php","javadoclike"],modify:"php",owner:"RunDevelopment"},"php-extras":{title:"PHP Extras",require:"php",modify:"php",owner:"milesj"},"plant-uml":{title:"PlantUML",alias:"plantuml",owner:"RunDevelopment"},plsql:{title:"PL/SQL",require:"sql",owner:"Golmote"},powerquery:{title:"PowerQuery",alias:["pq","mscript"],owner:"peterbud"},powershell:{title:"PowerShell",owner:"nauzilus"},processing:{title:"Processing",require:"clike",owner:"Golmote"},prolog:{title:"Prolog",owner:"Golmote"},promql:{title:"PromQL",owner:"arendjr"},properties:{title:".properties",owner:"Golmote"},protobuf:{title:"Protocol Buffers",require:"clike",owner:"just-boris"},pug:{title:"Pug",require:["markup","javascript"],optional:["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],owner:"Golmote"},puppet:{title:"Puppet",owner:"Golmote"},pure:{title:"Pure",optional:["c","cpp","fortran"],owner:"Golmote"},purebasic:{title:"PureBasic",require:"clike",alias:"pbfasm",owner:"HeX0R101"},purescript:{title:"PureScript",require:"haskell",alias:"purs",owner:"sriharshachilakapati"},python:{title:"Python",alias:"py",owner:"multipetros"},qsharp:{title:"Q#",require:"clike",alias:"qs",owner:"fedonman"},q:{title:"Q (kdb+ database)",owner:"Golmote"},qml:{title:"QML",require:"javascript",owner:"RunDevelopment"},qore:{title:"Qore",require:"clike",owner:"temnroegg"},r:{title:"R",owner:"Golmote"},racket:{title:"Racket",require:"scheme",alias:"rkt",owner:"RunDevelopment"},cshtml:{title:"Razor C#",alias:"razor",require:["markup","csharp"],optional:["css","css-extras","javascript","js-extras"],owner:"RunDevelopment"},jsx:{title:"React JSX",require:["markup","javascript"],optional:["jsdoc","js-extras","js-templates"],owner:"vkbansal"},tsx:{title:"React TSX",require:["jsx","typescript"]},reason:{title:"Reason",require:"clike",owner:"Golmote"},regex:{title:"Regex",owner:"RunDevelopment"},rego:{title:"Rego",owner:"JordanSh"},renpy:{title:"Ren'py",alias:"rpy",owner:"HyuchiaDiego"},rescript:{title:"ReScript",alias:"res",owner:"vmarcosp"},rest:{title:"reST (reStructuredText)",owner:"Golmote"},rip:{title:"Rip",owner:"ravinggenius"},roboconf:{title:"Roboconf",owner:"Golmote"},robotframework:{title:"Robot Framework",alias:"robot",owner:"RunDevelopment"},ruby:{title:"Ruby",require:"clike",alias:"rb",owner:"samflores"},rust:{title:"Rust",owner:"Golmote"},sas:{title:"SAS",optional:["groovy","lua","sql"],owner:"Golmote"},sass:{title:"Sass (Sass)",require:"css",optional:"css-extras",owner:"Golmote"},scss:{title:"Sass (SCSS)",require:"css",optional:"css-extras",owner:"MoOx"},scala:{title:"Scala",require:"java",owner:"jozic"},scheme:{title:"Scheme",owner:"bacchus123"},"shell-session":{title:"Shell session",require:"bash",alias:["sh-session","shellsession"],owner:"RunDevelopment"},smali:{title:"Smali",owner:"RunDevelopment"},smalltalk:{title:"Smalltalk",owner:"Golmote"},smarty:{title:"Smarty",require:"markup-templating",optional:"php",owner:"Golmote"},sml:{title:"SML",alias:"smlnj",aliasTitles:{smlnj:"SML/NJ"},owner:"RunDevelopment"},solidity:{title:"Solidity (Ethereum)",alias:"sol",require:"clike",owner:"glachaud"},"solution-file":{title:"Solution file",alias:"sln",owner:"RunDevelopment"},soy:{title:"Soy (Closure Template)",require:"markup-templating",owner:"Golmote"},sparql:{title:"SPARQL",require:"turtle",owner:"Triply-Dev",alias:"rq"},"splunk-spl":{title:"Splunk SPL",owner:"RunDevelopment"},sqf:{title:"SQF: Status Quo Function (Arma 3)",require:"clike",owner:"RunDevelopment"},sql:{title:"SQL",owner:"multipetros"},squirrel:{title:"Squirrel",require:"clike",owner:"RunDevelopment"},stan:{title:"Stan",owner:"RunDevelopment"},stata:{title:"Stata Ado",require:["mata","java","python"],owner:"RunDevelopment"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},supercollider:{title:"SuperCollider",alias:"sclang",owner:"RunDevelopment"},swift:{title:"Swift",owner:"chrischares"},systemd:{title:"Systemd configuration file",owner:"RunDevelopment"},"t4-templating":{title:"T4 templating",owner:"RunDevelopment"},"t4-cs":{title:"T4 Text Templates (C#)",require:["t4-templating","csharp"],alias:"t4",owner:"RunDevelopment"},"t4-vb":{title:"T4 Text Templates (VB)",require:["t4-templating","vbnet"],owner:"RunDevelopment"},tap:{title:"TAP",owner:"isaacs",require:"yaml"},tcl:{title:"Tcl",owner:"PeterChaplin"},tt2:{title:"Template Toolkit 2",require:["clike","markup-templating"],owner:"gflohr"},textile:{title:"Textile",require:"markup",optional:"css",owner:"Golmote"},toml:{title:"TOML",owner:"RunDevelopment"},tremor:{title:"Tremor",alias:["trickle","troy"],owner:"darach",aliasTitles:{trickle:"trickle",troy:"troy"}},turtle:{title:"Turtle",alias:"trig",aliasTitles:{trig:"TriG"},owner:"jakubklimek"},twig:{title:"Twig",require:"markup-templating",owner:"brandonkelly"},typescript:{title:"TypeScript",require:"javascript",optional:"js-templates",alias:"ts",owner:"vkbansal"},typoscript:{title:"TypoScript",alias:"tsconfig",aliasTitles:{tsconfig:"TSConfig"},owner:"dkern"},unrealscript:{title:"UnrealScript",alias:["uscript","uc"],owner:"RunDevelopment"},uorazor:{title:"UO Razor Script",owner:"jaseowns"},uri:{title:"URI",alias:"url",aliasTitles:{url:"URL"},owner:"RunDevelopment"},v:{title:"V",require:"clike",owner:"taggon"},vala:{title:"Vala",require:"clike",optional:"regex",owner:"TemplarVolk"},vbnet:{title:"VB.Net",require:"basic",owner:"Bigsby"},velocity:{title:"Velocity",require:"markup",owner:"Golmote"},verilog:{title:"Verilog",owner:"a-rey"},vhdl:{title:"VHDL",owner:"a-rey"},vim:{title:"vim",owner:"westonganger"},"visual-basic":{title:"Visual Basic",alias:["vb","vba"],aliasTitles:{vba:"VBA"},owner:"Golmote"},warpscript:{title:"WarpScript",owner:"RunDevelopment"},wasm:{title:"WebAssembly",owner:"Golmote"},"web-idl":{title:"Web IDL",alias:"webidl",owner:"RunDevelopment"},wgsl:{title:"WGSL",owner:"Dr4gonthree"},wiki:{title:"Wiki markup",require:"markup",owner:"Golmote"},wolfram:{title:"Wolfram language",alias:["mathematica","nb","wl"],aliasTitles:{mathematica:"Mathematica",nb:"Mathematica Notebook"},owner:"msollami"},wren:{title:"Wren",owner:"clsource"},xeora:{title:"Xeora",require:"markup",alias:"xeoracube",aliasTitles:{xeoracube:"XeoraCube"},owner:"freakmaxi"},"xml-doc":{title:"XML doc (.net)",require:"markup",modify:["csharp","fsharp","vbnet"],owner:"RunDevelopment"},xojo:{title:"Xojo (REALbasic)",owner:"Golmote"},xquery:{title:"XQuery",require:"markup",owner:"Golmote"},yaml:{title:"YAML",alias:"yml",owner:"hason"},yang:{title:"YANG",owner:"RunDevelopment"},zig:{title:"Zig",owner:"RunDevelopment"}},plugins:{meta:{path:"plugins/{id}/prism-{id}",link:"plugins/{id}/"},"line-highlight":{title:"Line Highlight",description:"Highlights specific lines and/or line ranges."},"line-numbers":{title:"Line Numbers",description:"Line number at the beginning of code lines.",owner:"kuba-kubula"},"show-invisibles":{title:"Show Invisibles",description:"Show hidden characters such as tabs and line breaks.",optional:["autolinker","data-uri-highlight"]},autolinker:{title:"Autolinker",description:"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},wpd:{title:"WebPlatform Docs",description:'Makes tokens link to WebPlatform.org documentation. The links open in a new tab.'},"custom-class":{title:"Custom Class",description:"This plugin allows you to prefix Prism's default classes (.comment can become .namespace--comment) or replace them with your defined ones (like .editor__comment). You can even add new classes.",owner:"dvkndn",noCSS:!0},"file-highlight":{title:"File Highlight",description:"Fetch external files and highlight them with Prism. Used on the Prism website itself.",noCSS:!0},"show-language":{title:"Show Language",description:"Display the highlighted language in code blocks (inline code does not show the label).",owner:"nauzilus",noCSS:!0,require:"toolbar"},"jsonp-highlight":{title:"JSONP Highlight",description:"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).",noCSS:!0,owner:"nauzilus"},"highlight-keywords":{title:"Highlight Keywords",description:"Adds special CSS classes for each keyword for fine-grained highlighting.",owner:"vkbansal",noCSS:!0},"remove-initial-line-feed":{title:"Remove initial line feed",description:"Removes the initial line feed in code blocks.",owner:"Golmote",noCSS:!0},"inline-color":{title:"Inline color",description:"Adds a small inline preview for colors in style sheets.",require:"css-extras",owner:"RunDevelopment"},previewers:{title:"Previewers",description:"Previewers for angles, colors, gradients, easing and time.",require:"css-extras",owner:"Golmote"},autoloader:{title:"Autoloader",description:"Automatically loads the needed languages to highlight the code blocks.",owner:"Golmote",noCSS:!0},"keep-markup":{title:"Keep Markup",description:"Prevents custom markup from being dropped out during highlighting.",owner:"Golmote",optional:"normalize-whitespace",noCSS:!0},"command-line":{title:"Command Line",description:"Display a command line with a prompt and, optionally, the output/response from the commands.",owner:"chriswells0"},"unescaped-markup":{title:"Unescaped Markup",description:"Write markup without having to escape anything."},"normalize-whitespace":{title:"Normalize Whitespace",description:"Supports multiple operations to normalize whitespace in code blocks.",owner:"zeitgeist87",optional:"unescaped-markup",noCSS:!0},"data-uri-highlight":{title:"Data-URI Highlight",description:"Highlights data-URI contents.",owner:"Golmote",noCSS:!0},toolbar:{title:"Toolbar",description:"Attach a toolbar for plugins to easily register buttons on the top of a code block.",owner:"mAAdhaTTah"},"copy-to-clipboard":{title:"Copy to Clipboard Button",description:"Add a button that copies the code block to the clipboard when clicked.",owner:"mAAdhaTTah",require:"toolbar",noCSS:!0},"download-button":{title:"Download Button",description:"A button in the toolbar of a code block adding a convenient way to download a code file.",owner:"Golmote",require:"toolbar",noCSS:!0},"match-braces":{title:"Match braces",description:"Highlights matching braces.",owner:"RunDevelopment"},"diff-highlight":{title:"Diff Highlight",description:"Highlights the code inside diff blocks.",owner:"RunDevelopment",require:"diff"},"filter-highlight-all":{title:"Filter highlightAll",description:"Filters the elements the highlightAll and highlightAllUnder methods actually highlight.",owner:"RunDevelopment",noCSS:!0},treeview:{title:"Treeview",description:"A language with special styles to highlight file system tree structures.",owner:"Golmote"}}})},2885:(e,t,n)=>{const r=n(9901),o=n(9642),a=new Set;function i(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...a,...Object.keys(Prism.languages)];o(r,e,t).load((e=>{if(!(e in r.languages))return void(i.silent||console.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(6500).resolve(t)],delete Prism.languages[e],n(6500)(t),a.add(e)}))}i.silent=!1,e.exports=i},6854:()=>{!function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,o,a){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(o,(function(e){if("function"==typeof a&&!a(e))return e;for(var o,s=i.length;-1!==n.code.indexOf(o=t(r,s));)++s;return i[s]=e,o})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var o=0,a=Object.keys(n.tokenStack);!function i(s){for(var l=0;l=a.length);l++){var c=s[l];if("string"==typeof c||c.content&&"string"==typeof c.content){var u=a[o],d=n.tokenStack[u],p="string"==typeof c?c:c.content,f=t(r,u),m=p.indexOf(f);if(m>-1){++o;var h=p.substring(0,m),g=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),b=p.substring(m+f.length),y=[];h&&y.push.apply(y,i([h])),y.push(g),b&&y.push.apply(y,i([b])),"string"==typeof c?s.splice.apply(s,[l,1].concat(y)):c.content=y}}else c.content&&i(c.content)}return s}(n.tokens)}}}})}(Prism)},6726:(e,t,n)=>{var r={"./":2885};function o(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=a,e.exports=o,o.id=6726},6500:(e,t,n)=>{var r={"./":2885};function o(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=a,e.exports=o,o.id=6500},9642:e=>{"use strict";var t=function(){var e=function(){};function t(e,t){Array.isArray(e)?e.forEach(t):null!=e&&t(e,0)}function n(e){for(var t={},n=0,r=e.length;n "));var s={},l=e[r];if(l){function c(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in s))for(var i in o(t,a),s[t]=!0,n[t])s[i]=!0}t(l.require,c),t(l.optional,c),t(l.modify,c)}n[r]=s,a.pop()}}return function(e){var t=n[e];return t||(o(e,r),t=n[e]),t}}function o(e){for(var t in e)return!0;return!1}return function(a,i,s){var l=function(e){var t={};for(var n in e){var r=e[n];for(var o in r)if("meta"!=o){var a=r[o];t[o]="string"==typeof a?{title:a}:a}}return t}(a),c=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var o in n={},e){var a=e[o];t(a&&a.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+o+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+o+" because it is a component.");n[t]=o}))}return n[r]||r}}(l);i=i.map(c),s=(s||[]).map(c);var u=n(i),d=n(s);i.forEach((function e(n){var r=l[n];t(r&&r.require,(function(t){t in d||(u[t]=!0,e(t))}))}));for(var p,f=r(l),m=u;o(m);){for(var h in p={},m){var g=l[h];t(g&&g.modify,(function(e){e in d&&(p[e]=!0)}))}for(var b in d)if(!(b in u))for(var y in f(b))if(y in u){p[b]=!0;break}for(var v in m=p)u[v]=!0}var w={getIds:function(){var e=[];return w.load((function(t){e.push(t)})),e},load:function(t,n){return function(t,n,r,o){var a=o?o.series:void 0,i=o?o.parallel:e,s={},l={};function c(e){if(e in s)return s[e];l[e]=!0;var o,u=[];for(var d in t(e))d in n&&u.push(d);if(0===u.length)o=r(e);else{var p=i(u.map((function(e){var t=c(e);return delete l[e],t})));a?o=a(p,(function(){return r(e)})):r(e)}return s[e]=o}for(var u in n)c(u);var d=[];for(var p in l)d.push(s[p]);return i(d)}(f,u,t,n)}};return w}}();e.exports=t},2703:(e,t,n)=>{"use strict";var r=n(414);function o(){}function a(){}a.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,a,i){if(i!==r){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:o};return n.PropTypes=n,n}},5697:(e,t,n)=>{e.exports=n(2703)()},414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},4448:(e,t,n)=>{"use strict";var r=n(7294),o=n(3840);function a(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n