diff --git a/.gitbook.yaml b/.gitbook.yaml deleted file mode 100644 index 06ab70f062..0000000000 --- a/.gitbook.yaml +++ /dev/null @@ -1,180 +0,0 @@ -root: ./docs/ - -redirects: - setup: README.md - setup/install: setup/install/README.md - setup/install/installation-configuration: getting-started/install/installation-configuration - setup/install/override-default-devtron-installation-configs: getting-started/install/override-default-devtron-installation-configs - setup/install/ingress-setup: getting-started/install/ingress-setup - setup/upgrade: setup/upgrade/README.md - setup/upgrade/upgrade-devtron-ui: getting-started/upgrade/upgrade-devtron-ui - setup/upgrade/devtron-upgrade-0.6.x-0.7.x: getting-started/upgrade/devtron-upgrade-0.6.x-0.7.x - setup/upgrade/devtron-upgrade-0.5.x-0.6.x: getting-started/upgrade/devtron-upgrade-0.5.x-0.6.x - setup/upgrade/devtron-upgrade-0.4.x-0.5.x: getting-started/upgrade/devtron-upgrade-0.4.x-0.5.x - setup/upgrade/devtron-upgrade-0.4.x-0.4.x: getting-started/upgrade/devtron-upgrade-0.4.x-0.4.x - setup/upgrade/devtron-upgrade-0.3.x-0.4.x: getting-started/upgrade/devtron-upgrade-0.3.x-0.4.x - setup/upgrade/devtron-upgrade-0.3.x-0.3.x: getting-started/upgrade/devtron-upgrade-0.3.x-0.3.x - setup/upgrade/devtron-upgrade-0.2.x-0.3.x: getting-started/upgrade/devtron-upgrade-0.2.x-0.3.x - setup/global-configurations: user-guide/global-configurations/README.md - setup/global-configurations/gitops: user-guide/global-configurations/gitops.md - setup/global-configurations/custom-charts: user-guide/global-configurations/deployment-charts.md - setup/global-configurations/user-access: user-guide/global-configurations/authorization/user-access.md - setup/global-configurations/external-links: user-guide/global-configurations/external-links.md - setup/global-configurations/projects: user-guide/global-configurations/projects.md - setup/global-configurations/manage-notification: user-guide/global-configurations/manage-notification.md - setup/global-configurations/sso-login: user-guide/global-configurations/sso-login.md - setup/global-configurations/git-accounts: user-guide/global-configurations/git-accounts.md - setup/global-configurations/docker-registries: user-guide/global-configurations/container-registries.md - setup/global-configurations/chart-repo: user-guide/global-configurations/chart-repo.md - setup/global-configurations/cluster-and-environments: user-guide/global-configurations/cluster-and-environments.md - setup/global-configurations/authorization: user-guide/global-configurations/authorization/README.md - setup/global-configurations/authorization/user-access: user-guide/global-configurations/authorization/user-access.md - setup/global-configurations/authorization/permission-groups: user-guide/global-configurations/authorization/permission-groups.md - setup/global-configurations/authorization/api-tokens: user-guide/global-configurations/authorization/api-tokens.md - setup/global-configurations/nodejs_app: user-guide/Deploy-sample-app/nodejs_app.md - setup/global-configurations/host-url: user-guide/global-configurations/host-url.md - setup/global-configurations/authorization/sso/google: user-guide/global-configurations/authorization/sso/google.md - setup/global-configurations/authorization/sso/github: user-guide/global-configurations/authorization/sso/github.md - setup/global-configurations/authorization/sso/gitlab: user-guide/global-configurations/authorization/sso/gitlab.md - setup/global-configurations/authorization/sso/microsoft: user-guide/global-configurations/authorization/sso/microsoft.md - setup/global-configurations/authorization/sso/ldap: user-guide/global-configurations/authorization/sso/ldap.md - setup/global-configurations/authorization/sso/oidc: user-guide/global-configurations/authorization/sso/oidc.md - setup/global-configurations/authorization/sso/openshift: user-guide/global-configurations/authorization/sso/openshift.md - setup/global-configurations/okta: user-guide/global-configurations/authorization/sso/okta.md - setup/global-configurations/catalog-framework: user-guide/global-configurations/catalog-framework.md - setup/global-configurations/scoped-variables: user-guide/global-configurations/scoped-variables.md - setup/global-configurations/pull-image-digest: user-guide/global-configurations/pull-image-digest.md - setup/global-configurations/tags-policy: user-guide/global-configurations/tags-policy.md - setup/global-configurations/lock-deployment-config: user-guide/global-configurations/lock-deployment-config.md - setup/global-configurations/image-promotion-policy: user-guide/global-configurations/image-promotion-policy.md - setup/global-configurations/filter-condition: user-guide/global-configurations/filter-condition.md - setup/global-configurations/build-infra: user-guide/global-configurations/build-infra.md - user-guide/creating-application: user-guide/applications.md - user-guide/creating-application/git-material: usage/applications/creating-application/git-material - user-guide/creating-application/docker-build-configuration: usage/applications/creating-application/docker-build-configuration - user-guide/creating-application/deployment-template: usage/applications/creating-application/deployment-template - user-guide/creating-application/deployment-template/rollout-deployment: usage/applications/creating-application/deployment-template/rollout-deployment - user-guide/creating-application/deployment-template/job-and-cronjob: usage/applications/creating-application/deployment-template/job-and-cronjob - user-guide/creating-application/workflow: user-guide/creating-application/workflow/README.md - user-guide/creating-application/workflow/ci-pipeline: user-guide/creating-application/workflow/ci-pipeline.md - user-guide/creating-application/workflow/ci-pipeline/ci-build-pre-post-plugins: user-guide/creating-application/workflow/pre-post-tasks.md - usage/applications/creating-application/ci-pipeline/ci-build-pre-post-plugins: user-guide/creating-application/workflow/pre-post-tasks.md - usage/applications/creating-application/ci-pipeline: user-guide/creating-application/workflow/ci-pipeline.md - user-guide/creating-application/workflow/cd-pipeline: user-guide/creating-application/workflow/cd-pipeline.md - user-guide/creating-application/workflow/ci-pipeline-legacy: user-guide/creating-application/workflow/ci-pipeline.md - user-guide/creating-application/config-maps: usage/applications/creating-application/config-maps - user-guide/creating-application/secrets: usage/applications/creating-application/secrets - user-guide/creating-application/environment-overrides: usage/applications/creating-application/environment-overrides - user-guide/creating-application/app-metrics: usage/applications/app-details/app-metrics - usage/app-details: user-guide/app-details/README.md - user-guide/app-details: user-guide/app-details/README.md - user-guide/debugging-deployment-and-monitoring: usage/applications/app-details/debugging-deployment-and-monitoring - user-guide/cloning-application: usage/applications/cloning-application - user-guide/deploying-application: user-guide/deploying-application/README.md - user-guide/deploying-application/triggering-ci: usage/applications/deploying-application/triggering-ci - user-guide/deploying-application/triggering-cd: usage/applications/deploying-application/triggering-cd - user-guide/deploy-chart: user-guide/deploy-chart/README.md - user-guide/deploy-chart/deployment-of-charts: usage/deploy-chart/deployment-of-charts - user-guide/deploy-chart/examples: user-guide/deploy-chart/deployment-of-charts.md - usage/deploy-chart/examples: user-guide/deploy-chart/deployment-of-charts.md - user-guide/deploy-chart/examples/deploying-mysql-helm-chart: user-guide/deploy-chart/deployment-of-charts.md - user-guide/deploy-chart/examples/deploying-mongodb-helm-chart: user-guide/deploy-chart/deployment-of-charts.md - usage/deploy-chart/examples/deploying-mongodb-helm-chart: user-guide/deploy-chart/deployment-of-charts.md - usage/deploy-chart/examples/deploying-mysql-helm-chart: user-guide/deploy-chart/deployment-of-charts.md - user-guide/deploy-chart/chart-group: usage/deploy-chart/chart-group - user-guide/namespaces-and-environments: user-guide/global-configurations/cluster-and-environments.md - user-guide/security-features: usage/security-features - user-guide/deleting-application: usage/applications/creating-application/deleting-application - user-guide/bulk-update: usage/bulk-update - user-guide/use-cases/devtron-generic-helm-chart-to-run-cron-job-or-one-time-job: resources/use-cases/devtron-generic-helm-chart-to-run-cron-job-or-one-time-job - user-guide/use-cases: user-guide/use-cases/README.md - user-guide/use-cases/connect-springboot-with-mysql-database: resources/use-cases/connect-springboot-with-mysql-database - user-guide/use-cases/connect-expressjs-with-mongodb-database: resources/use-cases/connect-expressjs-with-mongodb-database - user-guide/use-cases/connect-django-with-mysql-database: resources/use-cases/connect-django-with-mysql-database - user-guide/telemetry: resources/telemetry - getting-started/install/installation-configuration: setup/install/installation-configuration.md - getting-started/global-configurations: user-guide/global-configurations/README.md - getting-started/global-configurations/container-registries: user-guide/global-configurations/container-registries.md - getting-started/global-configurations/sso-login: user-guide/global-configurations/sso-login.md - getting-started/global-configurations/docker-registries: user-guide/global-configurations/container-registries.md - getting-started/global-configurations/host-url: user-guide/global-configurations/host-url.md - getting-started/global-configurations/authorization/sso/google: user-guide/global-configurations/authorization/sso/google.md - getting-started/global-configurations/authorization/sso/github: user-guide/global-configurations/authorization/sso/github.md - getting-started/global-configurations/authorization/sso/gitlab: user-guide/global-configurations/authorization/sso/gitlab.md - getting-started/global-configurations/authorization/sso/microsoft: user-guide/global-configurations/authorization/sso/microsoft.md - getting-started/global-configurations/authorization/sso/ldap: user-guide/global-configurations/authorization/sso/ldap.md - getting-started/global-configurations/authorization/sso/oidc: user-guide/global-configurations/authorization/sso/oidc.md - getting-started/global-configurations/authorization/sso/openshift: user-guide/global-configurations/authorization/sso/openshift.md - getting-started/global-configurations/okta: user-guide/global-configurations/authorization/sso/okta.md - getting-started/global-configurations/catalog-framework: user-guide/global-configurations/catalog-framework.md - getting-started/global-configurations/scoped-variables: user-guide/global-configurations/scoped-variables.md - getting-started/global-configurations/pull-image-digest: user-guide/global-configurations/pull-image-digest.md - getting-started/global-configurations/tags-policy: user-guide/global-configurations/tags-policy.md - getting-started/global-configurations/lock-deployment-config: user-guide/global-configurations/lock-deployment-config.md - getting-started/global-configurations/image-promotion-policy: user-guide/global-configurations/image-promotion-policy.md - getting-started/global-configurations/filter-condition: user-guide/global-configurations/filter-condition.md - getting-started/global-configurations/build-infra: user-guide/global-configurations/build-infra.md - getting-started/global-configurations/gitops: user-guide/global-configurations/gitops.md - getting-started/global-configurations/custom-charts: user-guide/global-configurations/deployment-charts.md - getting-started/global-configurations/external-links: user-guide/global-configurations/external-links.md - getting-started/global-configurations/projects: user-guide/global-configurations/projects.md - getting-started/global-configurations/manage-notification: user-guide/global-configurations/manage-notification.md - getting-started/global-configurations/git-accounts: user-guide/global-configurations/git-accounts.md - getting-started/global-configurations/chart-repo: user-guide/global-configurations/chart-repo.md - getting-started/global-configurations/cluster-and-environments: user-guide/global-configurations/cluster-and-environments.md - getting-started/global-configurations/authorization: user-guide/global-configurations/authorization/README.md - getting-started/global-configurations/authorization/user-access: user-guide/global-configurations/authorization/user-access.md - getting-started/global-configurations/authorization/permission-groups: user-guide/global-configurations/authorization/permission-groups.md - getting-started/global-configurations/authorization/api-tokens: user-guide/global-configurations/authorization/api-tokens.md - getting-started/upgrade: setup/upgrade/README.md - getting-started/upgrade/upgrade-devtron-ui: setup/upgrade/upgrade-devtron-ui - getting-started/upgrade/devtron-upgrade-0.6.x-0.7.x: setup/upgrade/devtron-upgrade-0.6.x-0.7.x.md - getting-started/upgrade/devtron-upgrade-0.5.x-0.6.x: setup/upgrade/devtron-upgrade-0.5.x-0.6.x.md - getting-started/upgrade/devtron-upgrade-0.4.x-0.5.x: setup/upgrade/devtron-upgrade-0.4.x-0.5.x.md - getting-started/upgrade/devtron-upgrade-0.4.x-0.4.x: setup/upgrade/devtron-upgrade-0.4.x-0.4.x.md - getting-started/upgrade/devtron-upgrade-0.3.x-0.4.x: setup/upgrade/devtron-upgrade-0.3.x-0.4.x.md - getting-started/upgrade/devtron-upgrade-0.3.x-0.3.x: setup/upgrade/devtron-upgrade-0.3.x-0.3.x.md - getting-started/upgrade/devtron-upgrade-0.2.x-0.3.x: setup/upgrade/devtron-upgrade-0.2.x-0.3.x.md - global-configurations/sso-login: user-guide/global-configurations/sso-login.md - user-guide/use-cases/untitled-3: user-guide/use-cases/connect-django-with-mysql-database.md - global-configurations/api-token: user-guide/global-configurations/authorization/api-tokens.md - user-guide/creating-application/workflow/ci-pipeline2: user-guide/creating-application/workflow/ci-pipeline.md - user-guide/clusters: user-guide/resource-browser.md - usage/clusters: user-guide/resource-browser.md - global-configurations/authorization/sso-login/okta: user-guide/global-configurations/authorization/sso/okta.md - global-configurations/custom-charts: user-guide/global-configurations/deployment-charts.md - global-configurations/plugins-policy: user-guide/global-configurations/plugin-policy.md - usage/sdh: user-guide/software-distribution-hub/README.md - usage/sdh/tenants: user-guide/software-distribution-hub/tenants.md - usage/sdh/release-hub: user-guide/software-distribution-hub/release-hub.md - usage/deploy-chart/overview-of-charts: user-guide/deploy-chart/README.md - user-guide/deploy-chart/overview-of-charts: user-guide/deploy-chart/README.md - usage/integrations/clair: user-guide/integrations/vulnerability-scanning/clair.md - usage/resource-browser/devtron-intelligence: user-guide/devtron-intelligence.md - faqs-and-troubleshooting/devtron-troubleshoot: FAQs/devtron-troubleshoot.md - usage/applications/creating-application/config-approval: user-guide/global-configurations/approval-policy.md - user-guide: README.md - setup/install/install-devtron-helm-3: setup/install/README.md - setup/install/install-devtron-using-kubectl: setup/install/README.md - faqs-and-troubleshooting: FAQs/devtron-troubleshoot.md - user-guide/creating-application/workflow/automated-test: user-guide/creating-application/workflow/README.md - setup/stack-manager: user-guide/integrations/README.md - user-guide/command-bar: user-guide/command-bar.md - setup/install/enterprise-license: setup/install/freemium.md - enterprise-license: setup/install/freemium.md - usage/applications/creating-application/workflow/ci-pipeline/ci-build-pre-post-plugins: user-guide/creating-application/workflow/pre-post-tasks.md - usage/applications/creating-application/workflow/ci-pipeline/container-registry-override: user-guide/creating-application/workflow/ci-pipeline.md - usage/jobs/configuration-job: user-guide/jobs/configuration-job - user-guide/jobs/configuration-job: user-guide/jobs/configurations/README.md - usage/jobs/workflow-editor-job: user-guide/jobs/workflow-editor-job - user-guide/jobs/workflow-editor-job: user-guide/jobs/configurations/workflow-editor-job.md - setup/install/install-devtron-with-cicd: setup/install/README.md - setup/install/install-devtron-with-cicd-with-gitops: setup/install/README.md - setup/install/install-devtron-on-minikube-microk8s-k3s-kind: setup/install/README.md - setup/install/faq-on-installation: setup/install/faq-on-installation.md - install/install-devtron-with-cicd: setup/install/README.md - install/install-devtron-with-cicd-with-gitops: setup/install/README.md - install/install-devtron-on-minikube-microk8s-k3s-kind: setup/install/README.md - install/faq-on-installation: setup/install/faq-on-installation.md - prod-infra: setup/install/prod-infra.md - configurations-overview: setup/configurations/configurations-overview.md \ No newline at end of file diff --git a/.gitignore b/.gitignore index c56fd8f053..1332a6de37 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,25 @@ -.idea +# Dependencies +/node_modules + +# Production +/build + +# Backup +/docs-backup + +# Generated files +.docusaurus +.cache-loader + +# Misc .DS_Store -.vscode -.env -/cmd/external-app/devtron-ea -devtron +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +checkEmptyOrHeadingFiles.mjsgit \ No newline at end of file diff --git a/.vscode/ltex.hiddenFalsePositives.en-US.txt b/.vscode/ltex.hiddenFalsePositives.en-US.txt new file mode 100644 index 0000000000..767614008c --- /dev/null +++ b/.vscode/ltex.hiddenFalsePositives.en-US.txt @@ -0,0 +1 @@ +{"rule":"ENGLISH_WORD_REPEAT_RULE","sentence":"^\\QBackup Name Required Specify a unique name for the backup that will be created from the selected schedule\nSchedule Required Select an existing backup schedule.\\E$"} diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md deleted file mode 100644 index 741b8b35b2..0000000000 --- a/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,76 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our project and -our community a harassment-free experience for everyone, regardless of age, body -size, disability, ethnicity, sex characteristics, gender identity and expression, -level of experience, education, socio-economic status, nationality, personal -appearance, race, religion, or sexual identity and orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment -include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or - advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic - address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable -behavior and are expected to take appropriate and fair corrective action in -response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or -reject comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct, or to ban temporarily or -permanently any contributor for other behaviors that they deem inappropriate, -threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. Examples of -representing a project or community include using an official project e-mail -address, posting via an official social media account, or acting as an appointed -representative at an online or offline event. Representation of a project may be -further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project team at contact@devtron.ai. All -complaints will be reviewed and investigated and will result in a response that -is deemed necessary and appropriate to the circumstances. The project team is -obligated to maintain confidentiality with regard to the reporter of an incident. -Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good -faith may face temporary or permanent repercussions as determined by other -members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, -available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html - -[homepage]: https://www.contributor-covenant.org - -For answers to common questions about this code of conduct, see -https://www.contributor-covenant.org/faq diff --git a/COMMUNITY_CONTRIBUTIONS.md b/COMMUNITY_CONTRIBUTIONS.md deleted file mode 100644 index bcdf1e736c..0000000000 --- a/COMMUNITY_CONTRIBUTIONS.md +++ /dev/null @@ -1,35 +0,0 @@ -# What Community Says about Devtron - - We at Devtron Labs always welcome the inspections done for our projects. Your reviews and support matters a lot, in terms of blogs, how-to-guides or videos. You are free to create any of them. We will feature the blogs and videos from our medium including the name of the authors. Add the links for blogs and videos and raise a PR for it. We would love to onboard you all as our valuable contributors. - -## Blogs - -* https://golangexample.com/an-open-source-software-delivery-workflow-for-kubernetes-written-in-go/ - By Golang Example - -* https://collabnix.com/top-10-kubernetes-tool-you-need-for-2021-devtron/ - By Collabnix Community - -* https://blog.livspace.io/how-livspace-revolutionised-its-ci-cd-saga-3120724e271b - By Livspace - -* https://dzone.com/articles/appops-with-kubernetes-and-devtron-the-perfect-fit - By Sudip Sengupta, Javelynn - -* https://gochronicles.com/devtron-introduction/ - By Go-Chronicals (Part-1) - -* https://gochronicles.com/installing-devtron/ - By Go-Chronicals (Part-2) - -* https://gochronicles.com/devtron-deploy/ - By Go-Chronicals (Part-3) -* https://community.codenewbie.org/varghesejose2020/opensourcekubernetesdevtron-3fjj -By Varghese Jose - -* https://www.financialexpress.com/industry/sme/devtron-a-business-opportunity-in-developers-needs/2274094/ - By Srinath Srinivasan - - -## Videos - -* https://www.youtube.com/watch?v=ZKcfZC-zSMM - By Victor Farcic - -* https://www.youtube.com/watch?v=bA6zgjPD_yA&t=2927s - FOSS United Conference - -* https://www.youtube.com/watch?v=ekxHV2Gje-E&t=7856s - AWS UG OSTech Conf 2021 - -* https://www.youtube.com/watch?v=W4-UorfDQxI - Carbon_Capital Consulting - -* https://www.youtube.com/watch?v=FB5BI3Ef7uw&t=363s - Let's learn Devtron diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index 96a37df429..0000000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,41 +0,0 @@ -# How to Contribute - -Devtron is [Apache 2.0 licensed](LICENSE) and accepts contributions via GitHub -pull requests. This document outlines some of the conventions on development -workflow, commit message formatting, contact points and other resources to make -it easier to get your contribution accepted. - -We gratefully welcome improvements to issues and documentation as well as to code. - -## Certificate of Origin - -By contributing to this project you agree to the Developer Certificate of -Origin (DCO). This document was created by the Linux Kernel community and is a -simple statement that you, as a contributor, have the legal right to make the -contribution. No action from you is required, but it's a good idea to see the -[DCO](DCO) file for details before you start contributing code to Devtron. - -## Communications - -The project uses discord for communication: - -To join the conversation, simply join the **[discord](https://discord.gg/jsRG5qx2gp)** and use the __#contrib__ channel. - -## Code Structure - -Devtron has following components - -- [devtron](https://github.com/devtron-labs/devtron.git) main co-ordinating engine -- [git-sensor](https://github.com/devtron-labs/git-sensor.git) microservice for watching and interacting with git -- [ci-runner](https://github.com/devtron-labs/ci-runner.git) Devtron runner for executing jobs -- [guard](https://github.com/devtron-labs/guard.git) A kubernetes validating webhook for policy inforcement -- [imge-scanner](https://github.com/devtron-labs/image-scanner.git) microservice for docker image vulnerability scanning -- [kubewatch](https://github.com/devtron-labs/kubewatch.git) microservice for k8s event filtering and recording -- [lens](https://github.com/devtron-labs/lens.git) microservice for performing analytical task -- [dashboard](https://github.com/devtron-labs/dashboard.git) UI for devtron written in react js - - -### Contribute Helm Charts - -[Contribute your helm charts](https://github.com/devtron-labs/devtron/tree/main/contrib-chart) for the devtron community for upcoming `community charts` feature - diff --git a/DCO b/DCO deleted file mode 100644 index 8201f99215..0000000000 --- a/DCO +++ /dev/null @@ -1,37 +0,0 @@ -Developer Certificate of Origin -Version 1.1 - -Copyright (C) 2004, 2006 The Linux Foundation and its contributors. -1 Letterman Drive -Suite D4700 -San Francisco, CA, 94129 - -Everyone is permitted to copy and distribute verbatim copies of this -license document, but changing it is not allowed. - - -Developer's Certificate of Origin 1.1 - -By making a contribution to this project, I certify that: - -(a) The contribution was created in whole or in part by me and I - have the right to submit it under the open source license - indicated in the file; or - -(b) The contribution is based upon previous work that, to the best - of my knowledge, is covered under an appropriate open source - license and I have the right under that license to submit that - work with modifications, whether created in whole or in part - by me, under the same open source license (unless I am - permitted to submit under a different license), as indicated - in the file; or - -(c) The contribution was provided directly to me by some other - person who certified (a), (b) or (c) and I have not modified - it. - -(d) I understand and agree that this project and the contribution - are public and that a record of the contribution (including all - personal information I submit with it, including my sign-off) is - maintained indefinitely and may be redistributed consistent with - this project or the open source license(s) involved. diff --git a/LICENSE b/LICENSE old mode 100644 new mode 100755 index f29b0c0b24..e6c38ff069 --- a/LICENSE +++ b/LICENSE @@ -199,4 +199,4 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and - limitations under the License. + limitations under the License. \ No newline at end of file diff --git a/README.md b/README.md old mode 100644 new mode 100755 index 31b0d15cc8..8f2c597d65 --- a/README.md +++ b/README.md @@ -1,243 +1,157 @@ -

- - - - - -

Cloud Native tool integration platform for Kubernetes

-

- -

-
-Explore documentation » -
-Try Devtron Demo » -
-Website -· -Blogs -· -Join Discord channel -· -Twitter -. -YouTube - -

-

-Join Discord -Go Report Card -License -CII Best Practices -made-with-Go -Website devtron.ai -Tweet - -

-🔥 Want to accelerate K8s adoption? Introducing DevOps in a Box; Leave DevOps on Devtron 🔥 - -
-

-

- -Devtron deeply integrates with products across the lifecycle of microservices,i.e., CI, CD, security, cost, debugging, and observability via an intuitive web interface. -
-

- -[Devtron](#install-devtron) helps you deploy, observe, manage & debug existing Helm apps in all your clusters. - - -## Devtron Demo Environment - -Please log in the Demo environment using github credentials. Please note the user is granted view access. - -## Devtron Features - -
Application-level Resource grouping for easier Debugging -
- -- Devtron groups your Kubernetes objects deployed via Helm charts and display them in a slick UI for easier monitoring or debugging. Access pod logs and resource manifests right from the Devtron UI and even edit them! - -
-
Centralized Access Management -
- -- Control and give customizable view-only, edit access to users on Project, Environment and Application levels -
- -
Deploy, Manage and Observe on multiple clusters -
- -- Deploy and manage Helm charts, applications across multiple Kubernetes clusters (hosted on multiple clouds/on-prem) right from a single Devtron setup -
- -
- -## Integrations - -Devtron is designed to be modular, and its functionality can be easily extended with the help of integrations. - -### CI/CD Integration - -[Devtron CI/CD with GitOps](./docs/setup/install/devtron-oss.md#tab-with-ci-cd--gitops-argo-cd) integration is used to automate the builds and deployments and enables the software development teams to focus on meeting the business requirements, code quality, and security. - -* Devtron leverages Kubernetes auto-scaling and centralized caching to give you unlimited cost-efficient CI workers. -* Supports pre-CI and post-CI integrations for code quality monitoring. -* Seamlessly integrates with Clair for image vulnerability scanning. -* Supports different deployment strategies: Blue/Green, Rolling, Canary, and Recreate. -* Implements GitOps to manage the state of Kubernetes applications. -* Integrates with ArgoCD for continuous deployment. -* Checks logs, events, and manifests or exec inside containers for debugging. -* Provides deployment metrics like; deployment frequency, lead time, change failure rate, and mean-time recovery. -* Seamlessly integrates with Grafana for continuous application metrics like CPU and memory usage, status code, throughput, and latency on the dashboard. - -## Architecture - -

- -## Installation - -Before you begin, you must create a [Kubernetes cluster](https://kubernetes.io/docs/tutorials/kubernetes-basics/create-cluster/) (preferably K8s 1.16 or higher) and install [Helm](https://helm.sh/docs/intro/install/). - -### 1. Install Devtron with CI/CD Integration - -Run the following command to install the latest version of Devtron along with the CI/CD module: +# Devtron Documentation -```bash -helm repo add devtron https://helm.devtron.ai +Welcome to the official **Devtron Documentation Repository** +This repo hosts the complete documentation for installing, using, and managing Devtron, an open-source software delivery platform built on Kubernetes. -helm install devtron devtron/devtron-operator \ ---create-namespace --namespace devtroncd \ ---set installer.modules={cicd} -``` +--- -### Access Devtron +## 🚀 What is Devtron? -**URL**: Use the following command to get the dashboard URL: +**[Devtron](https://devtron.ai)** is an open-source Kubernetes-native software delivery platform that simplifies complex CI/CD, infrastructure, and release management workflows. -```bash -kubectl get svc -n devtroncd devtron-service -o jsonpath='{.status.loadBalancer.ingress}' -``` +It provides: +* Unified dashboards for build, deploy, and monitoring +* GitOps-driven deployment (powered by ArgoCD) +* AI-powered debugging and recommendations +* Built-in vulnerability scanning +* Plugin ecosystem for extensibility +* Cluster and cost visibility +* Role-based access control (RBAC) and SSO integrations + +With Devtron, teams can deploy and manage applications across multiple environments without the steep Kubernetes learning curve. + +--- + +## 🧩 Repository Overview + +This repository powers the **[Devtron Docs site](https://docs.devtron.ai)** using **Docusaurus v3**. +It contains all documentation files, categorized and rendered as website pages. + +### 📁 Folder Structure + +| Path | Description | +|------|--------------| +| `/docs/` | Main documentation directory containing Markdown (`.md`) and MDX files. | +| `/docs/setup/` | Installation and configuration guides. | +| `/docs/user-guide/` | Core user guides including Application Management, Infra, Policies, etc. | +| `/docs/reference/` | FAQs, troubleshooting, and glossaries. | +| `/static/` | Static assets such as images and icons. | +| `/sidebars.js` | Defines documentation hierarchy and navigation structure. | +| `/docusaurus.config.js` | Core site configuration including theme and plugins. | +| `/src/` | Contains React components, layouts, and theme overrides. | + +--- + +## 🧱 Docs Scaffolding Explained + +The documentation follows a structured hierarchy defined in [`sidebars.js`](./sidebars.js): + +| Section | Purpose | +|----------|----------| +| **Getting Started** | Onboarding and installation instructions for new users. | +| **Application Management** | Creating, configuring, and managing applications in Devtron. | +| **Infrastructure Management** | Managing clusters, resources, and node-level operations. | +| **Software Release Management** | Handling multi-tenant releases and deployment visibility. | +| **Cost Visibility** | Insights into FinOps capabilities of Devtron. | +| **Security** | Insights into security scanning and policies. | +| **Automation & Enablement** | Job automation, task configuration, and workflow management. | +| **AI Recommendations** | Features powered by Devtron’s AI system. | +| **Global Configurations** | Managing host URL, GitOps, SSO, permissions, and global policies. | +| **Resources** | References, integrations, upgrades, and use cases. | + +Each folder contains a `README.md` file that serves as an index page and links to nested topics. -**Credentials**: +--- -**UserName**: `admin`
-**Password**: Run the following command to get the admin password for Devtron version v0.6.0 and higher +## 🛠️ Getting Started (Local Development) + +### Prerequisites +* **Node.js** ≥ 18.x +* **npm** or **Yarn** or + +### Installation ```bash -kubectl -n devtroncd get secret devtron-secret -o jsonpath='{.data.ADMIN_PASSWORD}' | base64 -d +# Clone the repo +git clone https://github.com/devtron-labs/devtron-documentation.git +cd devtron-docs + +# Install dependencies +npm install +# or +yarn install ``` -For Devtron version less than v0.6.0, run the following command to get the admin password: +### Run the Docs Locally ```bash -kubectl -n devtroncd get secret devtron-secret -o jsonpath='{.data.ACD_PASSWORD}' | base64 -d +npm run start +# or +yarn start ``` +Your site will be available at 👉 **http://localhost:3000** + +--- + +## 📦 Build for Production -Please refer to the document for more information on how to [access the Devtron Dashboard](./docs/setup/install/devtron-oss.md#step-3-obtain-the-dashboard-url). +To generate an optimized static build resembling production behavior: -#### Installation Status +```bash +npm run build +# or +yarn build +``` -The above install command for CI/CD integration starts Devtron-operator, which takes about 20 minutes to spin up all of the Devtron microservices one by one. You can check the status of the installation with the following command: +This will create a production-ready site in the `/build` directory. Use the following command to access it: ```bash -kubectl -n devtroncd get installers installer-devtron \ --o jsonpath='{.status.sync.status}' +npm run serve +# or +yarn serve ``` -The command executes with one of the following output messages, indicating the status of the installation: +Your site will be available at 👉 **http://localhost:3000** -* **Downloaded**: The installer has downloaded all the manifests, and installation is in progress. -* **Applied**: The installer has successfully applied all the manifests, and the installation is complete. +--- -### 2. Install Devtron with Helm Bundle +## 🧑‍💻 Contributing Guidelines -```bash -helm repo add devtron https://helm.devtron.ai +We welcome contributions from both internal as well as external contributors. +Whether it’s fixing typos, improving clarity, or adding new guides, your help makes our documentation better. -helm install devtron devtron/devtron-operator --create-namespace --namespace devtroncd +### Quick Start +1. Fork this repository +2. Create a branch (`git checkout -b feature/add-new-guide`) +3. Make your changes +4. Commit and push +5. Open a Pull Request (PR) to the `main` branch -``` +--- + +## 🧭 Writing Guidelines + +* Use clear, concise language +* Use title case for titles and headings. +* Prefer active voice (e.g., “Click Deploy” instead of “The button should be clicked”) +* Use fenced code blocks for commands or YAML +* Use Docusaurus admonitions (`:::tip`, `:::warning`, etc.) for emphasis +* Keep paragraphs short and scannable + +--- + +## 📘 License + +This repository is licensed under the **Apache 2.0 License**. +See the [LICENSE](./LICENSE) file for more details. + +--- + +## 🌐 Useful Links - - -## :blue_heart: Technology - -Devtron is built on some of the most trusted and loved technologies: -
-

- -## :video_camera: Videos - -- [Devtron - A Comprehensive Overview](https://youtu.be/FB5BI3Ef7uw?t=363) -- [Viktor Farcic's review](https://youtu.be/ZKcfZC-zSMM) -- [Running an application on Devtron](https://youtu.be/bA6zgjPD_yA?t=2927) -- [Devtron Demo](https://youtu.be/ekxHV2Gje-E?t=7856) - -## :memo: Blogs from Community - -* [How Livspace revolutionised its CI/CD saga](https://blog.livspace.io/how-livspace-revolutionised-its-ci-cd-saga-3120724e271b) -* [AppOps with Kubernetes and Devtron: The Perfect Fit](https://hackernoon.com/appops-with-kubernetes-and-devtron-the-perfect-fit-sj934qj) -* [Getting started with GitOps on Kubernetes with Devtron](https://piotrminkowski.com/2022/05/04/getting-started-with-gitops-on-kubernetes-with-devtron) -* [Zero to hero on Kubernetes with Devtron](https://dzone.com/articles/zero-to-hero-on-kubernetes-with-devtron) -* [Kubernetes deployment made easy](https://medium.com/container-talks/kubernetes-deployment-made-easy-cc74f0242f06) - -## :muscle: Trusted By - -Devtron is trusted by communities all across the globe. The list of organizations using Devtron can be found [here](./USERS.md). - - -## :question: FAQs & Troubleshooting - -- Devtron - [see here](https://docs.devtron.ai/resources/devtron-troubleshoot) - -## :page_facing_up: Compatibility - -### Current build - -- Devtron uses modified version of [Argo Rollout](https://argoproj.github.io/argo-rollouts/) -- Application metrics only work for K8s version 1.16+ - -## Support, Contribution, and Community - -## :busts_in_silhouette: Community - -Get updates on Devtron's development and chat with project maintainers, contributors, and community members -- Follow [@DevtronL on Twitter](https://twitter.com/DevtronL) -- Raise feature requests, suggest enhancements, and report bugs in our [GitHub Issues](https://github.com/devtron-labs/devtron/issues) -- Articles, Howtos, Tutorials - [Devtron Blogs](https://devtron.ai/blog/) - -### Join us at Discord channel -

- - Join Devtron : Heroku for Kubernetes - -

- -## :handshake: Contribute - -Check out our [contributing guidelines](CONTRIBUTING.md). Included, are directions for opening issues, coding standards, and notes on our development processes. We deeply appreciate your contribution. - -Please look at our [community contributions](COMMUNITY_CONTRIBUTIONS.md) and feel free to create a video or blog around Devtron and add your valuable contribution to the list. - -### Contributors: - -We are deeply grateful to all our amazing contributors! - - - - - -## :bug: Vulnerability Reporting - -We at Devtron, take security and our users' trust very seriously. If you believe you have found a security issue, please report it to security@devtron.ai. - -## :bookmark: License - -Devtron is licensed under [Apache License, Version 2.0](LICENSE) +* [Devtron Website](https://devtron.ai) +* [Docs Portal](https://docs.devtron.ai) +* [GitHub Repository](https://github.com/devtron-labs/devtron) +* [Join the Slack Community](https://devtron.ai/community) +* [Release Notes](https://github.com/devtron-labs/devtron/releases) diff --git a/assets/Architecture.jpg b/assets/Architecture.jpg deleted file mode 100644 index cce76cd595..0000000000 Binary files a/assets/Architecture.jpg and /dev/null differ diff --git a/assets/GithubPullRequest-Plugin-logo.png b/assets/GithubPullRequest-Plugin-logo.png deleted file mode 100644 index 61ea0ebf12..0000000000 Binary files a/assets/GithubPullRequest-Plugin-logo.png and /dev/null differ diff --git a/assets/GithubReleasePluginlogo.png b/assets/GithubReleasePluginlogo.png deleted file mode 100644 index bdbeafdb41..0000000000 Binary files a/assets/GithubReleasePluginlogo.png and /dev/null differ diff --git a/assets/Hyperion features.mp4 b/assets/Hyperion features.mp4 deleted file mode 100644 index 50a25445dd..0000000000 Binary files a/assets/Hyperion features.mp4 and /dev/null differ diff --git a/assets/MailMaster.png b/assets/MailMaster.png deleted file mode 100644 index db59565b80..0000000000 Binary files a/assets/MailMaster.png and /dev/null differ diff --git a/assets/ansible-runner.svg b/assets/ansible-runner.svg deleted file mode 100644 index 2f3777caf7..0000000000 --- a/assets/ansible-runner.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - \ No newline at end of file diff --git a/assets/banner-clients.png b/assets/banner-clients.png deleted file mode 100644 index fe96fd7fd4..0000000000 Binary files a/assets/banner-clients.png and /dev/null differ diff --git a/assets/bitbucket-logo-plugin.jpeg b/assets/bitbucket-logo-plugin.jpeg deleted file mode 100644 index e622a0a0b7..0000000000 Binary files a/assets/bitbucket-logo-plugin.jpeg and /dev/null differ diff --git a/assets/branch-compare-plugin-logo.png b/assets/branch-compare-plugin-logo.png deleted file mode 100644 index d7529f2d48..0000000000 Binary files a/assets/branch-compare-plugin-logo.png and /dev/null differ diff --git a/assets/cloudanix-logo.png b/assets/cloudanix-logo.png deleted file mode 100644 index 1b549e35b9..0000000000 Binary files a/assets/cloudanix-logo.png and /dev/null differ diff --git a/assets/codacy-plugin-icon.png b/assets/codacy-plugin-icon.png deleted file mode 100644 index 228ab07025..0000000000 Binary files a/assets/codacy-plugin-icon.png and /dev/null differ diff --git a/assets/copa-plugin-icon.png b/assets/copa-plugin-icon.png deleted file mode 100644 index 0039b17c00..0000000000 Binary files a/assets/copa-plugin-icon.png and /dev/null differ diff --git a/assets/cosign-logo.png b/assets/cosign-logo.png deleted file mode 100644 index 06900dc8b8..0000000000 Binary files a/assets/cosign-logo.png and /dev/null differ diff --git a/assets/cranecopy.png b/assets/cranecopy.png deleted file mode 100644 index b9a008cbcb..0000000000 Binary files a/assets/cranecopy.png and /dev/null differ diff --git a/assets/dTrack-plugin-icon.png b/assets/dTrack-plugin-icon.png deleted file mode 100644 index 5b015530b1..0000000000 Binary files a/assets/dTrack-plugin-icon.png and /dev/null differ diff --git a/assets/devtron-darkmode-logo.png b/assets/devtron-darkmode-logo.png deleted file mode 100644 index ac3511ada1..0000000000 Binary files a/assets/devtron-darkmode-logo.png and /dev/null differ diff --git a/assets/devtron-lightmode-logo.png b/assets/devtron-lightmode-logo.png deleted file mode 100644 index 29963ab6e7..0000000000 Binary files a/assets/devtron-lightmode-logo.png and /dev/null differ diff --git a/assets/devtron-logo-dark-light.png b/assets/devtron-logo-dark-light.png deleted file mode 100644 index 4365c3e22f..0000000000 Binary files a/assets/devtron-logo-dark-light.png and /dev/null differ diff --git a/assets/devtron-logo.png b/assets/devtron-logo.png deleted file mode 100644 index 8918c60dcb..0000000000 Binary files a/assets/devtron-logo.png and /dev/null differ diff --git a/assets/docker-logo.png b/assets/docker-logo.png deleted file mode 100644 index 36faa2ee07..0000000000 Binary files a/assets/docker-logo.png and /dev/null differ diff --git a/assets/dockerslim-plugin-icon.png b/assets/dockerslim-plugin-icon.png deleted file mode 100644 index 6653a8edb6..0000000000 Binary files a/assets/dockerslim-plugin-icon.png and /dev/null differ diff --git a/assets/eks-plugin-icon.svg b/assets/eks-plugin-icon.svg deleted file mode 100644 index 04c9f03a10..0000000000 --- a/assets/eks-plugin-icon.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - \ No newline at end of file diff --git a/assets/gcs-bucket.svg b/assets/gcs-bucket.svg deleted file mode 100644 index b0cfefa08f..0000000000 --- a/assets/gcs-bucket.svg +++ /dev/null @@ -1,17 +0,0 @@ - - -Icon_24px_CloudStorage_Color \ No newline at end of file diff --git a/assets/gke-plugin-icon.png b/assets/gke-plugin-icon.png deleted file mode 100644 index 0e434e31a0..0000000000 Binary files a/assets/gke-plugin-icon.png and /dev/null differ diff --git a/assets/ic-plugin-copy-container-image.png b/assets/ic-plugin-copy-container-image.png deleted file mode 100644 index 1b5a3c47e5..0000000000 Binary files a/assets/ic-plugin-copy-container-image.png and /dev/null differ diff --git a/assets/ic-plugin-vulnerability-scan.png b/assets/ic-plugin-vulnerability-scan.png deleted file mode 100644 index c324a69fbf..0000000000 Binary files a/assets/ic-plugin-vulnerability-scan.png and /dev/null differ diff --git a/assets/jenkins.png b/assets/jenkins.png deleted file mode 100644 index 7f8921527c..0000000000 Binary files a/assets/jenkins.png and /dev/null differ diff --git a/assets/k6-plugin-icon.png b/assets/k6-plugin-icon.png deleted file mode 100644 index cd15d91bd1..0000000000 Binary files a/assets/k6-plugin-icon.png and /dev/null differ diff --git a/assets/plugin-github-pr.png b/assets/plugin-github-pr.png deleted file mode 100644 index 892a50796a..0000000000 Binary files a/assets/plugin-github-pr.png and /dev/null differ diff --git a/assets/plugin-golang-migrate.png b/assets/plugin-golang-migrate.png deleted file mode 100644 index 9a2852388d..0000000000 Binary files a/assets/plugin-golang-migrate.png and /dev/null differ diff --git a/assets/plugin-jira.png b/assets/plugin-jira.png deleted file mode 100644 index 9e9b1800c1..0000000000 Binary files a/assets/plugin-jira.png and /dev/null differ diff --git a/assets/plugin-poll-container-registry.png b/assets/plugin-poll-container-registry.png deleted file mode 100644 index 729ea4680f..0000000000 Binary files a/assets/plugin-poll-container-registry.png and /dev/null differ diff --git a/assets/preview.gif b/assets/preview.gif deleted file mode 100644 index ac26e8a222..0000000000 Binary files a/assets/preview.gif and /dev/null differ diff --git a/assets/readme-comic.png b/assets/readme-comic.png deleted file mode 100644 index 21d0fe683e..0000000000 Binary files a/assets/readme-comic.png and /dev/null differ diff --git a/assets/semgrep.png b/assets/semgrep.png deleted file mode 100644 index 0848fe5a8e..0000000000 Binary files a/assets/semgrep.png and /dev/null differ diff --git a/assets/sonarqube-plugin-icon.png b/assets/sonarqube-plugin-icon.png deleted file mode 100644 index 7c3e626609..0000000000 Binary files a/assets/sonarqube-plugin-icon.png and /dev/null differ diff --git a/assets/terraform-cli.svg b/assets/terraform-cli.svg deleted file mode 100644 index 42f77bf97b..0000000000 --- a/assets/terraform-cli.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - \ No newline at end of file diff --git a/assets/trusted-by.jpg b/assets/trusted-by.jpg deleted file mode 100644 index 59971e318e..0000000000 Binary files a/assets/trusted-by.jpg and /dev/null differ diff --git a/assets/we-support.jpg b/assets/we-support.jpg deleted file mode 100644 index d73c02dba2..0000000000 Binary files a/assets/we-support.jpg and /dev/null differ diff --git a/blog/2019-05-28-first-blog-post.md b/blog/2019-05-28-first-blog-post.md new file mode 100755 index 0000000000..d3032efb35 --- /dev/null +++ b/blog/2019-05-28-first-blog-post.md @@ -0,0 +1,12 @@ +--- +slug: first-blog-post +title: First Blog Post +authors: [slorber, yangshun] +tags: [hola, docusaurus] +--- + +Lorem ipsum dolor sit amet... + + + +...consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet diff --git a/blog/2019-05-29-long-blog-post.md b/blog/2019-05-29-long-blog-post.md new file mode 100755 index 0000000000..eb4435de59 --- /dev/null +++ b/blog/2019-05-29-long-blog-post.md @@ -0,0 +1,44 @@ +--- +slug: long-blog-post +title: Long Blog Post +authors: yangshun +tags: [hello, docusaurus] +--- + +This is the summary of a very long blog post, + +Use a `` comment to limit blog post size in the list view. + + + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet diff --git a/blog/2021-08-01-mdx-blog-post.mdx b/blog/2021-08-01-mdx-blog-post.mdx new file mode 100755 index 0000000000..0c4b4a48b9 --- /dev/null +++ b/blog/2021-08-01-mdx-blog-post.mdx @@ -0,0 +1,24 @@ +--- +slug: mdx-blog-post +title: MDX Blog Post +authors: [slorber] +tags: [docusaurus] +--- + +Blog posts support [Docusaurus Markdown features](https://docusaurus.io/docs/markdown-features), such as [MDX](https://mdxjs.com/). + +:::tip + +Use the power of React to create interactive blog posts. + +::: + +{/* truncate */} + +For example, use JSX to create an interactive button: + +```js + +``` + + diff --git a/blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg b/blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg new file mode 100755 index 0000000000..11bda09284 Binary files /dev/null and b/blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg differ diff --git a/blog/2021-08-26-welcome/index.md b/blog/2021-08-26-welcome/index.md new file mode 100755 index 0000000000..349ea075f5 --- /dev/null +++ b/blog/2021-08-26-welcome/index.md @@ -0,0 +1,29 @@ +--- +slug: welcome +title: Welcome +authors: [slorber, yangshun] +tags: [facebook, hello, docusaurus] +--- + +[Docusaurus blogging features](https://docusaurus.io/docs/blog) are powered by the [blog plugin](https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog). + +Here are a few tips you might find useful. + + + +Simply add Markdown files (or folders) to the `blog` directory. + +Regular blog authors can be added to `authors.yml`. + +The blog post date can be extracted from filenames, such as: + +- `2019-05-30-welcome.md` +- `2019-05-30-welcome/index.md` + +A blog post folder can be convenient to co-locate blog post images: + +![Docusaurus Plushie](./docusaurus-plushie-banner.jpeg) + +The blog supports tags as well! + +**And if you don't want a blog**: just delete this directory, and use `blog: false` in your Docusaurus config. diff --git a/blog/authors.yml b/blog/authors.yml new file mode 100755 index 0000000000..0fd398733b --- /dev/null +++ b/blog/authors.yml @@ -0,0 +1,25 @@ +yangshun: + name: Yangshun Tay + title: Ex-Meta Staff Engineer, Co-founder GreatFrontEnd + url: https://linkedin.com/in/yangshun + image_url: https://github.com/yangshun.png + page: true + socials: + x: yangshunz + linkedin: yangshun + github: yangshun + newsletter: https://www.greatfrontend.com + +slorber: + name: Sébastien Lorber + title: Docusaurus maintainer + url: https://sebastienlorber.com + image_url: https://github.com/slorber.png + page: + # customize the url of the author page at /blog/authors/ + permalink: '/all-sebastien-lorber-articles' + socials: + x: sebastienlorber + linkedin: sebastienlorber + github: slorber + newsletter: https://thisweekinreact.com diff --git a/blog/tags.yml b/blog/tags.yml new file mode 100755 index 0000000000..bfaa778fbd --- /dev/null +++ b/blog/tags.yml @@ -0,0 +1,19 @@ +facebook: + label: Facebook + permalink: /facebook + description: Facebook tag description + +hello: + label: Hello + permalink: /hello + description: Hello tag description + +docusaurus: + label: Docusaurus + permalink: /docusaurus + description: Docusaurus tag description + +hola: + label: Hola + permalink: /hola + description: Hola tag description diff --git a/docs/.gitbook/assets/ad-confgimap (3) (1).jpg b/docs/.gitbook/assets/ad-confgimap (3) (1).jpg deleted file mode 100644 index 752b7de887..0000000000 Binary files a/docs/.gitbook/assets/ad-confgimap (3) (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/ad-confgimap (3) (2).jpg b/docs/.gitbook/assets/ad-confgimap (3) (2).jpg deleted file mode 100644 index 752b7de887..0000000000 Binary files a/docs/.gitbook/assets/ad-confgimap (3) (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/ad-confgimap (3) (3).jpg b/docs/.gitbook/assets/ad-confgimap (3) (3).jpg deleted file mode 100644 index 752b7de887..0000000000 Binary files a/docs/.gitbook/assets/ad-confgimap (3) (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/ad-confgimap (3) (4).jpg b/docs/.gitbook/assets/ad-confgimap (3) (4).jpg deleted file mode 100644 index 752b7de887..0000000000 Binary files a/docs/.gitbook/assets/ad-confgimap (3) (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/ad-confgimap (3).jpg b/docs/.gitbook/assets/ad-confgimap (3).jpg deleted file mode 100644 index 752b7de887..0000000000 Binary files a/docs/.gitbook/assets/ad-confgimap (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/add-new-app (1).jpg b/docs/.gitbook/assets/add-new-app (1).jpg deleted file mode 100644 index 130d81ee38..0000000000 Binary files a/docs/.gitbook/assets/add-new-app (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/add-new-app (2).jpg b/docs/.gitbook/assets/add-new-app (2).jpg deleted file mode 100644 index 130d81ee38..0000000000 Binary files a/docs/.gitbook/assets/add-new-app (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/add-new-app (3).jpg b/docs/.gitbook/assets/add-new-app (3).jpg deleted file mode 100644 index 130d81ee38..0000000000 Binary files a/docs/.gitbook/assets/add-new-app (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/add-new-app (4).jpg b/docs/.gitbook/assets/add-new-app (4).jpg deleted file mode 100644 index 130d81ee38..0000000000 Binary files a/docs/.gitbook/assets/add-new-app (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/add-new-app.jpg b/docs/.gitbook/assets/add-new-app.jpg deleted file mode 100644 index 130d81ee38..0000000000 Binary files a/docs/.gitbook/assets/add-new-app.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/add-secret (1).png b/docs/.gitbook/assets/add-secret (1).png deleted file mode 100644 index de8ed05ec5..0000000000 Binary files a/docs/.gitbook/assets/add-secret (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/add-secret (2).png b/docs/.gitbook/assets/add-secret (2).png deleted file mode 100644 index de8ed05ec5..0000000000 Binary files a/docs/.gitbook/assets/add-secret (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/add-secret (3).png b/docs/.gitbook/assets/add-secret (3).png deleted file mode 100644 index de8ed05ec5..0000000000 Binary files a/docs/.gitbook/assets/add-secret (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/add-secret (4).png b/docs/.gitbook/assets/add-secret (4).png deleted file mode 100644 index de8ed05ec5..0000000000 Binary files a/docs/.gitbook/assets/add-secret (4).png and /dev/null differ diff --git a/docs/.gitbook/assets/add-secret (5).png b/docs/.gitbook/assets/add-secret (5).png deleted file mode 100644 index de8ed05ec5..0000000000 Binary files a/docs/.gitbook/assets/add-secret (5).png and /dev/null differ diff --git a/docs/.gitbook/assets/add-secret.png b/docs/.gitbook/assets/add-secret.png deleted file mode 100644 index de8ed05ec5..0000000000 Binary files a/docs/.gitbook/assets/add-secret.png and /dev/null differ diff --git a/docs/.gitbook/assets/add-workflow (1).png b/docs/.gitbook/assets/add-workflow (1).png deleted file mode 100644 index fcab99f7dd..0000000000 Binary files a/docs/.gitbook/assets/add-workflow (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/add-workflow (2).png b/docs/.gitbook/assets/add-workflow (2).png deleted file mode 100644 index fcab99f7dd..0000000000 Binary files a/docs/.gitbook/assets/add-workflow (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/add-workflow (3).png b/docs/.gitbook/assets/add-workflow (3).png deleted file mode 100644 index fcab99f7dd..0000000000 Binary files a/docs/.gitbook/assets/add-workflow (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/add-workflow (4).png b/docs/.gitbook/assets/add-workflow (4).png deleted file mode 100644 index fcab99f7dd..0000000000 Binary files a/docs/.gitbook/assets/add-workflow (4).png and /dev/null differ diff --git a/docs/.gitbook/assets/add-workflow (5).png b/docs/.gitbook/assets/add-workflow (5).png deleted file mode 100644 index fcab99f7dd..0000000000 Binary files a/docs/.gitbook/assets/add-workflow (5).png and /dev/null differ diff --git a/docs/.gitbook/assets/add-workflow (6).png b/docs/.gitbook/assets/add-workflow (6).png deleted file mode 100644 index fcab99f7dd..0000000000 Binary files a/docs/.gitbook/assets/add-workflow (6).png and /dev/null differ diff --git a/docs/.gitbook/assets/add-workflow.png b/docs/.gitbook/assets/add-workflow.png deleted file mode 100644 index fcab99f7dd..0000000000 Binary files a/docs/.gitbook/assets/add-workflow.png and /dev/null differ diff --git a/docs/.gitbook/assets/adding-git-material (1).gif b/docs/.gitbook/assets/adding-git-material (1).gif deleted file mode 100644 index ac71ed7b8e..0000000000 Binary files a/docs/.gitbook/assets/adding-git-material (1).gif and /dev/null differ diff --git a/docs/.gitbook/assets/adding-git-material (2).gif b/docs/.gitbook/assets/adding-git-material (2).gif deleted file mode 100644 index ac71ed7b8e..0000000000 Binary files a/docs/.gitbook/assets/adding-git-material (2).gif and /dev/null differ diff --git a/docs/.gitbook/assets/adding-git-material (3).gif b/docs/.gitbook/assets/adding-git-material (3).gif deleted file mode 100644 index ac71ed7b8e..0000000000 Binary files a/docs/.gitbook/assets/adding-git-material (3).gif and /dev/null differ diff --git a/docs/.gitbook/assets/adding-git-material (4).gif b/docs/.gitbook/assets/adding-git-material (4).gif deleted file mode 100644 index ac71ed7b8e..0000000000 Binary files a/docs/.gitbook/assets/adding-git-material (4).gif and /dev/null differ diff --git a/docs/.gitbook/assets/adding-git-material (5).gif b/docs/.gitbook/assets/adding-git-material (5).gif deleted file mode 100644 index ac71ed7b8e..0000000000 Binary files a/docs/.gitbook/assets/adding-git-material (5).gif and /dev/null differ diff --git a/docs/.gitbook/assets/adding-git-material.gif b/docs/.gitbook/assets/adding-git-material.gif deleted file mode 100644 index ac71ed7b8e..0000000000 Binary files a/docs/.gitbook/assets/adding-git-material.gif and /dev/null differ diff --git a/docs/.gitbook/assets/app-details-application-object-ingress (1).png b/docs/.gitbook/assets/app-details-application-object-ingress (1).png deleted file mode 100644 index def5ff8f6e..0000000000 Binary files a/docs/.gitbook/assets/app-details-application-object-ingress (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/app-details-application-object-ingress (2).png b/docs/.gitbook/assets/app-details-application-object-ingress (2).png deleted file mode 100644 index def5ff8f6e..0000000000 Binary files a/docs/.gitbook/assets/app-details-application-object-ingress (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/app-details-application-object-ingress (3).png b/docs/.gitbook/assets/app-details-application-object-ingress (3).png deleted file mode 100644 index def5ff8f6e..0000000000 Binary files a/docs/.gitbook/assets/app-details-application-object-ingress (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/app-details-application-object-ingress.png b/docs/.gitbook/assets/app-details-application-object-ingress.png deleted file mode 100644 index def5ff8f6e..0000000000 Binary files a/docs/.gitbook/assets/app-details-application-object-ingress.png and /dev/null differ diff --git a/docs/.gitbook/assets/app-details-logs (1).jpg b/docs/.gitbook/assets/app-details-logs (1).jpg deleted file mode 100644 index 82816b1f4a..0000000000 Binary files a/docs/.gitbook/assets/app-details-logs (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/app-details-logs (2).jpg b/docs/.gitbook/assets/app-details-logs (2).jpg deleted file mode 100644 index 82816b1f4a..0000000000 Binary files a/docs/.gitbook/assets/app-details-logs (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/app-details-logs (3).jpg b/docs/.gitbook/assets/app-details-logs (3).jpg deleted file mode 100644 index 82816b1f4a..0000000000 Binary files a/docs/.gitbook/assets/app-details-logs (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/app-details-logs (4).jpg b/docs/.gitbook/assets/app-details-logs (4).jpg deleted file mode 100644 index 82816b1f4a..0000000000 Binary files a/docs/.gitbook/assets/app-details-logs (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/app-details-logs (5).jpg b/docs/.gitbook/assets/app-details-logs (5).jpg deleted file mode 100644 index 82816b1f4a..0000000000 Binary files a/docs/.gitbook/assets/app-details-logs (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/app-details-logs.jpg b/docs/.gitbook/assets/app-details-logs.jpg deleted file mode 100644 index 82816b1f4a..0000000000 Binary files a/docs/.gitbook/assets/app-details-logs.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/app-details-manifest (1).jpg b/docs/.gitbook/assets/app-details-manifest (1).jpg deleted file mode 100644 index 3a7d5152d1..0000000000 Binary files a/docs/.gitbook/assets/app-details-manifest (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/app-details-manifest (2).jpg b/docs/.gitbook/assets/app-details-manifest (2).jpg deleted file mode 100644 index 3a7d5152d1..0000000000 Binary files a/docs/.gitbook/assets/app-details-manifest (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/app-details-manifest (3).jpg b/docs/.gitbook/assets/app-details-manifest (3).jpg deleted file mode 100644 index 3a7d5152d1..0000000000 Binary files a/docs/.gitbook/assets/app-details-manifest (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/app-details-manifest (4).jpg b/docs/.gitbook/assets/app-details-manifest (4).jpg deleted file mode 100644 index 3a7d5152d1..0000000000 Binary files a/docs/.gitbook/assets/app-details-manifest (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/app-details-manifest.jpg b/docs/.gitbook/assets/app-details-manifest.jpg deleted file mode 100644 index 3a7d5152d1..0000000000 Binary files a/docs/.gitbook/assets/app-details-manifest.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/app-labels-1.png b/docs/.gitbook/assets/app-labels-1.png deleted file mode 100644 index f1dbadd47e..0000000000 Binary files a/docs/.gitbook/assets/app-labels-1.png and /dev/null differ diff --git a/docs/.gitbook/assets/app-labels-2.png b/docs/.gitbook/assets/app-labels-2.png deleted file mode 100644 index e0ec7a6784..0000000000 Binary files a/docs/.gitbook/assets/app-labels-2.png and /dev/null differ diff --git a/docs/.gitbook/assets/arora1 (2).gif b/docs/.gitbook/assets/arora1 (2).gif deleted file mode 100644 index 80428dbe95..0000000000 Binary files a/docs/.gitbook/assets/arora1 (2).gif and /dev/null differ diff --git a/docs/.gitbook/assets/arora4 (2).gif b/docs/.gitbook/assets/arora4 (2).gif deleted file mode 100644 index 5a20f4dce1..0000000000 Binary files a/docs/.gitbook/assets/arora4 (2).gif and /dev/null differ diff --git a/docs/.gitbook/assets/bulk-update-1.png b/docs/.gitbook/assets/bulk-update-1.png deleted file mode 100644 index e0bd6b0e9f..0000000000 Binary files a/docs/.gitbook/assets/bulk-update-1.png and /dev/null differ diff --git a/docs/.gitbook/assets/bulk-update-2.png b/docs/.gitbook/assets/bulk-update-2.png deleted file mode 100644 index 65a0060af6..0000000000 Binary files a/docs/.gitbook/assets/bulk-update-2.png and /dev/null differ diff --git a/docs/.gitbook/assets/bulk-update-3.png b/docs/.gitbook/assets/bulk-update-3.png deleted file mode 100644 index faaab7cb50..0000000000 Binary files a/docs/.gitbook/assets/bulk-update-3.png and /dev/null differ diff --git a/docs/.gitbook/assets/bulk-update-editor.png b/docs/.gitbook/assets/bulk-update-editor.png deleted file mode 100644 index d084ccc296..0000000000 Binary files a/docs/.gitbook/assets/bulk-update-editor.png and /dev/null differ diff --git a/docs/.gitbook/assets/bulk-update-empty.png b/docs/.gitbook/assets/bulk-update-empty.png deleted file mode 100644 index 8fe3c05a81..0000000000 Binary files a/docs/.gitbook/assets/bulk-update-empty.png and /dev/null differ diff --git a/docs/.gitbook/assets/bulk-update-impacted.png b/docs/.gitbook/assets/bulk-update-impacted.png deleted file mode 100644 index 339bb407be..0000000000 Binary files a/docs/.gitbook/assets/bulk-update-impacted.png and /dev/null differ diff --git a/docs/.gitbook/assets/bulk-update-impactobj.png b/docs/.gitbook/assets/bulk-update-impactobj.png deleted file mode 100644 index 74d2e9cb0d..0000000000 Binary files a/docs/.gitbook/assets/bulk-update-impactobj.png and /dev/null differ diff --git a/docs/.gitbook/assets/bulk-update-message.png b/docs/.gitbook/assets/bulk-update-message.png deleted file mode 100644 index 2c21be6115..0000000000 Binary files a/docs/.gitbook/assets/bulk-update-message.png and /dev/null differ diff --git a/docs/.gitbook/assets/bulk-update-readme.png b/docs/.gitbook/assets/bulk-update-readme.png deleted file mode 100644 index 3b04c3f3a9..0000000000 Binary files a/docs/.gitbook/assets/bulk-update-readme.png and /dev/null differ diff --git a/docs/.gitbook/assets/bulk-update-run.png b/docs/.gitbook/assets/bulk-update-run.png deleted file mode 100644 index d815fec7c8..0000000000 Binary files a/docs/.gitbook/assets/bulk-update-run.png and /dev/null differ diff --git a/docs/.gitbook/assets/bulk-update-sample.png b/docs/.gitbook/assets/bulk-update-sample.png deleted file mode 100644 index be5f7b05d9..0000000000 Binary files a/docs/.gitbook/assets/bulk-update-sample.png and /dev/null differ diff --git a/docs/.gitbook/assets/bulk-update-script.png b/docs/.gitbook/assets/bulk-update-script.png deleted file mode 100644 index 265723daeb..0000000000 Binary files a/docs/.gitbook/assets/bulk-update-script.png and /dev/null differ diff --git a/docs/.gitbook/assets/ca-workflow-basic.png b/docs/.gitbook/assets/ca-workflow-basic.png deleted file mode 100644 index dba7415b84..0000000000 Binary files a/docs/.gitbook/assets/ca-workflow-basic.png and /dev/null differ diff --git a/docs/.gitbook/assets/ca-workflow-cd-add.png b/docs/.gitbook/assets/ca-workflow-cd-add.png deleted file mode 100644 index 8fbb834525..0000000000 Binary files a/docs/.gitbook/assets/ca-workflow-cd-add.png and /dev/null differ diff --git a/docs/.gitbook/assets/ca-workflow-cd-advanced.png b/docs/.gitbook/assets/ca-workflow-cd-advanced.png deleted file mode 100644 index f47dbb1d8b..0000000000 Binary files a/docs/.gitbook/assets/ca-workflow-cd-advanced.png and /dev/null differ diff --git a/docs/.gitbook/assets/ca-workflow-ci-advance.png b/docs/.gitbook/assets/ca-workflow-ci-advance.png deleted file mode 100644 index 3ab51735ee..0000000000 Binary files a/docs/.gitbook/assets/ca-workflow-ci-advance.png and /dev/null differ diff --git a/docs/.gitbook/assets/ca-workflow-ci-basic.png b/docs/.gitbook/assets/ca-workflow-ci-basic.png deleted file mode 100644 index c99c76f894..0000000000 Binary files a/docs/.gitbook/assets/ca-workflow-ci-basic.png and /dev/null differ diff --git a/docs/.gitbook/assets/ca-workflow-empty.png b/docs/.gitbook/assets/ca-workflow-empty.png deleted file mode 100644 index b9036301d0..0000000000 Binary files a/docs/.gitbook/assets/ca-workflow-empty.png and /dev/null differ diff --git a/docs/.gitbook/assets/ca-workflow-external.png b/docs/.gitbook/assets/ca-workflow-external.png deleted file mode 100644 index bed4e5d68f..0000000000 Binary files a/docs/.gitbook/assets/ca-workflow-external.png and /dev/null differ diff --git a/docs/.gitbook/assets/ca-workflow-linked.png b/docs/.gitbook/assets/ca-workflow-linked.png deleted file mode 100644 index 82a92d27eb..0000000000 Binary files a/docs/.gitbook/assets/ca-workflow-linked.png and /dev/null differ diff --git a/docs/.gitbook/assets/ca-workflow-update.gif b/docs/.gitbook/assets/ca-workflow-update.gif deleted file mode 100644 index bf8fb14244..0000000000 Binary files a/docs/.gitbook/assets/ca-workflow-update.gif and /dev/null differ diff --git a/docs/.gitbook/assets/ca-workflow-update.png b/docs/.gitbook/assets/ca-workflow-update.png deleted file mode 100644 index c713f52e72..0000000000 Binary files a/docs/.gitbook/assets/ca-workflow-update.png and /dev/null differ diff --git a/docs/.gitbook/assets/cd-deploy-console (1).jpg b/docs/.gitbook/assets/cd-deploy-console (1).jpg deleted file mode 100644 index 2548604f02..0000000000 Binary files a/docs/.gitbook/assets/cd-deploy-console (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/cd-deploy-console (2).jpg b/docs/.gitbook/assets/cd-deploy-console (2).jpg deleted file mode 100644 index 2548604f02..0000000000 Binary files a/docs/.gitbook/assets/cd-deploy-console (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/cd-deploy-console (3).jpg b/docs/.gitbook/assets/cd-deploy-console (3).jpg deleted file mode 100644 index 2548604f02..0000000000 Binary files a/docs/.gitbook/assets/cd-deploy-console (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/cd-deploy-console (4).jpg b/docs/.gitbook/assets/cd-deploy-console (4).jpg deleted file mode 100644 index 2548604f02..0000000000 Binary files a/docs/.gitbook/assets/cd-deploy-console (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/cd-deploy-console.jpg b/docs/.gitbook/assets/cd-deploy-console.jpg deleted file mode 100644 index 2548604f02..0000000000 Binary files a/docs/.gitbook/assets/cd-deploy-console.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/cd-pipeline-console (3) (1).png b/docs/.gitbook/assets/cd-pipeline-console (3) (1).png deleted file mode 100644 index 11b0cfac66..0000000000 Binary files a/docs/.gitbook/assets/cd-pipeline-console (3) (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/cd-pipeline-console (3) (2).png b/docs/.gitbook/assets/cd-pipeline-console (3) (2).png deleted file mode 100644 index 11b0cfac66..0000000000 Binary files a/docs/.gitbook/assets/cd-pipeline-console (3) (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/cd-pipeline-console (3) (3).png b/docs/.gitbook/assets/cd-pipeline-console (3) (3).png deleted file mode 100644 index 11b0cfac66..0000000000 Binary files a/docs/.gitbook/assets/cd-pipeline-console (3) (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/cd-pipeline-console (3) (4).png b/docs/.gitbook/assets/cd-pipeline-console (3) (4).png deleted file mode 100644 index 11b0cfac66..0000000000 Binary files a/docs/.gitbook/assets/cd-pipeline-console (3) (4).png and /dev/null differ diff --git a/docs/.gitbook/assets/cd-pipeline-console (3) (5).png b/docs/.gitbook/assets/cd-pipeline-console (3) (5).png deleted file mode 100644 index 11b0cfac66..0000000000 Binary files a/docs/.gitbook/assets/cd-pipeline-console (3) (5).png and /dev/null differ diff --git a/docs/.gitbook/assets/cd-pipeline-console (3) (6).png b/docs/.gitbook/assets/cd-pipeline-console (3) (6).png deleted file mode 100644 index 11b0cfac66..0000000000 Binary files a/docs/.gitbook/assets/cd-pipeline-console (3) (6).png and /dev/null differ diff --git a/docs/.gitbook/assets/cd-pipeline-console (3).png b/docs/.gitbook/assets/cd-pipeline-console (3).png deleted file mode 100644 index 11b0cfac66..0000000000 Binary files a/docs/.gitbook/assets/cd-pipeline-console (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/cd-pipeline-console.png b/docs/.gitbook/assets/cd-pipeline-console.png deleted file mode 100644 index 11b0cfac66..0000000000 Binary files a/docs/.gitbook/assets/cd-pipeline-console.png and /dev/null differ diff --git a/docs/.gitbook/assets/cd_post_build (3) (1).jpg b/docs/.gitbook/assets/cd_post_build (3) (1).jpg deleted file mode 100644 index 7380924d8f..0000000000 Binary files a/docs/.gitbook/assets/cd_post_build (3) (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/cd_post_build (3) (2).jpg b/docs/.gitbook/assets/cd_post_build (3) (2).jpg deleted file mode 100644 index 7380924d8f..0000000000 Binary files a/docs/.gitbook/assets/cd_post_build (3) (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/cd_post_build (3) (3).jpg b/docs/.gitbook/assets/cd_post_build (3) (3).jpg deleted file mode 100644 index 7380924d8f..0000000000 Binary files a/docs/.gitbook/assets/cd_post_build (3) (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/cd_post_build (3) (4).jpg b/docs/.gitbook/assets/cd_post_build (3) (4).jpg deleted file mode 100644 index 7380924d8f..0000000000 Binary files a/docs/.gitbook/assets/cd_post_build (3) (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/cd_post_build (3) (5).jpg b/docs/.gitbook/assets/cd_post_build (3) (5).jpg deleted file mode 100644 index 7380924d8f..0000000000 Binary files a/docs/.gitbook/assets/cd_post_build (3) (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/cd_post_build (3) (6).jpg b/docs/.gitbook/assets/cd_post_build (3) (6).jpg deleted file mode 100644 index 7380924d8f..0000000000 Binary files a/docs/.gitbook/assets/cd_post_build (3) (6).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/cd_post_build (3).jpg b/docs/.gitbook/assets/cd_post_build (3).jpg deleted file mode 100644 index 7380924d8f..0000000000 Binary files a/docs/.gitbook/assets/cd_post_build (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/cd_post_build.jpg b/docs/.gitbook/assets/cd_post_build.jpg deleted file mode 100644 index 7380924d8f..0000000000 Binary files a/docs/.gitbook/assets/cd_post_build.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/cd_pre_build (2) (2) (1).jpg b/docs/.gitbook/assets/cd_pre_build (2) (2) (1).jpg deleted file mode 100644 index f3972fde8f..0000000000 Binary files a/docs/.gitbook/assets/cd_pre_build (2) (2) (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/cd_pre_build (2) (2) (2).jpg b/docs/.gitbook/assets/cd_pre_build (2) (2) (2).jpg deleted file mode 100644 index f3972fde8f..0000000000 Binary files a/docs/.gitbook/assets/cd_pre_build (2) (2) (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/cd_pre_build (2) (2) (3).jpg b/docs/.gitbook/assets/cd_pre_build (2) (2) (3).jpg deleted file mode 100644 index f3972fde8f..0000000000 Binary files a/docs/.gitbook/assets/cd_pre_build (2) (2) (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/cd_pre_build (2) (2) (4).jpg b/docs/.gitbook/assets/cd_pre_build (2) (2) (4).jpg deleted file mode 100644 index f3972fde8f..0000000000 Binary files a/docs/.gitbook/assets/cd_pre_build (2) (2) (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/cd_pre_build (2) (2).jpg b/docs/.gitbook/assets/cd_pre_build (2) (2).jpg deleted file mode 100644 index f3972fde8f..0000000000 Binary files a/docs/.gitbook/assets/cd_pre_build (2) (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/cd_pre_build (2).jpg b/docs/.gitbook/assets/cd_pre_build (2).jpg deleted file mode 100644 index f3972fde8f..0000000000 Binary files a/docs/.gitbook/assets/cd_pre_build (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/cdedit2.jpg b/docs/.gitbook/assets/cdedit2.jpg deleted file mode 100644 index 1272fe6da6..0000000000 Binary files a/docs/.gitbook/assets/cdedit2.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/chart-group-1.png b/docs/.gitbook/assets/chart-group-1.png deleted file mode 100644 index 8c24445224..0000000000 Binary files a/docs/.gitbook/assets/chart-group-1.png and /dev/null differ diff --git a/docs/.gitbook/assets/chart-group-2.png b/docs/.gitbook/assets/chart-group-2.png deleted file mode 100644 index 53a2fea60f..0000000000 Binary files a/docs/.gitbook/assets/chart-group-2.png and /dev/null differ diff --git a/docs/.gitbook/assets/chart-group-3.png b/docs/.gitbook/assets/chart-group-3.png deleted file mode 100644 index 698d17c6fd..0000000000 Binary files a/docs/.gitbook/assets/chart-group-3.png and /dev/null differ diff --git a/docs/.gitbook/assets/chart-group-4.png b/docs/.gitbook/assets/chart-group-4.png deleted file mode 100644 index 81d85c0d5c..0000000000 Binary files a/docs/.gitbook/assets/chart-group-4.png and /dev/null differ diff --git a/docs/.gitbook/assets/chart-group-5.png b/docs/.gitbook/assets/chart-group-5.png deleted file mode 100644 index cb92f66c86..0000000000 Binary files a/docs/.gitbook/assets/chart-group-5.png and /dev/null differ diff --git a/docs/.gitbook/assets/chart-group-6.png b/docs/.gitbook/assets/chart-group-6.png deleted file mode 100644 index 16fb123821..0000000000 Binary files a/docs/.gitbook/assets/chart-group-6.png and /dev/null differ diff --git a/docs/.gitbook/assets/chart21 (1).jpg b/docs/.gitbook/assets/chart21 (1).jpg deleted file mode 100644 index 31194cb889..0000000000 Binary files a/docs/.gitbook/assets/chart21 (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/chart21 (2).jpg b/docs/.gitbook/assets/chart21 (2).jpg deleted file mode 100644 index 31194cb889..0000000000 Binary files a/docs/.gitbook/assets/chart21 (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/chart21 (3).jpg b/docs/.gitbook/assets/chart21 (3).jpg deleted file mode 100644 index 31194cb889..0000000000 Binary files a/docs/.gitbook/assets/chart21 (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/chart21 (4).jpg b/docs/.gitbook/assets/chart21 (4).jpg deleted file mode 100644 index 31194cb889..0000000000 Binary files a/docs/.gitbook/assets/chart21 (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/chart21 (5).jpg b/docs/.gitbook/assets/chart21 (5).jpg deleted file mode 100644 index 31194cb889..0000000000 Binary files a/docs/.gitbook/assets/chart21 (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/chart21 (6).jpg b/docs/.gitbook/assets/chart21 (6).jpg deleted file mode 100644 index 31194cb889..0000000000 Binary files a/docs/.gitbook/assets/chart21 (6).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/chart21.jpg b/docs/.gitbook/assets/chart21.jpg deleted file mode 100644 index 31194cb889..0000000000 Binary files a/docs/.gitbook/assets/chart21.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/chart3 (1).jpg b/docs/.gitbook/assets/chart3 (1).jpg deleted file mode 100644 index 4fb54082f5..0000000000 Binary files a/docs/.gitbook/assets/chart3 (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/chart3 (2) (1).jpg b/docs/.gitbook/assets/chart3 (2) (1).jpg deleted file mode 100644 index 4fb54082f5..0000000000 Binary files a/docs/.gitbook/assets/chart3 (2) (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/chart3 (2) (2).jpg b/docs/.gitbook/assets/chart3 (2) (2).jpg deleted file mode 100644 index 4fb54082f5..0000000000 Binary files a/docs/.gitbook/assets/chart3 (2) (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/chart3 (2) (3).jpg b/docs/.gitbook/assets/chart3 (2) (3).jpg deleted file mode 100644 index 4fb54082f5..0000000000 Binary files a/docs/.gitbook/assets/chart3 (2) (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/chart3 (2) (4).jpg b/docs/.gitbook/assets/chart3 (2) (4).jpg deleted file mode 100644 index 4fb54082f5..0000000000 Binary files a/docs/.gitbook/assets/chart3 (2) (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/chart3 (2) (5).jpg b/docs/.gitbook/assets/chart3 (2) (5).jpg deleted file mode 100644 index 4fb54082f5..0000000000 Binary files a/docs/.gitbook/assets/chart3 (2) (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/chart3 (2).jpg b/docs/.gitbook/assets/chart3 (2).jpg deleted file mode 100644 index 4fb54082f5..0000000000 Binary files a/docs/.gitbook/assets/chart3 (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/chart4o (2) (1).jpg b/docs/.gitbook/assets/chart4o (2) (1).jpg deleted file mode 100644 index b8e7c616fb..0000000000 Binary files a/docs/.gitbook/assets/chart4o (2) (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/chart4o (2) (2).jpg b/docs/.gitbook/assets/chart4o (2) (2).jpg deleted file mode 100644 index b8e7c616fb..0000000000 Binary files a/docs/.gitbook/assets/chart4o (2) (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/chart4o (2) (3).jpg b/docs/.gitbook/assets/chart4o (2) (3).jpg deleted file mode 100644 index b8e7c616fb..0000000000 Binary files a/docs/.gitbook/assets/chart4o (2) (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/chart4o (2) (4).jpg b/docs/.gitbook/assets/chart4o (2) (4).jpg deleted file mode 100644 index b8e7c616fb..0000000000 Binary files a/docs/.gitbook/assets/chart4o (2) (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/chart4o (2) (5).jpg b/docs/.gitbook/assets/chart4o (2) (5).jpg deleted file mode 100644 index b8e7c616fb..0000000000 Binary files a/docs/.gitbook/assets/chart4o (2) (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/chart4o (2).jpg b/docs/.gitbook/assets/chart4o (2).jpg deleted file mode 100644 index b8e7c616fb..0000000000 Binary files a/docs/.gitbook/assets/chart4o (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/chart4o.jpg b/docs/.gitbook/assets/chart4o.jpg deleted file mode 100644 index b8e7c616fb..0000000000 Binary files a/docs/.gitbook/assets/chart4o.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/charts-1.png b/docs/.gitbook/assets/charts-1.png deleted file mode 100644 index f46571d917..0000000000 Binary files a/docs/.gitbook/assets/charts-1.png and /dev/null differ diff --git a/docs/.gitbook/assets/charts-2.png b/docs/.gitbook/assets/charts-2.png deleted file mode 100644 index 3d119fdb23..0000000000 Binary files a/docs/.gitbook/assets/charts-2.png and /dev/null differ diff --git a/docs/.gitbook/assets/charts-3.png b/docs/.gitbook/assets/charts-3.png deleted file mode 100644 index c385512b1a..0000000000 Binary files a/docs/.gitbook/assets/charts-3.png and /dev/null differ diff --git a/docs/.gitbook/assets/charts-4.png b/docs/.gitbook/assets/charts-4.png deleted file mode 100644 index fd1f5a7a59..0000000000 Binary files a/docs/.gitbook/assets/charts-4.png and /dev/null differ diff --git a/docs/.gitbook/assets/charts-5.png b/docs/.gitbook/assets/charts-5.png deleted file mode 100644 index 3b02772948..0000000000 Binary files a/docs/.gitbook/assets/charts-5.png and /dev/null differ diff --git a/docs/.gitbook/assets/charts-6.png b/docs/.gitbook/assets/charts-6.png deleted file mode 100644 index 8a4c3e4803..0000000000 Binary files a/docs/.gitbook/assets/charts-6.png and /dev/null differ diff --git a/docs/.gitbook/assets/charts-7.png b/docs/.gitbook/assets/charts-7.png deleted file mode 100644 index ca23b3fb38..0000000000 Binary files a/docs/.gitbook/assets/charts-7.png and /dev/null differ diff --git a/docs/.gitbook/assets/charts-8.png b/docs/.gitbook/assets/charts-8.png deleted file mode 100644 index 8dcbc6e8b7..0000000000 Binary files a/docs/.gitbook/assets/charts-8.png and /dev/null differ diff --git a/docs/.gitbook/assets/ci-build-histroy (1).jpg b/docs/.gitbook/assets/ci-build-histroy (1).jpg deleted file mode 100644 index c32a6648da..0000000000 Binary files a/docs/.gitbook/assets/ci-build-histroy (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/ci-build-histroy (2).jpg b/docs/.gitbook/assets/ci-build-histroy (2).jpg deleted file mode 100644 index c32a6648da..0000000000 Binary files a/docs/.gitbook/assets/ci-build-histroy (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/ci-build-histroy (3).jpg b/docs/.gitbook/assets/ci-build-histroy (3).jpg deleted file mode 100644 index c32a6648da..0000000000 Binary files a/docs/.gitbook/assets/ci-build-histroy (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/ci-build-histroy (4).jpg b/docs/.gitbook/assets/ci-build-histroy (4).jpg deleted file mode 100644 index c32a6648da..0000000000 Binary files a/docs/.gitbook/assets/ci-build-histroy (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/ci-build-histroy (5).jpg b/docs/.gitbook/assets/ci-build-histroy (5).jpg deleted file mode 100644 index c32a6648da..0000000000 Binary files a/docs/.gitbook/assets/ci-build-histroy (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/ci-build-histroy-artifact (1).jpg b/docs/.gitbook/assets/ci-build-histroy-artifact (1).jpg deleted file mode 100644 index 0fd1507763..0000000000 Binary files a/docs/.gitbook/assets/ci-build-histroy-artifact (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/ci-build-histroy-artifact (2).jpg b/docs/.gitbook/assets/ci-build-histroy-artifact (2).jpg deleted file mode 100644 index 0fd1507763..0000000000 Binary files a/docs/.gitbook/assets/ci-build-histroy-artifact (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/ci-build-histroy-artifact (3).jpg b/docs/.gitbook/assets/ci-build-histroy-artifact (3).jpg deleted file mode 100644 index 0fd1507763..0000000000 Binary files a/docs/.gitbook/assets/ci-build-histroy-artifact (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/ci-build-histroy-artifact (4).jpg b/docs/.gitbook/assets/ci-build-histroy-artifact (4).jpg deleted file mode 100644 index 0fd1507763..0000000000 Binary files a/docs/.gitbook/assets/ci-build-histroy-artifact (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/ci-build-histroy-artifact (5).jpg b/docs/.gitbook/assets/ci-build-histroy-artifact (5).jpg deleted file mode 100644 index 0fd1507763..0000000000 Binary files a/docs/.gitbook/assets/ci-build-histroy-artifact (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/ci-build-histroy-artifact.jpg b/docs/.gitbook/assets/ci-build-histroy-artifact.jpg deleted file mode 100644 index 0fd1507763..0000000000 Binary files a/docs/.gitbook/assets/ci-build-histroy-artifact.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/ci-build-histroy-source-code (1).jpg b/docs/.gitbook/assets/ci-build-histroy-source-code (1).jpg deleted file mode 100644 index 8e41509859..0000000000 Binary files a/docs/.gitbook/assets/ci-build-histroy-source-code (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/ci-build-histroy-source-code (2).jpg b/docs/.gitbook/assets/ci-build-histroy-source-code (2).jpg deleted file mode 100644 index 8e41509859..0000000000 Binary files a/docs/.gitbook/assets/ci-build-histroy-source-code (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/ci-build-histroy-source-code (3).jpg b/docs/.gitbook/assets/ci-build-histroy-source-code (3).jpg deleted file mode 100644 index 8e41509859..0000000000 Binary files a/docs/.gitbook/assets/ci-build-histroy-source-code (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/ci-build-histroy-source-code.jpg b/docs/.gitbook/assets/ci-build-histroy-source-code.jpg deleted file mode 100644 index 8e41509859..0000000000 Binary files a/docs/.gitbook/assets/ci-build-histroy-source-code.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/ci-build-histroy.jpg b/docs/.gitbook/assets/ci-build-histroy.jpg deleted file mode 100644 index c32a6648da..0000000000 Binary files a/docs/.gitbook/assets/ci-build-histroy.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/ci-pipeline-1.png b/docs/.gitbook/assets/ci-pipeline-1.png deleted file mode 100644 index e4a8c93e62..0000000000 Binary files a/docs/.gitbook/assets/ci-pipeline-1.png and /dev/null differ diff --git a/docs/.gitbook/assets/ci-pipeline-2.png b/docs/.gitbook/assets/ci-pipeline-2.png deleted file mode 100644 index 15bf01ddcc..0000000000 Binary files a/docs/.gitbook/assets/ci-pipeline-2.png and /dev/null differ diff --git a/docs/.gitbook/assets/ci-pipeline-3.png b/docs/.gitbook/assets/ci-pipeline-3.png deleted file mode 100644 index 91e8e892bd..0000000000 Binary files a/docs/.gitbook/assets/ci-pipeline-3.png and /dev/null differ diff --git a/docs/.gitbook/assets/ci-pipeline-4.png b/docs/.gitbook/assets/ci-pipeline-4.png deleted file mode 100644 index 00025c5eeb..0000000000 Binary files a/docs/.gitbook/assets/ci-pipeline-4.png and /dev/null differ diff --git a/docs/.gitbook/assets/ci-pipeline-5.png b/docs/.gitbook/assets/ci-pipeline-5.png deleted file mode 100644 index 85ae7d9c51..0000000000 Binary files a/docs/.gitbook/assets/ci-pipeline-5.png and /dev/null differ diff --git a/docs/.gitbook/assets/ci-pipeline-6.png b/docs/.gitbook/assets/ci-pipeline-6.png deleted file mode 100644 index 8f6164c6da..0000000000 Binary files a/docs/.gitbook/assets/ci-pipeline-6.png and /dev/null differ diff --git a/docs/.gitbook/assets/ci-pipeline-7.png b/docs/.gitbook/assets/ci-pipeline-7.png deleted file mode 100644 index 693743682f..0000000000 Binary files a/docs/.gitbook/assets/ci-pipeline-7.png and /dev/null differ diff --git a/docs/.gitbook/assets/ci-pipeline-8.png b/docs/.gitbook/assets/ci-pipeline-8.png deleted file mode 100644 index 13831f44ea..0000000000 Binary files a/docs/.gitbook/assets/ci-pipeline-8.png and /dev/null differ diff --git a/docs/.gitbook/assets/ci-pipeline-9.png b/docs/.gitbook/assets/ci-pipeline-9.png deleted file mode 100644 index fd3afbdce9..0000000000 Binary files a/docs/.gitbook/assets/ci-pipeline-9.png and /dev/null differ diff --git a/docs/.gitbook/assets/clone_app1 (2) (1).jpg b/docs/.gitbook/assets/clone_app1 (2) (1).jpg deleted file mode 100644 index a2fa304d95..0000000000 Binary files a/docs/.gitbook/assets/clone_app1 (2) (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/clone_app1 (2) (2).jpg b/docs/.gitbook/assets/clone_app1 (2) (2).jpg deleted file mode 100644 index a2fa304d95..0000000000 Binary files a/docs/.gitbook/assets/clone_app1 (2) (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/clone_app1 (2) (3).jpg b/docs/.gitbook/assets/clone_app1 (2) (3).jpg deleted file mode 100644 index a2fa304d95..0000000000 Binary files a/docs/.gitbook/assets/clone_app1 (2) (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/clone_app1 (2) (4).jpg b/docs/.gitbook/assets/clone_app1 (2) (4).jpg deleted file mode 100644 index a2fa304d95..0000000000 Binary files a/docs/.gitbook/assets/clone_app1 (2) (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/clone_app1 (2) (5).jpg b/docs/.gitbook/assets/clone_app1 (2) (5).jpg deleted file mode 100644 index a2fa304d95..0000000000 Binary files a/docs/.gitbook/assets/clone_app1 (2) (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/clone_app1 (2).jpg b/docs/.gitbook/assets/clone_app1 (2).jpg deleted file mode 100644 index a2fa304d95..0000000000 Binary files a/docs/.gitbook/assets/clone_app1 (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/clone_app1.jpg b/docs/.gitbook/assets/clone_app1.jpg deleted file mode 100644 index a2fa304d95..0000000000 Binary files a/docs/.gitbook/assets/clone_app1.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/cluster_gc1 (3) (1).png b/docs/.gitbook/assets/cluster_gc1 (3) (1).png deleted file mode 100644 index b3e2392848..0000000000 Binary files a/docs/.gitbook/assets/cluster_gc1 (3) (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/cluster_gc1 (3) (2).png b/docs/.gitbook/assets/cluster_gc1 (3) (2).png deleted file mode 100644 index b3e2392848..0000000000 Binary files a/docs/.gitbook/assets/cluster_gc1 (3) (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/cluster_gc1 (3) (3).png b/docs/.gitbook/assets/cluster_gc1 (3) (3).png deleted file mode 100644 index b3e2392848..0000000000 Binary files a/docs/.gitbook/assets/cluster_gc1 (3) (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/cluster_gc1 (3) (4).png b/docs/.gitbook/assets/cluster_gc1 (3) (4).png deleted file mode 100644 index b3e2392848..0000000000 Binary files a/docs/.gitbook/assets/cluster_gc1 (3) (4).png and /dev/null differ diff --git a/docs/.gitbook/assets/cluster_gc1 (3) (5).png b/docs/.gitbook/assets/cluster_gc1 (3) (5).png deleted file mode 100644 index b3e2392848..0000000000 Binary files a/docs/.gitbook/assets/cluster_gc1 (3) (5).png and /dev/null differ diff --git a/docs/.gitbook/assets/cluster_gc1 (3) (6).png b/docs/.gitbook/assets/cluster_gc1 (3) (6).png deleted file mode 100644 index b3e2392848..0000000000 Binary files a/docs/.gitbook/assets/cluster_gc1 (3) (6).png and /dev/null differ diff --git a/docs/.gitbook/assets/cluster_gc1 (3).png b/docs/.gitbook/assets/cluster_gc1 (3).png deleted file mode 100644 index b3e2392848..0000000000 Binary files a/docs/.gitbook/assets/cluster_gc1 (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/cluster_gc1.png b/docs/.gitbook/assets/cluster_gc1.png deleted file mode 100644 index b3e2392848..0000000000 Binary files a/docs/.gitbook/assets/cluster_gc1.png and /dev/null differ diff --git a/docs/.gitbook/assets/cluster_gc2 (3) (1).png b/docs/.gitbook/assets/cluster_gc2 (3) (1).png deleted file mode 100644 index d60071cfd5..0000000000 Binary files a/docs/.gitbook/assets/cluster_gc2 (3) (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/cluster_gc2 (3) (2).png b/docs/.gitbook/assets/cluster_gc2 (3) (2).png deleted file mode 100644 index d60071cfd5..0000000000 Binary files a/docs/.gitbook/assets/cluster_gc2 (3) (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/cluster_gc2 (3) (3).png b/docs/.gitbook/assets/cluster_gc2 (3) (3).png deleted file mode 100644 index d60071cfd5..0000000000 Binary files a/docs/.gitbook/assets/cluster_gc2 (3) (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/cluster_gc2 (3) (4).png b/docs/.gitbook/assets/cluster_gc2 (3) (4).png deleted file mode 100644 index d60071cfd5..0000000000 Binary files a/docs/.gitbook/assets/cluster_gc2 (3) (4).png and /dev/null differ diff --git a/docs/.gitbook/assets/cluster_gc2 (3).png b/docs/.gitbook/assets/cluster_gc2 (3).png deleted file mode 100644 index d60071cfd5..0000000000 Binary files a/docs/.gitbook/assets/cluster_gc2 (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/cluster_gc3 (3) (1).png b/docs/.gitbook/assets/cluster_gc3 (3) (1).png deleted file mode 100644 index 7e95887c89..0000000000 Binary files a/docs/.gitbook/assets/cluster_gc3 (3) (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/cluster_gc3 (3) (2).png b/docs/.gitbook/assets/cluster_gc3 (3) (2).png deleted file mode 100644 index 7e95887c89..0000000000 Binary files a/docs/.gitbook/assets/cluster_gc3 (3) (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/cluster_gc3 (3) (3).png b/docs/.gitbook/assets/cluster_gc3 (3) (3).png deleted file mode 100644 index 7e95887c89..0000000000 Binary files a/docs/.gitbook/assets/cluster_gc3 (3) (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/cluster_gc3 (3) (4).png b/docs/.gitbook/assets/cluster_gc3 (3) (4).png deleted file mode 100644 index 7e95887c89..0000000000 Binary files a/docs/.gitbook/assets/cluster_gc3 (3) (4).png and /dev/null differ diff --git a/docs/.gitbook/assets/cluster_gc3 (3).png b/docs/.gitbook/assets/cluster_gc3 (3).png deleted file mode 100644 index 7e95887c89..0000000000 Binary files a/docs/.gitbook/assets/cluster_gc3 (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/cluster_gc5.png b/docs/.gitbook/assets/cluster_gc5.png deleted file mode 100644 index 840e0c2b6a..0000000000 Binary files a/docs/.gitbook/assets/cluster_gc5.png and /dev/null differ diff --git a/docs/.gitbook/assets/config1 (2).jpg b/docs/.gitbook/assets/config1 (2).jpg deleted file mode 100644 index bf227d0ed2..0000000000 Binary files a/docs/.gitbook/assets/config1 (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/config1 (3) (1).jpg b/docs/.gitbook/assets/config1 (3) (1).jpg deleted file mode 100644 index bf227d0ed2..0000000000 Binary files a/docs/.gitbook/assets/config1 (3) (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/config1 (3) (2).jpg b/docs/.gitbook/assets/config1 (3) (2).jpg deleted file mode 100644 index bf227d0ed2..0000000000 Binary files a/docs/.gitbook/assets/config1 (3) (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/config1 (3) (3).jpg b/docs/.gitbook/assets/config1 (3) (3).jpg deleted file mode 100644 index bf227d0ed2..0000000000 Binary files a/docs/.gitbook/assets/config1 (3) (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/config1 (3) (4).jpg b/docs/.gitbook/assets/config1 (3) (4).jpg deleted file mode 100644 index bf227d0ed2..0000000000 Binary files a/docs/.gitbook/assets/config1 (3) (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/config1 (3) (5).jpg b/docs/.gitbook/assets/config1 (3) (5).jpg deleted file mode 100644 index bf227d0ed2..0000000000 Binary files a/docs/.gitbook/assets/config1 (3) (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/config1 (3) (6).jpg b/docs/.gitbook/assets/config1 (3) (6).jpg deleted file mode 100644 index bf227d0ed2..0000000000 Binary files a/docs/.gitbook/assets/config1 (3) (6).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/config1 (3).jpg b/docs/.gitbook/assets/config1 (3).jpg deleted file mode 100644 index bf227d0ed2..0000000000 Binary files a/docs/.gitbook/assets/config1 (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/config4 (3) (1).jpg b/docs/.gitbook/assets/config4 (3) (1).jpg deleted file mode 100644 index 8f289a86b8..0000000000 Binary files a/docs/.gitbook/assets/config4 (3) (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/config4 (3) (2).jpg b/docs/.gitbook/assets/config4 (3) (2).jpg deleted file mode 100644 index 8f289a86b8..0000000000 Binary files a/docs/.gitbook/assets/config4 (3) (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/config4 (3) (3).jpg b/docs/.gitbook/assets/config4 (3) (3).jpg deleted file mode 100644 index 8f289a86b8..0000000000 Binary files a/docs/.gitbook/assets/config4 (3) (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/config4 (3) (4).jpg b/docs/.gitbook/assets/config4 (3) (4).jpg deleted file mode 100644 index 8f289a86b8..0000000000 Binary files a/docs/.gitbook/assets/config4 (3) (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/config4 (3).jpg b/docs/.gitbook/assets/config4 (3).jpg deleted file mode 100644 index 8f289a86b8..0000000000 Binary files a/docs/.gitbook/assets/config4 (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/configmap-filepermission-1.png b/docs/.gitbook/assets/configmap-filepermission-1.png deleted file mode 100644 index b41f25ffe1..0000000000 Binary files a/docs/.gitbook/assets/configmap-filepermission-1.png and /dev/null differ diff --git a/docs/.gitbook/assets/configmap-mountpath-1.png b/docs/.gitbook/assets/configmap-mountpath-1.png deleted file mode 100644 index f31a34906d..0000000000 Binary files a/docs/.gitbook/assets/configmap-mountpath-1.png and /dev/null differ diff --git a/docs/.gitbook/assets/configmap-yaml (3) (2).jpg b/docs/.gitbook/assets/configmap-yaml (3) (2).jpg deleted file mode 100644 index fcb8d1a7e4..0000000000 Binary files a/docs/.gitbook/assets/configmap-yaml (3) (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/configmap-yaml (3) (5) (1).jpg b/docs/.gitbook/assets/configmap-yaml (3) (5) (1).jpg deleted file mode 100644 index fcb8d1a7e4..0000000000 Binary files a/docs/.gitbook/assets/configmap-yaml (3) (5) (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/configmap-yaml (3) (5) (10).jpg b/docs/.gitbook/assets/configmap-yaml (3) (5) (10).jpg deleted file mode 100644 index fcb8d1a7e4..0000000000 Binary files a/docs/.gitbook/assets/configmap-yaml (3) (5) (10).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/configmap-yaml (3) (5) (2).jpg b/docs/.gitbook/assets/configmap-yaml (3) (5) (2).jpg deleted file mode 100644 index fcb8d1a7e4..0000000000 Binary files a/docs/.gitbook/assets/configmap-yaml (3) (5) (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/configmap-yaml (3) (5) (3).jpg b/docs/.gitbook/assets/configmap-yaml (3) (5) (3).jpg deleted file mode 100644 index fcb8d1a7e4..0000000000 Binary files a/docs/.gitbook/assets/configmap-yaml (3) (5) (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/configmap-yaml (3) (5) (4).jpg b/docs/.gitbook/assets/configmap-yaml (3) (5) (4).jpg deleted file mode 100644 index fcb8d1a7e4..0000000000 Binary files a/docs/.gitbook/assets/configmap-yaml (3) (5) (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/configmap-yaml (3) (5) (5).jpg b/docs/.gitbook/assets/configmap-yaml (3) (5) (5).jpg deleted file mode 100644 index fcb8d1a7e4..0000000000 Binary files a/docs/.gitbook/assets/configmap-yaml (3) (5) (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/configmap-yaml (3) (5) (6).jpg b/docs/.gitbook/assets/configmap-yaml (3) (5) (6).jpg deleted file mode 100644 index fcb8d1a7e4..0000000000 Binary files a/docs/.gitbook/assets/configmap-yaml (3) (5) (6).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/configmap-yaml (3) (5) (7).jpg b/docs/.gitbook/assets/configmap-yaml (3) (5) (7).jpg deleted file mode 100644 index fcb8d1a7e4..0000000000 Binary files a/docs/.gitbook/assets/configmap-yaml (3) (5) (7).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/configmap-yaml (3) (5) (8).jpg b/docs/.gitbook/assets/configmap-yaml (3) (5) (8).jpg deleted file mode 100644 index fcb8d1a7e4..0000000000 Binary files a/docs/.gitbook/assets/configmap-yaml (3) (5) (8).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/configmap-yaml (3) (5) (9).jpg b/docs/.gitbook/assets/configmap-yaml (3) (5) (9).jpg deleted file mode 100644 index fcb8d1a7e4..0000000000 Binary files a/docs/.gitbook/assets/configmap-yaml (3) (5) (9).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/configmap-yaml (3) (5).jpg b/docs/.gitbook/assets/configmap-yaml (3) (5).jpg deleted file mode 100644 index fcb8d1a7e4..0000000000 Binary files a/docs/.gitbook/assets/configmap-yaml (3) (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/configmap-yaml (3).jpg b/docs/.gitbook/assets/configmap-yaml (3).jpg deleted file mode 100644 index fcb8d1a7e4..0000000000 Binary files a/docs/.gitbook/assets/configmap-yaml (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/configure-env (1).jpg b/docs/.gitbook/assets/configure-env (1).jpg deleted file mode 100644 index e7c439402d..0000000000 Binary files a/docs/.gitbook/assets/configure-env (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/configure-env (2).jpg b/docs/.gitbook/assets/configure-env (2).jpg deleted file mode 100644 index e7c439402d..0000000000 Binary files a/docs/.gitbook/assets/configure-env (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/configure-env (3).jpg b/docs/.gitbook/assets/configure-env (3).jpg deleted file mode 100644 index e7c439402d..0000000000 Binary files a/docs/.gitbook/assets/configure-env (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/configure-env (4).jpg b/docs/.gitbook/assets/configure-env (4).jpg deleted file mode 100644 index e7c439402d..0000000000 Binary files a/docs/.gitbook/assets/configure-env (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/configure-env (5).jpg b/docs/.gitbook/assets/configure-env (5).jpg deleted file mode 100644 index e7c439402d..0000000000 Binary files a/docs/.gitbook/assets/configure-env (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/configure-env.jpg b/docs/.gitbook/assets/configure-env.jpg deleted file mode 100644 index e7c439402d..0000000000 Binary files a/docs/.gitbook/assets/configure-env.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/configure-secrets (1) (2) (1).jpg b/docs/.gitbook/assets/configure-secrets (1) (2) (1).jpg deleted file mode 100644 index 0be7c5f02f..0000000000 Binary files a/docs/.gitbook/assets/configure-secrets (1) (2) (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/configure-secrets (1) (2) (2).jpg b/docs/.gitbook/assets/configure-secrets (1) (2) (2).jpg deleted file mode 100644 index 0be7c5f02f..0000000000 Binary files a/docs/.gitbook/assets/configure-secrets (1) (2) (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/configure-secrets (1) (2) (3).jpg b/docs/.gitbook/assets/configure-secrets (1) (2) (3).jpg deleted file mode 100644 index 0be7c5f02f..0000000000 Binary files a/docs/.gitbook/assets/configure-secrets (1) (2) (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/configure-secrets (1) (2) (4).jpg b/docs/.gitbook/assets/configure-secrets (1) (2) (4).jpg deleted file mode 100644 index 0be7c5f02f..0000000000 Binary files a/docs/.gitbook/assets/configure-secrets (1) (2) (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/configure-secrets (1) (2).jpg b/docs/.gitbook/assets/configure-secrets (1) (2).jpg deleted file mode 100644 index 0be7c5f02f..0000000000 Binary files a/docs/.gitbook/assets/configure-secrets (1) (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/configuring-cd-pipeline (1).png b/docs/.gitbook/assets/configuring-cd-pipeline (1).png deleted file mode 100644 index 662dc14629..0000000000 Binary files a/docs/.gitbook/assets/configuring-cd-pipeline (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/configuring-cd-pipeline (2).png b/docs/.gitbook/assets/configuring-cd-pipeline (2).png deleted file mode 100644 index 662dc14629..0000000000 Binary files a/docs/.gitbook/assets/configuring-cd-pipeline (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/configuring-cd-pipeline (3).png b/docs/.gitbook/assets/configuring-cd-pipeline (3).png deleted file mode 100644 index 662dc14629..0000000000 Binary files a/docs/.gitbook/assets/configuring-cd-pipeline (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/configuring-cd-pipeline (4).png b/docs/.gitbook/assets/configuring-cd-pipeline (4).png deleted file mode 100644 index 662dc14629..0000000000 Binary files a/docs/.gitbook/assets/configuring-cd-pipeline (4).png and /dev/null differ diff --git a/docs/.gitbook/assets/configuring-cd-pipeline (5).png b/docs/.gitbook/assets/configuring-cd-pipeline (5).png deleted file mode 100644 index 662dc14629..0000000000 Binary files a/docs/.gitbook/assets/configuring-cd-pipeline (5).png and /dev/null differ diff --git a/docs/.gitbook/assets/configuring-cd-pipeline (6).png b/docs/.gitbook/assets/configuring-cd-pipeline (6).png deleted file mode 100644 index 662dc14629..0000000000 Binary files a/docs/.gitbook/assets/configuring-cd-pipeline (6).png and /dev/null differ diff --git a/docs/.gitbook/assets/configuring-cd-pipeline (7).png b/docs/.gitbook/assets/configuring-cd-pipeline (7).png deleted file mode 100644 index 662dc14629..0000000000 Binary files a/docs/.gitbook/assets/configuring-cd-pipeline (7).png and /dev/null differ diff --git a/docs/.gitbook/assets/configuring-cd-pipeline.png b/docs/.gitbook/assets/configuring-cd-pipeline.png deleted file mode 100644 index 662dc14629..0000000000 Binary files a/docs/.gitbook/assets/configuring-cd-pipeline.png and /dev/null differ diff --git a/docs/.gitbook/assets/create-app-git-account.gif b/docs/.gitbook/assets/create-app-git-account.gif deleted file mode 100644 index 522392a78d..0000000000 Binary files a/docs/.gitbook/assets/create-app-git-account.gif and /dev/null differ diff --git a/docs/.gitbook/assets/create-app-git-save.png b/docs/.gitbook/assets/create-app-git-save.png deleted file mode 100644 index bc44b602d6..0000000000 Binary files a/docs/.gitbook/assets/create-app-git-save.png and /dev/null differ diff --git a/docs/.gitbook/assets/create-app-git-url.png b/docs/.gitbook/assets/create-app-git-url.png deleted file mode 100644 index 03239fb6e3..0000000000 Binary files a/docs/.gitbook/assets/create-app-git-url.png and /dev/null differ diff --git a/docs/.gitbook/assets/create-cd-pipeline (3) (3).png b/docs/.gitbook/assets/create-cd-pipeline (3) (3).png deleted file mode 100644 index 310866d015..0000000000 Binary files a/docs/.gitbook/assets/create-cd-pipeline (3) (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/create-cd-pipeline (3) (5) (1).png b/docs/.gitbook/assets/create-cd-pipeline (3) (5) (1).png deleted file mode 100644 index 310866d015..0000000000 Binary files a/docs/.gitbook/assets/create-cd-pipeline (3) (5) (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/create-cd-pipeline (3) (5) (2).png b/docs/.gitbook/assets/create-cd-pipeline (3) (5) (2).png deleted file mode 100644 index 310866d015..0000000000 Binary files a/docs/.gitbook/assets/create-cd-pipeline (3) (5) (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/create-cd-pipeline (3) (5) (3).png b/docs/.gitbook/assets/create-cd-pipeline (3) (5) (3).png deleted file mode 100644 index 310866d015..0000000000 Binary files a/docs/.gitbook/assets/create-cd-pipeline (3) (5) (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/create-cd-pipeline (3) (5) (4).png b/docs/.gitbook/assets/create-cd-pipeline (3) (5) (4).png deleted file mode 100644 index 310866d015..0000000000 Binary files a/docs/.gitbook/assets/create-cd-pipeline (3) (5) (4).png and /dev/null differ diff --git a/docs/.gitbook/assets/create-cd-pipeline (3) (5) (5).png b/docs/.gitbook/assets/create-cd-pipeline (3) (5) (5).png deleted file mode 100644 index 310866d015..0000000000 Binary files a/docs/.gitbook/assets/create-cd-pipeline (3) (5) (5).png and /dev/null differ diff --git a/docs/.gitbook/assets/create-cd-pipeline (3) (5) (6).png b/docs/.gitbook/assets/create-cd-pipeline (3) (5) (6).png deleted file mode 100644 index 310866d015..0000000000 Binary files a/docs/.gitbook/assets/create-cd-pipeline (3) (5) (6).png and /dev/null differ diff --git a/docs/.gitbook/assets/create-cd-pipeline (3) (5) (7).png b/docs/.gitbook/assets/create-cd-pipeline (3) (5) (7).png deleted file mode 100644 index 310866d015..0000000000 Binary files a/docs/.gitbook/assets/create-cd-pipeline (3) (5) (7).png and /dev/null differ diff --git a/docs/.gitbook/assets/create-cd-pipeline (3) (5) (8).png b/docs/.gitbook/assets/create-cd-pipeline (3) (5) (8).png deleted file mode 100644 index 310866d015..0000000000 Binary files a/docs/.gitbook/assets/create-cd-pipeline (3) (5) (8).png and /dev/null differ diff --git a/docs/.gitbook/assets/create-cd-pipeline (3) (5) (9).png b/docs/.gitbook/assets/create-cd-pipeline (3) (5) (9).png deleted file mode 100644 index 310866d015..0000000000 Binary files a/docs/.gitbook/assets/create-cd-pipeline (3) (5) (9).png and /dev/null differ diff --git a/docs/.gitbook/assets/create-cd-pipeline (3) (5).png b/docs/.gitbook/assets/create-cd-pipeline (3) (5).png deleted file mode 100644 index 310866d015..0000000000 Binary files a/docs/.gitbook/assets/create-cd-pipeline (3) (5).png and /dev/null differ diff --git a/docs/.gitbook/assets/create-cd-pipeline (3).png b/docs/.gitbook/assets/create-cd-pipeline (3).png deleted file mode 100644 index 310866d015..0000000000 Binary files a/docs/.gitbook/assets/create-cd-pipeline (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/create-docker.gif b/docs/.gitbook/assets/create-docker.gif deleted file mode 100644 index 4f2e88cc63..0000000000 Binary files a/docs/.gitbook/assets/create-docker.gif and /dev/null differ diff --git a/docs/.gitbook/assets/create-workflow (1).jpg b/docs/.gitbook/assets/create-workflow (1).jpg deleted file mode 100644 index 91edff4a29..0000000000 Binary files a/docs/.gitbook/assets/create-workflow (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/create-workflow (2).jpg b/docs/.gitbook/assets/create-workflow (2).jpg deleted file mode 100644 index 91edff4a29..0000000000 Binary files a/docs/.gitbook/assets/create-workflow (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/create-workflow (3).jpg b/docs/.gitbook/assets/create-workflow (3).jpg deleted file mode 100644 index 91edff4a29..0000000000 Binary files a/docs/.gitbook/assets/create-workflow (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/create-workflow (4).jpg b/docs/.gitbook/assets/create-workflow (4).jpg deleted file mode 100644 index 91edff4a29..0000000000 Binary files a/docs/.gitbook/assets/create-workflow (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/create-workflow (5).jpg b/docs/.gitbook/assets/create-workflow (5).jpg deleted file mode 100644 index 91edff4a29..0000000000 Binary files a/docs/.gitbook/assets/create-workflow (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/create-workflow (6).jpg b/docs/.gitbook/assets/create-workflow (6).jpg deleted file mode 100644 index 91edff4a29..0000000000 Binary files a/docs/.gitbook/assets/create-workflow (6).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/create-workflow.jpg b/docs/.gitbook/assets/create-workflow.jpg deleted file mode 100644 index 91edff4a29..0000000000 Binary files a/docs/.gitbook/assets/create-workflow.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/create_group (2) (1).jpg b/docs/.gitbook/assets/create_group (2) (1).jpg deleted file mode 100644 index c42be22bed..0000000000 Binary files a/docs/.gitbook/assets/create_group (2) (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/create_group (2) (2).jpg b/docs/.gitbook/assets/create_group (2) (2).jpg deleted file mode 100644 index c42be22bed..0000000000 Binary files a/docs/.gitbook/assets/create_group (2) (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/create_group (2) (3).jpg b/docs/.gitbook/assets/create_group (2) (3).jpg deleted file mode 100644 index c42be22bed..0000000000 Binary files a/docs/.gitbook/assets/create_group (2) (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/create_group (2) (4).jpg b/docs/.gitbook/assets/create_group (2) (4).jpg deleted file mode 100644 index c42be22bed..0000000000 Binary files a/docs/.gitbook/assets/create_group (2) (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/create_group (2) (5).jpg b/docs/.gitbook/assets/create_group (2) (5).jpg deleted file mode 100644 index c42be22bed..0000000000 Binary files a/docs/.gitbook/assets/create_group (2) (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/create_group (2).jpg b/docs/.gitbook/assets/create_group (2).jpg deleted file mode 100644 index c42be22bed..0000000000 Binary files a/docs/.gitbook/assets/create_group (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/create_group.jpg b/docs/.gitbook/assets/create_group.jpg deleted file mode 100644 index c42be22bed..0000000000 Binary files a/docs/.gitbook/assets/create_group.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/created-cd-pipeline.png b/docs/.gitbook/assets/created-cd-pipeline.png deleted file mode 100644 index 50aeaae6e9..0000000000 Binary files a/docs/.gitbook/assets/created-cd-pipeline.png and /dev/null differ diff --git a/docs/.gitbook/assets/created-clone-app (1).jpg b/docs/.gitbook/assets/created-clone-app (1).jpg deleted file mode 100644 index 5770b6bd18..0000000000 Binary files a/docs/.gitbook/assets/created-clone-app (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/created-clone-app (2).jpg b/docs/.gitbook/assets/created-clone-app (2).jpg deleted file mode 100644 index 5770b6bd18..0000000000 Binary files a/docs/.gitbook/assets/created-clone-app (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/created-clone-app.jpg b/docs/.gitbook/assets/created-clone-app.jpg deleted file mode 100644 index 5770b6bd18..0000000000 Binary files a/docs/.gitbook/assets/created-clone-app.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/created-configmap (3) (1).gif b/docs/.gitbook/assets/created-configmap (3) (1).gif deleted file mode 100644 index 63e9dd5f76..0000000000 Binary files a/docs/.gitbook/assets/created-configmap (3) (1).gif and /dev/null differ diff --git a/docs/.gitbook/assets/created-configmap (3) (2).gif b/docs/.gitbook/assets/created-configmap (3) (2).gif deleted file mode 100644 index 63e9dd5f76..0000000000 Binary files a/docs/.gitbook/assets/created-configmap (3) (2).gif and /dev/null differ diff --git a/docs/.gitbook/assets/created-configmap (3) (3).gif b/docs/.gitbook/assets/created-configmap (3) (3).gif deleted file mode 100644 index 63e9dd5f76..0000000000 Binary files a/docs/.gitbook/assets/created-configmap (3) (3).gif and /dev/null differ diff --git a/docs/.gitbook/assets/created-configmap (3) (4).gif b/docs/.gitbook/assets/created-configmap (3) (4).gif deleted file mode 100644 index 63e9dd5f76..0000000000 Binary files a/docs/.gitbook/assets/created-configmap (3) (4).gif and /dev/null differ diff --git a/docs/.gitbook/assets/created-configmap (3) (5).gif b/docs/.gitbook/assets/created-configmap (3) (5).gif deleted file mode 100644 index 63e9dd5f76..0000000000 Binary files a/docs/.gitbook/assets/created-configmap (3) (5).gif and /dev/null differ diff --git a/docs/.gitbook/assets/created-configmap (3) (6).gif b/docs/.gitbook/assets/created-configmap (3) (6).gif deleted file mode 100644 index 63e9dd5f76..0000000000 Binary files a/docs/.gitbook/assets/created-configmap (3) (6).gif and /dev/null differ diff --git a/docs/.gitbook/assets/created-configmap (3).gif b/docs/.gitbook/assets/created-configmap (3).gif deleted file mode 100644 index 63e9dd5f76..0000000000 Binary files a/docs/.gitbook/assets/created-configmap (3).gif and /dev/null differ diff --git a/docs/.gitbook/assets/created-configmap.gif b/docs/.gitbook/assets/created-configmap.gif deleted file mode 100644 index 63e9dd5f76..0000000000 Binary files a/docs/.gitbook/assets/created-configmap.gif and /dev/null differ diff --git a/docs/.gitbook/assets/created-secret (1).gif b/docs/.gitbook/assets/created-secret (1).gif deleted file mode 100644 index 5fd32b7acd..0000000000 Binary files a/docs/.gitbook/assets/created-secret (1).gif and /dev/null differ diff --git a/docs/.gitbook/assets/created-secret (2).gif b/docs/.gitbook/assets/created-secret (2).gif deleted file mode 100644 index 5fd32b7acd..0000000000 Binary files a/docs/.gitbook/assets/created-secret (2).gif and /dev/null differ diff --git a/docs/.gitbook/assets/created-secret (3).gif b/docs/.gitbook/assets/created-secret (3).gif deleted file mode 100644 index 5fd32b7acd..0000000000 Binary files a/docs/.gitbook/assets/created-secret (3).gif and /dev/null differ diff --git a/docs/.gitbook/assets/created-secret (4).gif b/docs/.gitbook/assets/created-secret (4).gif deleted file mode 100644 index 5fd32b7acd..0000000000 Binary files a/docs/.gitbook/assets/created-secret (4).gif and /dev/null differ diff --git a/docs/.gitbook/assets/created-secret (5).gif b/docs/.gitbook/assets/created-secret (5).gif deleted file mode 100644 index 5fd32b7acd..0000000000 Binary files a/docs/.gitbook/assets/created-secret (5).gif and /dev/null differ diff --git a/docs/.gitbook/assets/created-secret (6).gif b/docs/.gitbook/assets/created-secret (6).gif deleted file mode 100644 index 5fd32b7acd..0000000000 Binary files a/docs/.gitbook/assets/created-secret (6).gif and /dev/null differ diff --git a/docs/.gitbook/assets/created-secret.gif b/docs/.gitbook/assets/created-secret.gif deleted file mode 100644 index 5fd32b7acd..0000000000 Binary files a/docs/.gitbook/assets/created-secret.gif and /dev/null differ diff --git a/docs/.gitbook/assets/creating-env (1).gif b/docs/.gitbook/assets/creating-env (1).gif deleted file mode 100644 index 5a20f4dce1..0000000000 Binary files a/docs/.gitbook/assets/creating-env (1).gif and /dev/null differ diff --git a/docs/.gitbook/assets/creating-env (2).gif b/docs/.gitbook/assets/creating-env (2).gif deleted file mode 100644 index 5a20f4dce1..0000000000 Binary files a/docs/.gitbook/assets/creating-env (2).gif and /dev/null differ diff --git a/docs/.gitbook/assets/creating-env (3).gif b/docs/.gitbook/assets/creating-env (3).gif deleted file mode 100644 index 5a20f4dce1..0000000000 Binary files a/docs/.gitbook/assets/creating-env (3).gif and /dev/null differ diff --git a/docs/.gitbook/assets/creating-env (4).gif b/docs/.gitbook/assets/creating-env (4).gif deleted file mode 100644 index 5a20f4dce1..0000000000 Binary files a/docs/.gitbook/assets/creating-env (4).gif and /dev/null differ diff --git a/docs/.gitbook/assets/creating-env (5).gif b/docs/.gitbook/assets/creating-env (5).gif deleted file mode 100644 index 5a20f4dce1..0000000000 Binary files a/docs/.gitbook/assets/creating-env (5).gif and /dev/null differ diff --git a/docs/.gitbook/assets/creating-env (6).gif b/docs/.gitbook/assets/creating-env (6).gif deleted file mode 100644 index 5a20f4dce1..0000000000 Binary files a/docs/.gitbook/assets/creating-env (6).gif and /dev/null differ diff --git a/docs/.gitbook/assets/creating-env.gif b/docs/.gitbook/assets/creating-env.gif deleted file mode 100644 index 5a20f4dce1..0000000000 Binary files a/docs/.gitbook/assets/creating-env.gif and /dev/null differ diff --git a/docs/.gitbook/assets/custom (3) (1).jpg b/docs/.gitbook/assets/custom (3) (1).jpg deleted file mode 100644 index 0efc01204b..0000000000 Binary files a/docs/.gitbook/assets/custom (3) (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/custom (3) (2).jpg b/docs/.gitbook/assets/custom (3) (2).jpg deleted file mode 100644 index 0efc01204b..0000000000 Binary files a/docs/.gitbook/assets/custom (3) (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/custom (3) (3).jpg b/docs/.gitbook/assets/custom (3) (3).jpg deleted file mode 100644 index 0efc01204b..0000000000 Binary files a/docs/.gitbook/assets/custom (3) (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/custom (3) (4).jpg b/docs/.gitbook/assets/custom (3) (4).jpg deleted file mode 100644 index 0efc01204b..0000000000 Binary files a/docs/.gitbook/assets/custom (3) (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/custom (3) (5).jpg b/docs/.gitbook/assets/custom (3) (5).jpg deleted file mode 100644 index 0efc01204b..0000000000 Binary files a/docs/.gitbook/assets/custom (3) (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/custom (3) (6).jpg b/docs/.gitbook/assets/custom (3) (6).jpg deleted file mode 100644 index 0efc01204b..0000000000 Binary files a/docs/.gitbook/assets/custom (3) (6).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/custom (3) (7).jpg b/docs/.gitbook/assets/custom (3) (7).jpg deleted file mode 100644 index 0efc01204b..0000000000 Binary files a/docs/.gitbook/assets/custom (3) (7).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/custom (3) (8).jpg b/docs/.gitbook/assets/custom (3) (8).jpg deleted file mode 100644 index 0efc01204b..0000000000 Binary files a/docs/.gitbook/assets/custom (3) (8).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/custom (3).jpg b/docs/.gitbook/assets/custom (3).jpg deleted file mode 100644 index 0efc01204b..0000000000 Binary files a/docs/.gitbook/assets/custom (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/custom_val (2) (1).jpg b/docs/.gitbook/assets/custom_val (2) (1).jpg deleted file mode 100644 index 522ae8a957..0000000000 Binary files a/docs/.gitbook/assets/custom_val (2) (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/custom_val (2) (2).jpg b/docs/.gitbook/assets/custom_val (2) (2).jpg deleted file mode 100644 index 522ae8a957..0000000000 Binary files a/docs/.gitbook/assets/custom_val (2) (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/custom_val (2) (3).jpg b/docs/.gitbook/assets/custom_val (2) (3).jpg deleted file mode 100644 index 522ae8a957..0000000000 Binary files a/docs/.gitbook/assets/custom_val (2) (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/custom_val (2) (4).jpg b/docs/.gitbook/assets/custom_val (2) (4).jpg deleted file mode 100644 index 522ae8a957..0000000000 Binary files a/docs/.gitbook/assets/custom_val (2) (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/custom_val (2) (5).jpg b/docs/.gitbook/assets/custom_val (2) (5).jpg deleted file mode 100644 index 522ae8a957..0000000000 Binary files a/docs/.gitbook/assets/custom_val (2) (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/custom_val (2).jpg b/docs/.gitbook/assets/custom_val (2).jpg deleted file mode 100644 index 522ae8a957..0000000000 Binary files a/docs/.gitbook/assets/custom_val (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/custom_val.jpg b/docs/.gitbook/assets/custom_val.jpg deleted file mode 100644 index 522ae8a957..0000000000 Binary files a/docs/.gitbook/assets/custom_val.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/d1 (2).jpg b/docs/.gitbook/assets/d1 (2).jpg deleted file mode 100644 index 130d81ee38..0000000000 Binary files a/docs/.gitbook/assets/d1 (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/delete_app3.jpg b/docs/.gitbook/assets/delete_app3.jpg deleted file mode 100644 index a2a6936ae6..0000000000 Binary files a/docs/.gitbook/assets/delete_app3.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/delete_configmap (2) (2) (1).png b/docs/.gitbook/assets/delete_configmap (2) (2) (1).png deleted file mode 100644 index 99c2d8277b..0000000000 Binary files a/docs/.gitbook/assets/delete_configmap (2) (2) (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/delete_configmap (2) (2) (2).png b/docs/.gitbook/assets/delete_configmap (2) (2) (2).png deleted file mode 100644 index 99c2d8277b..0000000000 Binary files a/docs/.gitbook/assets/delete_configmap (2) (2) (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/delete_configmap (2) (2) (3).png b/docs/.gitbook/assets/delete_configmap (2) (2) (3).png deleted file mode 100644 index 99c2d8277b..0000000000 Binary files a/docs/.gitbook/assets/delete_configmap (2) (2) (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/delete_configmap (2) (2) (4).png b/docs/.gitbook/assets/delete_configmap (2) (2) (4).png deleted file mode 100644 index 99c2d8277b..0000000000 Binary files a/docs/.gitbook/assets/delete_configmap (2) (2) (4).png and /dev/null differ diff --git a/docs/.gitbook/assets/delete_configmap (2) (2).png b/docs/.gitbook/assets/delete_configmap (2) (2).png deleted file mode 100644 index 99c2d8277b..0000000000 Binary files a/docs/.gitbook/assets/delete_configmap (2) (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/delete_configmap (2).png b/docs/.gitbook/assets/delete_configmap (2).png deleted file mode 100644 index 99c2d8277b..0000000000 Binary files a/docs/.gitbook/assets/delete_configmap (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/delete_secret (2) (1) (1).png b/docs/.gitbook/assets/delete_secret (2) (1) (1).png deleted file mode 100644 index 91863fed80..0000000000 Binary files a/docs/.gitbook/assets/delete_secret (2) (1) (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/delete_secret (2) (1) (2).png b/docs/.gitbook/assets/delete_secret (2) (1) (2).png deleted file mode 100644 index 91863fed80..0000000000 Binary files a/docs/.gitbook/assets/delete_secret (2) (1) (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/delete_secret (2) (1) (3).png b/docs/.gitbook/assets/delete_secret (2) (1) (3).png deleted file mode 100644 index 91863fed80..0000000000 Binary files a/docs/.gitbook/assets/delete_secret (2) (1) (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/delete_secret (2) (1) (4).png b/docs/.gitbook/assets/delete_secret (2) (1) (4).png deleted file mode 100644 index 91863fed80..0000000000 Binary files a/docs/.gitbook/assets/delete_secret (2) (1) (4).png and /dev/null differ diff --git a/docs/.gitbook/assets/delete_secret (2) (1).png b/docs/.gitbook/assets/delete_secret (2) (1).png deleted file mode 100644 index 91863fed80..0000000000 Binary files a/docs/.gitbook/assets/delete_secret (2) (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/deleting-delete-application (1).jpg b/docs/.gitbook/assets/deleting-delete-application (1).jpg deleted file mode 100644 index a2a6936ae6..0000000000 Binary files a/docs/.gitbook/assets/deleting-delete-application (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/deleting-delete-application (2).jpg b/docs/.gitbook/assets/deleting-delete-application (2).jpg deleted file mode 100644 index a2a6936ae6..0000000000 Binary files a/docs/.gitbook/assets/deleting-delete-application (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/deleting-delete-application (3).jpg b/docs/.gitbook/assets/deleting-delete-application (3).jpg deleted file mode 100644 index a2a6936ae6..0000000000 Binary files a/docs/.gitbook/assets/deleting-delete-application (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/deleting-delete-application (4).jpg b/docs/.gitbook/assets/deleting-delete-application (4).jpg deleted file mode 100644 index a2a6936ae6..0000000000 Binary files a/docs/.gitbook/assets/deleting-delete-application (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/deleting-delete-application (5).jpg b/docs/.gitbook/assets/deleting-delete-application (5).jpg deleted file mode 100644 index a2a6936ae6..0000000000 Binary files a/docs/.gitbook/assets/deleting-delete-application (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/deleting-delete-application.jpg b/docs/.gitbook/assets/deleting-delete-application.jpg deleted file mode 100644 index a2a6936ae6..0000000000 Binary files a/docs/.gitbook/assets/deleting-delete-application.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/deleting-warnning (1).jpg b/docs/.gitbook/assets/deleting-warnning (1).jpg deleted file mode 100644 index 26e169d91d..0000000000 Binary files a/docs/.gitbook/assets/deleting-warnning (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/deleting-warnning (2).jpg b/docs/.gitbook/assets/deleting-warnning (2).jpg deleted file mode 100644 index 26e169d91d..0000000000 Binary files a/docs/.gitbook/assets/deleting-warnning (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/deleting-warnning (3).jpg b/docs/.gitbook/assets/deleting-warnning (3).jpg deleted file mode 100644 index 26e169d91d..0000000000 Binary files a/docs/.gitbook/assets/deleting-warnning (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/deleting-warnning (4).jpg b/docs/.gitbook/assets/deleting-warnning (4).jpg deleted file mode 100644 index 26e169d91d..0000000000 Binary files a/docs/.gitbook/assets/deleting-warnning (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/deleting-warnning (5).jpg b/docs/.gitbook/assets/deleting-warnning (5).jpg deleted file mode 100644 index 26e169d91d..0000000000 Binary files a/docs/.gitbook/assets/deleting-warnning (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/deleting-warnning (6).jpg b/docs/.gitbook/assets/deleting-warnning (6).jpg deleted file mode 100644 index 26e169d91d..0000000000 Binary files a/docs/.gitbook/assets/deleting-warnning (6).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/deleting-warnning.jpg b/docs/.gitbook/assets/deleting-warnning.jpg deleted file mode 100644 index 26e169d91d..0000000000 Binary files a/docs/.gitbook/assets/deleting-warnning.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/deleting-workflow (1).jpg b/docs/.gitbook/assets/deleting-workflow (1).jpg deleted file mode 100644 index 8ef88434b1..0000000000 Binary files a/docs/.gitbook/assets/deleting-workflow (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/deleting-workflow (2).jpg b/docs/.gitbook/assets/deleting-workflow (2).jpg deleted file mode 100644 index 8ef88434b1..0000000000 Binary files a/docs/.gitbook/assets/deleting-workflow (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/deleting-workflow (3).jpg b/docs/.gitbook/assets/deleting-workflow (3).jpg deleted file mode 100644 index 8ef88434b1..0000000000 Binary files a/docs/.gitbook/assets/deleting-workflow (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/deleting-workflow (4).jpg b/docs/.gitbook/assets/deleting-workflow (4).jpg deleted file mode 100644 index 8ef88434b1..0000000000 Binary files a/docs/.gitbook/assets/deleting-workflow (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/deleting-workflow (5).jpg b/docs/.gitbook/assets/deleting-workflow (5).jpg deleted file mode 100644 index 8ef88434b1..0000000000 Binary files a/docs/.gitbook/assets/deleting-workflow (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/deleting-workflow (6).jpg b/docs/.gitbook/assets/deleting-workflow (6).jpg deleted file mode 100644 index 8ef88434b1..0000000000 Binary files a/docs/.gitbook/assets/deleting-workflow (6).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/deleting-workflow.jpg b/docs/.gitbook/assets/deleting-workflow.jpg deleted file mode 100644 index 8ef88434b1..0000000000 Binary files a/docs/.gitbook/assets/deleting-workflow.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/demo (3) (1).jpg b/docs/.gitbook/assets/demo (3) (1).jpg deleted file mode 100644 index 40ab55940c..0000000000 Binary files a/docs/.gitbook/assets/demo (3) (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/demo (3) (2).jpg b/docs/.gitbook/assets/demo (3) (2).jpg deleted file mode 100644 index 40ab55940c..0000000000 Binary files a/docs/.gitbook/assets/demo (3) (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/demo (3) (3).jpg b/docs/.gitbook/assets/demo (3) (3).jpg deleted file mode 100644 index 40ab55940c..0000000000 Binary files a/docs/.gitbook/assets/demo (3) (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/demo (3) (4).jpg b/docs/.gitbook/assets/demo (3) (4).jpg deleted file mode 100644 index 40ab55940c..0000000000 Binary files a/docs/.gitbook/assets/demo (3) (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/demo (3) (5).jpg b/docs/.gitbook/assets/demo (3) (5).jpg deleted file mode 100644 index 40ab55940c..0000000000 Binary files a/docs/.gitbook/assets/demo (3) (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/demo (3).jpg b/docs/.gitbook/assets/demo (3).jpg deleted file mode 100644 index 40ab55940c..0000000000 Binary files a/docs/.gitbook/assets/demo (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/demo.jpg b/docs/.gitbook/assets/demo.jpg deleted file mode 100644 index 40ab55940c..0000000000 Binary files a/docs/.gitbook/assets/demo.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/depchart4config (1).jpg b/docs/.gitbook/assets/depchart4config (1).jpg deleted file mode 100644 index 3848c70048..0000000000 Binary files a/docs/.gitbook/assets/depchart4config (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/depchart4config (2).jpg b/docs/.gitbook/assets/depchart4config (2).jpg deleted file mode 100644 index 3848c70048..0000000000 Binary files a/docs/.gitbook/assets/depchart4config (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/depchart4config (3).jpg b/docs/.gitbook/assets/depchart4config (3).jpg deleted file mode 100644 index 3848c70048..0000000000 Binary files a/docs/.gitbook/assets/depchart4config (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/depchart4config (4).jpg b/docs/.gitbook/assets/depchart4config (4).jpg deleted file mode 100644 index 3848c70048..0000000000 Binary files a/docs/.gitbook/assets/depchart4config (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/depchart4config (5).jpg b/docs/.gitbook/assets/depchart4config (5).jpg deleted file mode 100644 index 3848c70048..0000000000 Binary files a/docs/.gitbook/assets/depchart4config (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/depchart4config (6).jpg b/docs/.gitbook/assets/depchart4config (6).jpg deleted file mode 100644 index 3848c70048..0000000000 Binary files a/docs/.gitbook/assets/depchart4config (6).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/depchart4config.jpg b/docs/.gitbook/assets/depchart4config.jpg deleted file mode 100644 index 3848c70048..0000000000 Binary files a/docs/.gitbook/assets/depchart4config.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/depchart4readme (1).jpg b/docs/.gitbook/assets/depchart4readme (1).jpg deleted file mode 100644 index f19b9ec829..0000000000 Binary files a/docs/.gitbook/assets/depchart4readme (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/depchart4readme (2).jpg b/docs/.gitbook/assets/depchart4readme (2).jpg deleted file mode 100644 index f19b9ec829..0000000000 Binary files a/docs/.gitbook/assets/depchart4readme (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/depchart4readme (3).jpg b/docs/.gitbook/assets/depchart4readme (3).jpg deleted file mode 100644 index f19b9ec829..0000000000 Binary files a/docs/.gitbook/assets/depchart4readme (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/depchart4readme (4).jpg b/docs/.gitbook/assets/depchart4readme (4).jpg deleted file mode 100644 index f19b9ec829..0000000000 Binary files a/docs/.gitbook/assets/depchart4readme (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/depchart4readme (5).jpg b/docs/.gitbook/assets/depchart4readme (5).jpg deleted file mode 100644 index f19b9ec829..0000000000 Binary files a/docs/.gitbook/assets/depchart4readme (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/depchart4readme (6).jpg b/docs/.gitbook/assets/depchart4readme (6).jpg deleted file mode 100644 index f19b9ec829..0000000000 Binary files a/docs/.gitbook/assets/depchart4readme (6).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/depchart4readme.jpg b/docs/.gitbook/assets/depchart4readme.jpg deleted file mode 100644 index f19b9ec829..0000000000 Binary files a/docs/.gitbook/assets/depchart4readme.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/depchartdeployedredo (2) (1).jpg b/docs/.gitbook/assets/depchartdeployedredo (2) (1).jpg deleted file mode 100644 index 22e53d76a2..0000000000 Binary files a/docs/.gitbook/assets/depchartdeployedredo (2) (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/depchartdeployedredo (2) (2).jpg b/docs/.gitbook/assets/depchartdeployedredo (2) (2).jpg deleted file mode 100644 index 22e53d76a2..0000000000 Binary files a/docs/.gitbook/assets/depchartdeployedredo (2) (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/depchartdeployedredo (2) (3).jpg b/docs/.gitbook/assets/depchartdeployedredo (2) (3).jpg deleted file mode 100644 index 22e53d76a2..0000000000 Binary files a/docs/.gitbook/assets/depchartdeployedredo (2) (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/depchartdeployedredo (2).jpg b/docs/.gitbook/assets/depchartdeployedredo (2).jpg deleted file mode 100644 index 22e53d76a2..0000000000 Binary files a/docs/.gitbook/assets/depchartdeployedredo (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/depchartreconfig (2) (1).jpg b/docs/.gitbook/assets/depchartreconfig (2) (1).jpg deleted file mode 100644 index 7bbc92df9a..0000000000 Binary files a/docs/.gitbook/assets/depchartreconfig (2) (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/depchartreconfig (2) (2).jpg b/docs/.gitbook/assets/depchartreconfig (2) (2).jpg deleted file mode 100644 index 7bbc92df9a..0000000000 Binary files a/docs/.gitbook/assets/depchartreconfig (2) (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/depchartreconfig (2) (3).jpg b/docs/.gitbook/assets/depchartreconfig (2) (3).jpg deleted file mode 100644 index 7bbc92df9a..0000000000 Binary files a/docs/.gitbook/assets/depchartreconfig (2) (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/depchartreconfig (2) (4).jpg b/docs/.gitbook/assets/depchartreconfig (2) (4).jpg deleted file mode 100644 index 7bbc92df9a..0000000000 Binary files a/docs/.gitbook/assets/depchartreconfig (2) (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/depchartreconfig (2) (5).jpg b/docs/.gitbook/assets/depchartreconfig (2) (5).jpg deleted file mode 100644 index 7bbc92df9a..0000000000 Binary files a/docs/.gitbook/assets/depchartreconfig (2) (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/depchartreconfig (2).jpg b/docs/.gitbook/assets/depchartreconfig (2).jpg deleted file mode 100644 index 7bbc92df9a..0000000000 Binary files a/docs/.gitbook/assets/depchartreconfig (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/depchartreconfig.jpg b/docs/.gitbook/assets/depchartreconfig.jpg deleted file mode 100644 index 7bbc92df9a..0000000000 Binary files a/docs/.gitbook/assets/depchartreconfig.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/deploy-chart-store (1).jpg b/docs/.gitbook/assets/deploy-chart-store (1).jpg deleted file mode 100644 index c69e923526..0000000000 Binary files a/docs/.gitbook/assets/deploy-chart-store (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/deploy-chart-store (2).jpg b/docs/.gitbook/assets/deploy-chart-store (2).jpg deleted file mode 100644 index c69e923526..0000000000 Binary files a/docs/.gitbook/assets/deploy-chart-store (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/deploy-chart-store (3).jpg b/docs/.gitbook/assets/deploy-chart-store (3).jpg deleted file mode 100644 index c69e923526..0000000000 Binary files a/docs/.gitbook/assets/deploy-chart-store (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/deploy-chart-store.jpg b/docs/.gitbook/assets/deploy-chart-store.jpg deleted file mode 100644 index c69e923526..0000000000 Binary files a/docs/.gitbook/assets/deploy-chart-store.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/deployed-app-details (1).jpg b/docs/.gitbook/assets/deployed-app-details (1).jpg deleted file mode 100644 index a23e37662f..0000000000 Binary files a/docs/.gitbook/assets/deployed-app-details (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/deployed-app-details (2).jpg b/docs/.gitbook/assets/deployed-app-details (2).jpg deleted file mode 100644 index a23e37662f..0000000000 Binary files a/docs/.gitbook/assets/deployed-app-details (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/deployed-app-details (3).jpg b/docs/.gitbook/assets/deployed-app-details (3).jpg deleted file mode 100644 index a23e37662f..0000000000 Binary files a/docs/.gitbook/assets/deployed-app-details (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/deployed-app-details (4).jpg b/docs/.gitbook/assets/deployed-app-details (4).jpg deleted file mode 100644 index a23e37662f..0000000000 Binary files a/docs/.gitbook/assets/deployed-app-details (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/deployed-app-details (5).jpg b/docs/.gitbook/assets/deployed-app-details (5).jpg deleted file mode 100644 index a23e37662f..0000000000 Binary files a/docs/.gitbook/assets/deployed-app-details (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/deployed-app-details.jpg b/docs/.gitbook/assets/deployed-app-details.jpg deleted file mode 100644 index a23e37662f..0000000000 Binary files a/docs/.gitbook/assets/deployed-app-details.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/deployment-template (3) (1).gif b/docs/.gitbook/assets/deployment-template (3) (1).gif deleted file mode 100644 index c0c0681eac..0000000000 Binary files a/docs/.gitbook/assets/deployment-template (3) (1).gif and /dev/null differ diff --git a/docs/.gitbook/assets/deployment-template (3) (2).gif b/docs/.gitbook/assets/deployment-template (3) (2).gif deleted file mode 100644 index c0c0681eac..0000000000 Binary files a/docs/.gitbook/assets/deployment-template (3) (2).gif and /dev/null differ diff --git a/docs/.gitbook/assets/deployment-template (3) (3).gif b/docs/.gitbook/assets/deployment-template (3) (3).gif deleted file mode 100644 index c0c0681eac..0000000000 Binary files a/docs/.gitbook/assets/deployment-template (3) (3).gif and /dev/null differ diff --git a/docs/.gitbook/assets/deployment-template (3) (4).gif b/docs/.gitbook/assets/deployment-template (3) (4).gif deleted file mode 100644 index c0c0681eac..0000000000 Binary files a/docs/.gitbook/assets/deployment-template (3) (4).gif and /dev/null differ diff --git a/docs/.gitbook/assets/deployment-template (3) (5).gif b/docs/.gitbook/assets/deployment-template (3) (5).gif deleted file mode 100644 index c0c0681eac..0000000000 Binary files a/docs/.gitbook/assets/deployment-template (3) (5).gif and /dev/null differ diff --git a/docs/.gitbook/assets/deployment-template (3) (6).gif b/docs/.gitbook/assets/deployment-template (3) (6).gif deleted file mode 100644 index c0c0681eac..0000000000 Binary files a/docs/.gitbook/assets/deployment-template (3) (6).gif and /dev/null differ diff --git a/docs/.gitbook/assets/deployment-template (3).gif b/docs/.gitbook/assets/deployment-template (3).gif deleted file mode 100644 index c0c0681eac..0000000000 Binary files a/docs/.gitbook/assets/deployment-template (3).gif and /dev/null differ diff --git a/docs/.gitbook/assets/deployment_application_metrics (2) (2) (1).png b/docs/.gitbook/assets/deployment_application_metrics (2) (2) (1).png deleted file mode 100644 index 215df893e6..0000000000 Binary files a/docs/.gitbook/assets/deployment_application_metrics (2) (2) (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/deployment_application_metrics (2) (2) (2).png b/docs/.gitbook/assets/deployment_application_metrics (2) (2) (2).png deleted file mode 100644 index 215df893e6..0000000000 Binary files a/docs/.gitbook/assets/deployment_application_metrics (2) (2) (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/deployment_application_metrics (2) (2) (3).png b/docs/.gitbook/assets/deployment_application_metrics (2) (2) (3).png deleted file mode 100644 index 215df893e6..0000000000 Binary files a/docs/.gitbook/assets/deployment_application_metrics (2) (2) (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/deployment_application_metrics (2) (2) (4).png b/docs/.gitbook/assets/deployment_application_metrics (2) (2) (4).png deleted file mode 100644 index 215df893e6..0000000000 Binary files a/docs/.gitbook/assets/deployment_application_metrics (2) (2) (4).png and /dev/null differ diff --git a/docs/.gitbook/assets/deployment_application_metrics (2) (2).png b/docs/.gitbook/assets/deployment_application_metrics (2) (2).png deleted file mode 100644 index 215df893e6..0000000000 Binary files a/docs/.gitbook/assets/deployment_application_metrics (2) (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/docker-configuration (1).gif b/docs/.gitbook/assets/docker-configuration (1).gif deleted file mode 100644 index 84b70bec9e..0000000000 Binary files a/docs/.gitbook/assets/docker-configuration (1).gif and /dev/null differ diff --git a/docs/.gitbook/assets/docker-configuration (2).gif b/docs/.gitbook/assets/docker-configuration (2).gif deleted file mode 100644 index 84b70bec9e..0000000000 Binary files a/docs/.gitbook/assets/docker-configuration (2).gif and /dev/null differ diff --git a/docs/.gitbook/assets/docker-configuration (3).gif b/docs/.gitbook/assets/docker-configuration (3).gif deleted file mode 100644 index 84b70bec9e..0000000000 Binary files a/docs/.gitbook/assets/docker-configuration (3).gif and /dev/null differ diff --git a/docs/.gitbook/assets/docker-configuration (4).gif b/docs/.gitbook/assets/docker-configuration (4).gif deleted file mode 100644 index 84b70bec9e..0000000000 Binary files a/docs/.gitbook/assets/docker-configuration (4).gif and /dev/null differ diff --git a/docs/.gitbook/assets/docker-configuration (5).gif b/docs/.gitbook/assets/docker-configuration (5).gif deleted file mode 100644 index 84b70bec9e..0000000000 Binary files a/docs/.gitbook/assets/docker-configuration (5).gif and /dev/null differ diff --git a/docs/.gitbook/assets/docker-configuration (6).gif b/docs/.gitbook/assets/docker-configuration (6).gif deleted file mode 100644 index 84b70bec9e..0000000000 Binary files a/docs/.gitbook/assets/docker-configuration (6).gif and /dev/null differ diff --git a/docs/.gitbook/assets/docker-configuration-docker-hub.png b/docs/.gitbook/assets/docker-configuration-docker-hub.png deleted file mode 100644 index 5679d6909a..0000000000 Binary files a/docs/.gitbook/assets/docker-configuration-docker-hub.png and /dev/null differ diff --git a/docs/.gitbook/assets/docker-configuration.gif b/docs/.gitbook/assets/docker-configuration.gif deleted file mode 100644 index 84b70bec9e..0000000000 Binary files a/docs/.gitbook/assets/docker-configuration.gif and /dev/null differ diff --git a/docs/.gitbook/assets/docker-configure-docker-hub-1.png b/docs/.gitbook/assets/docker-configure-docker-hub-1.png deleted file mode 100644 index a3fdb9d082..0000000000 Binary files a/docs/.gitbook/assets/docker-configure-docker-hub-1.png and /dev/null differ diff --git a/docs/.gitbook/assets/edit_cd_pipeline (5) (2).jpg b/docs/.gitbook/assets/edit_cd_pipeline (5) (2).jpg deleted file mode 100644 index 2c1bc57afe..0000000000 Binary files a/docs/.gitbook/assets/edit_cd_pipeline (5) (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/edit_cd_pipeline (5) (6) (1).jpg b/docs/.gitbook/assets/edit_cd_pipeline (5) (6) (1).jpg deleted file mode 100644 index 2c1bc57afe..0000000000 Binary files a/docs/.gitbook/assets/edit_cd_pipeline (5) (6) (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/edit_cd_pipeline (5) (6) (10).jpg b/docs/.gitbook/assets/edit_cd_pipeline (5) (6) (10).jpg deleted file mode 100644 index 2c1bc57afe..0000000000 Binary files a/docs/.gitbook/assets/edit_cd_pipeline (5) (6) (10).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/edit_cd_pipeline (5) (6) (11).jpg b/docs/.gitbook/assets/edit_cd_pipeline (5) (6) (11).jpg deleted file mode 100644 index 2c1bc57afe..0000000000 Binary files a/docs/.gitbook/assets/edit_cd_pipeline (5) (6) (11).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/edit_cd_pipeline (5) (6) (2).jpg b/docs/.gitbook/assets/edit_cd_pipeline (5) (6) (2).jpg deleted file mode 100644 index 2c1bc57afe..0000000000 Binary files a/docs/.gitbook/assets/edit_cd_pipeline (5) (6) (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/edit_cd_pipeline (5) (6) (3).jpg b/docs/.gitbook/assets/edit_cd_pipeline (5) (6) (3).jpg deleted file mode 100644 index 2c1bc57afe..0000000000 Binary files a/docs/.gitbook/assets/edit_cd_pipeline (5) (6) (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/edit_cd_pipeline (5) (6) (4).jpg b/docs/.gitbook/assets/edit_cd_pipeline (5) (6) (4).jpg deleted file mode 100644 index 2c1bc57afe..0000000000 Binary files a/docs/.gitbook/assets/edit_cd_pipeline (5) (6) (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/edit_cd_pipeline (5) (6) (5).jpg b/docs/.gitbook/assets/edit_cd_pipeline (5) (6) (5).jpg deleted file mode 100644 index 2c1bc57afe..0000000000 Binary files a/docs/.gitbook/assets/edit_cd_pipeline (5) (6) (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/edit_cd_pipeline (5) (6) (6).jpg b/docs/.gitbook/assets/edit_cd_pipeline (5) (6) (6).jpg deleted file mode 100644 index 2c1bc57afe..0000000000 Binary files a/docs/.gitbook/assets/edit_cd_pipeline (5) (6) (6).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/edit_cd_pipeline (5) (6) (7).jpg b/docs/.gitbook/assets/edit_cd_pipeline (5) (6) (7).jpg deleted file mode 100644 index 2c1bc57afe..0000000000 Binary files a/docs/.gitbook/assets/edit_cd_pipeline (5) (6) (7).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/edit_cd_pipeline (5) (6) (8).jpg b/docs/.gitbook/assets/edit_cd_pipeline (5) (6) (8).jpg deleted file mode 100644 index 2c1bc57afe..0000000000 Binary files a/docs/.gitbook/assets/edit_cd_pipeline (5) (6) (8).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/edit_cd_pipeline (5) (6) (9).jpg b/docs/.gitbook/assets/edit_cd_pipeline (5) (6) (9).jpg deleted file mode 100644 index 2c1bc57afe..0000000000 Binary files a/docs/.gitbook/assets/edit_cd_pipeline (5) (6) (9).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/edit_cd_pipeline (5) (6).jpg b/docs/.gitbook/assets/edit_cd_pipeline (5) (6).jpg deleted file mode 100644 index 2c1bc57afe..0000000000 Binary files a/docs/.gitbook/assets/edit_cd_pipeline (5) (6).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/edit_cd_pipeline (5).jpg b/docs/.gitbook/assets/edit_cd_pipeline (5).jpg deleted file mode 100644 index 2c1bc57afe..0000000000 Binary files a/docs/.gitbook/assets/edit_cd_pipeline (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/edit_chart1 (1).jpg b/docs/.gitbook/assets/edit_chart1 (1).jpg deleted file mode 100644 index 6c5d90e38d..0000000000 Binary files a/docs/.gitbook/assets/edit_chart1 (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/edit_chart1 (2).jpg b/docs/.gitbook/assets/edit_chart1 (2).jpg deleted file mode 100644 index 6c5d90e38d..0000000000 Binary files a/docs/.gitbook/assets/edit_chart1 (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/edit_chart1 (3).jpg b/docs/.gitbook/assets/edit_chart1 (3).jpg deleted file mode 100644 index 6c5d90e38d..0000000000 Binary files a/docs/.gitbook/assets/edit_chart1 (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/edit_chart1 (4).jpg b/docs/.gitbook/assets/edit_chart1 (4).jpg deleted file mode 100644 index 6c5d90e38d..0000000000 Binary files a/docs/.gitbook/assets/edit_chart1 (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/edit_chart1 (5).jpg b/docs/.gitbook/assets/edit_chart1 (5).jpg deleted file mode 100644 index 6c5d90e38d..0000000000 Binary files a/docs/.gitbook/assets/edit_chart1 (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/edit_chart1 (6).jpg b/docs/.gitbook/assets/edit_chart1 (6).jpg deleted file mode 100644 index 6c5d90e38d..0000000000 Binary files a/docs/.gitbook/assets/edit_chart1 (6).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/edit_chart1.jpg b/docs/.gitbook/assets/edit_chart1.jpg deleted file mode 100644 index 6c5d90e38d..0000000000 Binary files a/docs/.gitbook/assets/edit_chart1.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/edit_group (1).jpg b/docs/.gitbook/assets/edit_group (1).jpg deleted file mode 100644 index 8490838613..0000000000 Binary files a/docs/.gitbook/assets/edit_group (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/edit_group (2).jpg b/docs/.gitbook/assets/edit_group (2).jpg deleted file mode 100644 index 8490838613..0000000000 Binary files a/docs/.gitbook/assets/edit_group (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/edit_group (3).jpg b/docs/.gitbook/assets/edit_group (3).jpg deleted file mode 100644 index 8490838613..0000000000 Binary files a/docs/.gitbook/assets/edit_group (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/edit_group (4).jpg b/docs/.gitbook/assets/edit_group (4).jpg deleted file mode 100644 index 8490838613..0000000000 Binary files a/docs/.gitbook/assets/edit_group (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/edit_group (5).jpg b/docs/.gitbook/assets/edit_group (5).jpg deleted file mode 100644 index 8490838613..0000000000 Binary files a/docs/.gitbook/assets/edit_group (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/edit_group.jpg b/docs/.gitbook/assets/edit_group.jpg deleted file mode 100644 index 8490838613..0000000000 Binary files a/docs/.gitbook/assets/edit_group.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/edit_group2 (1).jpg b/docs/.gitbook/assets/edit_group2 (1).jpg deleted file mode 100644 index e592ee4875..0000000000 Binary files a/docs/.gitbook/assets/edit_group2 (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/edit_group2 (2).jpg b/docs/.gitbook/assets/edit_group2 (2).jpg deleted file mode 100644 index e592ee4875..0000000000 Binary files a/docs/.gitbook/assets/edit_group2 (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/edit_group2 (3).jpg b/docs/.gitbook/assets/edit_group2 (3).jpg deleted file mode 100644 index e592ee4875..0000000000 Binary files a/docs/.gitbook/assets/edit_group2 (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/edit_group2 (4).jpg b/docs/.gitbook/assets/edit_group2 (4).jpg deleted file mode 100644 index e592ee4875..0000000000 Binary files a/docs/.gitbook/assets/edit_group2 (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/edit_group2 (5).jpg b/docs/.gitbook/assets/edit_group2 (5).jpg deleted file mode 100644 index e592ee4875..0000000000 Binary files a/docs/.gitbook/assets/edit_group2 (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/edit_group2 (6).jpg b/docs/.gitbook/assets/edit_group2 (6).jpg deleted file mode 100644 index e592ee4875..0000000000 Binary files a/docs/.gitbook/assets/edit_group2 (6).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/edit_group2.jpg b/docs/.gitbook/assets/edit_group2.jpg deleted file mode 100644 index e592ee4875..0000000000 Binary files a/docs/.gitbook/assets/edit_group2.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/edit_pipeline (1).jpg b/docs/.gitbook/assets/edit_pipeline (1).jpg deleted file mode 100644 index ac4269dc0d..0000000000 Binary files a/docs/.gitbook/assets/edit_pipeline (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/edit_pipeline (10).jpg b/docs/.gitbook/assets/edit_pipeline (10).jpg deleted file mode 100644 index ac4269dc0d..0000000000 Binary files a/docs/.gitbook/assets/edit_pipeline (10).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/edit_pipeline (11).jpg b/docs/.gitbook/assets/edit_pipeline (11).jpg deleted file mode 100644 index ac4269dc0d..0000000000 Binary files a/docs/.gitbook/assets/edit_pipeline (11).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/edit_pipeline (12).jpg b/docs/.gitbook/assets/edit_pipeline (12).jpg deleted file mode 100644 index ac4269dc0d..0000000000 Binary files a/docs/.gitbook/assets/edit_pipeline (12).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/edit_pipeline (13).jpg b/docs/.gitbook/assets/edit_pipeline (13).jpg deleted file mode 100644 index ac4269dc0d..0000000000 Binary files a/docs/.gitbook/assets/edit_pipeline (13).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/edit_pipeline (14).jpg b/docs/.gitbook/assets/edit_pipeline (14).jpg deleted file mode 100644 index ac4269dc0d..0000000000 Binary files a/docs/.gitbook/assets/edit_pipeline (14).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/edit_pipeline (2).jpg b/docs/.gitbook/assets/edit_pipeline (2).jpg deleted file mode 100644 index ac4269dc0d..0000000000 Binary files a/docs/.gitbook/assets/edit_pipeline (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/edit_pipeline (3).jpg b/docs/.gitbook/assets/edit_pipeline (3).jpg deleted file mode 100644 index ac4269dc0d..0000000000 Binary files a/docs/.gitbook/assets/edit_pipeline (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/edit_pipeline (4).jpg b/docs/.gitbook/assets/edit_pipeline (4).jpg deleted file mode 100644 index ac4269dc0d..0000000000 Binary files a/docs/.gitbook/assets/edit_pipeline (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/edit_pipeline (5).jpg b/docs/.gitbook/assets/edit_pipeline (5).jpg deleted file mode 100644 index ac4269dc0d..0000000000 Binary files a/docs/.gitbook/assets/edit_pipeline (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/edit_pipeline (6).jpg b/docs/.gitbook/assets/edit_pipeline (6).jpg deleted file mode 100644 index ac4269dc0d..0000000000 Binary files a/docs/.gitbook/assets/edit_pipeline (6).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/edit_pipeline (7).jpg b/docs/.gitbook/assets/edit_pipeline (7).jpg deleted file mode 100644 index ac4269dc0d..0000000000 Binary files a/docs/.gitbook/assets/edit_pipeline (7).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/edit_pipeline (8).jpg b/docs/.gitbook/assets/edit_pipeline (8).jpg deleted file mode 100644 index ac4269dc0d..0000000000 Binary files a/docs/.gitbook/assets/edit_pipeline (8).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/edit_pipeline (9).jpg b/docs/.gitbook/assets/edit_pipeline (9).jpg deleted file mode 100644 index ac4269dc0d..0000000000 Binary files a/docs/.gitbook/assets/edit_pipeline (9).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/edit_pipeline.jpg b/docs/.gitbook/assets/edit_pipeline.jpg deleted file mode 100644 index ac4269dc0d..0000000000 Binary files a/docs/.gitbook/assets/edit_pipeline.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/env_ride (3).jpg b/docs/.gitbook/assets/env_ride (3).jpg deleted file mode 100644 index e7c439402d..0000000000 Binary files a/docs/.gitbook/assets/env_ride (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/environments1 (1).jpg b/docs/.gitbook/assets/environments1 (1).jpg deleted file mode 100644 index d16d7e20ed..0000000000 Binary files a/docs/.gitbook/assets/environments1 (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/environments1 (2) (1).jpg b/docs/.gitbook/assets/environments1 (2) (1).jpg deleted file mode 100644 index d16d7e20ed..0000000000 Binary files a/docs/.gitbook/assets/environments1 (2) (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/environments1 (2) (2).jpg b/docs/.gitbook/assets/environments1 (2) (2).jpg deleted file mode 100644 index d16d7e20ed..0000000000 Binary files a/docs/.gitbook/assets/environments1 (2) (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/environments1 (2) (3).jpg b/docs/.gitbook/assets/environments1 (2) (3).jpg deleted file mode 100644 index d16d7e20ed..0000000000 Binary files a/docs/.gitbook/assets/environments1 (2) (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/environments1 (2) (4).jpg b/docs/.gitbook/assets/environments1 (2) (4).jpg deleted file mode 100644 index d16d7e20ed..0000000000 Binary files a/docs/.gitbook/assets/environments1 (2) (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/environments1 (2) (5).jpg b/docs/.gitbook/assets/environments1 (2) (5).jpg deleted file mode 100644 index d16d7e20ed..0000000000 Binary files a/docs/.gitbook/assets/environments1 (2) (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/environments1 (2).jpg b/docs/.gitbook/assets/environments1 (2).jpg deleted file mode 100644 index d16d7e20ed..0000000000 Binary files a/docs/.gitbook/assets/environments1 (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/events1 (1).jpg b/docs/.gitbook/assets/events1 (1).jpg deleted file mode 100644 index 80eeb0405f..0000000000 Binary files a/docs/.gitbook/assets/events1 (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/events1 (2) (1).jpg b/docs/.gitbook/assets/events1 (2) (1).jpg deleted file mode 100644 index 80eeb0405f..0000000000 Binary files a/docs/.gitbook/assets/events1 (2) (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/events1 (2) (2).jpg b/docs/.gitbook/assets/events1 (2) (2).jpg deleted file mode 100644 index 80eeb0405f..0000000000 Binary files a/docs/.gitbook/assets/events1 (2) (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/events1 (2) (3).jpg b/docs/.gitbook/assets/events1 (2) (3).jpg deleted file mode 100644 index 80eeb0405f..0000000000 Binary files a/docs/.gitbook/assets/events1 (2) (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/events1 (2) (4).jpg b/docs/.gitbook/assets/events1 (2) (4).jpg deleted file mode 100644 index 80eeb0405f..0000000000 Binary files a/docs/.gitbook/assets/events1 (2) (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/events1 (2) (5).jpg b/docs/.gitbook/assets/events1 (2) (5).jpg deleted file mode 100644 index 80eeb0405f..0000000000 Binary files a/docs/.gitbook/assets/events1 (2) (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/events1 (2).jpg b/docs/.gitbook/assets/events1 (2).jpg deleted file mode 100644 index 80eeb0405f..0000000000 Binary files a/docs/.gitbook/assets/events1 (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/events2 (1).jpg b/docs/.gitbook/assets/events2 (1).jpg deleted file mode 100644 index 82816b1f4a..0000000000 Binary files a/docs/.gitbook/assets/events2 (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/events3 (2).jpg b/docs/.gitbook/assets/events3 (2).jpg deleted file mode 100644 index 3a7d5152d1..0000000000 Binary files a/docs/.gitbook/assets/events3 (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/events4 (2) (1).jpg b/docs/.gitbook/assets/events4 (2) (1).jpg deleted file mode 100644 index af002af7d5..0000000000 Binary files a/docs/.gitbook/assets/events4 (2) (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/events4 (2) (2).jpg b/docs/.gitbook/assets/events4 (2) (2).jpg deleted file mode 100644 index af002af7d5..0000000000 Binary files a/docs/.gitbook/assets/events4 (2) (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/events4 (2) (3).jpg b/docs/.gitbook/assets/events4 (2) (3).jpg deleted file mode 100644 index af002af7d5..0000000000 Binary files a/docs/.gitbook/assets/events4 (2) (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/events4 (2).jpg b/docs/.gitbook/assets/events4 (2).jpg deleted file mode 100644 index af002af7d5..0000000000 Binary files a/docs/.gitbook/assets/events4 (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/events5 (1).png b/docs/.gitbook/assets/events5 (1).png deleted file mode 100644 index b3b44ec533..0000000000 Binary files a/docs/.gitbook/assets/events5 (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/events5 (2) (1).png b/docs/.gitbook/assets/events5 (2) (1).png deleted file mode 100644 index b3b44ec533..0000000000 Binary files a/docs/.gitbook/assets/events5 (2) (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/events5 (2) (2).png b/docs/.gitbook/assets/events5 (2) (2).png deleted file mode 100644 index b3b44ec533..0000000000 Binary files a/docs/.gitbook/assets/events5 (2) (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/events5 (2) (3).png b/docs/.gitbook/assets/events5 (2) (3).png deleted file mode 100644 index b3b44ec533..0000000000 Binary files a/docs/.gitbook/assets/events5 (2) (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/events5 (2) (4).png b/docs/.gitbook/assets/events5 (2) (4).png deleted file mode 100644 index b3b44ec533..0000000000 Binary files a/docs/.gitbook/assets/events5 (2) (4).png and /dev/null differ diff --git a/docs/.gitbook/assets/events5 (2) (5).png b/docs/.gitbook/assets/events5 (2) (5).png deleted file mode 100644 index b3b44ec533..0000000000 Binary files a/docs/.gitbook/assets/events5 (2) (5).png and /dev/null differ diff --git a/docs/.gitbook/assets/events5 (2).png b/docs/.gitbook/assets/events5 (2).png deleted file mode 100644 index b3b44ec533..0000000000 Binary files a/docs/.gitbook/assets/events5 (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/external_pipeline (1).jpg b/docs/.gitbook/assets/external_pipeline (1).jpg deleted file mode 100644 index 9b038ae820..0000000000 Binary files a/docs/.gitbook/assets/external_pipeline (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/external_pipeline (2).jpg b/docs/.gitbook/assets/external_pipeline (2).jpg deleted file mode 100644 index 9b038ae820..0000000000 Binary files a/docs/.gitbook/assets/external_pipeline (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/external_pipeline (3).jpg b/docs/.gitbook/assets/external_pipeline (3).jpg deleted file mode 100644 index 9b038ae820..0000000000 Binary files a/docs/.gitbook/assets/external_pipeline (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/external_pipeline (4).jpg b/docs/.gitbook/assets/external_pipeline (4).jpg deleted file mode 100644 index 9b038ae820..0000000000 Binary files a/docs/.gitbook/assets/external_pipeline (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/external_pipeline (5).jpg b/docs/.gitbook/assets/external_pipeline (5).jpg deleted file mode 100644 index 9b038ae820..0000000000 Binary files a/docs/.gitbook/assets/external_pipeline (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/external_pipeline (6).jpg b/docs/.gitbook/assets/external_pipeline (6).jpg deleted file mode 100644 index 9b038ae820..0000000000 Binary files a/docs/.gitbook/assets/external_pipeline (6).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/external_pipeline (7).jpg b/docs/.gitbook/assets/external_pipeline (7).jpg deleted file mode 100644 index 9b038ae820..0000000000 Binary files a/docs/.gitbook/assets/external_pipeline (7).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/external_pipeline.jpg b/docs/.gitbook/assets/external_pipeline.jpg deleted file mode 100644 index 9b038ae820..0000000000 Binary files a/docs/.gitbook/assets/external_pipeline.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/first (1).jpg b/docs/.gitbook/assets/first (1).jpg deleted file mode 100644 index f17f6af8a2..0000000000 Binary files a/docs/.gitbook/assets/first (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/first (2).jpg b/docs/.gitbook/assets/first (2).jpg deleted file mode 100644 index f17f6af8a2..0000000000 Binary files a/docs/.gitbook/assets/first (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/first (3).jpg b/docs/.gitbook/assets/first (3).jpg deleted file mode 100644 index f17f6af8a2..0000000000 Binary files a/docs/.gitbook/assets/first (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/first (4).jpg b/docs/.gitbook/assets/first (4).jpg deleted file mode 100644 index f17f6af8a2..0000000000 Binary files a/docs/.gitbook/assets/first (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/first (5).jpg b/docs/.gitbook/assets/first (5).jpg deleted file mode 100644 index f17f6af8a2..0000000000 Binary files a/docs/.gitbook/assets/first (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/first (6).jpg b/docs/.gitbook/assets/first (6).jpg deleted file mode 100644 index f17f6af8a2..0000000000 Binary files a/docs/.gitbook/assets/first (6).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/first.jpg b/docs/.gitbook/assets/first.jpg deleted file mode 100644 index f17f6af8a2..0000000000 Binary files a/docs/.gitbook/assets/first.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-4 (3) (1).jpg b/docs/.gitbook/assets/gc-4 (3) (1).jpg deleted file mode 100644 index 06d29473fb..0000000000 Binary files a/docs/.gitbook/assets/gc-4 (3) (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-4 (3) (2).jpg b/docs/.gitbook/assets/gc-4 (3) (2).jpg deleted file mode 100644 index 06d29473fb..0000000000 Binary files a/docs/.gitbook/assets/gc-4 (3) (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-4 (3) (3).jpg b/docs/.gitbook/assets/gc-4 (3) (3).jpg deleted file mode 100644 index 06d29473fb..0000000000 Binary files a/docs/.gitbook/assets/gc-4 (3) (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-4 (3) (4).jpg b/docs/.gitbook/assets/gc-4 (3) (4).jpg deleted file mode 100644 index 06d29473fb..0000000000 Binary files a/docs/.gitbook/assets/gc-4 (3) (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-4 (3) (5).jpg b/docs/.gitbook/assets/gc-4 (3) (5).jpg deleted file mode 100644 index 06d29473fb..0000000000 Binary files a/docs/.gitbook/assets/gc-4 (3) (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-4 (3).jpg b/docs/.gitbook/assets/gc-4 (3).jpg deleted file mode 100644 index 06d29473fb..0000000000 Binary files a/docs/.gitbook/assets/gc-4 (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-add-chart.png b/docs/.gitbook/assets/gc-add-chart.png deleted file mode 100644 index 13f5917a98..0000000000 Binary files a/docs/.gitbook/assets/gc-add-chart.png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-add-gitaccount (1).png b/docs/.gitbook/assets/gc-add-gitaccount (1).png deleted file mode 100644 index d5549dfc3d..0000000000 Binary files a/docs/.gitbook/assets/gc-add-gitaccount (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-add-gitaccount (2).png b/docs/.gitbook/assets/gc-add-gitaccount (2).png deleted file mode 100644 index d5549dfc3d..0000000000 Binary files a/docs/.gitbook/assets/gc-add-gitaccount (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-add-gitaccount (3).png b/docs/.gitbook/assets/gc-add-gitaccount (3).png deleted file mode 100644 index d5549dfc3d..0000000000 Binary files a/docs/.gitbook/assets/gc-add-gitaccount (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-add-gitaccount (4).png b/docs/.gitbook/assets/gc-add-gitaccount (4).png deleted file mode 100644 index d5549dfc3d..0000000000 Binary files a/docs/.gitbook/assets/gc-add-gitaccount (4).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-add-gitaccount (5).png b/docs/.gitbook/assets/gc-add-gitaccount (5).png deleted file mode 100644 index d5549dfc3d..0000000000 Binary files a/docs/.gitbook/assets/gc-add-gitaccount (5).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-add-gitaccount (6).png b/docs/.gitbook/assets/gc-add-gitaccount (6).png deleted file mode 100644 index d5549dfc3d..0000000000 Binary files a/docs/.gitbook/assets/gc-add-gitaccount (6).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-add-gitaccount (7).png b/docs/.gitbook/assets/gc-add-gitaccount (7).png deleted file mode 100644 index d5549dfc3d..0000000000 Binary files a/docs/.gitbook/assets/gc-add-gitaccount (7).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-add-gitaccount (8).png b/docs/.gitbook/assets/gc-add-gitaccount (8).png deleted file mode 100644 index d5549dfc3d..0000000000 Binary files a/docs/.gitbook/assets/gc-add-gitaccount (8).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-add-gitaccount.png b/docs/.gitbook/assets/gc-add-gitaccount.png deleted file mode 100644 index d5549dfc3d..0000000000 Binary files a/docs/.gitbook/assets/gc-add-gitaccount.png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-added-git-accounts (1).png b/docs/.gitbook/assets/gc-added-git-accounts (1).png deleted file mode 100644 index 84c0f259cd..0000000000 Binary files a/docs/.gitbook/assets/gc-added-git-accounts (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-added-git-accounts (2).png b/docs/.gitbook/assets/gc-added-git-accounts (2).png deleted file mode 100644 index 84c0f259cd..0000000000 Binary files a/docs/.gitbook/assets/gc-added-git-accounts (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-added-git-accounts (3).png b/docs/.gitbook/assets/gc-added-git-accounts (3).png deleted file mode 100644 index 84c0f259cd..0000000000 Binary files a/docs/.gitbook/assets/gc-added-git-accounts (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-added-git-accounts (4).png b/docs/.gitbook/assets/gc-added-git-accounts (4).png deleted file mode 100644 index 84c0f259cd..0000000000 Binary files a/docs/.gitbook/assets/gc-added-git-accounts (4).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-added-git-accounts (5).png b/docs/.gitbook/assets/gc-added-git-accounts (5).png deleted file mode 100644 index 84c0f259cd..0000000000 Binary files a/docs/.gitbook/assets/gc-added-git-accounts (5).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-added-git-accounts (6).png b/docs/.gitbook/assets/gc-added-git-accounts (6).png deleted file mode 100644 index 84c0f259cd..0000000000 Binary files a/docs/.gitbook/assets/gc-added-git-accounts (6).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-added-git-accounts (7).png b/docs/.gitbook/assets/gc-added-git-accounts (7).png deleted file mode 100644 index 84c0f259cd..0000000000 Binary files a/docs/.gitbook/assets/gc-added-git-accounts (7).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-added-git-accounts (8).png b/docs/.gitbook/assets/gc-added-git-accounts (8).png deleted file mode 100644 index 84c0f259cd..0000000000 Binary files a/docs/.gitbook/assets/gc-added-git-accounts (8).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-added-git-accounts.png b/docs/.gitbook/assets/gc-added-git-accounts.png deleted file mode 100644 index 84c0f259cd..0000000000 Binary files a/docs/.gitbook/assets/gc-added-git-accounts.png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-chart-config-password.png b/docs/.gitbook/assets/gc-chart-config-password.png deleted file mode 100644 index e2eb9ffe21..0000000000 Binary files a/docs/.gitbook/assets/gc-chart-config-password.png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-chart-configure-anonymous.png b/docs/.gitbook/assets/gc-chart-configure-anonymous.png deleted file mode 100644 index 335f783040..0000000000 Binary files a/docs/.gitbook/assets/gc-chart-configure-anonymous.png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-chart-configure-user.png b/docs/.gitbook/assets/gc-chart-configure-user.png deleted file mode 100644 index e609674df4..0000000000 Binary files a/docs/.gitbook/assets/gc-chart-configure-user.png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-chart-list.png b/docs/.gitbook/assets/gc-chart-list.png deleted file mode 100644 index 2bfbaf559e..0000000000 Binary files a/docs/.gitbook/assets/gc-chart-list.png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-chart-name-highlight.png b/docs/.gitbook/assets/gc-chart-name-highlight.png deleted file mode 100644 index 02c30ad186..0000000000 Binary files a/docs/.gitbook/assets/gc-chart-name-highlight.png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-chart-name.png b/docs/.gitbook/assets/gc-chart-name.png deleted file mode 100644 index dadbe645f2..0000000000 Binary files a/docs/.gitbook/assets/gc-chart-name.png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-cluster-add-environment (1).png b/docs/.gitbook/assets/gc-cluster-add-environment (1).png deleted file mode 100644 index e8b4f0f77d..0000000000 Binary files a/docs/.gitbook/assets/gc-cluster-add-environment (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-cluster-add-environment (2).png b/docs/.gitbook/assets/gc-cluster-add-environment (2).png deleted file mode 100644 index e8b4f0f77d..0000000000 Binary files a/docs/.gitbook/assets/gc-cluster-add-environment (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-cluster-add-environment (3).png b/docs/.gitbook/assets/gc-cluster-add-environment (3).png deleted file mode 100644 index e8b4f0f77d..0000000000 Binary files a/docs/.gitbook/assets/gc-cluster-add-environment (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-cluster-add-environment (4).png b/docs/.gitbook/assets/gc-cluster-add-environment (4).png deleted file mode 100644 index e8b4f0f77d..0000000000 Binary files a/docs/.gitbook/assets/gc-cluster-add-environment (4).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-cluster-add-environment (5).png b/docs/.gitbook/assets/gc-cluster-add-environment (5).png deleted file mode 100644 index e8b4f0f77d..0000000000 Binary files a/docs/.gitbook/assets/gc-cluster-add-environment (5).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-cluster-add-environment (6).png b/docs/.gitbook/assets/gc-cluster-add-environment (6).png deleted file mode 100644 index e8b4f0f77d..0000000000 Binary files a/docs/.gitbook/assets/gc-cluster-add-environment (6).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-cluster-add-environment (7).png b/docs/.gitbook/assets/gc-cluster-add-environment (7).png deleted file mode 100644 index e8b4f0f77d..0000000000 Binary files a/docs/.gitbook/assets/gc-cluster-add-environment (7).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-cluster-add-environment.png b/docs/.gitbook/assets/gc-cluster-add-environment.png deleted file mode 100644 index e8b4f0f77d..0000000000 Binary files a/docs/.gitbook/assets/gc-cluster-add-environment.png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-cluster-agents (3) (1).png b/docs/.gitbook/assets/gc-cluster-agents (3) (1).png deleted file mode 100644 index a9f46638ae..0000000000 Binary files a/docs/.gitbook/assets/gc-cluster-agents (3) (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-cluster-agents (3) (2).png b/docs/.gitbook/assets/gc-cluster-agents (3) (2).png deleted file mode 100644 index a9f46638ae..0000000000 Binary files a/docs/.gitbook/assets/gc-cluster-agents (3) (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-cluster-agents (3) (3).png b/docs/.gitbook/assets/gc-cluster-agents (3) (3).png deleted file mode 100644 index a9f46638ae..0000000000 Binary files a/docs/.gitbook/assets/gc-cluster-agents (3) (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-cluster-agents (3) (4).png b/docs/.gitbook/assets/gc-cluster-agents (3) (4).png deleted file mode 100644 index a9f46638ae..0000000000 Binary files a/docs/.gitbook/assets/gc-cluster-agents (3) (4).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-cluster-agents (3) (5).png b/docs/.gitbook/assets/gc-cluster-agents (3) (5).png deleted file mode 100644 index a9f46638ae..0000000000 Binary files a/docs/.gitbook/assets/gc-cluster-agents (3) (5).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-cluster-agents (3) (6).png b/docs/.gitbook/assets/gc-cluster-agents (3) (6).png deleted file mode 100644 index a9f46638ae..0000000000 Binary files a/docs/.gitbook/assets/gc-cluster-agents (3) (6).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-cluster-agents (3).png b/docs/.gitbook/assets/gc-cluster-agents (3).png deleted file mode 100644 index a9f46638ae..0000000000 Binary files a/docs/.gitbook/assets/gc-cluster-agents (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-cluster-agents-details (1).png b/docs/.gitbook/assets/gc-cluster-agents-details (1).png deleted file mode 100644 index 840e0c2b6a..0000000000 Binary files a/docs/.gitbook/assets/gc-cluster-agents-details (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-cluster-agents-details (2).png b/docs/.gitbook/assets/gc-cluster-agents-details (2).png deleted file mode 100644 index 840e0c2b6a..0000000000 Binary files a/docs/.gitbook/assets/gc-cluster-agents-details (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-cluster-agents-details (3).png b/docs/.gitbook/assets/gc-cluster-agents-details (3).png deleted file mode 100644 index 840e0c2b6a..0000000000 Binary files a/docs/.gitbook/assets/gc-cluster-agents-details (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-cluster-agents-details (4).png b/docs/.gitbook/assets/gc-cluster-agents-details (4).png deleted file mode 100644 index 840e0c2b6a..0000000000 Binary files a/docs/.gitbook/assets/gc-cluster-agents-details (4).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-cluster-agents-details (5).png b/docs/.gitbook/assets/gc-cluster-agents-details (5).png deleted file mode 100644 index 840e0c2b6a..0000000000 Binary files a/docs/.gitbook/assets/gc-cluster-agents-details (5).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-cluster-agents-details (6).png b/docs/.gitbook/assets/gc-cluster-agents-details (6).png deleted file mode 100644 index 840e0c2b6a..0000000000 Binary files a/docs/.gitbook/assets/gc-cluster-agents-details (6).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-cluster-agents-details.png b/docs/.gitbook/assets/gc-cluster-agents-details.png deleted file mode 100644 index 840e0c2b6a..0000000000 Binary files a/docs/.gitbook/assets/gc-cluster-agents-details.png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-cluster-agents.png b/docs/.gitbook/assets/gc-cluster-agents.png deleted file mode 100644 index a9f46638ae..0000000000 Binary files a/docs/.gitbook/assets/gc-cluster-agents.png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-cluster-update-environment (1) (2) (1).png b/docs/.gitbook/assets/gc-cluster-update-environment (1) (2) (1).png deleted file mode 100644 index 43535e0441..0000000000 Binary files a/docs/.gitbook/assets/gc-cluster-update-environment (1) (2) (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-cluster-update-environment (1) (2) (2).png b/docs/.gitbook/assets/gc-cluster-update-environment (1) (2) (2).png deleted file mode 100644 index 43535e0441..0000000000 Binary files a/docs/.gitbook/assets/gc-cluster-update-environment (1) (2) (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-cluster-update-environment (1) (2) (3).png b/docs/.gitbook/assets/gc-cluster-update-environment (1) (2) (3).png deleted file mode 100644 index 43535e0441..0000000000 Binary files a/docs/.gitbook/assets/gc-cluster-update-environment (1) (2) (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-cluster-update-environment (1) (2) (4).png b/docs/.gitbook/assets/gc-cluster-update-environment (1) (2) (4).png deleted file mode 100644 index 43535e0441..0000000000 Binary files a/docs/.gitbook/assets/gc-cluster-update-environment (1) (2) (4).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-cluster-update-environment (1) (2).png b/docs/.gitbook/assets/gc-cluster-update-environment (1) (2).png deleted file mode 100644 index 43535e0441..0000000000 Binary files a/docs/.gitbook/assets/gc-cluster-update-environment (1) (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-cluster-update-environment (1).png b/docs/.gitbook/assets/gc-cluster-update-environment (1).png deleted file mode 100644 index 43535e0441..0000000000 Binary files a/docs/.gitbook/assets/gc-cluster-update-environment (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-docker-add (3) (1).png b/docs/.gitbook/assets/gc-docker-add (3) (1).png deleted file mode 100644 index 555de5f6d7..0000000000 Binary files a/docs/.gitbook/assets/gc-docker-add (3) (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-docker-add (3) (2).png b/docs/.gitbook/assets/gc-docker-add (3) (2).png deleted file mode 100644 index 555de5f6d7..0000000000 Binary files a/docs/.gitbook/assets/gc-docker-add (3) (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-docker-add (3) (3).png b/docs/.gitbook/assets/gc-docker-add (3) (3).png deleted file mode 100644 index 555de5f6d7..0000000000 Binary files a/docs/.gitbook/assets/gc-docker-add (3) (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-docker-add (3) (4).png b/docs/.gitbook/assets/gc-docker-add (3) (4).png deleted file mode 100644 index 555de5f6d7..0000000000 Binary files a/docs/.gitbook/assets/gc-docker-add (3) (4).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-docker-add (3).png b/docs/.gitbook/assets/gc-docker-add (3).png deleted file mode 100644 index 555de5f6d7..0000000000 Binary files a/docs/.gitbook/assets/gc-docker-add (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-docker-configure-aws (1).png b/docs/.gitbook/assets/gc-docker-configure-aws (1).png deleted file mode 100644 index e5efe105fe..0000000000 Binary files a/docs/.gitbook/assets/gc-docker-configure-aws (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-docker-configure-aws (2).png b/docs/.gitbook/assets/gc-docker-configure-aws (2).png deleted file mode 100644 index e5efe105fe..0000000000 Binary files a/docs/.gitbook/assets/gc-docker-configure-aws (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-docker-configure-aws (3).png b/docs/.gitbook/assets/gc-docker-configure-aws (3).png deleted file mode 100644 index e5efe105fe..0000000000 Binary files a/docs/.gitbook/assets/gc-docker-configure-aws (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-docker-configure-aws (4).png b/docs/.gitbook/assets/gc-docker-configure-aws (4).png deleted file mode 100644 index e5efe105fe..0000000000 Binary files a/docs/.gitbook/assets/gc-docker-configure-aws (4).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-docker-configure-aws (5).png b/docs/.gitbook/assets/gc-docker-configure-aws (5).png deleted file mode 100644 index e5efe105fe..0000000000 Binary files a/docs/.gitbook/assets/gc-docker-configure-aws (5).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-docker-configure-aws (6).png b/docs/.gitbook/assets/gc-docker-configure-aws (6).png deleted file mode 100644 index e5efe105fe..0000000000 Binary files a/docs/.gitbook/assets/gc-docker-configure-aws (6).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-docker-configure-aws (7).png b/docs/.gitbook/assets/gc-docker-configure-aws (7).png deleted file mode 100644 index e5efe105fe..0000000000 Binary files a/docs/.gitbook/assets/gc-docker-configure-aws (7).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-docker-configure-aws.png b/docs/.gitbook/assets/gc-docker-configure-aws.png deleted file mode 100644 index e5efe105fe..0000000000 Binary files a/docs/.gitbook/assets/gc-docker-configure-aws.png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-docker-configure-docker-hub.png b/docs/.gitbook/assets/gc-docker-configure-docker-hub.png deleted file mode 100644 index e88d447b80..0000000000 Binary files a/docs/.gitbook/assets/gc-docker-configure-docker-hub.png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-docker-configure-gcr.png b/docs/.gitbook/assets/gc-docker-configure-gcr.png deleted file mode 100644 index dd8c2a2621..0000000000 Binary files a/docs/.gitbook/assets/gc-docker-configure-gcr.png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-docker-configure-other (2).png b/docs/.gitbook/assets/gc-docker-configure-other (2).png deleted file mode 100644 index 7c0e42c958..0000000000 Binary files a/docs/.gitbook/assets/gc-docker-configure-other (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-docker-configure-other (3) (1).png b/docs/.gitbook/assets/gc-docker-configure-other (3) (1).png deleted file mode 100644 index 08f95215b0..0000000000 Binary files a/docs/.gitbook/assets/gc-docker-configure-other (3) (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-docker-configure-other (3) (2).png b/docs/.gitbook/assets/gc-docker-configure-other (3) (2).png deleted file mode 100644 index 08f95215b0..0000000000 Binary files a/docs/.gitbook/assets/gc-docker-configure-other (3) (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-docker-configure-other (3) (3).png b/docs/.gitbook/assets/gc-docker-configure-other (3) (3).png deleted file mode 100644 index 08f95215b0..0000000000 Binary files a/docs/.gitbook/assets/gc-docker-configure-other (3) (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-docker-configure-other (3) (4).png b/docs/.gitbook/assets/gc-docker-configure-other (3) (4).png deleted file mode 100644 index 08f95215b0..0000000000 Binary files a/docs/.gitbook/assets/gc-docker-configure-other (3) (4).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-docker-configure-other (3) (5).png b/docs/.gitbook/assets/gc-docker-configure-other (3) (5).png deleted file mode 100644 index 08f95215b0..0000000000 Binary files a/docs/.gitbook/assets/gc-docker-configure-other (3) (5).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-docker-configure-other (3) (6).png b/docs/.gitbook/assets/gc-docker-configure-other (3) (6).png deleted file mode 100644 index 08f95215b0..0000000000 Binary files a/docs/.gitbook/assets/gc-docker-configure-other (3) (6).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-docker-configure-other (3).png b/docs/.gitbook/assets/gc-docker-configure-other (3).png deleted file mode 100644 index 08f95215b0..0000000000 Binary files a/docs/.gitbook/assets/gc-docker-configure-other (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-edit-chart.png b/docs/.gitbook/assets/gc-edit-chart.png deleted file mode 100644 index cc0de6e0e3..0000000000 Binary files a/docs/.gitbook/assets/gc-edit-chart.png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-git-account-configure (3).png b/docs/.gitbook/assets/gc-git-account-configure (3).png deleted file mode 100644 index 7716dba60d..0000000000 Binary files a/docs/.gitbook/assets/gc-git-account-configure (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-git-account-configure (4) (1).png b/docs/.gitbook/assets/gc-git-account-configure (4) (1).png deleted file mode 100644 index 7716dba60d..0000000000 Binary files a/docs/.gitbook/assets/gc-git-account-configure (4) (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-git-account-configure (4) (2).png b/docs/.gitbook/assets/gc-git-account-configure (4) (2).png deleted file mode 100644 index 7716dba60d..0000000000 Binary files a/docs/.gitbook/assets/gc-git-account-configure (4) (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-git-account-configure (4) (3).png b/docs/.gitbook/assets/gc-git-account-configure (4) (3).png deleted file mode 100644 index 7716dba60d..0000000000 Binary files a/docs/.gitbook/assets/gc-git-account-configure (4) (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-git-account-configure (4) (4).png b/docs/.gitbook/assets/gc-git-account-configure (4) (4).png deleted file mode 100644 index 7716dba60d..0000000000 Binary files a/docs/.gitbook/assets/gc-git-account-configure (4) (4).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-git-account-configure (4) (5).png b/docs/.gitbook/assets/gc-git-account-configure (4) (5).png deleted file mode 100644 index 7716dba60d..0000000000 Binary files a/docs/.gitbook/assets/gc-git-account-configure (4) (5).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-git-account-configure (4) (6).png b/docs/.gitbook/assets/gc-git-account-configure (4) (6).png deleted file mode 100644 index 7716dba60d..0000000000 Binary files a/docs/.gitbook/assets/gc-git-account-configure (4) (6).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-git-account-configure (4) (7).png b/docs/.gitbook/assets/gc-git-account-configure (4) (7).png deleted file mode 100644 index 7716dba60d..0000000000 Binary files a/docs/.gitbook/assets/gc-git-account-configure (4) (7).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-git-account-configure (4).png b/docs/.gitbook/assets/gc-git-account-configure (4).png deleted file mode 100644 index 7716dba60d..0000000000 Binary files a/docs/.gitbook/assets/gc-git-account-configure (4).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-git-account-configure-password (1).png b/docs/.gitbook/assets/gc-git-account-configure-password (1).png deleted file mode 100644 index 2b45ad3345..0000000000 Binary files a/docs/.gitbook/assets/gc-git-account-configure-password (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-git-account-configure-password (2).png b/docs/.gitbook/assets/gc-git-account-configure-password (2).png deleted file mode 100644 index 2b45ad3345..0000000000 Binary files a/docs/.gitbook/assets/gc-git-account-configure-password (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-git-account-configure-password (3).png b/docs/.gitbook/assets/gc-git-account-configure-password (3).png deleted file mode 100644 index 2b45ad3345..0000000000 Binary files a/docs/.gitbook/assets/gc-git-account-configure-password (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-git-account-configure-password (4).png b/docs/.gitbook/assets/gc-git-account-configure-password (4).png deleted file mode 100644 index 2b45ad3345..0000000000 Binary files a/docs/.gitbook/assets/gc-git-account-configure-password (4).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-git-account-configure-password (5).png b/docs/.gitbook/assets/gc-git-account-configure-password (5).png deleted file mode 100644 index 2b45ad3345..0000000000 Binary files a/docs/.gitbook/assets/gc-git-account-configure-password (5).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-git-account-configure-password (6).png b/docs/.gitbook/assets/gc-git-account-configure-password (6).png deleted file mode 100644 index 2b45ad3345..0000000000 Binary files a/docs/.gitbook/assets/gc-git-account-configure-password (6).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-git-account-configure-password (7).png b/docs/.gitbook/assets/gc-git-account-configure-password (7).png deleted file mode 100644 index 2b45ad3345..0000000000 Binary files a/docs/.gitbook/assets/gc-git-account-configure-password (7).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-git-account-configure-password.png b/docs/.gitbook/assets/gc-git-account-configure-password.png deleted file mode 100644 index 2b45ad3345..0000000000 Binary files a/docs/.gitbook/assets/gc-git-account-configure-password.png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-git-account-configure-user-auth (4) (1).png b/docs/.gitbook/assets/gc-git-account-configure-user-auth (4) (1).png deleted file mode 100644 index d7bb5c7a4b..0000000000 Binary files a/docs/.gitbook/assets/gc-git-account-configure-user-auth (4) (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-git-account-configure-user-auth (4) (2).png b/docs/.gitbook/assets/gc-git-account-configure-user-auth (4) (2).png deleted file mode 100644 index d7bb5c7a4b..0000000000 Binary files a/docs/.gitbook/assets/gc-git-account-configure-user-auth (4) (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-git-account-configure-user-auth (4) (3).png b/docs/.gitbook/assets/gc-git-account-configure-user-auth (4) (3).png deleted file mode 100644 index d7bb5c7a4b..0000000000 Binary files a/docs/.gitbook/assets/gc-git-account-configure-user-auth (4) (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-git-account-configure-user-auth (4) (4).png b/docs/.gitbook/assets/gc-git-account-configure-user-auth (4) (4).png deleted file mode 100644 index d7bb5c7a4b..0000000000 Binary files a/docs/.gitbook/assets/gc-git-account-configure-user-auth (4) (4).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-git-account-configure-user-auth (4) (5).png b/docs/.gitbook/assets/gc-git-account-configure-user-auth (4) (5).png deleted file mode 100644 index d7bb5c7a4b..0000000000 Binary files a/docs/.gitbook/assets/gc-git-account-configure-user-auth (4) (5).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-git-account-configure-user-auth (4) (6).png b/docs/.gitbook/assets/gc-git-account-configure-user-auth (4) (6).png deleted file mode 100644 index d7bb5c7a4b..0000000000 Binary files a/docs/.gitbook/assets/gc-git-account-configure-user-auth (4) (6).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-git-account-configure-user-auth (4) (7).png b/docs/.gitbook/assets/gc-git-account-configure-user-auth (4) (7).png deleted file mode 100644 index d7bb5c7a4b..0000000000 Binary files a/docs/.gitbook/assets/gc-git-account-configure-user-auth (4) (7).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-git-account-configure-user-auth (4).png b/docs/.gitbook/assets/gc-git-account-configure-user-auth (4).png deleted file mode 100644 index d7bb5c7a4b..0000000000 Binary files a/docs/.gitbook/assets/gc-git-account-configure-user-auth (4).png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-git-account-configure-user-auth.png b/docs/.gitbook/assets/gc-git-account-configure-user-auth.png deleted file mode 100644 index d7bb5c7a4b..0000000000 Binary files a/docs/.gitbook/assets/gc-git-account-configure-user-auth.png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-gitops-provider.png b/docs/.gitbook/assets/gc-gitops-provider.png deleted file mode 100644 index e0410131bd..0000000000 Binary files a/docs/.gitbook/assets/gc-gitops-provider.png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-gitops-save.png b/docs/.gitbook/assets/gc-gitops-save.png deleted file mode 100644 index 35101ae0f0..0000000000 Binary files a/docs/.gitbook/assets/gc-gitops-save.png and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-add-notification (3) (1).jpg b/docs/.gitbook/assets/gc-noitfication-add-notification (3) (1).jpg deleted file mode 100644 index 9a8244e5c3..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-add-notification (3) (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-add-notification (3) (2).jpg b/docs/.gitbook/assets/gc-noitfication-add-notification (3) (2).jpg deleted file mode 100644 index 9a8244e5c3..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-add-notification (3) (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-add-notification (3) (3).jpg b/docs/.gitbook/assets/gc-noitfication-add-notification (3) (3).jpg deleted file mode 100644 index 9a8244e5c3..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-add-notification (3) (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-add-notification (3) (4).jpg b/docs/.gitbook/assets/gc-noitfication-add-notification (3) (4).jpg deleted file mode 100644 index 9a8244e5c3..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-add-notification (3) (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-add-notification (3) (5).jpg b/docs/.gitbook/assets/gc-noitfication-add-notification (3) (5).jpg deleted file mode 100644 index 9a8244e5c3..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-add-notification (3) (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-add-notification (3).jpg b/docs/.gitbook/assets/gc-noitfication-add-notification (3).jpg deleted file mode 100644 index 9a8244e5c3..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-add-notification (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-add-notification-configuration-select-event (1).jpg b/docs/.gitbook/assets/gc-noitfication-add-notification-configuration-select-event (1).jpg deleted file mode 100644 index 87cb86ebfc..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-add-notification-configuration-select-event (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-add-notification-configuration-select-event (2).jpg b/docs/.gitbook/assets/gc-noitfication-add-notification-configuration-select-event (2).jpg deleted file mode 100644 index 87cb86ebfc..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-add-notification-configuration-select-event (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-add-notification-configuration-select-event (3).jpg b/docs/.gitbook/assets/gc-noitfication-add-notification-configuration-select-event (3).jpg deleted file mode 100644 index 87cb86ebfc..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-add-notification-configuration-select-event (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-add-notification-configuration-select-event (4).jpg b/docs/.gitbook/assets/gc-noitfication-add-notification-configuration-select-event (4).jpg deleted file mode 100644 index 87cb86ebfc..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-add-notification-configuration-select-event (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-add-notification-configuration-select-event (5).jpg b/docs/.gitbook/assets/gc-noitfication-add-notification-configuration-select-event (5).jpg deleted file mode 100644 index 87cb86ebfc..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-add-notification-configuration-select-event (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-add-notification-configuration-select-event.jpg b/docs/.gitbook/assets/gc-noitfication-add-notification-configuration-select-event.jpg deleted file mode 100644 index 87cb86ebfc..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-add-notification-configuration-select-event.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-add-notification-configuration-select-event2 (1).jpg b/docs/.gitbook/assets/gc-noitfication-add-notification-configuration-select-event2 (1).jpg deleted file mode 100644 index db9e313880..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-add-notification-configuration-select-event2 (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-add-notification-configuration-select-event2 (2).jpg b/docs/.gitbook/assets/gc-noitfication-add-notification-configuration-select-event2 (2).jpg deleted file mode 100644 index db9e313880..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-add-notification-configuration-select-event2 (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-add-notification-configuration-select-event2 (3).jpg b/docs/.gitbook/assets/gc-noitfication-add-notification-configuration-select-event2 (3).jpg deleted file mode 100644 index db9e313880..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-add-notification-configuration-select-event2 (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-add-notification-configuration-select-event2 (4).jpg b/docs/.gitbook/assets/gc-noitfication-add-notification-configuration-select-event2 (4).jpg deleted file mode 100644 index db9e313880..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-add-notification-configuration-select-event2 (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-add-notification-configuration-select-event2 (5).jpg b/docs/.gitbook/assets/gc-noitfication-add-notification-configuration-select-event2 (5).jpg deleted file mode 100644 index db9e313880..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-add-notification-configuration-select-event2 (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-add-notification-configuration-select-event2 (6).jpg b/docs/.gitbook/assets/gc-noitfication-add-notification-configuration-select-event2 (6).jpg deleted file mode 100644 index db9e313880..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-add-notification-configuration-select-event2 (6).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-add-notification-configuration-select-event2.jpg b/docs/.gitbook/assets/gc-noitfication-add-notification-configuration-select-event2.jpg deleted file mode 100644 index db9e313880..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-add-notification-configuration-select-event2.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-condfiguration-add (2) (1).jpg b/docs/.gitbook/assets/gc-noitfication-condfiguration-add (2) (1).jpg deleted file mode 100644 index d4719595e8..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-condfiguration-add (2) (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-condfiguration-add (2) (2).jpg b/docs/.gitbook/assets/gc-noitfication-condfiguration-add (2) (2).jpg deleted file mode 100644 index d4719595e8..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-condfiguration-add (2) (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-condfiguration-add (2) (3).jpg b/docs/.gitbook/assets/gc-noitfication-condfiguration-add (2) (3).jpg deleted file mode 100644 index d4719595e8..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-condfiguration-add (2) (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-condfiguration-add (2) (4).jpg b/docs/.gitbook/assets/gc-noitfication-condfiguration-add (2) (4).jpg deleted file mode 100644 index d4719595e8..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-condfiguration-add (2) (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-condfiguration-add (2).jpg b/docs/.gitbook/assets/gc-noitfication-condfiguration-add (2).jpg deleted file mode 100644 index d4719595e8..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-condfiguration-add (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-condfiguration-add-slack (1).jpg b/docs/.gitbook/assets/gc-noitfication-condfiguration-add-slack (1).jpg deleted file mode 100644 index 95897b3c40..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-condfiguration-add-slack (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-condfiguration-add-slack (2).jpg b/docs/.gitbook/assets/gc-noitfication-condfiguration-add-slack (2).jpg deleted file mode 100644 index 95897b3c40..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-condfiguration-add-slack (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-condfiguration-add-slack (3).jpg b/docs/.gitbook/assets/gc-noitfication-condfiguration-add-slack (3).jpg deleted file mode 100644 index 95897b3c40..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-condfiguration-add-slack (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-condfiguration-add-slack (4).jpg b/docs/.gitbook/assets/gc-noitfication-condfiguration-add-slack (4).jpg deleted file mode 100644 index 95897b3c40..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-condfiguration-add-slack (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-condfiguration-add-slack (5).jpg b/docs/.gitbook/assets/gc-noitfication-condfiguration-add-slack (5).jpg deleted file mode 100644 index 95897b3c40..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-condfiguration-add-slack (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-condfiguration-add-slack.jpg b/docs/.gitbook/assets/gc-noitfication-condfiguration-add-slack.jpg deleted file mode 100644 index 95897b3c40..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-condfiguration-add-slack.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-condfiguration-add.jpg b/docs/.gitbook/assets/gc-noitfication-condfiguration-add.jpg deleted file mode 100644 index d4719595e8..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-condfiguration-add.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-condfiguration-configure-slack (1).jpg b/docs/.gitbook/assets/gc-noitfication-condfiguration-configure-slack (1).jpg deleted file mode 100644 index 82eebc4eb6..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-condfiguration-configure-slack (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-condfiguration-configure-slack (2).jpg b/docs/.gitbook/assets/gc-noitfication-condfiguration-configure-slack (2).jpg deleted file mode 100644 index 82eebc4eb6..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-condfiguration-configure-slack (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-condfiguration-configure-slack (3).jpg b/docs/.gitbook/assets/gc-noitfication-condfiguration-configure-slack (3).jpg deleted file mode 100644 index 82eebc4eb6..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-condfiguration-configure-slack (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-condfiguration-configure-slack (4).jpg b/docs/.gitbook/assets/gc-noitfication-condfiguration-configure-slack (4).jpg deleted file mode 100644 index 82eebc4eb6..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-condfiguration-configure-slack (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-condfiguration-configure-slack (5).jpg b/docs/.gitbook/assets/gc-noitfication-condfiguration-configure-slack (5).jpg deleted file mode 100644 index 82eebc4eb6..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-condfiguration-configure-slack (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-condfiguration-configure-slack.jpg b/docs/.gitbook/assets/gc-noitfication-condfiguration-configure-slack.jpg deleted file mode 100644 index 82eebc4eb6..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-condfiguration-configure-slack.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-condfiguration-ses-confige (3) (1).jpg b/docs/.gitbook/assets/gc-noitfication-condfiguration-ses-confige (3) (1).jpg deleted file mode 100644 index ec208171f3..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-condfiguration-ses-confige (3) (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-condfiguration-ses-confige (3) (2).jpg b/docs/.gitbook/assets/gc-noitfication-condfiguration-ses-confige (3) (2).jpg deleted file mode 100644 index ec208171f3..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-condfiguration-ses-confige (3) (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-condfiguration-ses-confige (3) (3).jpg b/docs/.gitbook/assets/gc-noitfication-condfiguration-ses-confige (3) (3).jpg deleted file mode 100644 index ec208171f3..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-condfiguration-ses-confige (3) (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-condfiguration-ses-confige (3) (4).jpg b/docs/.gitbook/assets/gc-noitfication-condfiguration-ses-confige (3) (4).jpg deleted file mode 100644 index ec208171f3..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-condfiguration-ses-confige (3) (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-condfiguration-ses-confige (3) (5).jpg b/docs/.gitbook/assets/gc-noitfication-condfiguration-ses-confige (3) (5).jpg deleted file mode 100644 index ec208171f3..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-condfiguration-ses-confige (3) (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-condfiguration-ses-confige (3).jpg b/docs/.gitbook/assets/gc-noitfication-condfiguration-ses-confige (3).jpg deleted file mode 100644 index ec208171f3..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-condfiguration-ses-confige (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-condfiguration-tab (1).jpg b/docs/.gitbook/assets/gc-noitfication-condfiguration-tab (1).jpg deleted file mode 100644 index bb3dc5d3a9..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-condfiguration-tab (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-condfiguration-tab (3) (1).jpg b/docs/.gitbook/assets/gc-noitfication-condfiguration-tab (3) (1).jpg deleted file mode 100644 index bb3dc5d3a9..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-condfiguration-tab (3) (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-condfiguration-tab (3) (2).jpg b/docs/.gitbook/assets/gc-noitfication-condfiguration-tab (3) (2).jpg deleted file mode 100644 index bb3dc5d3a9..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-condfiguration-tab (3) (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-condfiguration-tab (3) (3).jpg b/docs/.gitbook/assets/gc-noitfication-condfiguration-tab (3) (3).jpg deleted file mode 100644 index bb3dc5d3a9..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-condfiguration-tab (3) (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-condfiguration-tab (3) (4).jpg b/docs/.gitbook/assets/gc-noitfication-condfiguration-tab (3) (4).jpg deleted file mode 100644 index bb3dc5d3a9..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-condfiguration-tab (3) (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-condfiguration-tab (3) (5).jpg b/docs/.gitbook/assets/gc-noitfication-condfiguration-tab (3) (5).jpg deleted file mode 100644 index bb3dc5d3a9..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-condfiguration-tab (3) (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-condfiguration-tab (3) (6).jpg b/docs/.gitbook/assets/gc-noitfication-condfiguration-tab (3) (6).jpg deleted file mode 100644 index bb3dc5d3a9..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-condfiguration-tab (3) (6).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/gc-noitfication-condfiguration-tab (3).jpg b/docs/.gitbook/assets/gc-noitfication-condfiguration-tab (3).jpg deleted file mode 100644 index bb3dc5d3a9..0000000000 Binary files a/docs/.gitbook/assets/gc-noitfication-condfiguration-tab (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/git-accounts-1.png b/docs/.gitbook/assets/git-accounts-1.png deleted file mode 100644 index 91eddbc890..0000000000 Binary files a/docs/.gitbook/assets/git-accounts-1.png and /dev/null differ diff --git a/docs/.gitbook/assets/git-accounts-2.png b/docs/.gitbook/assets/git-accounts-2.png deleted file mode 100644 index 1a7eec1998..0000000000 Binary files a/docs/.gitbook/assets/git-accounts-2.png and /dev/null differ diff --git a/docs/.gitbook/assets/git-accounts-3.png b/docs/.gitbook/assets/git-accounts-3.png deleted file mode 100644 index 59f9342e3a..0000000000 Binary files a/docs/.gitbook/assets/git-accounts-3.png and /dev/null differ diff --git a/docs/.gitbook/assets/git-accounts-4.png b/docs/.gitbook/assets/git-accounts-4.png deleted file mode 100644 index 76909345cd..0000000000 Binary files a/docs/.gitbook/assets/git-accounts-4.png and /dev/null differ diff --git a/docs/.gitbook/assets/git-accounts-5.png b/docs/.gitbook/assets/git-accounts-5.png deleted file mode 100644 index a1ddb3d225..0000000000 Binary files a/docs/.gitbook/assets/git-accounts-5.png and /dev/null differ diff --git a/docs/.gitbook/assets/git-accounts-6.png b/docs/.gitbook/assets/git-accounts-6.png deleted file mode 100644 index 44675004cc..0000000000 Binary files a/docs/.gitbook/assets/git-accounts-6.png and /dev/null differ diff --git a/docs/.gitbook/assets/git-checkout-path (1).jpg b/docs/.gitbook/assets/git-checkout-path (1).jpg deleted file mode 100644 index c0bf3d25c2..0000000000 Binary files a/docs/.gitbook/assets/git-checkout-path (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/git-checkout-path (2).jpg b/docs/.gitbook/assets/git-checkout-path (2).jpg deleted file mode 100644 index c0bf3d25c2..0000000000 Binary files a/docs/.gitbook/assets/git-checkout-path (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/git-checkout-path (3).jpg b/docs/.gitbook/assets/git-checkout-path (3).jpg deleted file mode 100644 index c0bf3d25c2..0000000000 Binary files a/docs/.gitbook/assets/git-checkout-path (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/git-checkout-path (4).jpg b/docs/.gitbook/assets/git-checkout-path (4).jpg deleted file mode 100644 index c0bf3d25c2..0000000000 Binary files a/docs/.gitbook/assets/git-checkout-path (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/git-checkout-path (5).jpg b/docs/.gitbook/assets/git-checkout-path (5).jpg deleted file mode 100644 index c0bf3d25c2..0000000000 Binary files a/docs/.gitbook/assets/git-checkout-path (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/git-checkout-path.jpg b/docs/.gitbook/assets/git-checkout-path.jpg deleted file mode 100644 index c0bf3d25c2..0000000000 Binary files a/docs/.gitbook/assets/git-checkout-path.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/git_account_gc3 (3).png b/docs/.gitbook/assets/git_account_gc3 (3).png deleted file mode 100644 index 2b45ad3345..0000000000 Binary files a/docs/.gitbook/assets/git_account_gc3 (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/git_account_gc5 (4) (1).png b/docs/.gitbook/assets/git_account_gc5 (4) (1).png deleted file mode 100644 index 97b596c545..0000000000 Binary files a/docs/.gitbook/assets/git_account_gc5 (4) (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/git_account_gc5 (4) (2).png b/docs/.gitbook/assets/git_account_gc5 (4) (2).png deleted file mode 100644 index 97b596c545..0000000000 Binary files a/docs/.gitbook/assets/git_account_gc5 (4) (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/git_account_gc5 (4) (3).png b/docs/.gitbook/assets/git_account_gc5 (4) (3).png deleted file mode 100644 index 97b596c545..0000000000 Binary files a/docs/.gitbook/assets/git_account_gc5 (4) (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/git_account_gc5 (4) (4).png b/docs/.gitbook/assets/git_account_gc5 (4) (4).png deleted file mode 100644 index 97b596c545..0000000000 Binary files a/docs/.gitbook/assets/git_account_gc5 (4) (4).png and /dev/null differ diff --git a/docs/.gitbook/assets/git_account_gc5 (4) (5).png b/docs/.gitbook/assets/git_account_gc5 (4) (5).png deleted file mode 100644 index 97b596c545..0000000000 Binary files a/docs/.gitbook/assets/git_account_gc5 (4) (5).png and /dev/null differ diff --git a/docs/.gitbook/assets/git_account_gc5 (4) (6).png b/docs/.gitbook/assets/git_account_gc5 (4) (6).png deleted file mode 100644 index 97b596c545..0000000000 Binary files a/docs/.gitbook/assets/git_account_gc5 (4) (6).png and /dev/null differ diff --git a/docs/.gitbook/assets/git_account_gc5 (4) (7).png b/docs/.gitbook/assets/git_account_gc5 (4) (7).png deleted file mode 100644 index 97b596c545..0000000000 Binary files a/docs/.gitbook/assets/git_account_gc5 (4) (7).png and /dev/null differ diff --git a/docs/.gitbook/assets/git_account_gc5 (4).png b/docs/.gitbook/assets/git_account_gc5 (4).png deleted file mode 100644 index 97b596c545..0000000000 Binary files a/docs/.gitbook/assets/git_account_gc5 (4).png and /dev/null differ diff --git a/docs/.gitbook/assets/git_account_gc5.png b/docs/.gitbook/assets/git_account_gc5.png deleted file mode 100644 index 97b596c545..0000000000 Binary files a/docs/.gitbook/assets/git_account_gc5.png and /dev/null differ diff --git a/docs/.gitbook/assets/git_material2 (3).jpg b/docs/.gitbook/assets/git_material2 (3).jpg deleted file mode 100644 index c0bf3d25c2..0000000000 Binary files a/docs/.gitbook/assets/git_material2 (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/github_url (2) (2) (1).png b/docs/.gitbook/assets/github_url (2) (2) (1).png deleted file mode 100644 index 3b45a16e0a..0000000000 Binary files a/docs/.gitbook/assets/github_url (2) (2) (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/github_url (2) (2) (2).png b/docs/.gitbook/assets/github_url (2) (2) (2).png deleted file mode 100644 index 3b45a16e0a..0000000000 Binary files a/docs/.gitbook/assets/github_url (2) (2) (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/github_url (2) (2) (3).png b/docs/.gitbook/assets/github_url (2) (2) (3).png deleted file mode 100644 index 3b45a16e0a..0000000000 Binary files a/docs/.gitbook/assets/github_url (2) (2) (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/github_url (2) (2) (4).png b/docs/.gitbook/assets/github_url (2) (2) (4).png deleted file mode 100644 index 3b45a16e0a..0000000000 Binary files a/docs/.gitbook/assets/github_url (2) (2) (4).png and /dev/null differ diff --git a/docs/.gitbook/assets/github_url (2) (2).png b/docs/.gitbook/assets/github_url (2) (2).png deleted file mode 100644 index 3b45a16e0a..0000000000 Binary files a/docs/.gitbook/assets/github_url (2) (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/github_url (2).png b/docs/.gitbook/assets/github_url (2).png deleted file mode 100644 index 3b45a16e0a..0000000000 Binary files a/docs/.gitbook/assets/github_url (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/linked (3) (1).jpg b/docs/.gitbook/assets/linked (3) (1).jpg deleted file mode 100644 index d185f51906..0000000000 Binary files a/docs/.gitbook/assets/linked (3) (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/linked (3) (2).jpg b/docs/.gitbook/assets/linked (3) (2).jpg deleted file mode 100644 index d185f51906..0000000000 Binary files a/docs/.gitbook/assets/linked (3) (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/linked (3) (3).jpg b/docs/.gitbook/assets/linked (3) (3).jpg deleted file mode 100644 index d185f51906..0000000000 Binary files a/docs/.gitbook/assets/linked (3) (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/linked (3) (4).jpg b/docs/.gitbook/assets/linked (3) (4).jpg deleted file mode 100644 index d185f51906..0000000000 Binary files a/docs/.gitbook/assets/linked (3) (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/linked (3) (5).jpg b/docs/.gitbook/assets/linked (3) (5).jpg deleted file mode 100644 index d185f51906..0000000000 Binary files a/docs/.gitbook/assets/linked (3) (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/linked (3).jpg b/docs/.gitbook/assets/linked (3).jpg deleted file mode 100644 index d185f51906..0000000000 Binary files a/docs/.gitbook/assets/linked (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/mongo (1).jpg b/docs/.gitbook/assets/mongo (1).jpg deleted file mode 100644 index d1ab56f9eb..0000000000 Binary files a/docs/.gitbook/assets/mongo (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/mongo (2).jpg b/docs/.gitbook/assets/mongo (2).jpg deleted file mode 100644 index d1ab56f9eb..0000000000 Binary files a/docs/.gitbook/assets/mongo (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/mongo (3).jpg b/docs/.gitbook/assets/mongo (3).jpg deleted file mode 100644 index d1ab56f9eb..0000000000 Binary files a/docs/.gitbook/assets/mongo (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/mongo (4).jpg b/docs/.gitbook/assets/mongo (4).jpg deleted file mode 100644 index d1ab56f9eb..0000000000 Binary files a/docs/.gitbook/assets/mongo (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/mongo (5).jpg b/docs/.gitbook/assets/mongo (5).jpg deleted file mode 100644 index d1ab56f9eb..0000000000 Binary files a/docs/.gitbook/assets/mongo (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/mongo (6).jpg b/docs/.gitbook/assets/mongo (6).jpg deleted file mode 100644 index d1ab56f9eb..0000000000 Binary files a/docs/.gitbook/assets/mongo (6).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/mongo.jpg b/docs/.gitbook/assets/mongo.jpg deleted file mode 100644 index d1ab56f9eb..0000000000 Binary files a/docs/.gitbook/assets/mongo.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/mongo1 (2) (1).jpg b/docs/.gitbook/assets/mongo1 (2) (1).jpg deleted file mode 100644 index 37600876da..0000000000 Binary files a/docs/.gitbook/assets/mongo1 (2) (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/mongo1 (2) (2).jpg b/docs/.gitbook/assets/mongo1 (2) (2).jpg deleted file mode 100644 index 37600876da..0000000000 Binary files a/docs/.gitbook/assets/mongo1 (2) (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/mongo1 (2) (3).jpg b/docs/.gitbook/assets/mongo1 (2) (3).jpg deleted file mode 100644 index 37600876da..0000000000 Binary files a/docs/.gitbook/assets/mongo1 (2) (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/mongo1 (2) (4).jpg b/docs/.gitbook/assets/mongo1 (2) (4).jpg deleted file mode 100644 index 37600876da..0000000000 Binary files a/docs/.gitbook/assets/mongo1 (2) (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/mongo1 (2).jpg b/docs/.gitbook/assets/mongo1 (2).jpg deleted file mode 100644 index 37600876da..0000000000 Binary files a/docs/.gitbook/assets/mongo1 (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/mongo4 (1) (1).png b/docs/.gitbook/assets/mongo4 (1) (1).png deleted file mode 100644 index a152264bb9..0000000000 Binary files a/docs/.gitbook/assets/mongo4 (1) (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/mongo4 (1) (2).png b/docs/.gitbook/assets/mongo4 (1) (2).png deleted file mode 100644 index a152264bb9..0000000000 Binary files a/docs/.gitbook/assets/mongo4 (1) (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/mongo4 (1).png b/docs/.gitbook/assets/mongo4 (1).png deleted file mode 100644 index a152264bb9..0000000000 Binary files a/docs/.gitbook/assets/mongo4 (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/mongo6 (1) (1).png b/docs/.gitbook/assets/mongo6 (1) (1).png deleted file mode 100644 index d897884972..0000000000 Binary files a/docs/.gitbook/assets/mongo6 (1) (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/mongo6 (1).png b/docs/.gitbook/assets/mongo6 (1).png deleted file mode 100644 index d897884972..0000000000 Binary files a/docs/.gitbook/assets/mongo6 (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/move1 (3).gif b/docs/.gitbook/assets/move1 (3).gif deleted file mode 100644 index ac71ed7b8e..0000000000 Binary files a/docs/.gitbook/assets/move1 (3).gif and /dev/null differ diff --git a/docs/.gitbook/assets/mysql (1).jpg b/docs/.gitbook/assets/mysql (1).jpg deleted file mode 100644 index eb6219f0e0..0000000000 Binary files a/docs/.gitbook/assets/mysql (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/mysql (2).jpg b/docs/.gitbook/assets/mysql (2).jpg deleted file mode 100644 index eb6219f0e0..0000000000 Binary files a/docs/.gitbook/assets/mysql (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/mysql (3).jpg b/docs/.gitbook/assets/mysql (3).jpg deleted file mode 100644 index eb6219f0e0..0000000000 Binary files a/docs/.gitbook/assets/mysql (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/mysql (4).jpg b/docs/.gitbook/assets/mysql (4).jpg deleted file mode 100644 index eb6219f0e0..0000000000 Binary files a/docs/.gitbook/assets/mysql (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/mysql (5).jpg b/docs/.gitbook/assets/mysql (5).jpg deleted file mode 100644 index eb6219f0e0..0000000000 Binary files a/docs/.gitbook/assets/mysql (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/mysql (6).jpg b/docs/.gitbook/assets/mysql (6).jpg deleted file mode 100644 index eb6219f0e0..0000000000 Binary files a/docs/.gitbook/assets/mysql (6).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/mysql.jpg b/docs/.gitbook/assets/mysql.jpg deleted file mode 100644 index eb6219f0e0..0000000000 Binary files a/docs/.gitbook/assets/mysql.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/not9 (2).jpg b/docs/.gitbook/assets/not9 (2).jpg deleted file mode 100644 index db9e313880..0000000000 Binary files a/docs/.gitbook/assets/not9 (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/notifi6 (1) (4).jpg b/docs/.gitbook/assets/notifi6 (1) (4).jpg deleted file mode 100644 index 24470c8786..0000000000 Binary files a/docs/.gitbook/assets/notifi6 (1) (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/notifi6 (1) (7) (1).jpg b/docs/.gitbook/assets/notifi6 (1) (7) (1).jpg deleted file mode 100644 index 24470c8786..0000000000 Binary files a/docs/.gitbook/assets/notifi6 (1) (7) (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/notifi6 (1) (7) (10).jpg b/docs/.gitbook/assets/notifi6 (1) (7) (10).jpg deleted file mode 100644 index 24470c8786..0000000000 Binary files a/docs/.gitbook/assets/notifi6 (1) (7) (10).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/notifi6 (1) (7) (11).jpg b/docs/.gitbook/assets/notifi6 (1) (7) (11).jpg deleted file mode 100644 index 24470c8786..0000000000 Binary files a/docs/.gitbook/assets/notifi6 (1) (7) (11).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/notifi6 (1) (7) (12).jpg b/docs/.gitbook/assets/notifi6 (1) (7) (12).jpg deleted file mode 100644 index 24470c8786..0000000000 Binary files a/docs/.gitbook/assets/notifi6 (1) (7) (12).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/notifi6 (1) (7) (13).jpg b/docs/.gitbook/assets/notifi6 (1) (7) (13).jpg deleted file mode 100644 index 24470c8786..0000000000 Binary files a/docs/.gitbook/assets/notifi6 (1) (7) (13).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/notifi6 (1) (7) (2).jpg b/docs/.gitbook/assets/notifi6 (1) (7) (2).jpg deleted file mode 100644 index 24470c8786..0000000000 Binary files a/docs/.gitbook/assets/notifi6 (1) (7) (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/notifi6 (1) (7) (3).jpg b/docs/.gitbook/assets/notifi6 (1) (7) (3).jpg deleted file mode 100644 index 24470c8786..0000000000 Binary files a/docs/.gitbook/assets/notifi6 (1) (7) (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/notifi6 (1) (7) (4).jpg b/docs/.gitbook/assets/notifi6 (1) (7) (4).jpg deleted file mode 100644 index 24470c8786..0000000000 Binary files a/docs/.gitbook/assets/notifi6 (1) (7) (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/notifi6 (1) (7) (5).jpg b/docs/.gitbook/assets/notifi6 (1) (7) (5).jpg deleted file mode 100644 index 24470c8786..0000000000 Binary files a/docs/.gitbook/assets/notifi6 (1) (7) (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/notifi6 (1) (7) (6).jpg b/docs/.gitbook/assets/notifi6 (1) (7) (6).jpg deleted file mode 100644 index 24470c8786..0000000000 Binary files a/docs/.gitbook/assets/notifi6 (1) (7) (6).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/notifi6 (1) (7) (7).jpg b/docs/.gitbook/assets/notifi6 (1) (7) (7).jpg deleted file mode 100644 index 24470c8786..0000000000 Binary files a/docs/.gitbook/assets/notifi6 (1) (7) (7).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/notifi6 (1) (7) (8).jpg b/docs/.gitbook/assets/notifi6 (1) (7) (8).jpg deleted file mode 100644 index 24470c8786..0000000000 Binary files a/docs/.gitbook/assets/notifi6 (1) (7) (8).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/notifi6 (1) (7) (9).jpg b/docs/.gitbook/assets/notifi6 (1) (7) (9).jpg deleted file mode 100644 index 24470c8786..0000000000 Binary files a/docs/.gitbook/assets/notifi6 (1) (7) (9).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/notifi6 (1) (7).jpg b/docs/.gitbook/assets/notifi6 (1) (7).jpg deleted file mode 100644 index 24470c8786..0000000000 Binary files a/docs/.gitbook/assets/notifi6 (1) (7).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/notifi6 (1).jpg b/docs/.gitbook/assets/notifi6 (1).jpg deleted file mode 100644 index 24470c8786..0000000000 Binary files a/docs/.gitbook/assets/notifi6 (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/post_build (1).jpg b/docs/.gitbook/assets/post_build (1).jpg deleted file mode 100644 index 398d64920d..0000000000 Binary files a/docs/.gitbook/assets/post_build (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/post_build (2).jpg b/docs/.gitbook/assets/post_build (2).jpg deleted file mode 100644 index 398d64920d..0000000000 Binary files a/docs/.gitbook/assets/post_build (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/post_build (3).jpg b/docs/.gitbook/assets/post_build (3).jpg deleted file mode 100644 index 398d64920d..0000000000 Binary files a/docs/.gitbook/assets/post_build (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/post_build (4).jpg b/docs/.gitbook/assets/post_build (4).jpg deleted file mode 100644 index 398d64920d..0000000000 Binary files a/docs/.gitbook/assets/post_build (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/post_build (5).jpg b/docs/.gitbook/assets/post_build (5).jpg deleted file mode 100644 index 398d64920d..0000000000 Binary files a/docs/.gitbook/assets/post_build (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/post_build.jpg b/docs/.gitbook/assets/post_build.jpg deleted file mode 100644 index 398d64920d..0000000000 Binary files a/docs/.gitbook/assets/post_build.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/pre_build (1).jpg b/docs/.gitbook/assets/pre_build (1).jpg deleted file mode 100644 index 759c0a7b87..0000000000 Binary files a/docs/.gitbook/assets/pre_build (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/pre_build (2).jpg b/docs/.gitbook/assets/pre_build (2).jpg deleted file mode 100644 index 759c0a7b87..0000000000 Binary files a/docs/.gitbook/assets/pre_build (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/pre_build (3).jpg b/docs/.gitbook/assets/pre_build (3).jpg deleted file mode 100644 index 759c0a7b87..0000000000 Binary files a/docs/.gitbook/assets/pre_build (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/pre_build (4).jpg b/docs/.gitbook/assets/pre_build (4).jpg deleted file mode 100644 index 759c0a7b87..0000000000 Binary files a/docs/.gitbook/assets/pre_build (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/pre_build (5).jpg b/docs/.gitbook/assets/pre_build (5).jpg deleted file mode 100644 index 759c0a7b87..0000000000 Binary files a/docs/.gitbook/assets/pre_build (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/pre_build (6).jpg b/docs/.gitbook/assets/pre_build (6).jpg deleted file mode 100644 index 759c0a7b87..0000000000 Binary files a/docs/.gitbook/assets/pre_build (6).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/pre_build (7).jpg b/docs/.gitbook/assets/pre_build (7).jpg deleted file mode 100644 index 759c0a7b87..0000000000 Binary files a/docs/.gitbook/assets/pre_build (7).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/pre_build.jpg b/docs/.gitbook/assets/pre_build.jpg deleted file mode 100644 index 759c0a7b87..0000000000 Binary files a/docs/.gitbook/assets/pre_build.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/preview (1) (1) (1).gif b/docs/.gitbook/assets/preview (1) (1) (1).gif deleted file mode 100644 index ac26e8a222..0000000000 Binary files a/docs/.gitbook/assets/preview (1) (1) (1).gif and /dev/null differ diff --git a/docs/.gitbook/assets/preview (1) (1) (2).gif b/docs/.gitbook/assets/preview (1) (1) (2).gif deleted file mode 100644 index ac26e8a222..0000000000 Binary files a/docs/.gitbook/assets/preview (1) (1) (2).gif and /dev/null differ diff --git a/docs/.gitbook/assets/preview (1) (1) (3).gif b/docs/.gitbook/assets/preview (1) (1) (3).gif deleted file mode 100644 index ac26e8a222..0000000000 Binary files a/docs/.gitbook/assets/preview (1) (1) (3).gif and /dev/null differ diff --git a/docs/.gitbook/assets/preview (1) (1) (4).gif b/docs/.gitbook/assets/preview (1) (1) (4).gif deleted file mode 100644 index ac26e8a222..0000000000 Binary files a/docs/.gitbook/assets/preview (1) (1) (4).gif and /dev/null differ diff --git a/docs/.gitbook/assets/preview (1) (2).gif b/docs/.gitbook/assets/preview (1) (2).gif deleted file mode 100644 index ac26e8a222..0000000000 Binary files a/docs/.gitbook/assets/preview (1) (2).gif and /dev/null differ diff --git a/docs/.gitbook/assets/preview.gif b/docs/.gitbook/assets/preview.gif deleted file mode 100644 index ac26e8a222..0000000000 Binary files a/docs/.gitbook/assets/preview.gif and /dev/null differ diff --git a/docs/.gitbook/assets/project_gc1 (3) (1).png b/docs/.gitbook/assets/project_gc1 (3) (1).png deleted file mode 100644 index 470fdc831f..0000000000 Binary files a/docs/.gitbook/assets/project_gc1 (3) (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/project_gc1 (3) (2).png b/docs/.gitbook/assets/project_gc1 (3) (2).png deleted file mode 100644 index 470fdc831f..0000000000 Binary files a/docs/.gitbook/assets/project_gc1 (3) (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/project_gc1 (3) (3).png b/docs/.gitbook/assets/project_gc1 (3) (3).png deleted file mode 100644 index 470fdc831f..0000000000 Binary files a/docs/.gitbook/assets/project_gc1 (3) (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/project_gc1 (3) (4).png b/docs/.gitbook/assets/project_gc1 (3) (4).png deleted file mode 100644 index 470fdc831f..0000000000 Binary files a/docs/.gitbook/assets/project_gc1 (3) (4).png and /dev/null differ diff --git a/docs/.gitbook/assets/project_gc1 (3) (5).png b/docs/.gitbook/assets/project_gc1 (3) (5).png deleted file mode 100644 index 470fdc831f..0000000000 Binary files a/docs/.gitbook/assets/project_gc1 (3) (5).png and /dev/null differ diff --git a/docs/.gitbook/assets/project_gc1 (3).png b/docs/.gitbook/assets/project_gc1 (3).png deleted file mode 100644 index 470fdc831f..0000000000 Binary files a/docs/.gitbook/assets/project_gc1 (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/screen2 (1).jpg b/docs/.gitbook/assets/screen2 (1).jpg deleted file mode 100644 index c3d05b9280..0000000000 Binary files a/docs/.gitbook/assets/screen2 (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/screen2 (2).jpg b/docs/.gitbook/assets/screen2 (2).jpg deleted file mode 100644 index c3d05b9280..0000000000 Binary files a/docs/.gitbook/assets/screen2 (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/screen2 (3).jpg b/docs/.gitbook/assets/screen2 (3).jpg deleted file mode 100644 index c3d05b9280..0000000000 Binary files a/docs/.gitbook/assets/screen2 (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/screen2 (4).jpg b/docs/.gitbook/assets/screen2 (4).jpg deleted file mode 100644 index c3d05b9280..0000000000 Binary files a/docs/.gitbook/assets/screen2 (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/screen2 (5).jpg b/docs/.gitbook/assets/screen2 (5).jpg deleted file mode 100644 index c3d05b9280..0000000000 Binary files a/docs/.gitbook/assets/screen2 (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/screen2 (6).jpg b/docs/.gitbook/assets/screen2 (6).jpg deleted file mode 100644 index c3d05b9280..0000000000 Binary files a/docs/.gitbook/assets/screen2 (6).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/screen2.jpg b/docs/.gitbook/assets/screen2.jpg deleted file mode 100644 index c3d05b9280..0000000000 Binary files a/docs/.gitbook/assets/screen2.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/second (2) (1).jpg b/docs/.gitbook/assets/second (2) (1).jpg deleted file mode 100644 index b922858455..0000000000 Binary files a/docs/.gitbook/assets/second (2) (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/second (2) (2).jpg b/docs/.gitbook/assets/second (2) (2).jpg deleted file mode 100644 index b922858455..0000000000 Binary files a/docs/.gitbook/assets/second (2) (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/second (2) (3).jpg b/docs/.gitbook/assets/second (2) (3).jpg deleted file mode 100644 index b922858455..0000000000 Binary files a/docs/.gitbook/assets/second (2) (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/second (2).jpg b/docs/.gitbook/assets/second (2).jpg deleted file mode 100644 index b922858455..0000000000 Binary files a/docs/.gitbook/assets/second (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/secret-created (3) (1).png b/docs/.gitbook/assets/secret-created (3) (1).png deleted file mode 100644 index 091c44a84d..0000000000 Binary files a/docs/.gitbook/assets/secret-created (3) (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/secret-created (3) (2).png b/docs/.gitbook/assets/secret-created (3) (2).png deleted file mode 100644 index 091c44a84d..0000000000 Binary files a/docs/.gitbook/assets/secret-created (3) (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/secret-created (3) (3).png b/docs/.gitbook/assets/secret-created (3) (3).png deleted file mode 100644 index 091c44a84d..0000000000 Binary files a/docs/.gitbook/assets/secret-created (3) (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/secret-created (3) (4).png b/docs/.gitbook/assets/secret-created (3) (4).png deleted file mode 100644 index 091c44a84d..0000000000 Binary files a/docs/.gitbook/assets/secret-created (3) (4).png and /dev/null differ diff --git a/docs/.gitbook/assets/secret-created (3) (5).png b/docs/.gitbook/assets/secret-created (3) (5).png deleted file mode 100644 index 091c44a84d..0000000000 Binary files a/docs/.gitbook/assets/secret-created (3) (5).png and /dev/null differ diff --git a/docs/.gitbook/assets/secret-created (3) (6).png b/docs/.gitbook/assets/secret-created (3) (6).png deleted file mode 100644 index 091c44a84d..0000000000 Binary files a/docs/.gitbook/assets/secret-created (3) (6).png and /dev/null differ diff --git a/docs/.gitbook/assets/secret-created (3).png b/docs/.gitbook/assets/secret-created (3).png deleted file mode 100644 index 091c44a84d..0000000000 Binary files a/docs/.gitbook/assets/secret-created (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/secret-volume-path (1).jpg b/docs/.gitbook/assets/secret-volume-path (1).jpg deleted file mode 100644 index d49111d1e6..0000000000 Binary files a/docs/.gitbook/assets/secret-volume-path (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/secret-volume-path (2).jpg b/docs/.gitbook/assets/secret-volume-path (2).jpg deleted file mode 100644 index d49111d1e6..0000000000 Binary files a/docs/.gitbook/assets/secret-volume-path (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/secret-volume-path (3).jpg b/docs/.gitbook/assets/secret-volume-path (3).jpg deleted file mode 100644 index d49111d1e6..0000000000 Binary files a/docs/.gitbook/assets/secret-volume-path (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/secret-volume-path (4).jpg b/docs/.gitbook/assets/secret-volume-path (4).jpg deleted file mode 100644 index d49111d1e6..0000000000 Binary files a/docs/.gitbook/assets/secret-volume-path (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/secret-volume-path (5).jpg b/docs/.gitbook/assets/secret-volume-path (5).jpg deleted file mode 100644 index d49111d1e6..0000000000 Binary files a/docs/.gitbook/assets/secret-volume-path (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/secret-volume-path (6).jpg b/docs/.gitbook/assets/secret-volume-path (6).jpg deleted file mode 100644 index d49111d1e6..0000000000 Binary files a/docs/.gitbook/assets/secret-volume-path (6).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/secret-volume-path.jpg b/docs/.gitbook/assets/secret-volume-path.jpg deleted file mode 100644 index d49111d1e6..0000000000 Binary files a/docs/.gitbook/assets/secret-volume-path.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/secret3.jpg b/docs/.gitbook/assets/secret3.jpg deleted file mode 100644 index d49111d1e6..0000000000 Binary files a/docs/.gitbook/assets/secret3.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/security-feature-app-details-vulnerability (1).png b/docs/.gitbook/assets/security-feature-app-details-vulnerability (1).png deleted file mode 100644 index 8629c46d47..0000000000 Binary files a/docs/.gitbook/assets/security-feature-app-details-vulnerability (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/security-feature-app-details-vulnerability (2).png b/docs/.gitbook/assets/security-feature-app-details-vulnerability (2).png deleted file mode 100644 index 8629c46d47..0000000000 Binary files a/docs/.gitbook/assets/security-feature-app-details-vulnerability (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/security-feature-app-details-vulnerability (3).png b/docs/.gitbook/assets/security-feature-app-details-vulnerability (3).png deleted file mode 100644 index 8629c46d47..0000000000 Binary files a/docs/.gitbook/assets/security-feature-app-details-vulnerability (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/security-feature-app-details-vulnerability (4).png b/docs/.gitbook/assets/security-feature-app-details-vulnerability (4).png deleted file mode 100644 index 8629c46d47..0000000000 Binary files a/docs/.gitbook/assets/security-feature-app-details-vulnerability (4).png and /dev/null differ diff --git a/docs/.gitbook/assets/security-feature-app-details-vulnerability.png b/docs/.gitbook/assets/security-feature-app-details-vulnerability.png deleted file mode 100644 index 8629c46d47..0000000000 Binary files a/docs/.gitbook/assets/security-feature-app-details-vulnerability.png and /dev/null differ diff --git a/docs/.gitbook/assets/security-feature-build-history-security (1).png b/docs/.gitbook/assets/security-feature-build-history-security (1).png deleted file mode 100644 index f2569c96b8..0000000000 Binary files a/docs/.gitbook/assets/security-feature-build-history-security (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/security-feature-build-history-security (2).png b/docs/.gitbook/assets/security-feature-build-history-security (2).png deleted file mode 100644 index f2569c96b8..0000000000 Binary files a/docs/.gitbook/assets/security-feature-build-history-security (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/security-feature-build-history-security (3).png b/docs/.gitbook/assets/security-feature-build-history-security (3).png deleted file mode 100644 index f2569c96b8..0000000000 Binary files a/docs/.gitbook/assets/security-feature-build-history-security (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/security-feature-build-history-security (4).png b/docs/.gitbook/assets/security-feature-build-history-security (4).png deleted file mode 100644 index f2569c96b8..0000000000 Binary files a/docs/.gitbook/assets/security-feature-build-history-security (4).png and /dev/null differ diff --git a/docs/.gitbook/assets/security-feature-build-history-security.png b/docs/.gitbook/assets/security-feature-build-history-security.png deleted file mode 100644 index f2569c96b8..0000000000 Binary files a/docs/.gitbook/assets/security-feature-build-history-security.png and /dev/null differ diff --git a/docs/.gitbook/assets/security-feature-deployed-image (1).png b/docs/.gitbook/assets/security-feature-deployed-image (1).png deleted file mode 100644 index b93511e98d..0000000000 Binary files a/docs/.gitbook/assets/security-feature-deployed-image (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/security-feature-deployed-image (2).png b/docs/.gitbook/assets/security-feature-deployed-image (2).png deleted file mode 100644 index b93511e98d..0000000000 Binary files a/docs/.gitbook/assets/security-feature-deployed-image (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/security-feature-deployed-image (3).png b/docs/.gitbook/assets/security-feature-deployed-image (3).png deleted file mode 100644 index b93511e98d..0000000000 Binary files a/docs/.gitbook/assets/security-feature-deployed-image (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/security-feature-deployed-image-security (3) (1).png b/docs/.gitbook/assets/security-feature-deployed-image-security (3) (1).png deleted file mode 100644 index 418278859c..0000000000 Binary files a/docs/.gitbook/assets/security-feature-deployed-image-security (3) (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/security-feature-deployed-image-security (3) (2).png b/docs/.gitbook/assets/security-feature-deployed-image-security (3) (2).png deleted file mode 100644 index 418278859c..0000000000 Binary files a/docs/.gitbook/assets/security-feature-deployed-image-security (3) (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/security-feature-deployed-image-security (3) (3).png b/docs/.gitbook/assets/security-feature-deployed-image-security (3) (3).png deleted file mode 100644 index 418278859c..0000000000 Binary files a/docs/.gitbook/assets/security-feature-deployed-image-security (3) (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/security-feature-deployed-image-security (3) (4).png b/docs/.gitbook/assets/security-feature-deployed-image-security (3) (4).png deleted file mode 100644 index 418278859c..0000000000 Binary files a/docs/.gitbook/assets/security-feature-deployed-image-security (3) (4).png and /dev/null differ diff --git a/docs/.gitbook/assets/security-feature-deployed-image-security (3) (5).png b/docs/.gitbook/assets/security-feature-deployed-image-security (3) (5).png deleted file mode 100644 index 418278859c..0000000000 Binary files a/docs/.gitbook/assets/security-feature-deployed-image-security (3) (5).png and /dev/null differ diff --git a/docs/.gitbook/assets/security-feature-deployed-image-security (3) (6).png b/docs/.gitbook/assets/security-feature-deployed-image-security (3) (6).png deleted file mode 100644 index 418278859c..0000000000 Binary files a/docs/.gitbook/assets/security-feature-deployed-image-security (3) (6).png and /dev/null differ diff --git a/docs/.gitbook/assets/security-feature-deployed-image-security (3).png b/docs/.gitbook/assets/security-feature-deployed-image-security (3).png deleted file mode 100644 index 418278859c..0000000000 Binary files a/docs/.gitbook/assets/security-feature-deployed-image-security (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/security-feature-deployed-image-security.png b/docs/.gitbook/assets/security-feature-deployed-image-security.png deleted file mode 100644 index 418278859c..0000000000 Binary files a/docs/.gitbook/assets/security-feature-deployed-image-security.png and /dev/null differ diff --git a/docs/.gitbook/assets/security-feature-deployed-image.png b/docs/.gitbook/assets/security-feature-deployed-image.png deleted file mode 100644 index b93511e98d..0000000000 Binary files a/docs/.gitbook/assets/security-feature-deployed-image.png and /dev/null differ diff --git a/docs/.gitbook/assets/security-feature-global-security-policies (1).png b/docs/.gitbook/assets/security-feature-global-security-policies (1).png deleted file mode 100644 index 5bb2289746..0000000000 Binary files a/docs/.gitbook/assets/security-feature-global-security-policies (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/security-feature-global-security-policies (2).png b/docs/.gitbook/assets/security-feature-global-security-policies (2).png deleted file mode 100644 index 5bb2289746..0000000000 Binary files a/docs/.gitbook/assets/security-feature-global-security-policies (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/security-feature-global-security-policies (3).png b/docs/.gitbook/assets/security-feature-global-security-policies (3).png deleted file mode 100644 index 5bb2289746..0000000000 Binary files a/docs/.gitbook/assets/security-feature-global-security-policies (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/security-feature-global-security-policies (4).png b/docs/.gitbook/assets/security-feature-global-security-policies (4).png deleted file mode 100644 index 5bb2289746..0000000000 Binary files a/docs/.gitbook/assets/security-feature-global-security-policies (4).png and /dev/null differ diff --git a/docs/.gitbook/assets/security-feature-global-security-policies.png b/docs/.gitbook/assets/security-feature-global-security-policies.png deleted file mode 100644 index 5bb2289746..0000000000 Binary files a/docs/.gitbook/assets/security-feature-global-security-policies.png and /dev/null differ diff --git a/docs/.gitbook/assets/security-feature-securitytab-list-vulnerability (2) (1).png b/docs/.gitbook/assets/security-feature-securitytab-list-vulnerability (2) (1).png deleted file mode 100644 index 017c08fa4f..0000000000 Binary files a/docs/.gitbook/assets/security-feature-securitytab-list-vulnerability (2) (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/security-feature-securitytab-list-vulnerability (2) (2).png b/docs/.gitbook/assets/security-feature-securitytab-list-vulnerability (2) (2).png deleted file mode 100644 index 017c08fa4f..0000000000 Binary files a/docs/.gitbook/assets/security-feature-securitytab-list-vulnerability (2) (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/security-feature-securitytab-list-vulnerability (2) (3).png b/docs/.gitbook/assets/security-feature-securitytab-list-vulnerability (2) (3).png deleted file mode 100644 index 017c08fa4f..0000000000 Binary files a/docs/.gitbook/assets/security-feature-securitytab-list-vulnerability (2) (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/security-feature-securitytab-list-vulnerability (2) (4).png b/docs/.gitbook/assets/security-feature-securitytab-list-vulnerability (2) (4).png deleted file mode 100644 index 017c08fa4f..0000000000 Binary files a/docs/.gitbook/assets/security-feature-securitytab-list-vulnerability (2) (4).png and /dev/null differ diff --git a/docs/.gitbook/assets/security-feature-securitytab-list-vulnerability (2).png b/docs/.gitbook/assets/security-feature-securitytab-list-vulnerability (2).png deleted file mode 100644 index 017c08fa4f..0000000000 Binary files a/docs/.gitbook/assets/security-feature-securitytab-list-vulnerability (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/security-feature-securitytab-security-scan (2) (1).png b/docs/.gitbook/assets/security-feature-securitytab-security-scan (2) (1).png deleted file mode 100644 index 93174a0307..0000000000 Binary files a/docs/.gitbook/assets/security-feature-securitytab-security-scan (2) (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/security-feature-securitytab-security-scan (2) (2).png b/docs/.gitbook/assets/security-feature-securitytab-security-scan (2) (2).png deleted file mode 100644 index 93174a0307..0000000000 Binary files a/docs/.gitbook/assets/security-feature-securitytab-security-scan (2) (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/security-feature-securitytab-security-scan (2) (3).png b/docs/.gitbook/assets/security-feature-securitytab-security-scan (2) (3).png deleted file mode 100644 index 93174a0307..0000000000 Binary files a/docs/.gitbook/assets/security-feature-securitytab-security-scan (2) (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/security-feature-securitytab-security-scan (2) (4).png b/docs/.gitbook/assets/security-feature-securitytab-security-scan (2) (4).png deleted file mode 100644 index 93174a0307..0000000000 Binary files a/docs/.gitbook/assets/security-feature-securitytab-security-scan (2) (4).png and /dev/null differ diff --git a/docs/.gitbook/assets/security-feature-securitytab-security-scan (2).png b/docs/.gitbook/assets/security-feature-securitytab-security-scan (2).png deleted file mode 100644 index 93174a0307..0000000000 Binary files a/docs/.gitbook/assets/security-feature-securitytab-security-scan (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/security-feature8 (2) (1).png b/docs/.gitbook/assets/security-feature8 (2) (1).png deleted file mode 100644 index a533ffc703..0000000000 Binary files a/docs/.gitbook/assets/security-feature8 (2) (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/security-feature8 (2) (2).png b/docs/.gitbook/assets/security-feature8 (2) (2).png deleted file mode 100644 index a533ffc703..0000000000 Binary files a/docs/.gitbook/assets/security-feature8 (2) (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/security-feature8 (2) (3).png b/docs/.gitbook/assets/security-feature8 (2) (3).png deleted file mode 100644 index a533ffc703..0000000000 Binary files a/docs/.gitbook/assets/security-feature8 (2) (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/security-feature8 (2) (4).png b/docs/.gitbook/assets/security-feature8 (2) (4).png deleted file mode 100644 index a533ffc703..0000000000 Binary files a/docs/.gitbook/assets/security-feature8 (2) (4).png and /dev/null differ diff --git a/docs/.gitbook/assets/security-feature8 (2).png b/docs/.gitbook/assets/security-feature8 (2).png deleted file mode 100644 index a533ffc703..0000000000 Binary files a/docs/.gitbook/assets/security-feature8 (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/select_charts (1).jpg b/docs/.gitbook/assets/select_charts (1).jpg deleted file mode 100644 index 46f6495d7b..0000000000 Binary files a/docs/.gitbook/assets/select_charts (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/select_charts (2).jpg b/docs/.gitbook/assets/select_charts (2).jpg deleted file mode 100644 index 46f6495d7b..0000000000 Binary files a/docs/.gitbook/assets/select_charts (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/select_charts (3).jpg b/docs/.gitbook/assets/select_charts (3).jpg deleted file mode 100644 index 46f6495d7b..0000000000 Binary files a/docs/.gitbook/assets/select_charts (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/select_charts (4).jpg b/docs/.gitbook/assets/select_charts (4).jpg deleted file mode 100644 index 46f6495d7b..0000000000 Binary files a/docs/.gitbook/assets/select_charts (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/select_charts (5).jpg b/docs/.gitbook/assets/select_charts (5).jpg deleted file mode 100644 index 46f6495d7b..0000000000 Binary files a/docs/.gitbook/assets/select_charts (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/select_charts (6).jpg b/docs/.gitbook/assets/select_charts (6).jpg deleted file mode 100644 index 46f6495d7b..0000000000 Binary files a/docs/.gitbook/assets/select_charts (6).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/select_charts.jpg b/docs/.gitbook/assets/select_charts.jpg deleted file mode 100644 index 46f6495d7b..0000000000 Binary files a/docs/.gitbook/assets/select_charts.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/select_charts2 (2) (1).jpg b/docs/.gitbook/assets/select_charts2 (2) (1).jpg deleted file mode 100644 index 6954e5d2cb..0000000000 Binary files a/docs/.gitbook/assets/select_charts2 (2) (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/select_charts2 (2) (2).jpg b/docs/.gitbook/assets/select_charts2 (2) (2).jpg deleted file mode 100644 index 6954e5d2cb..0000000000 Binary files a/docs/.gitbook/assets/select_charts2 (2) (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/select_charts2 (2) (3).jpg b/docs/.gitbook/assets/select_charts2 (2) (3).jpg deleted file mode 100644 index 6954e5d2cb..0000000000 Binary files a/docs/.gitbook/assets/select_charts2 (2) (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/select_charts2 (2) (4).jpg b/docs/.gitbook/assets/select_charts2 (2) (4).jpg deleted file mode 100644 index 6954e5d2cb..0000000000 Binary files a/docs/.gitbook/assets/select_charts2 (2) (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/select_charts2 (2) (5).jpg b/docs/.gitbook/assets/select_charts2 (2) (5).jpg deleted file mode 100644 index 6954e5d2cb..0000000000 Binary files a/docs/.gitbook/assets/select_charts2 (2) (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/select_charts2 (2).jpg b/docs/.gitbook/assets/select_charts2 (2).jpg deleted file mode 100644 index 6954e5d2cb..0000000000 Binary files a/docs/.gitbook/assets/select_charts2 (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/select_charts2.jpg b/docs/.gitbook/assets/select_charts2.jpg deleted file mode 100644 index 6954e5d2cb..0000000000 Binary files a/docs/.gitbook/assets/select_charts2.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/sql1 (1).png b/docs/.gitbook/assets/sql1 (1).png deleted file mode 100644 index 313b7f3cd5..0000000000 Binary files a/docs/.gitbook/assets/sql1 (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/sql1 (2).png b/docs/.gitbook/assets/sql1 (2).png deleted file mode 100644 index 313b7f3cd5..0000000000 Binary files a/docs/.gitbook/assets/sql1 (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/sql1 (3).png b/docs/.gitbook/assets/sql1 (3).png deleted file mode 100644 index 313b7f3cd5..0000000000 Binary files a/docs/.gitbook/assets/sql1 (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/sql1 (4).png b/docs/.gitbook/assets/sql1 (4).png deleted file mode 100644 index 313b7f3cd5..0000000000 Binary files a/docs/.gitbook/assets/sql1 (4).png and /dev/null differ diff --git a/docs/.gitbook/assets/sql1 (5).png b/docs/.gitbook/assets/sql1 (5).png deleted file mode 100644 index 313b7f3cd5..0000000000 Binary files a/docs/.gitbook/assets/sql1 (5).png and /dev/null differ diff --git a/docs/.gitbook/assets/sql1 (6).png b/docs/.gitbook/assets/sql1 (6).png deleted file mode 100644 index 313b7f3cd5..0000000000 Binary files a/docs/.gitbook/assets/sql1 (6).png and /dev/null differ diff --git a/docs/.gitbook/assets/sql1.png b/docs/.gitbook/assets/sql1.png deleted file mode 100644 index 313b7f3cd5..0000000000 Binary files a/docs/.gitbook/assets/sql1.png and /dev/null differ diff --git a/docs/.gitbook/assets/sql2 (1).png b/docs/.gitbook/assets/sql2 (1).png deleted file mode 100644 index 9babf652b3..0000000000 Binary files a/docs/.gitbook/assets/sql2 (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/sql2 (2).png b/docs/.gitbook/assets/sql2 (2).png deleted file mode 100644 index 9babf652b3..0000000000 Binary files a/docs/.gitbook/assets/sql2 (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/sql2 (3).png b/docs/.gitbook/assets/sql2 (3).png deleted file mode 100644 index 9babf652b3..0000000000 Binary files a/docs/.gitbook/assets/sql2 (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/sql2 (4).png b/docs/.gitbook/assets/sql2 (4).png deleted file mode 100644 index 9babf652b3..0000000000 Binary files a/docs/.gitbook/assets/sql2 (4).png and /dev/null differ diff --git a/docs/.gitbook/assets/sql2 (5).png b/docs/.gitbook/assets/sql2 (5).png deleted file mode 100644 index 9babf652b3..0000000000 Binary files a/docs/.gitbook/assets/sql2 (5).png and /dev/null differ diff --git a/docs/.gitbook/assets/sql2 (6).png b/docs/.gitbook/assets/sql2 (6).png deleted file mode 100644 index 9babf652b3..0000000000 Binary files a/docs/.gitbook/assets/sql2 (6).png and /dev/null differ diff --git a/docs/.gitbook/assets/sql2.png b/docs/.gitbook/assets/sql2.png deleted file mode 100644 index 9babf652b3..0000000000 Binary files a/docs/.gitbook/assets/sql2.png and /dev/null differ diff --git a/docs/.gitbook/assets/sso-config.jpg b/docs/.gitbook/assets/sso-config.jpg deleted file mode 100644 index eb20cbfaad..0000000000 Binary files a/docs/.gitbook/assets/sso-config.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/sso-login-1.png b/docs/.gitbook/assets/sso-login-1.png deleted file mode 100644 index 34354eedbc..0000000000 Binary files a/docs/.gitbook/assets/sso-login-1.png and /dev/null differ diff --git a/docs/.gitbook/assets/sso-login-2.png b/docs/.gitbook/assets/sso-login-2.png deleted file mode 100644 index 48167c446e..0000000000 Binary files a/docs/.gitbook/assets/sso-login-2.png and /dev/null differ diff --git a/docs/.gitbook/assets/sso-login-3.png b/docs/.gitbook/assets/sso-login-3.png deleted file mode 100644 index 4a1ee721c2..0000000000 Binary files a/docs/.gitbook/assets/sso-login-3.png and /dev/null differ diff --git a/docs/.gitbook/assets/sso-login-4.png b/docs/.gitbook/assets/sso-login-4.png deleted file mode 100644 index 47ebfcc2c5..0000000000 Binary files a/docs/.gitbook/assets/sso-login-4.png and /dev/null differ diff --git a/docs/.gitbook/assets/terminal-controls.png b/docs/.gitbook/assets/terminal-controls.png deleted file mode 100644 index 7ee6ab4f52..0000000000 Binary files a/docs/.gitbook/assets/terminal-controls.png and /dev/null differ diff --git a/docs/.gitbook/assets/terminal-open.png b/docs/.gitbook/assets/terminal-open.png deleted file mode 100644 index be3c1abb63..0000000000 Binary files a/docs/.gitbook/assets/terminal-open.png and /dev/null differ diff --git a/docs/.gitbook/assets/three (2).jpg b/docs/.gitbook/assets/three (2).jpg deleted file mode 100644 index 12e1d44495..0000000000 Binary files a/docs/.gitbook/assets/three (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/tri_cd5.jpg b/docs/.gitbook/assets/tri_cd5.jpg deleted file mode 100644 index a23e37662f..0000000000 Binary files a/docs/.gitbook/assets/tri_cd5.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/tri_ci2 (2) (1).jpg b/docs/.gitbook/assets/tri_ci2 (2) (1).jpg deleted file mode 100644 index 5aed0bb481..0000000000 Binary files a/docs/.gitbook/assets/tri_ci2 (2) (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/tri_ci2 (2) (2).jpg b/docs/.gitbook/assets/tri_ci2 (2) (2).jpg deleted file mode 100644 index 5aed0bb481..0000000000 Binary files a/docs/.gitbook/assets/tri_ci2 (2) (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/tri_ci2 (2) (3).jpg b/docs/.gitbook/assets/tri_ci2 (2) (3).jpg deleted file mode 100644 index 5aed0bb481..0000000000 Binary files a/docs/.gitbook/assets/tri_ci2 (2) (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/tri_ci2 (2).jpg b/docs/.gitbook/assets/tri_ci2 (2).jpg deleted file mode 100644 index 5aed0bb481..0000000000 Binary files a/docs/.gitbook/assets/tri_ci2 (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/tri_ci3 (1).jpg b/docs/.gitbook/assets/tri_ci3 (1).jpg deleted file mode 100644 index 50bf1f81ef..0000000000 Binary files a/docs/.gitbook/assets/tri_ci3 (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/tri_ci3 (2) (1).jpg b/docs/.gitbook/assets/tri_ci3 (2) (1).jpg deleted file mode 100644 index 50bf1f81ef..0000000000 Binary files a/docs/.gitbook/assets/tri_ci3 (2) (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/tri_ci3 (2) (2).jpg b/docs/.gitbook/assets/tri_ci3 (2) (2).jpg deleted file mode 100644 index 50bf1f81ef..0000000000 Binary files a/docs/.gitbook/assets/tri_ci3 (2) (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/tri_ci3 (2) (3).jpg b/docs/.gitbook/assets/tri_ci3 (2) (3).jpg deleted file mode 100644 index 50bf1f81ef..0000000000 Binary files a/docs/.gitbook/assets/tri_ci3 (2) (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/tri_ci3 (2) (4).jpg b/docs/.gitbook/assets/tri_ci3 (2) (4).jpg deleted file mode 100644 index 50bf1f81ef..0000000000 Binary files a/docs/.gitbook/assets/tri_ci3 (2) (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/tri_ci3 (2) (5).jpg b/docs/.gitbook/assets/tri_ci3 (2) (5).jpg deleted file mode 100644 index 50bf1f81ef..0000000000 Binary files a/docs/.gitbook/assets/tri_ci3 (2) (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/tri_ci3 (2).jpg b/docs/.gitbook/assets/tri_ci3 (2).jpg deleted file mode 100644 index 50bf1f81ef..0000000000 Binary files a/docs/.gitbook/assets/tri_ci3 (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/tri_ci4 (1).jpg b/docs/.gitbook/assets/tri_ci4 (1).jpg deleted file mode 100644 index 0fd1507763..0000000000 Binary files a/docs/.gitbook/assets/tri_ci4 (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/tri_ci5 (1).jpg b/docs/.gitbook/assets/tri_ci5 (1).jpg deleted file mode 100644 index c32a6648da..0000000000 Binary files a/docs/.gitbook/assets/tri_ci5 (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/trigger-console (1).jpg b/docs/.gitbook/assets/trigger-console (1).jpg deleted file mode 100644 index da9501605e..0000000000 Binary files a/docs/.gitbook/assets/trigger-console (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/trigger-console (2) (1).jpg b/docs/.gitbook/assets/trigger-console (2) (1).jpg deleted file mode 100644 index da9501605e..0000000000 Binary files a/docs/.gitbook/assets/trigger-console (2) (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/trigger-console (2) (2).jpg b/docs/.gitbook/assets/trigger-console (2) (2).jpg deleted file mode 100644 index da9501605e..0000000000 Binary files a/docs/.gitbook/assets/trigger-console (2) (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/trigger-console (2) (3).jpg b/docs/.gitbook/assets/trigger-console (2) (3).jpg deleted file mode 100644 index da9501605e..0000000000 Binary files a/docs/.gitbook/assets/trigger-console (2) (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/trigger-console (2) (4).jpg b/docs/.gitbook/assets/trigger-console (2) (4).jpg deleted file mode 100644 index da9501605e..0000000000 Binary files a/docs/.gitbook/assets/trigger-console (2) (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/trigger-console (2) (5).jpg b/docs/.gitbook/assets/trigger-console (2) (5).jpg deleted file mode 100644 index da9501605e..0000000000 Binary files a/docs/.gitbook/assets/trigger-console (2) (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/trigger-console (2).jpg b/docs/.gitbook/assets/trigger-console (2).jpg deleted file mode 100644 index da9501605e..0000000000 Binary files a/docs/.gitbook/assets/trigger-console (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/trigger-select-image (1).jpg b/docs/.gitbook/assets/trigger-select-image (1).jpg deleted file mode 100644 index 67b393d08f..0000000000 Binary files a/docs/.gitbook/assets/trigger-select-image (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/trigger-select-image (2) (1).jpg b/docs/.gitbook/assets/trigger-select-image (2) (1).jpg deleted file mode 100644 index 67b393d08f..0000000000 Binary files a/docs/.gitbook/assets/trigger-select-image (2) (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/trigger-select-image (2) (2).jpg b/docs/.gitbook/assets/trigger-select-image (2) (2).jpg deleted file mode 100644 index 67b393d08f..0000000000 Binary files a/docs/.gitbook/assets/trigger-select-image (2) (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/trigger-select-image (2) (3).jpg b/docs/.gitbook/assets/trigger-select-image (2) (3).jpg deleted file mode 100644 index 67b393d08f..0000000000 Binary files a/docs/.gitbook/assets/trigger-select-image (2) (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/trigger-select-image (2) (4).jpg b/docs/.gitbook/assets/trigger-select-image (2) (4).jpg deleted file mode 100644 index 67b393d08f..0000000000 Binary files a/docs/.gitbook/assets/trigger-select-image (2) (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/trigger-select-image (2) (5).jpg b/docs/.gitbook/assets/trigger-select-image (2) (5).jpg deleted file mode 100644 index 67b393d08f..0000000000 Binary files a/docs/.gitbook/assets/trigger-select-image (2) (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/trigger-select-image (2).jpg b/docs/.gitbook/assets/trigger-select-image (2).jpg deleted file mode 100644 index 67b393d08f..0000000000 Binary files a/docs/.gitbook/assets/trigger-select-image (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/update_configmap (1).png b/docs/.gitbook/assets/update_configmap (1).png deleted file mode 100644 index 33c07760f7..0000000000 Binary files a/docs/.gitbook/assets/update_configmap (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/update_configmap (3) (1).png b/docs/.gitbook/assets/update_configmap (3) (1).png deleted file mode 100644 index 33c07760f7..0000000000 Binary files a/docs/.gitbook/assets/update_configmap (3) (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/update_configmap (3) (2).png b/docs/.gitbook/assets/update_configmap (3) (2).png deleted file mode 100644 index 33c07760f7..0000000000 Binary files a/docs/.gitbook/assets/update_configmap (3) (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/update_configmap (3) (3).png b/docs/.gitbook/assets/update_configmap (3) (3).png deleted file mode 100644 index 33c07760f7..0000000000 Binary files a/docs/.gitbook/assets/update_configmap (3) (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/update_configmap (3) (4).png b/docs/.gitbook/assets/update_configmap (3) (4).png deleted file mode 100644 index 33c07760f7..0000000000 Binary files a/docs/.gitbook/assets/update_configmap (3) (4).png and /dev/null differ diff --git a/docs/.gitbook/assets/update_configmap (3) (5).png b/docs/.gitbook/assets/update_configmap (3) (5).png deleted file mode 100644 index 33c07760f7..0000000000 Binary files a/docs/.gitbook/assets/update_configmap (3) (5).png and /dev/null differ diff --git a/docs/.gitbook/assets/update_configmap (3) (6).png b/docs/.gitbook/assets/update_configmap (3) (6).png deleted file mode 100644 index 33c07760f7..0000000000 Binary files a/docs/.gitbook/assets/update_configmap (3) (6).png and /dev/null differ diff --git a/docs/.gitbook/assets/update_configmap (3).png b/docs/.gitbook/assets/update_configmap (3).png deleted file mode 100644 index 33c07760f7..0000000000 Binary files a/docs/.gitbook/assets/update_configmap (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/update_pipeline_cd (2) (2) (1).jpg b/docs/.gitbook/assets/update_pipeline_cd (2) (2) (1).jpg deleted file mode 100644 index 3ec0673c15..0000000000 Binary files a/docs/.gitbook/assets/update_pipeline_cd (2) (2) (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/update_pipeline_cd (2) (2) (2).jpg b/docs/.gitbook/assets/update_pipeline_cd (2) (2) (2).jpg deleted file mode 100644 index 3ec0673c15..0000000000 Binary files a/docs/.gitbook/assets/update_pipeline_cd (2) (2) (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/update_pipeline_cd (2) (2) (3).jpg b/docs/.gitbook/assets/update_pipeline_cd (2) (2) (3).jpg deleted file mode 100644 index 3ec0673c15..0000000000 Binary files a/docs/.gitbook/assets/update_pipeline_cd (2) (2) (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/update_pipeline_cd (2) (2) (4).jpg b/docs/.gitbook/assets/update_pipeline_cd (2) (2) (4).jpg deleted file mode 100644 index 3ec0673c15..0000000000 Binary files a/docs/.gitbook/assets/update_pipeline_cd (2) (2) (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/update_pipeline_cd (2) (2).jpg b/docs/.gitbook/assets/update_pipeline_cd (2) (2).jpg deleted file mode 100644 index 3ec0673c15..0000000000 Binary files a/docs/.gitbook/assets/update_pipeline_cd (2) (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/update_pipeline_cd (2).jpg b/docs/.gitbook/assets/update_pipeline_cd (2).jpg deleted file mode 100644 index 3ec0673c15..0000000000 Binary files a/docs/.gitbook/assets/update_pipeline_cd (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/update_pipeline_ci (1).jpg b/docs/.gitbook/assets/update_pipeline_ci (1).jpg deleted file mode 100644 index 0cc6127338..0000000000 Binary files a/docs/.gitbook/assets/update_pipeline_ci (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/update_pipeline_ci (2).jpg b/docs/.gitbook/assets/update_pipeline_ci (2).jpg deleted file mode 100644 index 0cc6127338..0000000000 Binary files a/docs/.gitbook/assets/update_pipeline_ci (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/update_pipeline_ci (3).jpg b/docs/.gitbook/assets/update_pipeline_ci (3).jpg deleted file mode 100644 index 0cc6127338..0000000000 Binary files a/docs/.gitbook/assets/update_pipeline_ci (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/update_pipeline_ci (4).jpg b/docs/.gitbook/assets/update_pipeline_ci (4).jpg deleted file mode 100644 index 0cc6127338..0000000000 Binary files a/docs/.gitbook/assets/update_pipeline_ci (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/update_pipeline_ci (5).jpg b/docs/.gitbook/assets/update_pipeline_ci (5).jpg deleted file mode 100644 index 0cc6127338..0000000000 Binary files a/docs/.gitbook/assets/update_pipeline_ci (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/update_pipeline_ci.jpg b/docs/.gitbook/assets/update_pipeline_ci.jpg deleted file mode 100644 index 0cc6127338..0000000000 Binary files a/docs/.gitbook/assets/update_pipeline_ci.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/updating_secrets (3) (1).png b/docs/.gitbook/assets/updating_secrets (3) (1).png deleted file mode 100644 index a780aa88bc..0000000000 Binary files a/docs/.gitbook/assets/updating_secrets (3) (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/updating_secrets (3) (2).png b/docs/.gitbook/assets/updating_secrets (3) (2).png deleted file mode 100644 index a780aa88bc..0000000000 Binary files a/docs/.gitbook/assets/updating_secrets (3) (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/updating_secrets (3) (3).png b/docs/.gitbook/assets/updating_secrets (3) (3).png deleted file mode 100644 index a780aa88bc..0000000000 Binary files a/docs/.gitbook/assets/updating_secrets (3) (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/updating_secrets (3) (4).png b/docs/.gitbook/assets/updating_secrets (3) (4).png deleted file mode 100644 index a780aa88bc..0000000000 Binary files a/docs/.gitbook/assets/updating_secrets (3) (4).png and /dev/null differ diff --git a/docs/.gitbook/assets/updating_secrets (3) (5).png b/docs/.gitbook/assets/updating_secrets (3) (5).png deleted file mode 100644 index a780aa88bc..0000000000 Binary files a/docs/.gitbook/assets/updating_secrets (3) (5).png and /dev/null differ diff --git a/docs/.gitbook/assets/updating_secrets (3) (6).png b/docs/.gitbook/assets/updating_secrets (3) (6).png deleted file mode 100644 index a780aa88bc..0000000000 Binary files a/docs/.gitbook/assets/updating_secrets (3) (6).png and /dev/null differ diff --git a/docs/.gitbook/assets/updating_secrets (3).png b/docs/.gitbook/assets/updating_secrets (3).png deleted file mode 100644 index a780aa88bc..0000000000 Binary files a/docs/.gitbook/assets/updating_secrets (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/use-case-chart-store (1).jpg b/docs/.gitbook/assets/use-case-chart-store (1).jpg deleted file mode 100644 index b5915b1413..0000000000 Binary files a/docs/.gitbook/assets/use-case-chart-store (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-case-chart-store (2).jpg b/docs/.gitbook/assets/use-case-chart-store (2).jpg deleted file mode 100644 index b5915b1413..0000000000 Binary files a/docs/.gitbook/assets/use-case-chart-store (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-case-chart-store (3).jpg b/docs/.gitbook/assets/use-case-chart-store (3).jpg deleted file mode 100644 index b5915b1413..0000000000 Binary files a/docs/.gitbook/assets/use-case-chart-store (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-case-chart-store (4).jpg b/docs/.gitbook/assets/use-case-chart-store (4).jpg deleted file mode 100644 index b5915b1413..0000000000 Binary files a/docs/.gitbook/assets/use-case-chart-store (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-case-chart-store (5).jpg b/docs/.gitbook/assets/use-case-chart-store (5).jpg deleted file mode 100644 index b5915b1413..0000000000 Binary files a/docs/.gitbook/assets/use-case-chart-store (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-case-chart-store (6).jpg b/docs/.gitbook/assets/use-case-chart-store (6).jpg deleted file mode 100644 index b5915b1413..0000000000 Binary files a/docs/.gitbook/assets/use-case-chart-store (6).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-case-chart-store (7).jpg b/docs/.gitbook/assets/use-case-chart-store (7).jpg deleted file mode 100644 index b5915b1413..0000000000 Binary files a/docs/.gitbook/assets/use-case-chart-store (7).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-case-chart-store.jpg b/docs/.gitbook/assets/use-case-chart-store.jpg deleted file mode 100644 index b5915b1413..0000000000 Binary files a/docs/.gitbook/assets/use-case-chart-store.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-case-deploy-chart (2).jpg b/docs/.gitbook/assets/use-case-deploy-chart (2).jpg deleted file mode 100644 index 3762b296d0..0000000000 Binary files a/docs/.gitbook/assets/use-case-deploy-chart (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-case-deploy-chart (3) (1).jpg b/docs/.gitbook/assets/use-case-deploy-chart (3) (1).jpg deleted file mode 100644 index 3762b296d0..0000000000 Binary files a/docs/.gitbook/assets/use-case-deploy-chart (3) (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-case-deploy-chart (3) (2).jpg b/docs/.gitbook/assets/use-case-deploy-chart (3) (2).jpg deleted file mode 100644 index 3762b296d0..0000000000 Binary files a/docs/.gitbook/assets/use-case-deploy-chart (3) (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-case-deploy-chart (3) (3).jpg b/docs/.gitbook/assets/use-case-deploy-chart (3) (3).jpg deleted file mode 100644 index 3762b296d0..0000000000 Binary files a/docs/.gitbook/assets/use-case-deploy-chart (3) (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-case-deploy-chart (3) (4).jpg b/docs/.gitbook/assets/use-case-deploy-chart (3) (4).jpg deleted file mode 100644 index 3762b296d0..0000000000 Binary files a/docs/.gitbook/assets/use-case-deploy-chart (3) (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-case-deploy-chart (3) (5).jpg b/docs/.gitbook/assets/use-case-deploy-chart (3) (5).jpg deleted file mode 100644 index 3762b296d0..0000000000 Binary files a/docs/.gitbook/assets/use-case-deploy-chart (3) (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-case-deploy-chart (3) (6).jpg b/docs/.gitbook/assets/use-case-deploy-chart (3) (6).jpg deleted file mode 100644 index 3762b296d0..0000000000 Binary files a/docs/.gitbook/assets/use-case-deploy-chart (3) (6).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-case-deploy-chart (3).jpg b/docs/.gitbook/assets/use-case-deploy-chart (3).jpg deleted file mode 100644 index 3762b296d0..0000000000 Binary files a/docs/.gitbook/assets/use-case-deploy-chart (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-case-django-ingress-template (4) (1).jpg b/docs/.gitbook/assets/use-case-django-ingress-template (4) (1).jpg deleted file mode 100644 index 2aff8733c6..0000000000 Binary files a/docs/.gitbook/assets/use-case-django-ingress-template (4) (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-case-django-ingress-template (4) (2).jpg b/docs/.gitbook/assets/use-case-django-ingress-template (4) (2).jpg deleted file mode 100644 index 2aff8733c6..0000000000 Binary files a/docs/.gitbook/assets/use-case-django-ingress-template (4) (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-case-django-ingress-template (4) (3).jpg b/docs/.gitbook/assets/use-case-django-ingress-template (4) (3).jpg deleted file mode 100644 index 2aff8733c6..0000000000 Binary files a/docs/.gitbook/assets/use-case-django-ingress-template (4) (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-case-django-ingress-template (4) (4).jpg b/docs/.gitbook/assets/use-case-django-ingress-template (4) (4).jpg deleted file mode 100644 index 2aff8733c6..0000000000 Binary files a/docs/.gitbook/assets/use-case-django-ingress-template (4) (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-case-django-ingress-template (4) (5).jpg b/docs/.gitbook/assets/use-case-django-ingress-template (4) (5).jpg deleted file mode 100644 index 2aff8733c6..0000000000 Binary files a/docs/.gitbook/assets/use-case-django-ingress-template (4) (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-case-django-ingress-template (4) (6).jpg b/docs/.gitbook/assets/use-case-django-ingress-template (4) (6).jpg deleted file mode 100644 index 2aff8733c6..0000000000 Binary files a/docs/.gitbook/assets/use-case-django-ingress-template (4) (6).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-case-django-ingress-template (4) (7).jpg b/docs/.gitbook/assets/use-case-django-ingress-template (4) (7).jpg deleted file mode 100644 index 2aff8733c6..0000000000 Binary files a/docs/.gitbook/assets/use-case-django-ingress-template (4) (7).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-case-django-ingress-template (4).jpg b/docs/.gitbook/assets/use-case-django-ingress-template (4).jpg deleted file mode 100644 index 2aff8733c6..0000000000 Binary files a/docs/.gitbook/assets/use-case-django-ingress-template (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-case-django-ingress-template.jpg b/docs/.gitbook/assets/use-case-django-ingress-template.jpg deleted file mode 100644 index 2aff8733c6..0000000000 Binary files a/docs/.gitbook/assets/use-case-django-ingress-template.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-case-expressjs-ingress-template (3) (1).jpg b/docs/.gitbook/assets/use-case-expressjs-ingress-template (3) (1).jpg deleted file mode 100644 index b85b9f777b..0000000000 Binary files a/docs/.gitbook/assets/use-case-expressjs-ingress-template (3) (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-case-expressjs-ingress-template (3) (2).jpg b/docs/.gitbook/assets/use-case-expressjs-ingress-template (3) (2).jpg deleted file mode 100644 index b85b9f777b..0000000000 Binary files a/docs/.gitbook/assets/use-case-expressjs-ingress-template (3) (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-case-expressjs-ingress-template (3) (3).jpg b/docs/.gitbook/assets/use-case-expressjs-ingress-template (3) (3).jpg deleted file mode 100644 index b85b9f777b..0000000000 Binary files a/docs/.gitbook/assets/use-case-expressjs-ingress-template (3) (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-case-expressjs-ingress-template (3) (4).jpg b/docs/.gitbook/assets/use-case-expressjs-ingress-template (3) (4).jpg deleted file mode 100644 index b85b9f777b..0000000000 Binary files a/docs/.gitbook/assets/use-case-expressjs-ingress-template (3) (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-case-expressjs-ingress-template (3) (5).jpg b/docs/.gitbook/assets/use-case-expressjs-ingress-template (3) (5).jpg deleted file mode 100644 index b85b9f777b..0000000000 Binary files a/docs/.gitbook/assets/use-case-expressjs-ingress-template (3) (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-case-expressjs-ingress-template (3).jpg b/docs/.gitbook/assets/use-case-expressjs-ingress-template (3).jpg deleted file mode 100644 index b85b9f777b..0000000000 Binary files a/docs/.gitbook/assets/use-case-expressjs-ingress-template (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-case-expressjs-ingress-template.jpg b/docs/.gitbook/assets/use-case-expressjs-ingress-template.jpg deleted file mode 100644 index b85b9f777b..0000000000 Binary files a/docs/.gitbook/assets/use-case-expressjs-ingress-template.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-case-expressjs-view-demo-data (1) (3) (1).jpg b/docs/.gitbook/assets/use-case-expressjs-view-demo-data (1) (3) (1).jpg deleted file mode 100644 index ab18a08ed9..0000000000 Binary files a/docs/.gitbook/assets/use-case-expressjs-view-demo-data (1) (3) (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-case-expressjs-view-demo-data (1) (3) (2).jpg b/docs/.gitbook/assets/use-case-expressjs-view-demo-data (1) (3) (2).jpg deleted file mode 100644 index ab18a08ed9..0000000000 Binary files a/docs/.gitbook/assets/use-case-expressjs-view-demo-data (1) (3) (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-case-expressjs-view-demo-data (1) (3) (3).jpg b/docs/.gitbook/assets/use-case-expressjs-view-demo-data (1) (3) (3).jpg deleted file mode 100644 index ab18a08ed9..0000000000 Binary files a/docs/.gitbook/assets/use-case-expressjs-view-demo-data (1) (3) (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-case-expressjs-view-demo-data (1) (3) (4).jpg b/docs/.gitbook/assets/use-case-expressjs-view-demo-data (1) (3) (4).jpg deleted file mode 100644 index ab18a08ed9..0000000000 Binary files a/docs/.gitbook/assets/use-case-expressjs-view-demo-data (1) (3) (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-case-expressjs-view-demo-data (1) (3) (5).jpg b/docs/.gitbook/assets/use-case-expressjs-view-demo-data (1) (3) (5).jpg deleted file mode 100644 index ab18a08ed9..0000000000 Binary files a/docs/.gitbook/assets/use-case-expressjs-view-demo-data (1) (3) (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-case-expressjs-view-demo-data (1) (3).jpg b/docs/.gitbook/assets/use-case-expressjs-view-demo-data (1) (3).jpg deleted file mode 100644 index ab18a08ed9..0000000000 Binary files a/docs/.gitbook/assets/use-case-expressjs-view-demo-data (1) (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-case-expressjs-view-demo-data (1).jpg b/docs/.gitbook/assets/use-case-expressjs-view-demo-data (1).jpg deleted file mode 100644 index ab18a08ed9..0000000000 Binary files a/docs/.gitbook/assets/use-case-expressjs-view-demo-data (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-cases-springboot-ingress-template (1).jpg b/docs/.gitbook/assets/use-cases-springboot-ingress-template (1).jpg deleted file mode 100644 index 12e1d44495..0000000000 Binary files a/docs/.gitbook/assets/use-cases-springboot-ingress-template (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-cases-springboot-ingress-template (2).jpg b/docs/.gitbook/assets/use-cases-springboot-ingress-template (2).jpg deleted file mode 100644 index 12e1d44495..0000000000 Binary files a/docs/.gitbook/assets/use-cases-springboot-ingress-template (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-cases-springboot-ingress-template (3).jpg b/docs/.gitbook/assets/use-cases-springboot-ingress-template (3).jpg deleted file mode 100644 index 12e1d44495..0000000000 Binary files a/docs/.gitbook/assets/use-cases-springboot-ingress-template (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-cases-springboot-ingress-template (4).jpg b/docs/.gitbook/assets/use-cases-springboot-ingress-template (4).jpg deleted file mode 100644 index 12e1d44495..0000000000 Binary files a/docs/.gitbook/assets/use-cases-springboot-ingress-template (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-cases-springboot-ingress-template (5).jpg b/docs/.gitbook/assets/use-cases-springboot-ingress-template (5).jpg deleted file mode 100644 index 12e1d44495..0000000000 Binary files a/docs/.gitbook/assets/use-cases-springboot-ingress-template (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-cases-springboot-ingress-template (6).jpg b/docs/.gitbook/assets/use-cases-springboot-ingress-template (6).jpg deleted file mode 100644 index 12e1d44495..0000000000 Binary files a/docs/.gitbook/assets/use-cases-springboot-ingress-template (6).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-cases-springboot-ingress-template (7).jpg b/docs/.gitbook/assets/use-cases-springboot-ingress-template (7).jpg deleted file mode 100644 index 12e1d44495..0000000000 Binary files a/docs/.gitbook/assets/use-cases-springboot-ingress-template (7).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-cases-springboot-ingress-template.jpg b/docs/.gitbook/assets/use-cases-springboot-ingress-template.jpg deleted file mode 100644 index 12e1d44495..0000000000 Binary files a/docs/.gitbook/assets/use-cases-springboot-ingress-template.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-cases-springboot-view-student-data (1).jpg b/docs/.gitbook/assets/use-cases-springboot-view-student-data (1).jpg deleted file mode 100644 index c061312939..0000000000 Binary files a/docs/.gitbook/assets/use-cases-springboot-view-student-data (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-cases-springboot-view-student-data (10).jpg b/docs/.gitbook/assets/use-cases-springboot-view-student-data (10).jpg deleted file mode 100644 index c061312939..0000000000 Binary files a/docs/.gitbook/assets/use-cases-springboot-view-student-data (10).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-cases-springboot-view-student-data (11).jpg b/docs/.gitbook/assets/use-cases-springboot-view-student-data (11).jpg deleted file mode 100644 index c061312939..0000000000 Binary files a/docs/.gitbook/assets/use-cases-springboot-view-student-data (11).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-cases-springboot-view-student-data (2).jpg b/docs/.gitbook/assets/use-cases-springboot-view-student-data (2).jpg deleted file mode 100644 index c061312939..0000000000 Binary files a/docs/.gitbook/assets/use-cases-springboot-view-student-data (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-cases-springboot-view-student-data (3).jpg b/docs/.gitbook/assets/use-cases-springboot-view-student-data (3).jpg deleted file mode 100644 index c061312939..0000000000 Binary files a/docs/.gitbook/assets/use-cases-springboot-view-student-data (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-cases-springboot-view-student-data (4).jpg b/docs/.gitbook/assets/use-cases-springboot-view-student-data (4).jpg deleted file mode 100644 index c061312939..0000000000 Binary files a/docs/.gitbook/assets/use-cases-springboot-view-student-data (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-cases-springboot-view-student-data (5).jpg b/docs/.gitbook/assets/use-cases-springboot-view-student-data (5).jpg deleted file mode 100644 index c061312939..0000000000 Binary files a/docs/.gitbook/assets/use-cases-springboot-view-student-data (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-cases-springboot-view-student-data (6).jpg b/docs/.gitbook/assets/use-cases-springboot-view-student-data (6).jpg deleted file mode 100644 index c061312939..0000000000 Binary files a/docs/.gitbook/assets/use-cases-springboot-view-student-data (6).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-cases-springboot-view-student-data (7).jpg b/docs/.gitbook/assets/use-cases-springboot-view-student-data (7).jpg deleted file mode 100644 index c061312939..0000000000 Binary files a/docs/.gitbook/assets/use-cases-springboot-view-student-data (7).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-cases-springboot-view-student-data (8).jpg b/docs/.gitbook/assets/use-cases-springboot-view-student-data (8).jpg deleted file mode 100644 index c061312939..0000000000 Binary files a/docs/.gitbook/assets/use-cases-springboot-view-student-data (8).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-cases-springboot-view-student-data (9).jpg b/docs/.gitbook/assets/use-cases-springboot-view-student-data (9).jpg deleted file mode 100644 index c061312939..0000000000 Binary files a/docs/.gitbook/assets/use-cases-springboot-view-student-data (9).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-cases-springboot-view-student-data-with-id (1).jpg b/docs/.gitbook/assets/use-cases-springboot-view-student-data-with-id (1).jpg deleted file mode 100644 index c2d9c5f3b3..0000000000 Binary files a/docs/.gitbook/assets/use-cases-springboot-view-student-data-with-id (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-cases-springboot-view-student-data-with-id (2).jpg b/docs/.gitbook/assets/use-cases-springboot-view-student-data-with-id (2).jpg deleted file mode 100644 index c2d9c5f3b3..0000000000 Binary files a/docs/.gitbook/assets/use-cases-springboot-view-student-data-with-id (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-cases-springboot-view-student-data-with-id (3).jpg b/docs/.gitbook/assets/use-cases-springboot-view-student-data-with-id (3).jpg deleted file mode 100644 index c2d9c5f3b3..0000000000 Binary files a/docs/.gitbook/assets/use-cases-springboot-view-student-data-with-id (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-cases-springboot-view-student-data-with-id (4).jpg b/docs/.gitbook/assets/use-cases-springboot-view-student-data-with-id (4).jpg deleted file mode 100644 index c2d9c5f3b3..0000000000 Binary files a/docs/.gitbook/assets/use-cases-springboot-view-student-data-with-id (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-cases-springboot-view-student-data-with-id (5).jpg b/docs/.gitbook/assets/use-cases-springboot-view-student-data-with-id (5).jpg deleted file mode 100644 index c2d9c5f3b3..0000000000 Binary files a/docs/.gitbook/assets/use-cases-springboot-view-student-data-with-id (5).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-cases-springboot-view-student-data-with-id (6).jpg b/docs/.gitbook/assets/use-cases-springboot-view-student-data-with-id (6).jpg deleted file mode 100644 index c2d9c5f3b3..0000000000 Binary files a/docs/.gitbook/assets/use-cases-springboot-view-student-data-with-id (6).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-cases-springboot-view-student-data-with-id (7).jpg b/docs/.gitbook/assets/use-cases-springboot-view-student-data-with-id (7).jpg deleted file mode 100644 index c2d9c5f3b3..0000000000 Binary files a/docs/.gitbook/assets/use-cases-springboot-view-student-data-with-id (7).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-cases-springboot-view-student-data-with-id.jpg b/docs/.gitbook/assets/use-cases-springboot-view-student-data-with-id.jpg deleted file mode 100644 index c2d9c5f3b3..0000000000 Binary files a/docs/.gitbook/assets/use-cases-springboot-view-student-data-with-id.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/use-cases-springboot-view-student-data.jpg b/docs/.gitbook/assets/use-cases-springboot-view-student-data.jpg deleted file mode 100644 index c061312939..0000000000 Binary files a/docs/.gitbook/assets/use-cases-springboot-view-student-data.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/user1.jpg b/docs/.gitbook/assets/user1.jpg deleted file mode 100644 index d40e964fef..0000000000 Binary files a/docs/.gitbook/assets/user1.jpg and /dev/null differ diff --git a/docs/.gitbook/assets/user_gc1 (3) (1).png b/docs/.gitbook/assets/user_gc1 (3) (1).png deleted file mode 100644 index 99a4ca870c..0000000000 Binary files a/docs/.gitbook/assets/user_gc1 (3) (1).png and /dev/null differ diff --git a/docs/.gitbook/assets/user_gc1 (3) (2).png b/docs/.gitbook/assets/user_gc1 (3) (2).png deleted file mode 100644 index 99a4ca870c..0000000000 Binary files a/docs/.gitbook/assets/user_gc1 (3) (2).png and /dev/null differ diff --git a/docs/.gitbook/assets/user_gc1 (3) (3).png b/docs/.gitbook/assets/user_gc1 (3) (3).png deleted file mode 100644 index 99a4ca870c..0000000000 Binary files a/docs/.gitbook/assets/user_gc1 (3) (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/user_gc1 (3).png b/docs/.gitbook/assets/user_gc1 (3).png deleted file mode 100644 index 99a4ca870c..0000000000 Binary files a/docs/.gitbook/assets/user_gc1 (3).png and /dev/null differ diff --git a/docs/.gitbook/assets/user_gc1-3-4.png b/docs/.gitbook/assets/user_gc1-3-4.png deleted file mode 100644 index 99a4ca870c..0000000000 Binary files a/docs/.gitbook/assets/user_gc1-3-4.png and /dev/null differ diff --git a/docs/.gitbook/assets/wf1 (2).jpg b/docs/.gitbook/assets/wf1 (2).jpg deleted file mode 100644 index 91edff4a29..0000000000 Binary files a/docs/.gitbook/assets/wf1 (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/wf2 (1).jpg b/docs/.gitbook/assets/wf2 (1).jpg deleted file mode 100644 index fcab99f7dd..0000000000 Binary files a/docs/.gitbook/assets/wf2 (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/workflow (1).gif b/docs/.gitbook/assets/workflow (1).gif deleted file mode 100644 index 80428dbe95..0000000000 Binary files a/docs/.gitbook/assets/workflow (1).gif and /dev/null differ diff --git a/docs/.gitbook/assets/workflow (2).gif b/docs/.gitbook/assets/workflow (2).gif deleted file mode 100644 index 80428dbe95..0000000000 Binary files a/docs/.gitbook/assets/workflow (2).gif and /dev/null differ diff --git a/docs/.gitbook/assets/workflow (3).gif b/docs/.gitbook/assets/workflow (3).gif deleted file mode 100644 index 80428dbe95..0000000000 Binary files a/docs/.gitbook/assets/workflow (3).gif and /dev/null differ diff --git a/docs/.gitbook/assets/workflow (4).gif b/docs/.gitbook/assets/workflow (4).gif deleted file mode 100644 index 80428dbe95..0000000000 Binary files a/docs/.gitbook/assets/workflow (4).gif and /dev/null differ diff --git a/docs/.gitbook/assets/workflow (5).gif b/docs/.gitbook/assets/workflow (5).gif deleted file mode 100644 index 80428dbe95..0000000000 Binary files a/docs/.gitbook/assets/workflow (5).gif and /dev/null differ diff --git a/docs/.gitbook/assets/workflow (6).gif b/docs/.gitbook/assets/workflow (6).gif deleted file mode 100644 index 80428dbe95..0000000000 Binary files a/docs/.gitbook/assets/workflow (6).gif and /dev/null differ diff --git a/docs/.gitbook/assets/workflow.gif b/docs/.gitbook/assets/workflow.gif deleted file mode 100644 index 80428dbe95..0000000000 Binary files a/docs/.gitbook/assets/workflow.gif and /dev/null differ diff --git a/docs/.gitbook/assets/yaml (3) (1).jpg b/docs/.gitbook/assets/yaml (3) (1).jpg deleted file mode 100644 index 986f58e63e..0000000000 Binary files a/docs/.gitbook/assets/yaml (3) (1).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/yaml (3) (2).jpg b/docs/.gitbook/assets/yaml (3) (2).jpg deleted file mode 100644 index 986f58e63e..0000000000 Binary files a/docs/.gitbook/assets/yaml (3) (2).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/yaml (3) (3).jpg b/docs/.gitbook/assets/yaml (3) (3).jpg deleted file mode 100644 index 986f58e63e..0000000000 Binary files a/docs/.gitbook/assets/yaml (3) (3).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/yaml (3) (4).jpg b/docs/.gitbook/assets/yaml (3) (4).jpg deleted file mode 100644 index 986f58e63e..0000000000 Binary files a/docs/.gitbook/assets/yaml (3) (4).jpg and /dev/null differ diff --git a/docs/.gitbook/assets/yaml (3).jpg b/docs/.gitbook/assets/yaml (3).jpg deleted file mode 100644 index 986f58e63e..0000000000 Binary files a/docs/.gitbook/assets/yaml (3).jpg and /dev/null differ diff --git a/docs/.gitbook/gc-gitops-tab.png b/docs/.gitbook/gc-gitops-tab.png deleted file mode 100644 index d96ffe8742..0000000000 Binary files a/docs/.gitbook/gc-gitops-tab.png and /dev/null differ diff --git a/docs/FAQs/devtron-troubleshoot.md b/docs/FAQs/devtron-troubleshoot.md old mode 100644 new mode 100755 index fb12392e73..cfe617bc93 --- a/docs/FAQs/devtron-troubleshoot.md +++ b/docs/FAQs/devtron-troubleshoot.md @@ -1,8 +1,11 @@ +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + # Troubleshooting Guide We always try to make your experience of using Devtron as smooth as possible but still if you face any issues, follow the troubleshooting guide given below or join our [discord channel](https://discord.gg/jsRG5qx2gp) if you couldn't find the solution for the issue you are facing. -#### 1. How to resolve unauthorized errors, while trying to save global configurations like hostname, GitOps etc. after successful devtron installation +### 1. How to resolve unauthorized errors, while trying to save global configurations like hostname, GitOps etc. after successful devtron installation This occurs most of the time because any one or multiple jobs get failed during installation. To resolve this, you'll need to first check which jobs have failed. Follow these steps: @@ -30,7 +33,7 @@ kubectl apply -f migrator.yaml -n devtroncd ``` - It will re-create the failed jobs and you’ll see their pods created again. Just wait for a few minutes until the jobs gets completed then you are good to go. You should be able to save your global configurations now. -#### 2. Not able to see deployment metrics on production environment or Not able to enable application-metrics or Not able to deploy the app after creating a configmap or secret with data-volume option enabled +### 2. Not able to see deployment metrics on production environment or Not able to enable application-metrics or Not able to deploy the app after creating a configmap or secret with data-volume option enabled Update the rollout CRDs to latest version, run the following command: @@ -38,7 +41,7 @@ Update the rollout CRDs to latest version, run the following command: kubectl apply -f https://raw.githubusercontent.com/devtron-labs/devtron/main/manifests/yamls/rollout.yaml -n devtroncd ``` -#### 3. SSO Login not working even after entering correct SSO Credentials +### 3. SSO Login not working even after entering correct SSO Credentials ```error: user/UserAuthHandler.go:236","msg":"service err, AuthVerification","err":"no token provided``` @@ -52,7 +55,7 @@ Delete devtron pod once to reload the configurations using: kubectl delete pod -n devtroncd -l app=devtron ``` -#### 4. Logs are not Visible on UI while running the build and not even able to abort the same +### 4. Logs are not Visible on UI while running the build and not even able to abort the same Check if the pods are being created when you start a new build, run the command and look if a new pod is created when you started the build: ```bash @@ -71,10 +74,10 @@ kubectl delete pod -n devtroncd -l app=kubewatch ``` Again wait for 5 minutes and your issue should be resolved -#### 5. Grafana dashboards not visible in App Details page even after adding prometheus endpoint or Graphs showing error panel with id 2 not found +### 5. Grafana dashboards not visible in App Details page even after adding prometheus endpoint or Graphs showing error panel with id 2 not found -If the graphs are not visible check if prometheus is configured properly. Then go to Global Configurations > Clusters & Environments > Click on any environment for the cluster where you added prometheus endpoint and simply click `Update`. -If the charts are still not visible, try visiting the url: /grafana?orgId=2 +If the graphs are not visible check if prometheus is configured properly. Then go to Global Configurations → Clusters & Environments → Click on any environment for the cluster where you added prometheus endpoint and simply click `Update`. +If the charts are still not visible, try visiting the url: ``/grafana?orgId=2 If you see `Not Found` on this page, then follow all the given steps or if the page is accessible and you are getting `panel with id 2 not found` then follow from step 6: 1. Get grafana password using `kubectl -n devtroncd get secret devtron-secret -o jsonpath='{.data.GRAFANA_PASSWORD}' | base64 -d` 2. `kubectl run --rm -it --image quay.io/devtron/k8s-utils:tutum-curl curl` Run this command and it will create a pod for using `curl` @@ -105,9 +108,9 @@ curl "${grafanaUrl}/api/datasources/2" -X PUT \ EOF ``` and run in the pod that we created above in step 2. -4. Now visit /grafana?orgId=2 again and you'll see grafana login page. Login using username `admin` and password from step 1 and check if prometheus url is updated in datasources. If not, update it in the default datasource. +4. Now visit ``/grafana?orgId=2 again and you'll see grafana login page. Login using username `admin` and password from step 1 and check if prometheus url is updated in datasources. If not, update it in the default datasource. 5. Now from devtron UI, update any of the environment again and it's datasource will be created automatically. -6. In Grafana UI you need to be logged in and Go to Dashboards > Manage then click `Import` and Import the given dashboards one by one. +6. In Grafana UI you need to be logged in and Go to Dashboards → Manage then click `Import` and Import the given dashboards one by one. ``` https://grafana.com/api/dashboards/13322/revisions/4/download https://grafana.com/api/dashboards/13320/revisions/4/download @@ -116,7 +119,7 @@ https://grafana.com/api/dashboards/13321/revisions/6/download ``` After that, your issue should be resolved and you should be able to see all the graphs on UI. -#### 6. Unable to Login Devtron dashboard even if the password is correct +### 6. Unable to Login Devtron dashboard even if the password is correct If you are not able to login into Devtron dashboard even after giving the correct password, it is possible that the argocd token of previous session has been stored in the cookies and is not able to override the new token that is generated for the new session. If you are facing this issue, follow the steps below - @@ -125,7 +128,8 @@ If using Firefox - 2. Navigate to storage tab in inspect. 3. Click on url where Devtron has been installed under `Cookies` tab and you could see an argocd token with its value, something similar to below image. -![inspect-cookies](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-troubleshooting/argocd-cookie.png) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-troubleshooting/argocd-cookie.png) +
Figure 1: Inspect-cookies
4. Now right click on token, and click on `Delete All Session Cookies` option. @@ -134,35 +138,39 @@ If using Chrome - 2. Navigate to Application tab, and under `Storage` tab click on `Cookies`. 3. Click on url under `Cookie` and you would be able tto see an argocd token with its value, as shown in the image below. -![chrome-cookie](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-troubleshooting/chrome-cookie.png) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-troubleshooting/chrome-cookie.png) +
Figure 2: Chrome-cookie
4. Now right click on token and click on `delete` option. If using Safari - -1. Goto Safari preferences >> Advanced options and check the show develop menu as shown in the image below. +1. Goto Safari preferences → Advanced options and check the show develop menu as shown in the image below. -![safari-preferences](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-troubleshooting/safari-preferences.png) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-troubleshooting/safari-preferences.png) +
Figure 3: Safari-preferences
2. Now goto login page of Devtron and press `option+command+I`. It will open inspect element. 3. Then navigate to `Storage`, click on `Cookies` and you would be able to see an argocd token with its value as shown in the image below. -![safari-cookie](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-troubleshooting/safari-cookie.png) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-troubleshooting/safari-cookie.png) +
Figure 4: Safari-cookie
4. Now right click on token and select `delete` option. After clearing `Cookies`, try again to login, you should be able to login now. -#### 7. No charts found in Charts Discover Section +### 7. No charts found in Charts Discover Section -In the Devtron's Discover Chart section, if you are not able to see any charts available, goto `Global Configuration` >> `Chart Repositories` and click on `Refresh Chart` at the top-right as shown in the image below. After clicking the button, it might take 4-5mins to show all the charts in `Discover` section depending upon the chart repositories added. +In the Devtron's Discover Chart section, if you are not able to see any charts available, go to **Application Management** → **Configurations** → **Chart Repository** and click on `Refresh Chart` at the top-right as shown in the image below. After clicking the button, it might take 4-5mins to show all the charts in `Discover` section depending upon the chart repositories added. -![charts-not-found](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-troubleshooting/refresh-charts.png) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-troubleshooting/refresh-charts.png) +
Figure 5: Charts-not-found
-#### 8. Not able to update cluster +### 8. Not able to update cluster -In `Global Configurations` >> `Cluters & Environments`, if you try to update a cluster which has been already added in Devtron, you might get an error as `{"message":"Failed to update datasource. Reload new version and try again"}`. If you are facing such issue, please follow the following steps - +In **Global Configurations** → **Clusters & Environments**, if you try to update a cluster which has been already added in Devtron, you might get an error as `{"message":"Failed to update datasource. Reload new version and try again"}`. If you are facing such issue, please follow the following steps - 1. Edit the changes you want to make in respective cluster 2. Click on save after making changes and you may get error message stated above. @@ -171,7 +179,7 @@ In `Global Configurations` >> `Cluters & Environments`, if you try to update a c [Note: If you already have created some environments in that cluster, it needs to be updated again] -#### 9. Postgresql is in crashloop with error - Failed to pull image +### 9. Postgresql is in crashloop with error - Failed to pull image There may be some other pods also in crashloop as they are not able to connect to database. To resolve this issue, you can either [update devtron to latest version](../setup/upgrade/README.md) or run the following commands to fix instantly on the same version you are using: ```bash @@ -183,17 +191,17 @@ kubectl delete pod -n devtroncd postgresql-postgresql-0 ``` You can also delete other pods which are in crashloop after postgresql is up and running so that they can restart and connect to postgresql and Devtron will be up and running again in a few moments. -#### 10. Unable to fetch the latest commit and not able to trigger auto build. +### 10. Unable to fetch the latest commit and not able to trigger auto build. To solve this, bounce the git-sensor-0 pod. ```bash kubectl delete pod -n devtroncd git-sensor-0 ``` -#### 11. If you have restricted devtron-service to be accessible on certain IPs only and SSO login isn’t working +### 11. If you have restricted devtron-service to be accessible on certain IPs only and SSO login isn’t working Whitelist the NAT-gateway IPs of the cluster (There can be multiple NAT-gateways if your cluster is multi-AZ) -#### 12. If CPU metrics are not showing but memory metrics are visible in graphs. +### 12. If CPU metrics are not showing but memory metrics are visible in graphs. Do the following:- @@ -203,7 +211,7 @@ Do the following:- CPU metrics should start showing up in a while. -#### 13. If user not able to upload a file more than specific size. +### 13. If user not able to upload a file more than specific size. `Please use below annotation in ingress` ```bash @@ -211,22 +219,22 @@ nginx.ingress.kubernetes.io/proxy-body-size: 100m ``` `Note:- `Where m is MiB. -#### 14. If AWS Load balancer controller is unable to provision ALB and getting message in alb controller as unauthorized, attach these IAM policy to the nodegroup IAM Role. +### 14. If AWS Load balancer controller is unable to provision ALB and getting message in alb controller as unauthorized, attach these IAM policy to the nodegroup IAM Role. [IAM policy](https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.3.1/docs/install/iam_policy.json) -#### 15. When app metrics is not coming on grafana and devtron dashboard, set the value of the following parameter as false in kube prometheus stack values. +### 15. When app metrics is not coming on grafana and devtron dashboard, set the value of the following parameter as false in kube prometheus stack values. ``` serviceMonitorSelectorNilUsesHelmValues: false ``` -#### 16. Unable to deploy metrics-server using chart on devtron +### 16. Unable to deploy metrics-server using chart on devtron To solve Disable certificate validation by passing `--kubelet-insecure-tls` argument to metrics server chart. -#### 17. Unable to delete a database from postgres +### 17. Unable to delete a database from postgres `Description of issue` ERROR: database `` is being accessed by other users @@ -239,7 +247,7 @@ SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE pg ``` Then run the command to delete database - `drop databases ` -#### 18. Unable to login with admin password or reset devtron admin password +### 18. Unable to login with admin password or reset devtron admin password `Debug` @@ -259,7 +267,7 @@ If you are getting an error message of "invalid username or password" or you wan 3. Restart argocd dex server to create new admin password for devtron using `kubectl delete po -n devtroncd -l app.kubernetes.io/name=argocd-dex-server` 4. Run the command given above to get the new admin password -#### 19. After installing Devtron using Helm, getting the admin password does not work.(if using windows) +### 19. After installing Devtron using Helm, getting the admin password does not work.(if using windows) `Debug` @@ -274,9 +282,9 @@ The other way is to get the password in the encoded form using the cmd `kubectl -n devtroncd get secret devtron-secret -o jsonpath='{.data.ACD_PASSWORD}'`, further decode it into plaintext using an online [encoder decoder](https://www.base64decode.org/). -#### 20. Getting `UPGRADE FAILED: cannot patch "postgresql-postgresql"` while upgrading Devtron to newer versions +### 20. Getting `UPGRADE FAILED: cannot patch "postgresql-postgresql"` while upgrading Devtron to newer versions `Debug:` -1. Make sure to [annotate and label](../setup/upgrade/devtron-upgrade-0.3.x-0.4.x.md#id-3.-annotate-and-label-all-the-devtron-resources) all the Devtron resources. +1. Make sure to [annotate and label](../setup/upgrade/devtron-upgrade-0.3.x-0.4.x.md#3-annotate-and-label-all-the-devtron-resources) all the Devtron resources. 2. Description of error ``` Error: UPGRADE FAILED: cannot patch "postgresql-postgresql" with kind StatefulSet: StatefulSet.apps "postgresql-postgresql" is invalid: spec: Forbidden: updates to statefulset spec for fields other than 'replicas', 'template', 'updateStrategy' and 'minReadySeconds' are forbidden @@ -290,14 +298,14 @@ helm upgrade devtron devtron/devtron-operator --namespace devtroncd \ --set components.postgres.persistence.volumeSize=20Gi ``` -#### 21. Configure Blob Storage +### 21. Configure Blob Storage You can configure blob storage with one of the following: -{% tabs %} + -{% tab title="MinIO storage" %} + This configuration will use MinIO for storing logs and cache. @@ -311,9 +319,9 @@ helm upgrade devtron devtron/devtron-operator \ --set minio.enabled=true ``` -{% endtab %} + -{% tab title="AWS S3 Bucket" %} + This configuration will use AWS S3 bucket for storing build logs and cache. Refer to the `AWS specific` parameters on the [Storage for Logs and Cache](../setup/install/installation-configuration.md#aws-specific) page. * **Configure using S3 IAM policy:** @@ -367,9 +375,9 @@ helm upgrade devtron devtron/devtron-operator --namespace devtroncd \ --set configs.BLOB_STORAGE_S3_ENDPOINT= ``` -{% endtab %} + -{% tab title="Azure Blob Storage" %} + This configuration will use Azure Blob Storage for storing build logs and cache. Refer to the `Azure specific` parameters on the [Storage for Logs and Cache](../setup/install/installation-configuration.md#azure-specific) page. @@ -385,9 +393,9 @@ helm upgrade devtron devtron/devtron-operator --namespace devtroncd \ --set configs.AZURE_BLOB_CONTAINER_CI_CACHE=ci-cache-container ``` -{% endtab %} + -{% tab title="Google Cloud Storage" %} + This configuration will use Google Cloud Storage for storing build logs and cache. Refer to the `Google Cloud specific` parameters on the [Storage for Logs and Cache](../setup/install/installation-configuration.md#google-cloud-storage-specific) page. @@ -403,19 +411,19 @@ helm upgrade devtron devtron/devtron-operator --namespace devtroncd \ --set configs.DEFAULT_BUILD_LOGS_BUCKET: log-bucket ``` -{% endtab %} -{% endtabs %} + + -#### 22. Rollout is showing error - :111: attempt to index a non-table object(nil) with key 'stableRS' stack traceback: :111: in main chunk [G]: ? +### 22. Rollout is showing error - ``:111: attempt to index a non-table object(nil) with key 'stableRS' stack traceback: ``:111: in main chunk [G]: ? This can occur if you are using or recently upgraded to Kubernetes version 1.22 or above and you are using rollout controller version 0.13.0 from chart `devtron-charts/rollout` or `devtron/rollout`. The issue can be because of CRDs which were updated in later versions of rollout chart. 1. Check which chart repo and version of rollout controller are you using on that cluster from Helm Apps section -2. Update the rollout chart version to latest and re-deploy. If your rollout controller is deployed from `devtron-charts` helm repo then change the repo to `devtron/rollout` and then update the version to latest. Also, if devtron helm repo is not showing on your devtron then go to Global Configurations > Chart Repositories and add a new repo with the name `devtron` and url `https://helm.devtron.ai`. Wait for few minutes and then charts from devtron repo will be there on your devtron. This should resolve your issue +2. Update the rollout chart version to latest and re-deploy. If your rollout controller is deployed from `devtron-charts` helm repo then change the repo to `devtron/rollout` and then update the version to latest. Also, if devtron helm repo is not showing on your devtron then go to Application Management → Configurations → Chart Repository and add a new repo with the name `devtron` and url `https://helm.devtron.ai`. Wait for few minutes and then charts from devtron repo will be there on your devtron. This should resolve your issue -#### 23. How to resolve if Deployment Status shows Failed or Degraded when you pull images from private container registry +### 23. How to resolve if Deployment Status shows Failed or Degraded when you pull images from private container registry If the deployment status shows `Failed` or `Degraded`, then the cluster is not able to pull container image from the private registry. In that case, the status of pod shows `ImagePullBackOff`. @@ -427,21 +435,24 @@ The failure of deployment can be one of the following reasons: You can resolve the `ImagePullBackOff` issue by clicking **How to resolve?** on the **App Details** page. ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/container-registries/how-to-resolve-latest1.png) +
Figure 6: Deployment Status Failed
To provide the auto-inject credentials to the specific clusters for pulling the image from the private repository, click **Manage Access** which will take you to the **Container Registries** page. ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/container-registries/manage-access-latest.jpg) +
Figure 7: Manage Access
1. On the **Container Registries** page, select the docker registry and click **Manage**. 2. In the **Auto-inject credentials to clusters**, click **Confirm to edit** to select the specific cluster or all clusters for which you want to auto-inject the credentials to and click **Save**. 3. Redeploy the application after allowing the access. ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/container-registries/auto-inject-to-clusters.jpg) +
Figure 8: Auto Inject to Clusters
-#### 24. Devtron Terminal Connection Timeout Issue on GKE Cluster +### 24. Devtron Terminal Connection Timeout Issue on GKE Cluster **Problem:** @@ -487,7 +498,7 @@ metadata: With these configuration changes, the Devtron dashboard connection should no longer timeout after 30 seconds, allowing for a more stable and consistent connection. -#### 25. Refreshing ArgoCD Certificates When Expired +### 25. Refreshing ArgoCD Certificates When Expired 1. **Edit ArgoCD Secret** @@ -524,7 +535,7 @@ This command deletes the Devtron pod in the `devtroncd` namespace with the label Following these steps should allow you to refresh the ArgoCD certificates when they have expired. -#### 26. Not able to see commits, throwing exit status 128 +### 26. Not able to see commits, throwing exit status 128 1. **Save the Git Repository Again** Wait for few minutes and check the build pipeline if commits are visible or not @@ -544,11 +555,12 @@ kubectl delete po -n devtroncd -l app=git-sensor In case the cloning fails, you can generate the token, update the Git account in Global Configurations, and try to save the git repository again. -#### 27. Git-sensor PVC- disk full +### 27. Git-sensor PVC- disk full **Need to increase the PVC size if you are getting following error:** ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-troubleshooting/git-sensor-pvc.png) +
Figure 9: Git Sensor PVC
**Need to check the `Storageclass` by which PVC was provisioned.** @@ -575,13 +587,14 @@ spec: kubectl delete po -n devtroncd git-sensor-0 ``` -#### 28. Getting 'Invalid JSON Document' while deploying via ArgoCD +### 28. Getting 'Invalid JSON Document' while deploying via ArgoCD ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-troubleshooting/invalid-json.jpg) +
Figure 10: Invalid JSON
As shown above, Rollout object’s sync status is showing `Failed` and throwing an `Invalid JSON Document` error. -This might happen due to manual changes in the Rollout object in the annotation `kubectl.kubernetes.io/last-applied-configuration:`
The value of the above annotation is a JSON. ArgoCD tries to validate that JSON and throws an error if it is invalid. +This might happen due to manual changes in the Rollout object in the annotation `kubectl.kubernetes.io/last-applied-configuration:`
The value of the above annotation is a JSON. ArgoCD tries to validate that JSON and throws an error if it is invalid. Below is a sample annotation for your reference. @@ -591,11 +604,11 @@ kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"v1","data":{" You may take the help of JSON validators to identify where the unintended human error has occured in the JSON. Rectifying the same should resolve this issue. -{% hint style="info" %} +:::info The annotation `kubectl.kubernetes.io/last-applied-configuration:` is automatically added to each object when you run `kubectl apply`. -{% endhint %} +::: -#### 29. Helm Charts provided by Bitnami are not visible in Chart Store. Getting 'tls: handshake failure' while deploying Bitnami Charts. +### 29. Helm Charts provided by Bitnami are not visible in Chart Store. Getting 'tls: handshake failure' while deploying Bitnami Charts. `rpc error: code = Unknown desc = Get "https://repo.broadcom.com/bitnami-files/index.yaml": remote error: tls: handshake failure` @@ -603,25 +616,27 @@ Follow the below steps if you are getting the above error: * Make sure your [Devtron version](https://devtron-public-asset.s3.us-east-2.amazonaws.com/integrations/about-devtron.png) is 0.7.1 ([check how to upgrade](../setup/upgrade/README.md)). -* Navigate to Global Configurations → Chart Repositories → Bitnami +* Navigate to **Application Management** → **Chart Repository** → **Bitnami** * Now in the Bitnami repository, uncheck the **Allow Insecure Connection** and update it as shown below. ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-troubleshooting/bitnami-chart-issue.jpg) +
Figure 11: Bitnami Chart Issue
-* Go to Chart Store and initiate the Chart Sync. +* Go to **Application Management** → **Chart Store** and initiate the Chart Sync. ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-troubleshooting/chart-sync.jpg) +
Figure 12: Chart Sync
-#### 30. The Advanced (YAML) and Basic (GUI) sections are appearing blank in the Base Deployment Template of the application. +### 30. The Advanced (YAML) and Basic (GUI) sections are appearing blank in the Base Deployment Template of the application. ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/deployment-charts/empty-values.jpg) +
Figure 13: Empty Values
-This happens due to a missing [app-values.yaml](../user-guide/global-configurations/deployment-charts.md#id-3.-add-app-values.yaml) file in your deployment chart. - -To fix this issue, include an `app-values.yaml` file in your deployment helm chart before uploading the chart. Refer [adding app-values.yaml](../user-guide/global-configurations/deployment-charts.md#id-3.-add-app-valuesyaml) to know more. +This happens due to a missing [app-values.yaml](../user-guide/global-configurations/deployment-charts.md#3-add-app-valuesyaml) file in your deployment chart. -#### 31. Unable to create a GitOps deployment pipeline or encountering errors with GitOps deployment. +To fix this issue, include an `app-values.yaml` file in your deployment helm chart before uploading the chart. Refer [adding app-values.yaml](../user-guide/global-configurations/deployment-charts.md#3-add-app-valuesyaml) to know more. -If the **GitOps** section is already configured for your [external Argo apps](../user-guide/creating-application/workflow/cd-pipeline.md#migrate-argo-cd-application), and later if you install the GitOps (ArgoCD) module from [Devtron Stack Manager](../user-guide/integrations/argocd.md), make sure to save the [GitOps](../user-guide/global-configurations/gitops.md) configuration once again and also the [Cluster](../user-guide/global-configurations/cluster-and-environments.md) configuration. This might prevent potential errors and ensure your GitOps deployments (for Devtron Apps/Helm Apps) are functional. +### 31. Unable to create a GitOps deployment pipeline or encountering errors with GitOps deployment. +If the **GitOps** section is already configured for your [external Argo apps](../user-guide/creating-application/workflow/cd-pipeline.md#migrate-argo-cd-application), and later if you install the GitOps (ArgoCD) module from [Devtron Stack Manager](../user-guide/integrations/argocd.md), make sure to save the [GitOps](../user-guide/global-configurations/gitops.md) configuration once again and also the [Cluster](../user-guide/global-configurations/cluster-and-environments.md) configuration. This might prevent potential errors and ensure your GitOps deployments (for Devtron Apps/Helm Apps) are functional. \ No newline at end of file diff --git a/docs/README.md b/docs/README.md old mode 100644 new mode 100755 index 2d73d31bc7..565936e8a9 --- a/docs/README.md +++ b/docs/README.md @@ -1,73 +1,80 @@ +--- +title: Introduction to Devtron +sidebar_label: Introduction to Devtron +description: Learn what Devtron is, how it simplifies Kubernetes application management, and how to navigate your journey through the platform. +--- + # Introduction to Devtron - -Devtron is a tool integration platform for Kubernetes. +Devtron is an open-source tool integration platform for Kubernetes. It is built to simplify how teams deploy, manage, secure, and observe their applications. -Devtron deeply integrates with products across the lifecycle of microservices i.e., CI/CD, security, cost, debugging, and observability via an intuitive web interface. -Devtron helps you to deploy, observe, manage & debug the existing Helm apps in all your clusters. - - -{% embed url="https://www.youtube.com/watch?v=AG8HfTceHxw" caption="Introducing Devtron" %} - - -## Devtron's Key Features: - -### No Code Software Delivery Workflow for Kubernetes - -* Workflow which understands the domain of **Kubernetes, testing, CD, SecOps** so that you don't have to write scripts -* Reusable and composable components so that workflows are easy to construct and reason through - -### Multi-cloud Deployment - -* Deploy to multiple Kubernetes clusters on multiple cloud/on-prem from one Devtron setup -* Works for all cloud providers and on-premise Kubernetes clusters - -### Easy DevSecOps Integration - -* Multi-level security policy at global, cluster, environment, and application-level for efficient hierarchical policy management -* Behavior-driven security policy -* Define policies and exceptions for Kubernetes resources -* Define policies for events for faster resolution - -### Application Debugging Dashboard - -* One place for all historical Kubernetes events -* Access all manifests securely, such as secret obfuscation -* _**Application metrics**_ for CPU, RAM, HTTP status code, and latency with a comparison between new and old -* _**Advanced logging**_ with grep and JSON search -* Intelligent _**correlation between events, logs**_ for faster triangulation of issue -* Auto issue identification - -### Enterprise-Grade Security and Compliances - -* Fine-grained access control; control who can edit the configuration and who can deploy. -* Audit log to know who did what and when -* History of all CI and CD events -* Kubernetes events impacting application -* Relevant cloud events and their impact on applications -* Advanced workflow policies like blackout window, branch environment relationship to secure build and deployment pipelines - -### Implements GitOps - -* GitOps exposed through API and UI so that you don't have to interact with git CLI -* GitOps backed by Postgres for easy analysis -* Enforce finer access control than Git - -### Operational Insights - -* Deployment metrics to measure the success of the agile process. It captures MTTR, change failure rate, deployment frequency, and deployment size out of the box. -* Audit log to understand the failure causes -* Monitor changes across deployments and reverts easily - -## Compatibility Notes - -* Devtron uses a modified version of [Argo Rollout](https://argoproj.github.io/argo-rollouts/). -* Application metrics only work for K8s version 1.16+ - - -## Contributing Guidelines - -Check out our [contributing guidelines](https://github.com/devtron-labs/devtron/blob/main/CONTRIBUTING.md). Directions for opening issues, coding standards, and notes on our development processes are all included. +Devtron is like a control plane for the entire Kubernetes app lifecycle, where CI/CD, infrastructure provisioning, cost visibility, security, and debugging all meet in one unified interface. + +## Quick Walkthrough + +
+ +--- + +## Why Devtron Exists + +Kubernetes is powerful but complex. +Organizations often end up juggling 8-12 different tools just to achieve visibility, deployments, and governance. Devtron bridges these gaps by integrating all critical DevOps capabilities into a single coherent experience, without forcing teams to change their existing toolchains. + +With Devtron, you can: + +* **Deploy and manage** microservices across clusters with visual CI/CD pipelines. +* **Provision infrastructure** like EKS clusters directly from the UI. +* **Observe, debug, and troubleshoot** applications in real-time. +* **Integrate security and cost insights** right into your release workflow. +* **Automate repetitive DevOps workflows** using policies and templates. +* **Leverage AI-powered recommendations** for smarter scaling, debugging, and optimization. + +--- + +## Map Your Journey + +Here’s how you can explore Devtron step-by-step through this documentation: + +| Stage | What You’ll Learn | +|-------|------------------| +| **1. Setup & Installation** | Install and access Devtron in your cluster. | +| **2. Application Management** | Create, deploy, monitor, and roll back microservices using Helm or CI/CD pipelines. | +| **3. Infrastructure Management** | Monitor and Debug using Resource Browser, and perform remediation actions. | +| **4. Software Release Management** | Control releases with advanced workflows, approvals, and versioning. | +| **5. Cost Visibility** | Track and analyze Kubernetes resource costs across clusters. | +| **6. Security & Policies** | Integrate scanning and enforce policies across your workloads. | +| **7. Automation & Enablement** | Automate tasks and streamline operations. | +| **8. AI Recommendations** | Use AI to get actionable insights for right-sizing and optimization. | +| **9. Global Configurations** | Manage environment-level configs, secrets, and templates. | +| **10. Resources** | Access troubleshooting, glossary, additional configs, upgrades, plugins, integrations | + +--- + +## What Makes Devtron Unique + +* **Unified DevOps Hub** - Bring CI/CD, observability, cost, and security into one dashboard. +* **Deep Kubernetes Integration** - Works seamlessly with Helm, ArgoCD, Prometheus, Grafana, and more. +* **Developer-Friendly UI** - No need to memorize kubectl commands because every operation is visual and intuitive. +* **Enterprise-Ready** - Built-in RBAC, audit logs, SSO, and multi-cluster management. +* **AI-Augmented Decisions** - Get smart recommendations to debug faster and deploy confidently. + +--- + +## Who Is Devtron For? + +* **Developers** - who want fast, reliable deployments without losing control. +* **DevOps Engineers** - who need central governance and automation. +* **SREs** - who care about reliability, visibility, and cost efficiency. +* **Engineering Leaders** - who want a unified platform that scales with their teams. + +--- + +## Next Steps + +Ready to begin? Start with: **[Initial Setup →](./setup/getting-started/initial-setup.md)** to get Devtron running on your cluster. + +--- ## Community @@ -75,9 +82,12 @@ Get updates on Devtron's development and chat with the project maintainers, cont * Join the [Discord Community](https://discord.gg/jsRG5qx2gp) * Follow [@DevtronL on Twitter](https://twitter.com/DevtronL) -* Raise feature requests, suggest enhancements, report bugs at [GitHub issues](https://github.com/devtron-labs/devtron/issues) -* Read the [Devtron blog](https://devtron.ai/blog/) +* Raise feature requests, suggest enhancements, report bugs at [GitHub Issues](https://github.com/devtron-labs/devtron/issues) +* Read the [Devtron Blog](https://devtron.ai/blog/) +* You can also checkout the sandbox given at the top of this website to experience Devtron quickly. + +--- ## Vulnerability Reporting -We, at Devtron, take security and our users' trust very seriously. If you believe you have found a security issue in Devtron, please responsibly disclose it by contacting us at **security@devtron.ai**. +We, at Devtron, take security and our users' trust very seriously. If you believe you have found a security issue in Devtron, please responsibly disclose it by contacting us at **security@devtron.ai**. \ No newline at end of file diff --git a/docs/SUMMARY.md b/docs/SUMMARY.md deleted file mode 100644 index 5c836d80a2..0000000000 --- a/docs/SUMMARY.md +++ /dev/null @@ -1,209 +0,0 @@ -# Table of contents - -* [Introduction](README.md) -* [Getting Started](setup/getting-started/getting-started.md) -* [Install Devtron](setup/install/README.md) - * [Install Devtron OSS](setup/install/devtron-oss.md) - * [Install Devtron Freemium](setup/install/devtron-freemium.md) - * [Get Devtron Enterprise](https://devtron.ai/contact-sales) - * [Devtron Admin Credentials](setup/install/install-devtron.md) -* [Global Configurations](user-guide/global-configurations/README.md) - * [Host URL](user-guide/global-configurations/host-url.md) - * [GitOps](user-guide/global-configurations/gitops.md) - * [Projects](user-guide/global-configurations/projects.md) - * [Clusters & Environments](user-guide/global-configurations/cluster-and-environments.md) - * [Git Accounts](user-guide/global-configurations/git-accounts.md) - * [Container/OCI Registry](user-guide/global-configurations/container-registries.md) - * [Chart Repositories](user-guide/global-configurations/chart-repo.md) - * [Deployment Charts](user-guide/global-configurations/deployment-charts.md) - * [Authorization](user-guide/global-configurations/authorization/README.md) - * [SSO Login Services](user-guide/global-configurations/sso-login.md) - * [Google](user-guide/global-configurations/authorization/sso/google.md) - * [GitHub](user-guide/global-configurations/authorization/sso/github.md) - * [GitLab](user-guide/global-configurations/authorization/sso/gitlab.md) - * [Microsoft](user-guide/global-configurations/authorization/sso/microsoft.md) - * [LDAP](user-guide/global-configurations/authorization/sso/ldap.md) - * [OIDC](user-guide/global-configurations/authorization/sso/oidc.md) - * [Keycloak](user-guide/global-configurations/authorization/sso/keycloak.md) - * [Okta](user-guide/global-configurations/authorization/sso/okta.md) - * [OpenShift](user-guide/global-configurations/authorization/sso/openshift.md) - * [User Permissions](user-guide/global-configurations/authorization/user-access.md) - * [Permission Groups](user-guide/global-configurations/authorization/permission-groups.md) - * [API Tokens](user-guide/global-configurations/authorization/api-tokens.md) - * [Notifications](user-guide/global-configurations/manage-notification.md) - * [Application Templates](user-guide/global-configurations/application-template.md) - * [Deployment Window](user-guide/global-configurations/deployment-window.md) - * [Approval Policy](user-guide/global-configurations/approval-policy.md) - * [External Links](user-guide/global-configurations/external-links.md) - * [Catalog Framework](user-guide/global-configurations/catalog-framework.md) - * [Scoped Variables](user-guide/global-configurations/scoped-variables.md) - * [Plugin Policy](user-guide/global-configurations/plugin-policy.md) - * [Pull Image Digest](user-guide/global-configurations/pull-image-digest.md) - * [Tags Policy](user-guide/global-configurations/tags-policy.md) - * [Filter Condition](user-guide/global-configurations/filter-condition.md) - * [Lock Deployment Configuration](user-guide/global-configurations/lock-deployment-config.md) - * [Image Promotion Policy](user-guide/global-configurations/image-promotion-policy.md) - * [Build Infra](user-guide/global-configurations/build-infra.md) - -## Usage - -* [Applications](user-guide/applications.md) - * [Create a New Application](user-guide/create-application.md) - * [Clone an Existing Application](user-guide/cloning-application.md) - * [Create Application From Template](user-guide/using-application-templates.md) - * [Deploy a Sample Application](user-guide/Deploy-sample-app/nodejs_app.md) - * [App Configuration](user-guide/creating-application/README.md) - * [Git Repository](user-guide/creating-application/git-material.md) - * [Build Configuration](user-guide/creating-application/docker-build-configuration.md) - * [Base Configurations](user-guide/creating-application/base-config/README.md) - * [Deployment Template](user-guide/creating-application/base-config/deployment-template.md) - * [Types of Deployment Templates](user-guide/creating-application/base-config/deployment-template/README.md) - * [Deployment](user-guide/creating-application/base-config/deployment-template/deployment.md) - * [Rollout Deployment](user-guide/creating-application/base-config/deployment-template/rollout-deployment.md) - * [Job and Cronjob](user-guide/creating-application/base-config/deployment-template/job-and-cronjob.md) - * [StatefulSets](user-guide/creating-application/base-config/deployment-template/statefulset.md) - * [ConfigMaps](user-guide/creating-application/base-config/config-maps.md) - * [Secrets](user-guide/creating-application/base-config/secrets.md) - * [Types of External Secrets](user-guide/creating-application/base-config/eso/README.md) - * [Install ESO](user-guide/creating-application/base-config/eso/install-eso.md) - * [AWS Secrets Manager](user-guide/creating-application/base-config/eso/aws-eso.md) - * [Google Secrets Manager](user-guide/creating-application/base-config/eso/gcp-eso.md) - * [HashiCorp Vault](user-guide/creating-application/base-config/eso/hashicorp-eso.md) - * [GitOps Configuration](user-guide/creating-application/gitops-config.md) - * [Workflow Editor](user-guide/creating-application/workflow/README.md) - * [CI Pipeline](user-guide/creating-application/workflow/ci-pipeline.md) - * [CD Pipeline](user-guide/creating-application/workflow/cd-pipeline.md) - * [Pre/Post Stages](user-guide/creating-application/workflow/pre-post-tasks.md) - * [Environment Overrides](user-guide/creating-application/environment-overrides.md) - * [Deleting Application](user-guide/deleting-application.md) - * [Build and Deploy](user-guide/deploying-application/README.md) - * [Triggering CI](user-guide/deploying-application/triggering-ci.md) - * [Triggering CD](user-guide/deploying-application/triggering-cd.md) - * [Rollback Deployment](user-guide/deploying-application/rollback-deployment.md) - * [Applying Labels to Images](user-guide/deploying-application/image-labels-and-comments.md) - * [App Details](user-guide/app-details/README.md) - * [App Summary](user-guide/app-details/application-summary.md) - * [Application Metrics](user-guide/creating-application/app-metrics.md) - * [Deployment Visibility & Actions](user-guide/app-details/deployment-visibility.md) - * [App Resource Management](user-guide/app-details/app-resource-management.md) - * [Using Ephemeral Containers](user-guide/app-details/ephemeral-containers.md) - * [Application Overview](user-guide/creating-application/overview.md) -* [Jobs](user-guide/jobs/README.md) - * [What is Job?](user-guide/jobs/what-is-job.md) - * [Create a New Job](user-guide/jobs/create-job.md) - * [Configurations](user-guide/jobs/configurations/README.md) - * [Source Code](user-guide/jobs/configurations/source-code-job.md) - * [Workflow Editor](user-guide/jobs/configurations/workflow-editor-job.md) - * [ConfigMaps & Secrets](user-guide/jobs/configurations/configmap-secret/README.md) - * [ConfigMaps](user-guide/jobs/configurations/configmap-secret/configmap-job.md) - * [Secrets](user-guide/jobs/configurations/configmap-secret/secret-job.md) - * [Environment Overrides](user-guide/jobs/configurations/environment-override-job.md) - * [Trigger Job](user-guide/jobs/triggering-job.md) - * [Run History](user-guide/jobs/run-history-job.md) - * [Job Overview](user-guide/jobs/overview-job.md) -* [Application Groups](user-guide/application-groups.md) -* [Software Distribution Hub](user-guide/software-distribution-hub/README.md) - * [Tenants](user-guide/software-distribution-hub/tenants.md) - * [Release Hub](user-guide/software-distribution-hub/release-hub.md) -* [Resource Browser](user-guide/resource-browser/README.md) - * [Overview Page](user-guide/resource-browser/overview.md) - * [Discover and Manage Resources](user-guide/resource-browser/manage-resources.md) - * [Compare & Sync Clusters](user-guide/resource-browser/compare-and-sync.md) - * [Nodes and Operations](user-guide/resource-browser/nodes.md) - * [Pod Management and Debugging](user-guide/resource-browser/pods.md) - * [Resource Recommender](user-guide/resource-browser/resource-recommender.md) - * [Cluster Terminal](user-guide/resource-browser/cluster-terminal.md) - * [Add Monitoring Dashboards/Graphs](user-guide/resource-browser/monitoring-graphs.md) - * [Run Kubectl Commands Locally](user-guide/resource-browser/kubectl-local.md) - * [Configure GUI Schema](user-guide/operations/edit-gui-schema.md) - * [Configure Lock Schema](user-guide/operations/edit-lock-schema.md) -* [Resource Watcher](user-guide/resource-watcher.md) -* [Chart Store](user-guide/deploy-chart/README.md) - * [Deploy Charts](user-guide/deploy-chart/deployment-of-charts.md) - * [Chart Groups](user-guide/deploy-chart/chart-group.md) -* [Security](user-guide/security-features.md) - * [Security Scans](user-guide/security-features/security-scans.md) - * [Security Policies](user-guide/security-features/security-policies.md) -* [Bulk Edit](user-guide/bulk-update.md) -* [Integrations](user-guide/integrations/README.md) - * [Build and Deploy (CI/CD)](user-guide/integrations/build-and-deploy-ci-cd.md) - * [GitOps (Argo CD)](user-guide/integrations/argocd.md) - * [Vulnerability Scanning](user-guide/integrations/vulnerability-scanning/README.md) - * [Clair](user-guide/integrations/vulnerability-scanning/clair.md) - * [Trivy](user-guide/integrations/vulnerability-scanning/trivy.md) - * [Notifications](user-guide/integrations/notifications.md) - * [Monitoring (Grafana)](user-guide/integrations/grafana.md) -* [Pipeline Plugins](user-guide/plugins/README.md) - * [Create Your Plugin](user-guide/plugins/create-plugin.md) - * [Our Plugins](user-guide/plugins/plugin-list.md) - * [Ansible Runner](user-guide/plugins/ansible-runner.md) - * [Bitbucket Runner Trigger](user-guide/plugins/bitbucket-runner-trigger.md) - * [Codacy](user-guide/plugins/codacy.md) - * [Code-Scan](user-guide/plugins/code-scan.md) - * [Copacetic](user-guide/plugins/copacetic.md) - * [Container Image Exporter](user-guide/plugins/container-image-exporter.md) - * [Copy Container Image](user-guide/plugins/copy-container-image.md) - * [Cosign](user-guide/plugins/cosign.md) - * [CraneCopy](user-guide/plugins/crane-copy.md) - * [Dependency track - Maven & Gradle](user-guide/plugins/dependency-track-maven-gradle.md) - * [Dependency track - NodeJS](user-guide/plugins/dependency-track-nodejs.md) - * [Dependency track - Python](user-guide/plugins/dependency-track-python.md) - * [Devtron CD Trigger](user-guide/plugins/devtron-cd-trigger.md) - * [Devtron CI Trigger](user-guide/plugins/devtron-ci-trigger.md) - * [Devtron Job Trigger](user-guide/plugins/devtron-job-trigger.md) - * [DockerSlim](user-guide/plugins/docker-slim.md) - * [EKS Create Cluster](user-guide/plugins/eks-create-cluster.md) - * [GCS Create Bucket](user-guide/plugins/gcs-create-bucket.md) - * [GitHub Pull Request Updater](user-guide/plugins/github-pull-request-updater.md) - * [GKE Provisioner](user-guide/plugins/gke-provisioner.md) - * [GoLang-migrate](user-guide/plugins/golang-migrate.md) - * [Jenkins](user-guide/plugins/jenkins.md) - * [Jira Issue Validator](user-guide/plugins/jira-validator.md) - * [Jira Issue Updater](user-guide/plugins/jira-updater.md) - * [K6 Load Testing](user-guide/plugins/k6-load-testing.md) - * [Pull images from container repository](user-guide/plugins/pull-images-from-container-repository.md) - * [Semgrep](user-guide/plugins/semgrep.md) - * [SonarQube](user-guide/plugins/sonarqube.md) - * [SonarQube v1.1.0](user-guide/plugins/sonarqube-v1.1.0.md) - * [Terraform CLI](user-guide/plugins/terraform-cli.md) - * [Vulnerability Scanning](user-guide/plugins/vulnerability-scanning.md) -* [Using Devtron Intelligence](user-guide/devtron-intelligence.md) -* [Enable GitOps Deployments with FluxCD](user-guide/creating-application/fluxcd.md) - -## Resources - -* [Glossary](reference/glossary.md) -* [Upgrade Devtron](setup/upgrade/README.md) - * [Update Devtron from Devtron UI](setup/upgrade/upgrade-devtron-ui.md) - * [Upgrade to 1.5.0](setup/upgrade/devtron-upgrade-1.5.0.md) - * [0.6.x-0.7.x](setup/upgrade/devtron-upgrade-0.6.x-0.7.x.md) - * [0.5.x-0.6.x](setup/upgrade/devtron-upgrade-0.5.x-0.6.x.md) - * [0.4.x-0.5.x](setup/upgrade/devtron-upgrade-0.4.x-0.5.x.md) - * [0.4.x-0.4.x](setup/upgrade/devtron-upgrade-0.4.x-0.4.x.md) - * [0.3.x-0.4.x](setup/upgrade/devtron-upgrade-0.3.x-0.4.x.md) - * [0.3.x-0.3.x](setup/upgrade/devtron-upgrade-0.3.x-0.3.x.md) - * [0.2.x-0.3.x](setup/upgrade/devtron-upgrade-0.2.x-0.3.x.md) -* [Additional Installation Resources](reference/README.md) - * [Production Infra Recommendations](setup/install/prod-infra.md) - * [Advanced Configurations](setup/configurations/configurations-overview.md) - * [Installation Configurations](setup/install/installation-configuration.md) - * [Override Configurations](setup/install/override-default-devtron-installation-configs.md) - * [Ingress Setup](setup/install/ingress-setup.md) - * [Install Devtron on Air-gapped Environment](setup/install/install-devtron-in-airgapped-environment.md) - * [Install Devtron Freemium](setup/install/freemium.md) - * [Devtron Kubernetes Desktop Client](setup/install/install-devtron-Kubernetes-client.md) - * [Installation Walkthrough on EKS, AKS, GKE](setup/install/demo-tutorials.md) - * [Backup for Disaster Recovery](setup/install/devtron-backup.md) - * [FAQs](setup/install/faq-on-installation.md) -* [Troubleshooting](FAQs/devtron-troubleshoot.md) -* [Use Cases](user-guide/use-cases/README.md) - * [Devtron Generic Helm Chart To Run CronJob Or One Time Job](user-guide/use-cases/devtron-generic-helm-chart-to-run-cron-job-or-one-time-job.md) - * [Connect SpringBoot with Mysql Database](user-guide/use-cases/connect-springboot-with-mysql-database.md) - * [Connect Expressjs With Mongodb Database](user-guide/use-cases/connect-expressjs-with-mongodb-database.md) - * [Connect Django With Mysql Database](user-guide/use-cases/connect-django-with-mysql-database.md) - * [Pull Helm Charts from OCI Registry](user-guide/use-cases/oci-pull.md) -* [Telemetry Overview](user-guide/telemetry.md) -* [Devtron on Graviton](reference/graviton.md) -* [Command Bar](user-guide/command-bar.md) -* [Release Notes](https://github.com/devtron-labs/devtron/releases) -* [Uninstall Devtron](setup/install/uninstall-devtron.md) diff --git a/docs/cli/README.md b/docs/cli/README.md new file mode 100644 index 0000000000..e5c5c58f46 --- /dev/null +++ b/docs/cli/README.md @@ -0,0 +1,688 @@ +--- +title: Tron CLI +sidebar_label: Tron CLI +description: Use Tron (devtron-cli) to automate Devtron application and infrastructure management with YAML. +--- + +# Tron CLI + +Tron is a command-line tool that automates Devtron application and configuration tasks using modular YAML configuration files. + +> **Support status** +> The CLI is currently validated and supported for the Enterprise edition. Other editions may work but are not officially supported yet. + +## Highlights + +- Create Devtron applications from YAML +- Update existing applications +- Manage environments and pipelines +- Simple CLI interface +- Usable as a Python module + +## Install + +```bash +pip install devtron-cli +``` + +## Quick Start + +```bash +# Create a new application (provide Devtron URL and API token via CLI or environment variables) +tron --config config.yaml create-app --devtron-url https://devtron.example.com --api-token your-api-token + +# Update an existing application +tron --config config.yaml update-app --devtron-url https://devtron.example.com --api-token your-api-token + +# Or set environment variables and omit the URL and token from CLI +export DEVTRON_URL=https://devtron.example.com +export DEVTRON_API_TOKEN=your-api-token +tron --config config.yaml create-app +``` + +## Global Options + +These options can be used with any command: + +| Option | Short | Required | Description | Possible Values | +|--------|-------|----------|-------------|-----------------| +| `--config` | `-c` | No | Path to the YAML configuration file | Any valid file path | +| `--devtron-url` | `-u` | Yes | Devtron URL | Valid Devtron instance URL | +| `--api-token` | `-t` | Yes | API token | Valid Devtron API token with required access | + +## Environment Variables + +You can also set the following environment variables instead of providing options on the command line: + +| Environment Variable | Description | +|----------------------|-------------| +| `DEVTRON_URL` | Devtron URL | +| `DEVTRON_API_TOKEN` | Devtron API token | + +## Commands + +### 1. create-app + +Creates a new application in Devtron. + +```bash +tron create-app [OPTIONS] +``` + +#### Options + +| Option | Short | Required | Description | Possible Values | +|--------|-------|----------|-------------|-----------------| +| `--config` | `-c` | Yes | Path to the YAML configuration file | Any valid file path | +| `--devtron-url` | `-u` | Yes | Devtron URL | Valid Devtron instance URL | +| `--api-token` | `-t` | Yes | API token | Valid Devtron API token with required access | + +#### Configuration File Fields + +The configuration file should contain the following fields: + +| Field | Required | Description | Possible Values | +|-------|----------|-------------|-----------------| +| `app_name` | Yes | Name of the application | String | +| `project_name` | Yes | Name of the project | String | +| `description` | No | Description of the application | String | +| `labels` | No | Labels for the application | Array of label objects | +| `git_repositories` | Yes | Git repository configurations | Array of git repository objects | +| `build_configurations` | Yes | Build configuration settings | Build configuration object | +| `config_approval` | No | Configuration approval settings (if enabled) | Object | +| `base_configurations` | Yes | Base deployment configuration | Base configuration object | +| `workflows` | Yes | Workflow configurations for CI/CD | Array of workflow objects | + +#### Label Object Structure + +| Field | Required | Description | Possible Values | +|-------|----------|-------------|-----------------| +| `key` | Yes | Label key | String | +| `value` | Yes | Label value | String | +| `propagate` | No | Whether to propagate the label to all resources created in application | `true` or `false` | + +#### Git Repository Object Structure + +| Field | Required | Description | Possible Values | +|-------|----------|-------------|-----------------| +| `url` | Yes | Git repository URL | Valid Git URL | +| `git_account_name` | Yes | Name of the git account | String | +| `checkout_path` | Yes | Path to checkout the repository | String (default: "./") | +| `fetch_submodules` | No | Whether to fetch submodules | `true` or `false` | +| `filter_pattern` | No | Filter patterns for files | Array of strings | + +#### Build Configuration Object Structure + +| Field | Required | Description | Possible Values | +|-------|----------|-------------|-----------------| +| `container_registry_name` | Yes | Name of the container registry | String | +| `repository_name` | Yes | Name of the repository | String | +| `target_platform` | No | Target platforms for buildx | Comma-separated platform list | +| `dockerfile_repository` | Yes | Repository for Dockerfile | String | +| `build_context` | No | Docker build context | String (default: "./") | +| `docker_build_args` | No | Docker build arguments | Key-value pairs | +| `build_type` | Yes | Type of build | `"DockerfileExists"`, `"CreateDockerfile"`, or `"Buildpacks"` | +| `dockerfile_path` | Yes (if build_type is DockerfileExists) | Path to Dockerfile | String | +| `language` | Yes (if build_type is CreateDockerfile) | Programming language | String | +| `language_framework` | Yes (if build_type is CreateDockerfile) | Framework | String | +| `dockerfile_content` | Yes (if build_type is CreateDockerfile) | Dockerfile content | Multi-line string | +| `builder_image` | Yes (if build_type is Buildpacks) | Builder image for buildpacks | String | +| `version` | Yes (if build_type is Buildpacks) | Language version | String | + +#### Base Configuration Object Structure + +| Field | Required | Description | Possible Values | +|-------|----------|-------------|-----------------| +| `deployment_template` | Yes | Base deployment template | Template object | +| `config_maps` | No | ConfigMap configurations | Array of ConfigMap objects | +| `secrets` | No | Secret configurations | Array of Secret objects | + +#### Template Object Structure + +| Field | Required | Description | Possible Values | +|-------|----------|-------------|-----------------| +| `version` | Yes | Version of the template | `"1.6.0"`, `"4.21.0"`, `"5.0.0"` | +| `chart_type` | Yes | Type of chart | `"Job & CronJob"`, `"Deployment"`, `"StatefulSet"`, `"GPU-Workload"`, `"Rollout Deployment"` | +| `use_default` | No | Whether to use default values | `true` or `false` | +| `values_patch` | No (works only if use_default is true) | Patch/override keys in deployment template | Object | + +#### ConfigMap Object Structure + +| Field | Required | Description | Possible Values | +|-------|----------|-------------|-----------------| +| `name` | Yes | Name of the ConfigMap | String | +| `type` | No | Type of ConfigMap | `"volume"` or `"environment"` (default: "environment") | +| `data` | Yes (if from_file not provided) | Key-value data | Object | +| `mountPath` | No | Mount path for volume | String | +| `subPath` | No | Whether to use subPath | `true` or `false` | +| `filePermission` | No | File permission | String | +| `external` | No | Whether it's an external ConfigMap | `true` or `false` | +| `from_file` | Yes (if data not provided) | Path to ConfigMap value file | String | + +#### Secret Object Structure + +| Field | Required | Description | Possible Values | +|-------|----------|-------------|-----------------| +| `name` | Yes | Name of the Secret | String | +| `type` | No | Type of Secret | `"volume"` or `"environment"` (default: "environment") | +| `data` | No | Key-value data | Object | +| `mountPath` | No | Mount path for volume | String | +| `subPath` | No | Whether to use subPath | `true` or `false` | +| `filePermission` | No | File permission | String | +| `external` | No | Whether it's an external Secret | `true` or `false` | +| `from_file` | No | Path to Secret value file | String | +| `roleARN` | No | AWS role ARN | String | +| `externalType` | No | External secret type | String (for example, `"ESO_AWSSecretsManager"`) | +| `esoSecretData` | No | ESO secret data | Object | + +#### Workflow Object Structure + +| Field | Required | Description | Possible Values | +|-------|----------|-------------|-----------------| +| `ci_pipeline` | Yes | CI pipeline configuration | CI Pipeline object | +| `cd_pipelines` | No | CD pipeline configurations | Array of CD Pipeline objects | + +#### CI Pipeline Object Structure + +| Field | Required | Description | Possible Values | +|-------|----------|-------------|-----------------| +| `type` | Yes | Type of pipeline | `"CI_JOB"`, `"CI_BUILD"`, `"LINKED"` | +| `is_manual` | Yes | Whether to trigger the CI pipeline manually | `true` or `false` | +| `name` | Yes | Name of the CI pipeline | String | +| `branches` | Yes (unless type is LINKED) | Branches for the git repositories | Array of branch objects | +| `source_pipeline` | Yes (if type is LINKED) | Name of the source CI pipeline | String | +| `pre_build_configs` | No | Pre-build configurations | Object (see below) | +| `post_build_configs` | No | Post-build configurations | Object (see below) | + +##### Pre/Post Build Configs Object Structure + +| Field | Required | Description | Possible Values | +|-------|----------|-------------|-----------------| +| `tasks` | No | List of build tasks | Array of build task objects | +| `is_manual` | No | Manual trigger | `true` or `false` (default: `true`) | + +##### Build Task Object Structure + +| Field | Required | Description | Possible Values | +|-------|----------|-------------|-----------------| +| `type` | Yes | Type of build task | `"plugin"` or `"custom"` | +| `task_name` | Yes | Name of the task | String | +| `name` | No | Name of the plugin | String | +| `version` | No | Plugin version | String | +| `description` | No | Task description | String | +| `input_variables` | No | Input variables | Key-value dict or array (custom tasks) | +| `output_variables` | No | Output variables (custom tasks) | Array of variable objects | +| `output_directory_paths` | No | Output directories (custom tasks) | Array of strings | +| `script` | No | Script to execute (custom tasks) | Multi-line string | +| `container_image` | No | Container image for task | String | +| `script_mount_path` | No | Script mount path | String | +| `command` | No | Command to run | String | +| `args` | No | Command arguments | Array of strings | +| `ports_mappings` | No | Port mappings | Array of mappings | +| `script_mount_path_on_container` | No | Script path inside container | String | +| `directory_mappings` | No | Directory mappings | Array of mappings | +| `trigger_conditions` | No | Trigger conditions | Array of condition objects | +| `pass_conditions` | No | Pass conditions | Array of condition objects | + +#### Branch Object Structure + +| Field | Required | Description | Possible Values | +|-------|----------|-------------|-----------------| +| `repo` | Yes | Repository name | String | +| `branch` | Yes | Branch name | String | +| `type` | Yes | Branch type | `"SOURCE_TYPE_BRANCH_FIXED"` | +| `regex` | No | Regex pattern for branch | String | + +#### Build Config Object Structure + +| Field | Required | Description | Possible Values | +|-------|----------|-------------|-----------------| +| `type` | Yes | Type of pre or post build config | `"plugin"` or `"custom"` | +| `name` | No | Name of the plugin to use | String | +| `version` | No | Version of the plugin to use | String | +| `description` | No | Task description | String | +| `input_variables` | No | Input variables | Array of variable objects | + +#### Variable Object Structure + +| Field | Required | Description | Possible Values | +|-------|----------|-------------|-----------------| +| Variable name | Yes | Variable name | String | +| Variable value | Yes | Variable value | String | + +#### CD Pipeline Object Structure + +| Field | Required | Description | Possible Values | +|-------|----------|-------------|-----------------| +| `name` | No | Name of the CD pipeline | String | +| `environment_name` | Yes | Name of the environment for deployment | String | +| `is_manual` | Yes | Whether to trigger the CD pipeline manually | `true` or `false` | +| `deployment_type` | No | Deployment type | `"helm"`, `"argo_cd"` (default: "helm") | +| `placement` | No | Placement strategy | `"parallel"`, `"serial"` (default: "parallel") | +| `deployment_strategies` | No | Deployment strategies | Array of strategy objects | +| `depends_on` | No | Name of environment to which this pipeline needs to be attached | String | +| `pre_cd_configs` | No | Pre-deploy configurations | Object (see below) | +| `post_cd_configs` | No | Post-deploy configurations | Object (see below) | +| `env_configuration` | No | Environment-specific overrides | Object (see below) | + +##### Pre/Post CD Configs Object Structure + +| Field | Required | Description | Possible Values | +|-------|----------|-------------|-----------------| +| `tasks` | No | List of build tasks | Array of build task objects | +| `is_manual` | No | Manual trigger | `true` or `false` (default: `true`) | +| `run_in_app_env` | No | Run tasks in app environment | `true` or `false` | + +##### Env Configuration Object Structure + +| Field | Required | Description | Possible Values | +|-------|----------|-------------|-----------------| +| `deployment_template` | No | Deployment template override | Object | +| `config_maps` | No | ConfigMap overrides | Array of ConfigMap objects | +| `secrets` | No | Secret overrides | Array of Secret objects | + +### 2. update-app + +Updates an existing application in Devtron. + +```bash +tron update-app [OPTIONS] +``` + +#### Options + +| Option | Short | Required | Description | Possible Values | +|--------|-------|----------|-------------|-----------------| +| `--config` | `-c` | Yes | Path to the YAML configuration file | Any valid file path | +| `--devtron-url` | `-u` | Yes | Devtron URL | Valid Devtron instance URL | +| `--api-token` | `-t` | Yes | API token | Valid Devtron API token | + +#### Configuration File Fields + +The configuration file structure is the same as for `create-app`. Refer to the `create-app` section for details on all possible fields and their values. + +### 3. get-app + +Gets application configuration from Devtron and outputs it in YAML format. + +```bash +tron get-app --app APPLICATION_NAME [OPTIONS] +``` + +#### Options + +| Option | Short | Required | Description | Possible Values | +|--------|-------|----------|-------------|-----------------| +| `--app` | | Yes | Name of the application to fetch | String | +| `--config` | `-c` | No | Path to the YAML configuration file | Any valid file path | +| `--devtron-url` | `-u` | Yes | Devtron URL | Valid Devtron instance URL | +| `--api-token` | `-t` | Yes | API token | Valid Devtron API token | + +## Examples + +### Create a new application + +```bash +tron create-app -c config.yaml -u https://devtron.example.com -t your_api_token +``` + +### Update an existing application + +```bash +tron update-app -c config.yaml -u https://devtron.example.com -t your_api_token +``` + +### Get application configuration + +```bash +tron get-app --app my-app -u https://devtron.example.com -t your_api_token +``` + +## Sample Configuration File (create-app) + +```yaml +app_name: "my-application" +project_name: "my-project" +description: "Sample application created via Tron" +labels: + - key: "app-usage" + value: "platform" + propagate: false + - key: "owner" + value: "devtron-team" + propagate: true +git_repositories: + - url: "https://github.com/org/sample-repo.git" + git_account_name: "GitHub" + checkout_path: "./src" + fetch_submodules: false + filter_pattern: + - "!Dockerfile.old" + - url: "https://github.com/org/another-repo.git" + git_account_name: "GitHub" + checkout_path: "./lib" +build_configurations: + container_registry_name: "company-registry" + repository_name: "sample-app" + target_platform: "linux/amd64,linux/arm64" + dockerfile_repository: "sample-repo" + build_context_repository: "sample-repo" + build_context: "./" + docker_build_args: + ENV: production + DEBUG: "false" + build_type: "DockerfileExists" + dockerfile_path: "Dockerfile" +config_approval: + action: proposed + if_draft_already_exists: merge + notify_all: true + specific_approvers: + - "devtron@example.com" + comments: "Proposed by CLI" +base_configurations: + deployment_template: + show_application_metrics: true + version: "4.21.0" + chart_type: "Deployment" + # values_path: "base-deployment.yaml" + values_patch: + EnvVariables: + - name: ENVIRONMENT + value: production + replicaCount: 3 + # NOTE: Set either values_path or values_patch (not both). + config_maps: + - name: app-config-env + data: + API_URL: "https://api.example.com" + FEATURE_FLAG: "enabled" + mountPath: /etc/config + subPath: true + filePermission: "0644" + - name: logging-config + data: + LOG_LEVEL: "INFO" + LOG_FORMAT: "json" + mountPath: /etc/logging + subPath: true + filePermission: "0644" + - name: external-config-env + external: true + - name: external-config-volume + external: true + mountPath: /mnt/external + subPath: true + filePermission: "0644" + - name: configmap-from-file-volume + from_file: "config-volume.yaml" + mountPath: /mnt/volume + subPath: true + filePermission: "0644" + - name: configmap-from-file-env + from_file: "config-env.yaml" + secrets: + - name: db-credentials + from_file: "db-creds.yaml" + mountPath: /etc/secrets + subPath: false + filePermission: "0600" + - name: api-secret + data: + API_KEY: "REDACTED" + API_SECRET: "REDACTED" + - name: external-secret-env + external: true + - name: external-secret-vol + external: true + mountPath: /mnt/secret + subPath: true + filePermission: "0600" + - name: cloud-secret + roleARN: "arn:aws:iam::123456789012:role/CloudSecretRole" + externalType: ESO_AWSSecretsManager + external: true + esoSecretData: + secretStore: + aws: + service: SecretsManager + region: us-east-1 + auth: + secretRef: + accessKeyIDSecretRef: + name: aws-secret + key: access-key + secretAccessKeySecretRef: + name: aws-secret + key: secret-access-key + esoData: + - secretKey: prod-db-password + key: secrets/prod-db-secrets + property: prodPassword + esoSecretData: + secretStore: + aws: + service: SecretsManager + region: us-east-1 + auth: + secretRef: + accessKeyIDSecretRef: + name: awssm-secret + key: access-key + secretAccessKeySecretRef: + name: awssm-secret + key: secret-access-key + esoData: + - secretKey: prod-mysql-password + key: secrets/prod-mysql-secrets + property: prodPassword +workflows: + - ci_pipeline: + type: "CI_JOB" + is_manual: true + name: "test-ci-pipeline" + branches: + - repo: "test" + branch: "master" + type: "SOURCE_TYPE_BRANCH_FIXED" + regex: "" + - repo: "getting-started-node-js" + branch: "main" + type: "SOURCE_TYPE_BRANCH_FIXED" + regex: "" + pre_build_configs: + tasks: + - type: "plugin" + task_name: Devtron CI Trigger + name: "Devtron CI Trigger" + version: "1.1.0" + input_variables: + DevtronApiToken: "demo-repo" + DevtronEndpoint: "https://demo.ai" + DevtronApp: "sample-app-10" + DevtronEnv: "@{{Keka}}" + - type: "custom" + task_name: "Create Readme File" + description: "Creates a README.md file with project information" + input_variables: + - key: "PROJECT_NAME" + type: "STRING" + value: "sample-app" + - key: "AUTHOR" + type: "STRING" + value: "devtron-labs" + output_variables: + - key: "README_PATH" + type: "STRING" + description: "Path to the created README file" + output_directory_paths: + - "/workspace" + script: | + #!/bin/sh + set -e + echo "# $PROJECT_NAME" > /workspace/README.md + echo "Author: $AUTHOR" >> /workspace/README.md + trigger_conditions: + - key: "PROJECT_NAME" + operator: "!=" + value: "dummy-project" + pass_conditions: + - key: "README_PATH" + operator: "!=" + value: "/workspace/README.md" + post_build_configs: {} + cd_pipelines: + - name: my-new-pipeline + environment_name: "devtron-demo" + is_manual: true + deployment_type: "helm" + placement: parallel + deployment_strategies: + - name: "Rolling" + strategy: + maxSurge: 25% + maxUnavailable: 1 + default: true + - name: "recreate" + strategy: {} + pre_cd_configs: + tasks: + - type: "plugin" + task_name: Devtron CI Trigger + name: "Devtron CI Trigger" + version: "1.1.0" + input_variables: + DevtronApiToken: "demo-repo" + DevtronEndpoint: "https://demo.ai" + DevtronApp: "sample-app-10" + DevtronEnv: "@{{Keka}}" + - type: "custom" + task_name: "Run container task" + description: "Runs a container task with the specified image and command" + container_image: "alpine:latest" + input_variables: + - key: "PROJECT_NAME" + type: "STRING" + value: "sample-app" + - key: "AUTHOR" + type: "STRING" + value: "devtron-labs" + output_directory_paths: + - "/container_workspace" + script: | + #!/bin/sh + set -e + echo "# $PROJECT_NAME" > /container_workspace/README.md + echo "Author: $AUTHOR" >> /container_workspace/README.md + script_mount_path: "/container_workspace/test.sh" + command: "/bin/sh" + args: ["-c", "test.sh"] + ports_mappings: + - 8080:8090 + script_mount_path_on_container: "/sourcecode/test.sh" + directory_mappings: + - "/devtroncd:/sourcecode" + - type: "plugin" + task_name: Code Scan + name: "Code Scan" + version: "1.0.0" + input_variables: {} + is_manual: true + run_in_app_env: true + post_cd_configs: + is_manual: true + tasks: + - type: "plugin" + task_name: Code Scan + name: "Code Scan" + version: "1.0.0" + input_variables: {} + - type: "plugin" + task_name: Devtron CI Trigger + name: "Devtron CI Trigger" + version: "1.1.0" + input_variables: + DevtronApiToken: "demo-repo-5" + DevtronEndpoint: "https://demo.ai" + DevtronApp: "sample-app-10" + DevtronEnv: "@{{Keka}}" + env_configuration: + deployment_template: + version: "4.20.0" + merge_strategy: "patch" + show_application_metrics: true + values_patch: + replicaCount: 2 + resources: + limits: + cpu: "2" + memory: "500Mi" + requests: + cpu: "0.50" + memory: "200Mi" + config_maps: + - name: configmap-from-file-env + type: "volume" + mountPath: /etc/config + filePermission: "0400" + subPath: false + merge_strategy: "patch" + data: + key1: overridden-value1 + key4: value4 + - name: configmap-from-file-env-new + type: "volume" + mountPath: /etc/config + filePermission: "0400" + subPath: false + merge_strategy: "replace" + data: + key1: overridden-value1 + key4: value4 + secrets: + - name: secret-from-file-env + type: "volume" + mountPath: /etc/config + filePermission: "0400" + subPath: false + merge_strategy: "replace" + from_file: "test-config-map.yaml" + data: + key1: overridden-value1 + key4: value4 + - name: secret-from-file-env-new + data: + key1: overridden-value1 + key4: value4 + - name: demo3-deploy + environment_name: "demo3" + is_manual: true + deployment_type: "helm" + - ci_pipeline: + type: "LINKED" + is_manual: true + name: "test-ci-pipeline-2" + source_pipeline: "test-ci-pipeline" + cd_pipelines: + - name: demo2-deploy + environment_name: "demo2" + is_manual: true + deployment_type: "helm" + pre_cd_configs: + tasks: + - type: "plugin" + task_name: Devtron CI Trigger + name: "Devtron CI Trigger" + version: "1.1.0" + input_variables: + DevtronApiToken: "demo-repo" + DevtronEndpoint: "https://demo.ai" + DevtronApp: "sample-app-10" + DevtronEnv: "@{{Keka}}" + - type: "plugin" + task_name: Code Scan + name: "Code Scan" + version: "1.0.0" + input_variables: {} + is_manual: true +``` diff --git a/docs/hyperion/FAQs/hyperion-troubleshoot.md b/docs/hyperion/FAQs/hyperion-troubleshoot.md deleted file mode 100644 index 505a89984d..0000000000 --- a/docs/hyperion/FAQs/hyperion-troubleshoot.md +++ /dev/null @@ -1,46 +0,0 @@ -## Troubleshooting Guide - -We always try to make your experience of using hyperion as smooth as possible but still if you face any issues, follow the troubleshooting guide given below or join our [discord channel](https://discord.gg/jsRG5qx2gp) if you couldn't find the solution for the issue you are facing. - -#### 1. Hyperion Installed but still helm apps are not visible on dashboard - -To get helm apps on dashboard, it's important for migration jobs to be completed. To resolve this, check if Jobs are in `1/1 Completed` state by running the command: - -``` -kubectl get jobs -n devtroncd -``` - -If you see any of the jobs in `0/1 Completed` state then check if it's pod is still running using the following command: - -``` -kubectl get pods -n devtroncd -``` - -If the pods are in running state, then wait for them to complete and your helm apps should be visible on dashboard after that and if any of job's pod is in `CrashloopBackOff` state, then check the logs of that pod using: - -``` -kubectl logs -f -n devtroncd -c -``` - -Now, if you get something like `dirty db found` in the logs, then follow the steps given below and if not dirty db, then wait for the pod to automatically restart and complete the job so that helm apps are visible on dashboard. - -#### Steps to follow in case you get dirty db found - -1. Run this command to get postgresql password - `kubectl -n devtroncd get secret devtron-secret -o jsonpath='{.data.PG_PASSWORD}' | base64 -d` -2. Copy the password you get and exec inside postgresql pod using `kubectl exec -it postgresql-postgresql-0 -n devtroncd -- sh` -3. Now when you are inside postgres, run the command to authenticate postgres user - `psql -U postgres` and enter the password that you got in step 1. -4. Terminate the connections to databases, delete them and then re-create using the commands given below -``` -SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE pg_stat_activity.datname = 'orchestrator'; -SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE pg_stat_activity.datname = 'casbin'; -DROP database orchestrator; -DROP database casbin; -CREATE database orchestrator; -CREATE database casbin; -``` -5. Download the migrator file and re-apply using the following commands: -``` -kubectl delete -f https://raw.githubusercontent.com/devtron-labs/devtron/main/manifests/hyperion/migrator.yaml -n devtroncd -kubectl apply -f https://raw.githubusercontent.com/devtron-labs/devtron/main/manifests/hyperion/migrator.yaml -n devtroncd -``` -After completing all the steps, you should see the helm apps on dashboard. \ No newline at end of file diff --git a/docs/hyperion/README.md b/docs/hyperion/README.md deleted file mode 100644 index 0b79e314db..0000000000 --- a/docs/hyperion/README.md +++ /dev/null @@ -1,44 +0,0 @@ -# Overview - -## Hyperion 🦹 - -### Why Hyperion? -Hyperion is a lightweight Dashboard for Kubernetes deployments. Packed with full-fledged debugging features enabled with resource grouping for easier debugging for Development and Infra team. -You can also upgrade to Devtron from Hyperion to enjoy full stack features of Devtron. - -> Do check the [Hyperion Installation Guide ⎈](../hyperion/setup/install.md) - -### Hyperion Features - -#### Application-level resource grouping for easier Debugging -- Hyperion groups your deployed microservices and displays them in a slick UI for easier monitoring or debugging. Access pod logs and resource manifests right from the Hyperion UI and even edit them! - -#### Centralized Access Management -- Give access to users on Project, Environment and App level and control the level of access with customizable View only and Edit access. - -#### Manage and observe Multiple Clusters -- Manage access of all the Kubernetes clusters (hosted on multiple cloud/on-prem) right from one Hyperion setup. - -#### View and Edit Kubernetes Manifests -- View and Edit all Kubernetes resources right from the Hyperion dashboard. - - ---- - -## Contribute - -Check out our [contributing guidelines](https://github.com/devtron-labs/devtron/blob/main/CONTRIBUTING.md). Included are directions for opening issues, coding standards, and notes on our development processes. - - -## Community - -Get updates on Devtron's development and chat with the project maintainers, contributors and community members. - -* Join the [Discord Community](https://discord.gg/jsRG5qx2gp) -* Follow [@DevtronL on Twitter](https://twitter.com/DevtronL) -* Raise feature requests, suggest enhancements, report bugs at [GitHub issues](https://github.com/devtron-labs/devtron/issues) -* Read the [Devtron blog](https://devtron.ai/blog/) - -## Vulnerability Reporting - -We at Devtron take security and our users' trust very seriously. If you believe you have found a security issue in Devtron, please responsibly disclose by contacting us at security@devtron.ai. diff --git a/docs/hyperion/devtron.md b/docs/hyperion/devtron.md deleted file mode 100644 index 929e28fe68..0000000000 --- a/docs/hyperion/devtron.md +++ /dev/null @@ -1,3 +0,0 @@ -Don't worry, your beloved Hyperion is still supported. It has been merged with Devtron and if you want to install Devtron with same functionality as hyperion [visit here](../setup/install/README.md). - -Please reach out to us on [discord](https://discord.devtron.ai/) in case of any queries. \ No newline at end of file diff --git a/docs/hyperion/setup/install.md b/docs/hyperion/setup/install.md deleted file mode 100644 index 596d784b51..0000000000 --- a/docs/hyperion/setup/install.md +++ /dev/null @@ -1,76 +0,0 @@ -# Install Hyperion using Helm3 (Deprecated) - -> **Note**: Hyperion is now Devtron - -Before you begin, install [Helm3](https://helm.sh/docs/intro/install/) - -{% tabs %} -{% tab title="Install with default configurations" %} -```bash -helm repo add devtron https://helm.devtron.ai -helm install devtron devtron/devtron-operator --create-namespace --namespace devtroncd --set installer.mode=hyperion -``` -{% endtab %} -{% endtabs %} - -For those countries/users where Github is blocked, you can download the [Hyperion Helm chart](https://s3-ap-southeast-1.amazonaws.com/devtron.ai/devtron-operator-latest.tgz) - - -```bash -wget https://s3-ap-southeast-1.amazonaws.com/devtron.ai/devtron-operator-latest.tgz -helm install devtron devtron-operator-latest.tgz --create-namespace --namespace devtroncd --set installer.mode=hyperion -``` - -[//]: # (If you are planning to use Hyperion for `production deployments`, please refer to our recommended overrides for [Devtron Installation](override-default-devtron-installation-configs.md).) - -[//]: # (## Installation status) - -[//]: # () -[//]: # (Run following command) - -[//]: # () -[//]: # (```bash) - -[//]: # (kubectl -n devtroncd get installers installer-devtron -o jsonpath='{.status.sync.status}') - -[//]: # (```) - -## Access Hyperion dashboard - -If you did not provide a **BASE\_URL** during install or have used the default installation, Devtron creates a loadbalancer for you on its own. Use the following command to get the dashboard url. - -```text -kubectl get svc -n devtroncd devtron-service -o jsonpath='{.status.loadBalancer.ingress}' -``` - -You will get result something like below - -```text -[test2@server ~]$ kubectl get svc -n devtroncd devtron-service -o jsonpath='{.status.loadBalancer.ingress}' -[map[hostname:aaff16e9760594a92afa0140dbfd99f7-305259315.us-east-1.elb.amazonaws.com]] -``` - -The hostname mentioned here \( aaff16e9760594a92afa0140dbfd99f7-305259315.us-east-1.elb.amazonaws.com \) is the Loadbalancer URL where you can access the Devtron dashboard. - -**PS:** You can also do a CNAME entry corresponding to your domain/subdomain to point to this Loadbalancer URL to access it at a custom domain. - -| Host | Type | Points to | -| ---: | :--- | :--- | -| devtron.yourdomain.com | CNAME | aaff16e9760594a92afa0140dbfd99f7-305259315.us-east-1.elb.amazonaws.com | - -### Hyperion Admin credentials - -For admin login use username:`admin` and for password run the following command. - -```bash -kubectl -n devtroncd get secret devtron-secret -o jsonpath='{.data.ACD_PASSWORD}' | base64 -d -``` - -### Cleaning Hyperion Helm3 - -Please make sure that you do not have anything inside namespaces devtroncd, devtron-cd devtron-ci and devtron-demo as the below steps will clean everything inside these namespaces -``` -helm uninstall devtron --namespace devtroncd -kubectl delete -n devtroncd -f https://raw.githubusercontent.com/devtron-labs/charts/main/charts/devtron/crds/crd-devtron.yaml -kubectl delete ns devtroncd -``` diff --git a/docs/hyperion/setup/upgrade-to-devtron.md b/docs/hyperion/setup/upgrade-to-devtron.md deleted file mode 100644 index 2ed7ff68e6..0000000000 --- a/docs/hyperion/setup/upgrade-to-devtron.md +++ /dev/null @@ -1,95 +0,0 @@ -# Upgrade Hyperion to Devtron Full mode - -To install Helm3, please check [Installing Helm3](https://helm.sh/docs/intro/install/) - -{% tabs %} -{% tab title="Upgrade with default configurations" %} -This installation will use Minio for storing build logs and cache. - -```bash -helm upgrade devtron devtron/devtron-operator --namespace devtroncd --set installer.mode=full -``` -{% endtab %} - -{% tab title="Upgrade with AWS S3" %} -This installation will use AWS s3 buckets for storing build logs and cache - -```bash -helm upgrade devtron devtron/devtron-operator --create-namespace --namespace devtroncd \ ---set installer.mode=full \ ---set configs.BLOB_STORAGE_PROVIDER=S3 \ ---set configs.DEFAULT_CACHE_BUCKET=demo-s3-bucket \ ---set configs.DEFAULT_CACHE_BUCKET_REGION=us-east-1 \ ---set configs.DEFAULT_BUILD_LOGS_BUCKET=demo-s3-bucket \ ---set configs.DEFAULT_CD_LOGS_BUCKET_REGION=us-east-1 -``` -{% endtab %} - -{% tab title="Upgrade with Azure Blob Storage" %} -This installation will use Azure Blob Storage for storing build logs and cache - -```bash -helm upgrade devtron devtron/devtron-operator --create-namespace --namespace devtroncd \ ---set installer.mode=full \ ---set secrets.AZURE_ACCOUNT_KEY=xxxxxxxxxx \ ---set configs.BLOB_STORAGE_PROVIDER=AZURE \ ---set configs.AZURE_ACCOUNT_NAME=test-account \ ---set configs.AZURE_BLOB_CONTAINER_CI_LOG=ci-log-container \ ---set configs.AZURE_BLOB_CONTAINER_CI_CACHE=ci-cache-container -``` -{% endtab %} -{% endtabs %} - - -If you are planning to use Devtron for `production deployments`, please refer to our recommended overrides for [Devtron Installation](override-default-devtron-installation-configs.md). - -## Installation status - -Run following command - -```bash -kubectl -n devtroncd get installers installer-devtron -o jsonpath='{.status.sync.status}' -``` - -The install commands initiates Devtron-operator which spins up all the Devtron micro-services one by one in about 20 mins. You can use the above command to check the status of the installation if the installation is still in progress, it will print `Downloaded`. When the installation is complete, it prints `Applied`. - -## Access Devtron dashboard - -If you did not provide a **BASE\_URL** during install or have used the default installation, Devtron creates a loadbalancer for you on its own. Use the following command to get the dashboard url. - -```text -kubectl get svc -n devtroncd devtron-service -o jsonpath='{.status.loadBalancer.ingress}' -``` - -You will get result something like below - -```text -[test2@server ~]$ kubectl get svc -n devtroncd devtron-service -o jsonpath='{.status.loadBalancer.ingress}' -[map[hostname:aaff16e9760594a92afa0140dbfd99f7-305259315.us-east-1.elb.amazonaws.com]] -``` - -The hostname mentioned here \( aaff16e9760594a92afa0140dbfd99f7-305259315.us-east-1.elb.amazonaws.com \) is the Loadbalancer URL where you can access the Devtron dashboard. - -**PS:** You can also do a CNAME entry corresponding to your domain/subdomain to point to this Loadbalancer URL to access it at a custom domain. - -| Host | Type | Points to | -| ---: | :--- | :--- | -| devtron.yourdomain.com | CNAME | aaff16e9760594a92afa0140dbfd99f7-305259315.us-east-1.elb.amazonaws.com | - -### Devtron Admin credentials -If you are upgrading from Hyperion to Devtron full mode, the admin password does NOT change. -For admin login use username:`admin` and for password run the following command. - -```bash -kubectl -n devtroncd get secret devtron-secret -o jsonpath='{.data.ACD_PASSWORD}' | base64 -d -``` - -### Cleaning Devtron Installer Helm3 - -Please make sure that you do not have anything inside namespaces devtroncd, devtron-cd devtron-ci and devtron-demo as the below steps will clean everything inside these namespaces -``` -helm uninstall devtron --namespace devtroncd -kubectl delete -n devtroncd -f https://raw.githubusercontent.com/devtron-labs/charts/main/charts/devtron/crds/crd-devtron.yaml -kubectl delete -n argo -f https://raw.githubusercontent.com/devtron-labs/devtron/main/manifests/yamls/workflow.yaml -kubectl delete ns devtroncd devtron-cd devtron-ci devtron-demo -``` diff --git a/docs/hyperion/user-guide/global-configurations/README.md b/docs/hyperion/user-guide/global-configurations/README.md deleted file mode 100644 index 8776b6741e..0000000000 --- a/docs/hyperion/user-guide/global-configurations/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# Global Configurations - -This documentation consists of the Global Configurations available in Devtron. - -**Parts of the Documentation** - -[Cluster And Environments](cluster-and-environments.md) - -[SSO Login Service](sso-login.md) - -[User Access](user-access.md) - - diff --git a/docs/hyperion/user-guide/global-configurations/cluster-and-environments.md b/docs/hyperion/user-guide/global-configurations/cluster-and-environments.md deleted file mode 100644 index 6f48d5e05e..0000000000 --- a/docs/hyperion/user-guide/global-configurations/cluster-and-environments.md +++ /dev/null @@ -1,113 +0,0 @@ -# Cluster And Environments - -The Global configuration provides a feature of `Cluster & Environment` in which you can add your Kubernetes clusters and environment. - -Select the Cluster & Environment section of global configuration and click on `Add Cluster` to add your cluster. - -## Add Cluster: - -To add a cluster on devtron, you must have superadmin access. - -Navigate to the `Global Configurations` → `Clusters and Environments` on devtron and click on `Add Cluster`. Provide the below information to add your kubernetes cluster: - -1. Name -2. Kubernetes Cluster Info - * Server URL - * Bearer token -3. Prometheus Info - * Prometheus endpoint - * Basic - * Username - * Password - * Anonymous - * TLS Key - * TLS Certificate - - -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/cluster-1.jpg) - -### 1. Name - -Give a name to your cluster inside the name box. - -### 2. Kubernetes Cluster Info - -Provide your kubernetes cluster’s credentials. - -* **Server URL** - -Provide the endpoint/URL of your kubernetes cluster.It is recommended to use a self-hosted URL instead of cloud hosted. Self-hosted URL will provide the following benefits. - -**\(a\) Disaster Recovery -** It is not possible to edit the server-url of a cluster. So if you're using an eks url, For eg- ` *****.eu-west-1.elb.amazonaws.com` it will be a tedious task to add a new cluster and migrate all the services one by one. While using a self-hosted url For eg- `clear.example.com` you can just point to the new cluster's server url in DNS manager and update the new cluster token and sync all the deployments. - -**\(b\) Easy cluster migrations -** Cluster url is given in the name of the cloud provider used, so migrating your cluster from one provider to another will result in waste of time and effort. On the other hand, if using a self-hosted url migrations will be easy as the url is of single hosted domain independent of the cloud provider. - -* **Bearer token** - -Provide your kubernetes cluster’s Bearer token for authentication purposes so that the Devtron tool will be able to talk to your kubernetes cluster and can deploy your application in your kubernetes cluster.Generate the admin token to add the cluster on devtron by running the following command. Please ensure that you have kubectl and jq installed on the bastion that you’re running the command. - -```bash -curl -O https://raw.githubusercontent.com/devtron-labs/utilities/main/kubeconfig-exporter/kubernetes_export_sa.sh && bash kubernetes_export_sa.sh cd-user devtroncd https://raw.githubusercontent.com/devtron-labs/utilities/main/kubeconfig-exporter/clusterrole.yaml -``` - -### 3. Prometheus Info - -Prometheus is a powerful solution to provide graphical insight into your application behavior. If you want to see your application matrix against your applications deployed in kubernetes, install Prometheus in your kubernetes cluster. The below inputs are required to configure your prometheus into Devtron’s tool. - -* **Prometheus endpoint** - -Provide the URL of your prometheus. Prometheus supports two types of authentication `Basic` and `Anonymous`. Select the authentication type for your Prometheus setup. - -* **Basic** - -If you select the `basic` type of authentication then you have to provide the `Username` and `Password` of prometheus for authentication. - -* **Anonymous** - -If you select `Anonymous` then you do not have to provide any username and password for authentication. - -* **TLS Key & TLS Certificate** - -TLS key and TLS certificate both options are optional, these options are used when you use a custom URL, in that case, you can pass your TLS key and TLS certificate. - - -### K8s Version -on saving or update a cluster there is a call to fetch k8s version, it will store corresponding to cluster on db. used in listing api's and app detail page for grafana url. - - -Check the below screenshots to know how it looks like If you select the `Basic` authentication type - -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/cluster-2.jpg) - -If you select the `Anonymous` authentication type - -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/cluster-1.jpg) - -Now click on `Save Cluster` to save your cluster information. - -### Note: - -Your kubernetes cluster gets mapped with the Devtron when you save your kubernetes cluster Configuration. Now the agents of devtron will be installed on your cluster so that the components of devtron can communicate to your cluster. When the agent starts installing on your cluster, you can check the status of the agents in the Cluster & Environment tab also. - -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/gc-cluster-agents.jpg) - -Click on `Details` to check what got installed inside the agents. A new window will be popped up displaying all the details about these agents. - -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/cluster_gc5.jpg) - -## Add Environment - -Once you have added your cluster in Cluster & Environment, you can add the environment also. Click on `Add Environment`, a window will be opened. Give a name to your environment in the `Environment Name` box and provide a namespace corresponding to your environment in the `Namespace` input box. Now choose if your environment is for Production purposes or for Non-production purposes. Production and Non-production options are only for tagging purposes. Click on `Save` and your environment will be created. - -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/gc-cluster-add-environment.jpg) - -You can update an already created environment, Select and click on the environment which you want to update. You can only change Production and Non-production options here. - -**Note** - -You can not change the Environment name and Namespace name. - -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/gc-cluster-update-environment.jpg) - -Click on `Update` to update your environment. - diff --git a/docs/hyperion/user-guide/global-configurations/sso-login.md b/docs/hyperion/user-guide/global-configurations/sso-login.md deleted file mode 100644 index 884c87077d..0000000000 --- a/docs/hyperion/user-guide/global-configurations/sso-login.md +++ /dev/null @@ -1,52 +0,0 @@ -# SSO LOGIN -## Overview - -Once installed Devtron has one built-in `admin` user with super-admin privileges that has complete access to the system. It is recommended to use `admin` user only for initial and global configuration and then switch to local users or configure SSO integration. - -Only users with super-admin privileges have access to create SSO configuration. Devtron uses dex for authenticating a user against the identity provider. - -To add/edit SSO configuration please go to the left main panel -> Select `Global Configurations` -> Select `SSO Login Services` - -## Supported SSO Providers - -`LDAP` -`GitHub` -`OpenID Connect` -`Google` -`Microsoft` -`OpenShift` - -Dex implements connectors that target specific `identity providers`, for each connector configuration user must have created account for the corresponding identity provider and registered an app for client key and secret. -For examples see -* https://dexidp.io/docs/connectors/ -* https://dexidp.io/docs/connectors/google/ - - -### 1. Create new SSO Configuration - -Login as a user with super-admin privileges and go to `Global Configurations` -> `SSO Login Services` and click on any `Identity Provider` and fill the configuration. - -Add valid devtron application `URL` where it is hosted. - -Fill correct `redirect URL` or `callback URL` from which you have registered with the identity provider in the previous step along with the `client id` and `client secret` shared by the identity provider. - -Only single SSO login configuration can be active at one time. Whenever you create or update any SSO config, it will be activated and used by the system and previous configurations will be deleted. - -Except for the domain substring, URL and redirectURI should be the same as in the screenshots. - -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/sso-login.jpg) - -Select `Save` to create and activate SSO login. - -### 2. Update SSO Configuration - -SSO configuration can be changed by the user at any later point in time by updating the configuration and clicking on the `Save` button at the bottom right. -In case of configuration change all users will be logged out of the system and will have to login again. - -### 3. Configuration Payload - -* `type` : oidc or any platform name such as (google, gitlab, github etc) -* `name` : identity provider platform name -* `id` : identity provider platform unique id in string. (refer to dexidp.io) -* `config` : user can put connector details into this key. platforms may not have same structure but commons are clientID, clientSecret, redirectURI. -* `hostedDomains` : domains authorized for SSO login. diff --git a/docs/hyperion/user-guide/global-configurations/user-access.md b/docs/hyperion/user-guide/global-configurations/user-access.md deleted file mode 100644 index 42adafcb71..0000000000 --- a/docs/hyperion/user-guide/global-configurations/user-access.md +++ /dev/null @@ -1,195 +0,0 @@ -# User Access for Hyperion Mode - -Like any enterprise product, Devtron supports fine grained access control to the resources - -Access can be added to the User either directly or via Groups. - -## Access Levels -Devtron supports 4 levels of access -1. **View only**: User with `view` only access has the least privilege. This user can only view combination of environments, applications and helm charts on which access has been granted to the user. This user cannot view sensitive data like secrets used in applications or charts. -2. **View and Edit**: In addition to `view` privilege mentioned in above, user with `View and Edit` permission can edit the resource manifests of permitted applications and helm charts to permitted environments. -3. **Admin**: User with `admin` access can create, edit, delete and view permitted applications in permitted projects. -4. **Super Admin**: User with `super admin` privilege has unrestricted access to all Devtron resources. Super admin can create, modify, delete and view any Devtron resource without any restriction; its like Superman without the weakness of Kryptonite. Super Admin can also add and delete user access across any Devtron resource, add delete git repository credentials, docker registry credentials, cluster and environment. - -## Visualize using access table (Apps) - -| Access Level | View App | Create App | Edit App | Delete App | Trigger App | -|--|--|--|--|--|--| -| View | Yes | No | No | No| No | -| View and Edit | Yes | No | Yes | Yes| Yes | -|Admin| Yes | Yes | Yes | Yes | Yes | -|Super Admin| Yes | Yes | Yes | Yes | Yes | -
- -## Visualize using access table (Charts) -| Access Level | View Charts | Install Charts | Edit Charts | Delete Charts | -|--|--|--|--|--| -| View | Yes | No | No | No| -| View and Edit | Yes | No | No | No| -|Admin| Yes | Yes | Yes | Yes | -|Super Admin| Yes | Yes | Yes | Yes | -
- -## Visualize using access table (User Management) -| Access Level | Add User Access | Edit User Access | Delete User Access | -|--|--|--|--| -|Super Admin| Yes | Yes | Yes | -
- -## Visualize using access table (Config Management) -| Access Level | Add Global Config | Edit Global Config | Delete Global Config | -|--|--|--|--| -|Super Admin| Yes | Yes | - - -To control the access of User and Group - -Go to the left main panel -> `Select Global Configurations` -> Select `User Access` - -## Users -### 1. Add new user - -Click on `Add User`, to add one or multiple users. - -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/hyperion/user-guide/global-configurations/user-access/hyperion-gc-add-user.jpg) - -### 2. Search the existing User -Click on `Search Box`, and type your user's email - -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/hyperion/user-guide/global-configurations/user-access/hyperion-gc-search-user.jpg) - -### 3. Create User Permissions - -When you click on Add User, you will see 4 options to set permission for users which are as follow: - -* Email addresses -* Assign super admin permissions -* Group permissions -* Helm Apps - * Project - * Environment - * Application - * Permission - -## Email addresses: - -In the `Email address` box, you have to provide the mail ID of the user to whom you want to give access to your applications. - -**`IMP`** Please note that Email address should be same as that in the `email` field in the JWT token returned by OIDC provider. - - -### Assign super admin permissions - -If you check the option `Assign super admin permissions`, the user will get full access to your system and the rest of the options will disappear. Please check [above](#access-levels) to see permission levels. - -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/hyperion/user-guide/global-configurations/user-access/hyperion-gc-assign-superuser.jpg) - -Click on `Save` and your user will be saved with super admin permissions. - -We suggest that super admin privileges should be given to only select few. - -If you don’t want to assign super admin permissions then you have to provide the rest of the information. - - -### Group permissions - -This is used to assign user to a particular group and user inherits all the permissions granted to this group. The Group permissions section contains a drop-down of all existing groups on which you have access. This is optional field and more than one groups can be selected for a user. - -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/hyperion/user-guide/global-configurations/user-access/hyperion-gc-assign-groups-user.jpg) - -We will discuss how to create groups in the later section. - -### Helm Apps - -Access can be given to user by attaching permission directly to his/her email id through the `Helm Apps` section. This section has 4 options to manage the permissions of your users. - -* **Project** - -Select a project from the drop-down to which you want to give permission to the users. You can select only one project at a time if you want to select more than one project then click `Add row`. - -* **Environment or cluster/namespace** - -In the `Environment or cluster/namespace` section, you can select one or more than one or all environments at a time. Click on the environment section, you will see a drop-down of your environments and select any environment on which you want to give permission to the user. - -**`IMP`** If `all environments` option is selected then user gets access to all current environments and any new environment which gets associated with this application later. - -* **Application** - -Similarly, you can select `Applications` from the drop-down corresponding to your selected Environments. In this section, you can also give permissions to one or more than one or to all applications at a time. - -**`IMP`** If `all applications` option is selected then user gets access to all current applications and any new application which gets associated with this project later. - -* **Permission** - - Inside the `Permission`, you actually choose which type of permissions you want to give to the users. - -There are there different view access levels available for both User and Group as described [above](#access-levels): - -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/hyperion/user-guide/global-configurations/user-access/hyperion-gc-user-permission.jpg) - -You can add multiple rows, for Helm Apps. - -Once you have finished assigning the appropriate permissions for the listed user, Click on `Save`. - -### 4. Edit User Permissions - -You can edit the user permissions, by clicking on the `downward arrow`. - -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/hyperion/user-guide/global-configurations/user-access/hyperion-gc-user-edit-arrow.jpg) - -Then you can edit the user permissions here. - -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/hyperion/user-guide/global-configurations/user-access/hyperion-gc-user-edit-permission.jpg) - -After you have done editing the user permissions. Click on `Save`. - -If you want to delete the user/users with particular permissions. Click on `Delete`. - -## Groups - -The advantage of the groups is to define a set of privileges like create, edit, or delete for the given set of resources that can be shared among the users within the group. Users can be added to an existing group to utilize the privileges that it grants. Any access change to group is reflected immediately in user access. - -You can select the group which you are creating in the `Group permissions` section inside `Add users`. - -### 1. Add new Group - -Click on `Add Group`, to create a new group. - -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/hyperion/user-guide/global-configurations/user-access/hyperion-gc-group.jpg) - -Enter the `Group Name` and `Description`. - -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/hyperion/user-guide/global-configurations/user-access/hyperion-gc-group-name-desc.jpg) - -### 2. Create Group Permissions - -Once you have given the group name and group description. - -Then, control the access permissions of groups in the Helm Apps section. Manage the Project, Environment, Application, and Permission access the same as we discuss in the above users section. - -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/hyperion/user-guide/global-configurations/user-access/hyperion-gc-group-add-permission.jpg) - -You can add multiple rows, for the Helm Apps section. - -Once you have finished assigning the appropriate permissions for the listed users, Click on `Save`. - -### 3. Edit Group Permissions - -You can edit the group permissions, by clicking on the `downward arrow.` - -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/hyperion/user-guide/global-configurations/user-access/hyperion-gc-group-edit-arow.jpg) - -Then you can edit the group permissions here. - -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/hyperion/user-guide/global-configurations/user-access/hyperion-gc-group-edit-permission.jpg) - -Once you are done editing the group permissions. Click on `Save`. - -If you want to delete the groups with particular permissions. Click on `Delete`. - - -### 4. Manage Chart Group Permissions - -The chart group permissions for the group will be managed in the same way as for the users. For reference, check Manage chart group permissions for users. - - diff --git a/docs/images/cloning-application/add-new-app.jpg b/docs/images/cloning-application/add-new-app.jpg deleted file mode 100644 index 130d81ee38..0000000000 Binary files a/docs/images/cloning-application/add-new-app.jpg and /dev/null differ diff --git a/docs/images/cloning-application/configur-add-new-app.jpg b/docs/images/cloning-application/configur-add-new-app.jpg deleted file mode 100644 index a2fa304d95..0000000000 Binary files a/docs/images/cloning-application/configur-add-new-app.jpg and /dev/null differ diff --git a/docs/images/cloning-application/created-clone-app.jpg b/docs/images/cloning-application/created-clone-app.jpg deleted file mode 100644 index 5770b6bd18..0000000000 Binary files a/docs/images/cloning-application/created-clone-app.jpg and /dev/null differ diff --git a/docs/images/command-bar/cmd-bar-gif.gif b/docs/images/command-bar/cmd-bar-gif.gif deleted file mode 100644 index d8b124403f..0000000000 Binary files a/docs/images/command-bar/cmd-bar-gif.gif and /dev/null differ diff --git a/docs/images/command-bar/cmdbar-workflow-editor-path.png b/docs/images/command-bar/cmdbar-workflow-editor-path.png deleted file mode 100644 index 0e26f76efb..0000000000 Binary files a/docs/images/command-bar/cmdbar-workflow-editor-path.png and /dev/null differ diff --git a/docs/images/command-bar/command-bar-parts.png b/docs/images/command-bar/command-bar-parts.png deleted file mode 100644 index 70d6b65be9..0000000000 Binary files a/docs/images/command-bar/command-bar-parts.png and /dev/null differ diff --git a/docs/images/creating-application/app-metrics/app-metrics-1.jpg b/docs/images/creating-application/app-metrics/app-metrics-1.jpg deleted file mode 100644 index 4ee269344d..0000000000 Binary files a/docs/images/creating-application/app-metrics/app-metrics-1.jpg and /dev/null differ diff --git a/docs/images/creating-application/app-metrics/app-metrics.png b/docs/images/creating-application/app-metrics/app-metrics.png deleted file mode 100644 index 4aad1ee992..0000000000 Binary files a/docs/images/creating-application/app-metrics/app-metrics.png and /dev/null differ diff --git a/docs/images/creating-application/config-maps/ad-confgimap.jpg b/docs/images/creating-application/config-maps/ad-confgimap.jpg deleted file mode 100644 index 752b7de887..0000000000 Binary files a/docs/images/creating-application/config-maps/ad-confgimap.jpg and /dev/null differ diff --git a/docs/images/creating-application/config-maps/configmap-filepermission-1.png b/docs/images/creating-application/config-maps/configmap-filepermission-1.png deleted file mode 100644 index b41f25ffe1..0000000000 Binary files a/docs/images/creating-application/config-maps/configmap-filepermission-1.png and /dev/null differ diff --git a/docs/images/creating-application/config-maps/configmap-mountpath-1.png b/docs/images/creating-application/config-maps/configmap-mountpath-1.png deleted file mode 100644 index f31a34906d..0000000000 Binary files a/docs/images/creating-application/config-maps/configmap-mountpath-1.png and /dev/null differ diff --git a/docs/images/creating-application/config-maps/configmap-yaml.jpg b/docs/images/creating-application/config-maps/configmap-yaml.jpg deleted file mode 100644 index fcb8d1a7e4..0000000000 Binary files a/docs/images/creating-application/config-maps/configmap-yaml.jpg and /dev/null differ diff --git a/docs/images/creating-application/config-maps/configure-configmap.jpg b/docs/images/creating-application/config-maps/configure-configmap.jpg deleted file mode 100644 index bf227d0ed2..0000000000 Binary files a/docs/images/creating-application/config-maps/configure-configmap.jpg and /dev/null differ diff --git a/docs/images/creating-application/config-maps/created-configmap.gif b/docs/images/creating-application/config-maps/created-configmap.gif deleted file mode 100644 index 63e9dd5f76..0000000000 Binary files a/docs/images/creating-application/config-maps/created-configmap.gif and /dev/null differ diff --git a/docs/images/creating-application/config-maps/created-configmap.jpg b/docs/images/creating-application/config-maps/created-configmap.jpg deleted file mode 100644 index 8f289a86b8..0000000000 Binary files a/docs/images/creating-application/config-maps/created-configmap.jpg and /dev/null differ diff --git a/docs/images/creating-application/config-maps/delete_configmap.png b/docs/images/creating-application/config-maps/delete_configmap.png deleted file mode 100644 index 99c2d8277b..0000000000 Binary files a/docs/images/creating-application/config-maps/delete_configmap.png and /dev/null differ diff --git a/docs/images/creating-application/config-maps/update_configmap.png b/docs/images/creating-application/config-maps/update_configmap.png deleted file mode 100644 index 33c07760f7..0000000000 Binary files a/docs/images/creating-application/config-maps/update_configmap.png and /dev/null differ diff --git a/docs/images/creating-application/deployment-template/deployment-template.gif b/docs/images/creating-application/deployment-template/deployment-template.gif deleted file mode 100644 index c0c0681eac..0000000000 Binary files a/docs/images/creating-application/deployment-template/deployment-template.gif and /dev/null differ diff --git a/docs/images/creating-application/docker-build-configuration/docker-configuration.gif b/docs/images/creating-application/docker-build-configuration/docker-configuration.gif deleted file mode 100644 index 84b70bec9e..0000000000 Binary files a/docs/images/creating-application/docker-build-configuration/docker-configuration.gif and /dev/null differ diff --git a/docs/images/creating-application/environment-overrides/configure-env.jpg b/docs/images/creating-application/environment-overrides/configure-env.jpg deleted file mode 100644 index e7c439402d..0000000000 Binary files a/docs/images/creating-application/environment-overrides/configure-env.jpg and /dev/null differ diff --git a/docs/images/creating-application/environment-overrides/creating-env.gif b/docs/images/creating-application/environment-overrides/creating-env.gif deleted file mode 100644 index 5a20f4dce1..0000000000 Binary files a/docs/images/creating-application/environment-overrides/creating-env.gif and /dev/null differ diff --git a/docs/images/creating-application/git-material/adding-git-material.gif b/docs/images/creating-application/git-material/adding-git-material.gif deleted file mode 100644 index ac71ed7b8e..0000000000 Binary files a/docs/images/creating-application/git-material/adding-git-material.gif and /dev/null differ diff --git a/docs/images/creating-application/git-material/git-checkout-path.jpg b/docs/images/creating-application/git-material/git-checkout-path.jpg deleted file mode 100644 index c0bf3d25c2..0000000000 Binary files a/docs/images/creating-application/git-material/git-checkout-path.jpg and /dev/null differ diff --git a/docs/images/creating-application/git-material/github_url.png b/docs/images/creating-application/git-material/github_url.png deleted file mode 100644 index 3b45a16e0a..0000000000 Binary files a/docs/images/creating-application/git-material/github_url.png and /dev/null differ diff --git a/docs/images/creating-application/secrets/add-secret.png b/docs/images/creating-application/secrets/add-secret.png deleted file mode 100644 index de8ed05ec5..0000000000 Binary files a/docs/images/creating-application/secrets/add-secret.png and /dev/null differ diff --git a/docs/images/creating-application/secrets/configure-secrets.jpg b/docs/images/creating-application/secrets/configure-secrets.jpg deleted file mode 100644 index 0be7c5f02f..0000000000 Binary files a/docs/images/creating-application/secrets/configure-secrets.jpg and /dev/null differ diff --git a/docs/images/creating-application/secrets/created-secret.gif b/docs/images/creating-application/secrets/created-secret.gif deleted file mode 100644 index 5fd32b7acd..0000000000 Binary files a/docs/images/creating-application/secrets/created-secret.gif and /dev/null differ diff --git a/docs/images/creating-application/secrets/delete_secret.png b/docs/images/creating-application/secrets/delete_secret.png deleted file mode 100644 index 91863fed80..0000000000 Binary files a/docs/images/creating-application/secrets/delete_secret.png and /dev/null differ diff --git a/docs/images/creating-application/secrets/secret-created.png b/docs/images/creating-application/secrets/secret-created.png deleted file mode 100644 index 091c44a84d..0000000000 Binary files a/docs/images/creating-application/secrets/secret-created.png and /dev/null differ diff --git a/docs/images/creating-application/secrets/secret-mountpath-1.png b/docs/images/creating-application/secrets/secret-mountpath-1.png deleted file mode 100644 index 248d315e81..0000000000 Binary files a/docs/images/creating-application/secrets/secret-mountpath-1.png and /dev/null differ diff --git a/docs/images/creating-application/secrets/secret-volume-path.jpg b/docs/images/creating-application/secrets/secret-volume-path.jpg deleted file mode 100644 index d49111d1e6..0000000000 Binary files a/docs/images/creating-application/secrets/secret-volume-path.jpg and /dev/null differ diff --git a/docs/images/creating-application/secrets/updating_secrets.png b/docs/images/creating-application/secrets/updating_secrets.png deleted file mode 100644 index a780aa88bc..0000000000 Binary files a/docs/images/creating-application/secrets/updating_secrets.png and /dev/null differ diff --git a/docs/images/creating-application/workflow-cd-pipeline/cd-pipeline-console.png b/docs/images/creating-application/workflow-cd-pipeline/cd-pipeline-console.png deleted file mode 100644 index 11b0cfac66..0000000000 Binary files a/docs/images/creating-application/workflow-cd-pipeline/cd-pipeline-console.png and /dev/null differ diff --git a/docs/images/creating-application/workflow-cd-pipeline/cd_post_build.jpg b/docs/images/creating-application/workflow-cd-pipeline/cd_post_build.jpg deleted file mode 100644 index 7380924d8f..0000000000 Binary files a/docs/images/creating-application/workflow-cd-pipeline/cd_post_build.jpg and /dev/null differ diff --git a/docs/images/creating-application/workflow-cd-pipeline/cd_pre_build.jpg b/docs/images/creating-application/workflow-cd-pipeline/cd_pre_build.jpg deleted file mode 100644 index f3972fde8f..0000000000 Binary files a/docs/images/creating-application/workflow-cd-pipeline/cd_pre_build.jpg and /dev/null differ diff --git a/docs/images/creating-application/workflow-cd-pipeline/configuring-cd-pipeline.png b/docs/images/creating-application/workflow-cd-pipeline/configuring-cd-pipeline.png deleted file mode 100644 index 662dc14629..0000000000 Binary files a/docs/images/creating-application/workflow-cd-pipeline/configuring-cd-pipeline.png and /dev/null differ diff --git a/docs/images/creating-application/workflow-cd-pipeline/create-cd-pipeline.png b/docs/images/creating-application/workflow-cd-pipeline/create-cd-pipeline.png deleted file mode 100644 index 310866d015..0000000000 Binary files a/docs/images/creating-application/workflow-cd-pipeline/create-cd-pipeline.png and /dev/null differ diff --git a/docs/images/creating-application/workflow-cd-pipeline/created-cd-pipeline.png b/docs/images/creating-application/workflow-cd-pipeline/created-cd-pipeline.png deleted file mode 100644 index 50aeaae6e9..0000000000 Binary files a/docs/images/creating-application/workflow-cd-pipeline/created-cd-pipeline.png and /dev/null differ diff --git a/docs/images/creating-application/workflow-cd-pipeline/edit_cd_pipeline.jpg b/docs/images/creating-application/workflow-cd-pipeline/edit_cd_pipeline.jpg deleted file mode 100644 index 2c1bc57afe..0000000000 Binary files a/docs/images/creating-application/workflow-cd-pipeline/edit_cd_pipeline.jpg and /dev/null differ diff --git a/docs/images/creating-application/workflow-cd-pipeline/update_pipeline_cd.jpg b/docs/images/creating-application/workflow-cd-pipeline/update_pipeline_cd.jpg deleted file mode 100644 index 3ec0673c15..0000000000 Binary files a/docs/images/creating-application/workflow-cd-pipeline/update_pipeline_cd.jpg and /dev/null differ diff --git a/docs/images/creating-application/workflow-ci-pipeline/ci-yaml.jpg b/docs/images/creating-application/workflow-ci-pipeline/ci-yaml.jpg deleted file mode 100644 index 986f58e63e..0000000000 Binary files a/docs/images/creating-application/workflow-ci-pipeline/ci-yaml.jpg and /dev/null differ diff --git a/docs/images/creating-application/workflow-ci-pipeline/edit_pipeline.jpg b/docs/images/creating-application/workflow-ci-pipeline/edit_pipeline.jpg deleted file mode 100644 index ac4269dc0d..0000000000 Binary files a/docs/images/creating-application/workflow-ci-pipeline/edit_pipeline.jpg and /dev/null differ diff --git a/docs/images/creating-application/workflow-ci-pipeline/external_pipeline.jpg b/docs/images/creating-application/workflow-ci-pipeline/external_pipeline.jpg deleted file mode 100644 index 9b038ae820..0000000000 Binary files a/docs/images/creating-application/workflow-ci-pipeline/external_pipeline.jpg and /dev/null differ diff --git a/docs/images/creating-application/workflow-ci-pipeline/linked.jpg b/docs/images/creating-application/workflow-ci-pipeline/linked.jpg deleted file mode 100644 index d185f51906..0000000000 Binary files a/docs/images/creating-application/workflow-ci-pipeline/linked.jpg and /dev/null differ diff --git a/docs/images/creating-application/workflow-ci-pipeline/post_build.jpg b/docs/images/creating-application/workflow-ci-pipeline/post_build.jpg deleted file mode 100644 index 398d64920d..0000000000 Binary files a/docs/images/creating-application/workflow-ci-pipeline/post_build.jpg and /dev/null differ diff --git a/docs/images/creating-application/workflow-ci-pipeline/pre_build.jpg b/docs/images/creating-application/workflow-ci-pipeline/pre_build.jpg deleted file mode 100644 index 759c0a7b87..0000000000 Binary files a/docs/images/creating-application/workflow-ci-pipeline/pre_build.jpg and /dev/null differ diff --git a/docs/images/creating-application/workflow-ci-pipeline/update_pipeline_ci.jpg b/docs/images/creating-application/workflow-ci-pipeline/update_pipeline_ci.jpg deleted file mode 100644 index 0cc6127338..0000000000 Binary files a/docs/images/creating-application/workflow-ci-pipeline/update_pipeline_ci.jpg and /dev/null differ diff --git a/docs/images/creating-application/workflow/add-workflow.png b/docs/images/creating-application/workflow/add-workflow.png deleted file mode 100644 index fcab99f7dd..0000000000 Binary files a/docs/images/creating-application/workflow/add-workflow.png and /dev/null differ diff --git a/docs/images/creating-application/workflow/create-workflow.jpg b/docs/images/creating-application/workflow/create-workflow.jpg deleted file mode 100644 index 91edff4a29..0000000000 Binary files a/docs/images/creating-application/workflow/create-workflow.jpg and /dev/null differ diff --git a/docs/images/creating-application/workflow/workflow.gif b/docs/images/creating-application/workflow/workflow.gif deleted file mode 100644 index 80428dbe95..0000000000 Binary files a/docs/images/creating-application/workflow/workflow.gif and /dev/null differ diff --git a/docs/images/debugging-deployment-and-monitoring/app-details-application-object-ingress.png b/docs/images/debugging-deployment-and-monitoring/app-details-application-object-ingress.png deleted file mode 100644 index def5ff8f6e..0000000000 Binary files a/docs/images/debugging-deployment-and-monitoring/app-details-application-object-ingress.png and /dev/null differ diff --git a/docs/images/debugging-deployment-and-monitoring/app-details-application-object.png b/docs/images/debugging-deployment-and-monitoring/app-details-application-object.png deleted file mode 100644 index b3b44ec533..0000000000 Binary files a/docs/images/debugging-deployment-and-monitoring/app-details-application-object.png and /dev/null differ diff --git a/docs/images/debugging-deployment-and-monitoring/app-details-events.jpg b/docs/images/debugging-deployment-and-monitoring/app-details-events.jpg deleted file mode 100644 index 80eeb0405f..0000000000 Binary files a/docs/images/debugging-deployment-and-monitoring/app-details-events.jpg and /dev/null differ diff --git a/docs/images/debugging-deployment-and-monitoring/app-details-logs.jpg b/docs/images/debugging-deployment-and-monitoring/app-details-logs.jpg deleted file mode 100644 index 82816b1f4a..0000000000 Binary files a/docs/images/debugging-deployment-and-monitoring/app-details-logs.jpg and /dev/null differ diff --git a/docs/images/debugging-deployment-and-monitoring/app-details-manifest.jpg b/docs/images/debugging-deployment-and-monitoring/app-details-manifest.jpg deleted file mode 100644 index 3a7d5152d1..0000000000 Binary files a/docs/images/debugging-deployment-and-monitoring/app-details-manifest.jpg and /dev/null differ diff --git a/docs/images/debugging-deployment-and-monitoring/debbug-app-details.jpg b/docs/images/debugging-deployment-and-monitoring/debbug-app-details.jpg deleted file mode 100644 index af002af7d5..0000000000 Binary files a/docs/images/debugging-deployment-and-monitoring/debbug-app-details.jpg and /dev/null differ diff --git a/docs/images/deleting-application/deleting-delete-application.jpg b/docs/images/deleting-application/deleting-delete-application.jpg deleted file mode 100644 index a2a6936ae6..0000000000 Binary files a/docs/images/deleting-application/deleting-delete-application.jpg and /dev/null differ diff --git a/docs/images/deleting-application/deleting-warnning.jpg b/docs/images/deleting-application/deleting-warnning.jpg deleted file mode 100644 index 26e169d91d..0000000000 Binary files a/docs/images/deleting-application/deleting-warnning.jpg and /dev/null differ diff --git a/docs/images/deleting-application/deleting-workflow.jpg b/docs/images/deleting-application/deleting-workflow.jpg deleted file mode 100644 index 8ef88434b1..0000000000 Binary files a/docs/images/deleting-application/deleting-workflow.jpg and /dev/null differ diff --git a/docs/images/deploy-chart/overview-of-charts/chart-store.jpg b/docs/images/deploy-chart/overview-of-charts/chart-store.jpg deleted file mode 100644 index ae770e8353..0000000000 Binary files a/docs/images/deploy-chart/overview-of-charts/chart-store.jpg and /dev/null differ diff --git a/docs/images/deploy-chart/overview-of-charts/create_group.jpg b/docs/images/deploy-chart/overview-of-charts/create_group.jpg deleted file mode 100644 index c42be22bed..0000000000 Binary files a/docs/images/deploy-chart/overview-of-charts/create_group.jpg and /dev/null differ diff --git a/docs/images/deploy-chart/overview-of-charts/custom.jpg b/docs/images/deploy-chart/overview-of-charts/custom.jpg deleted file mode 100644 index 0efc01204b..0000000000 Binary files a/docs/images/deploy-chart/overview-of-charts/custom.jpg and /dev/null differ diff --git a/docs/images/deploy-chart/overview-of-charts/custom1.jpg b/docs/images/deploy-chart/overview-of-charts/custom1.jpg deleted file mode 100644 index a5bbf7678a..0000000000 Binary files a/docs/images/deploy-chart/overview-of-charts/custom1.jpg and /dev/null differ diff --git a/docs/images/deploy-chart/overview-of-charts/custom_val.jpg b/docs/images/deploy-chart/overview-of-charts/custom_val.jpg deleted file mode 100644 index 522ae8a957..0000000000 Binary files a/docs/images/deploy-chart/overview-of-charts/custom_val.jpg and /dev/null differ diff --git a/docs/images/deploy-chart/overview-of-charts/depchart4config.jpg b/docs/images/deploy-chart/overview-of-charts/depchart4config.jpg deleted file mode 100644 index 3848c70048..0000000000 Binary files a/docs/images/deploy-chart/overview-of-charts/depchart4config.jpg and /dev/null differ diff --git a/docs/images/deploy-chart/overview-of-charts/depchart4readme.jpg b/docs/images/deploy-chart/overview-of-charts/depchart4readme.jpg deleted file mode 100644 index f19b9ec829..0000000000 Binary files a/docs/images/deploy-chart/overview-of-charts/depchart4readme.jpg and /dev/null differ diff --git a/docs/images/deploy-chart/overview-of-charts/depchartdeployedredo.jpg b/docs/images/deploy-chart/overview-of-charts/depchartdeployedredo.jpg deleted file mode 100644 index 22e53d76a2..0000000000 Binary files a/docs/images/deploy-chart/overview-of-charts/depchartdeployedredo.jpg and /dev/null differ diff --git a/docs/images/deploy-chart/overview-of-charts/depchartreconfig.jpg b/docs/images/deploy-chart/overview-of-charts/depchartreconfig.jpg deleted file mode 100644 index 7bbc92df9a..0000000000 Binary files a/docs/images/deploy-chart/overview-of-charts/depchartreconfig.jpg and /dev/null differ diff --git a/docs/images/deploy-chart/overview-of-charts/deploy-chart-store.jpg b/docs/images/deploy-chart/overview-of-charts/deploy-chart-store.jpg deleted file mode 100644 index c69e923526..0000000000 Binary files a/docs/images/deploy-chart/overview-of-charts/deploy-chart-store.jpg and /dev/null differ diff --git a/docs/images/deploy-chart/overview-of-charts/deploy-chart.jpg b/docs/images/deploy-chart/overview-of-charts/deploy-chart.jpg deleted file mode 100644 index 68df9c9cbc..0000000000 Binary files a/docs/images/deploy-chart/overview-of-charts/deploy-chart.jpg and /dev/null differ diff --git a/docs/images/deploy-chart/overview-of-charts/edit_chart1.jpg b/docs/images/deploy-chart/overview-of-charts/edit_chart1.jpg deleted file mode 100644 index 6c5d90e38d..0000000000 Binary files a/docs/images/deploy-chart/overview-of-charts/edit_chart1.jpg and /dev/null differ diff --git a/docs/images/deploy-chart/overview-of-charts/edit_group.jpg b/docs/images/deploy-chart/overview-of-charts/edit_group.jpg deleted file mode 100644 index 8490838613..0000000000 Binary files a/docs/images/deploy-chart/overview-of-charts/edit_group.jpg and /dev/null differ diff --git a/docs/images/deploy-chart/overview-of-charts/edit_group2.jpg b/docs/images/deploy-chart/overview-of-charts/edit_group2.jpg deleted file mode 100644 index e592ee4875..0000000000 Binary files a/docs/images/deploy-chart/overview-of-charts/edit_group2.jpg and /dev/null differ diff --git a/docs/images/deploy-chart/overview-of-charts/readme.jpg b/docs/images/deploy-chart/overview-of-charts/readme.jpg deleted file mode 100644 index 08c4da0ca6..0000000000 Binary files a/docs/images/deploy-chart/overview-of-charts/readme.jpg and /dev/null differ diff --git a/docs/images/deploy-chart/overview-of-charts/screen2.jpg b/docs/images/deploy-chart/overview-of-charts/screen2.jpg deleted file mode 100644 index c3d05b9280..0000000000 Binary files a/docs/images/deploy-chart/overview-of-charts/screen2.jpg and /dev/null differ diff --git a/docs/images/deploy-chart/overview-of-charts/select_charts.jpg b/docs/images/deploy-chart/overview-of-charts/select_charts.jpg deleted file mode 100644 index 46f6495d7b..0000000000 Binary files a/docs/images/deploy-chart/overview-of-charts/select_charts.jpg and /dev/null differ diff --git a/docs/images/deploy-chart/overview-of-charts/select_charts2.jpg b/docs/images/deploy-chart/overview-of-charts/select_charts2.jpg deleted file mode 100644 index 6954e5d2cb..0000000000 Binary files a/docs/images/deploy-chart/overview-of-charts/select_charts2.jpg and /dev/null differ diff --git a/docs/images/deploy-chart/overview-of-charts/update-and-deploy.jpg b/docs/images/deploy-chart/overview-of-charts/update-and-deploy.jpg deleted file mode 100644 index 8a56fb4a6b..0000000000 Binary files a/docs/images/deploy-chart/overview-of-charts/update-and-deploy.jpg and /dev/null differ diff --git a/docs/images/deploy-chart/overview-of-charts/values.jpg b/docs/images/deploy-chart/overview-of-charts/values.jpg deleted file mode 100644 index efe282fe78..0000000000 Binary files a/docs/images/deploy-chart/overview-of-charts/values.jpg and /dev/null differ diff --git a/docs/images/deploying-application/triggering-cd/cd-deploy-console.jpg b/docs/images/deploying-application/triggering-cd/cd-deploy-console.jpg deleted file mode 100644 index 2548604f02..0000000000 Binary files a/docs/images/deploying-application/triggering-cd/cd-deploy-console.jpg and /dev/null differ diff --git a/docs/images/deploying-application/triggering-cd/deployed-app-details.jpg b/docs/images/deploying-application/triggering-cd/deployed-app-details.jpg deleted file mode 100644 index a23e37662f..0000000000 Binary files a/docs/images/deploying-application/triggering-cd/deployed-app-details.jpg and /dev/null differ diff --git a/docs/images/deploying-application/triggering-cd/trigger-select-image.jpg b/docs/images/deploying-application/triggering-cd/trigger-select-image.jpg deleted file mode 100644 index 67b393d08f..0000000000 Binary files a/docs/images/deploying-application/triggering-cd/trigger-select-image.jpg and /dev/null differ diff --git a/docs/images/deploying-application/triggering-ci/ci-build-histroy-artifact.jpg b/docs/images/deploying-application/triggering-ci/ci-build-histroy-artifact.jpg deleted file mode 100644 index 0fd1507763..0000000000 Binary files a/docs/images/deploying-application/triggering-ci/ci-build-histroy-artifact.jpg and /dev/null differ diff --git a/docs/images/deploying-application/triggering-ci/ci-build-histroy-source-code.jpg b/docs/images/deploying-application/triggering-ci/ci-build-histroy-source-code.jpg deleted file mode 100644 index 8e41509859..0000000000 Binary files a/docs/images/deploying-application/triggering-ci/ci-build-histroy-source-code.jpg and /dev/null differ diff --git a/docs/images/deploying-application/triggering-ci/ci-build-histroy.jpg b/docs/images/deploying-application/triggering-ci/ci-build-histroy.jpg deleted file mode 100644 index c32a6648da..0000000000 Binary files a/docs/images/deploying-application/triggering-ci/ci-build-histroy.jpg and /dev/null differ diff --git a/docs/images/deploying-application/triggering-ci/running-build.jpg b/docs/images/deploying-application/triggering-ci/running-build.jpg deleted file mode 100644 index 50bf1f81ef..0000000000 Binary files a/docs/images/deploying-application/triggering-ci/running-build.jpg and /dev/null differ diff --git a/docs/images/deploying-application/triggering-ci/start-build.jpg b/docs/images/deploying-application/triggering-ci/start-build.jpg deleted file mode 100644 index 5aed0bb481..0000000000 Binary files a/docs/images/deploying-application/triggering-ci/start-build.jpg and /dev/null differ diff --git a/docs/images/deploying-application/triggering-ci/trigger-console.jpg b/docs/images/deploying-application/triggering-ci/trigger-console.jpg deleted file mode 100644 index da9501605e..0000000000 Binary files a/docs/images/deploying-application/triggering-ci/trigger-console.jpg and /dev/null differ diff --git a/docs/images/global-configurations/chart-repo/gc-add-chart.png b/docs/images/global-configurations/chart-repo/gc-add-chart.png deleted file mode 100644 index 13f5917a98..0000000000 Binary files a/docs/images/global-configurations/chart-repo/gc-add-chart.png and /dev/null differ diff --git a/docs/images/global-configurations/chart-repo/gc-chart-config-password.png b/docs/images/global-configurations/chart-repo/gc-chart-config-password.png deleted file mode 100644 index e2eb9ffe21..0000000000 Binary files a/docs/images/global-configurations/chart-repo/gc-chart-config-password.png and /dev/null differ diff --git a/docs/images/global-configurations/chart-repo/gc-chart-configure-anonymous.png b/docs/images/global-configurations/chart-repo/gc-chart-configure-anonymous.png deleted file mode 100644 index 335f783040..0000000000 Binary files a/docs/images/global-configurations/chart-repo/gc-chart-configure-anonymous.png and /dev/null differ diff --git a/docs/images/global-configurations/chart-repo/gc-chart-configure-user.png b/docs/images/global-configurations/chart-repo/gc-chart-configure-user.png deleted file mode 100644 index e609674df4..0000000000 Binary files a/docs/images/global-configurations/chart-repo/gc-chart-configure-user.png and /dev/null differ diff --git a/docs/images/global-configurations/chart-repo/gc-chart-list.png b/docs/images/global-configurations/chart-repo/gc-chart-list.png deleted file mode 100644 index 2bfbaf559e..0000000000 Binary files a/docs/images/global-configurations/chart-repo/gc-chart-list.png and /dev/null differ diff --git a/docs/images/global-configurations/chart-repo/gc-edit-chart.png b/docs/images/global-configurations/chart-repo/gc-edit-chart.png deleted file mode 100644 index cc0de6e0e3..0000000000 Binary files a/docs/images/global-configurations/chart-repo/gc-edit-chart.png and /dev/null differ diff --git a/docs/images/global-configurations/cluster-and-environments/gc-cluster-add-environment.png b/docs/images/global-configurations/cluster-and-environments/gc-cluster-add-environment.png deleted file mode 100644 index e8b4f0f77d..0000000000 Binary files a/docs/images/global-configurations/cluster-and-environments/gc-cluster-add-environment.png and /dev/null differ diff --git a/docs/images/global-configurations/cluster-and-environments/gc-cluster-add.png b/docs/images/global-configurations/cluster-and-environments/gc-cluster-add.png deleted file mode 100644 index b3e2392848..0000000000 Binary files a/docs/images/global-configurations/cluster-and-environments/gc-cluster-add.png and /dev/null differ diff --git a/docs/images/global-configurations/cluster-and-environments/gc-cluster-agents-details.png b/docs/images/global-configurations/cluster-and-environments/gc-cluster-agents-details.png deleted file mode 100644 index 840e0c2b6a..0000000000 Binary files a/docs/images/global-configurations/cluster-and-environments/gc-cluster-agents-details.png and /dev/null differ diff --git a/docs/images/global-configurations/cluster-and-environments/gc-cluster-agents.png b/docs/images/global-configurations/cluster-and-environments/gc-cluster-agents.png deleted file mode 100644 index a9f46638ae..0000000000 Binary files a/docs/images/global-configurations/cluster-and-environments/gc-cluster-agents.png and /dev/null differ diff --git a/docs/images/global-configurations/cluster-and-environments/gc-cluster-configure-anonymous.png b/docs/images/global-configurations/cluster-and-environments/gc-cluster-configure-anonymous.png deleted file mode 100644 index 7e95887c89..0000000000 Binary files a/docs/images/global-configurations/cluster-and-environments/gc-cluster-configure-anonymous.png and /dev/null differ diff --git a/docs/images/global-configurations/cluster-and-environments/gc-cluster-configure.png b/docs/images/global-configurations/cluster-and-environments/gc-cluster-configure.png deleted file mode 100644 index d60071cfd5..0000000000 Binary files a/docs/images/global-configurations/cluster-and-environments/gc-cluster-configure.png and /dev/null differ diff --git a/docs/images/global-configurations/cluster-and-environments/gc-cluster-update-environment.png b/docs/images/global-configurations/cluster-and-environments/gc-cluster-update-environment.png deleted file mode 100644 index 43535e0441..0000000000 Binary files a/docs/images/global-configurations/cluster-and-environments/gc-cluster-update-environment.png and /dev/null differ diff --git a/docs/images/global-configurations/docker-registries/gc-docker-add.png b/docs/images/global-configurations/docker-registries/gc-docker-add.png deleted file mode 100644 index 555de5f6d7..0000000000 Binary files a/docs/images/global-configurations/docker-registries/gc-docker-add.png and /dev/null differ diff --git a/docs/images/global-configurations/docker-registries/gc-docker-configure-aws.png b/docs/images/global-configurations/docker-registries/gc-docker-configure-aws.png deleted file mode 100644 index e5efe105fe..0000000000 Binary files a/docs/images/global-configurations/docker-registries/gc-docker-configure-aws.png and /dev/null differ diff --git a/docs/images/global-configurations/docker-registries/gc-docker-configure-docker-hub.png b/docs/images/global-configurations/docker-registries/gc-docker-configure-docker-hub.png deleted file mode 100644 index e88d447b80..0000000000 Binary files a/docs/images/global-configurations/docker-registries/gc-docker-configure-docker-hub.png and /dev/null differ diff --git a/docs/images/global-configurations/docker-registries/gc-docker-configure-other.png b/docs/images/global-configurations/docker-registries/gc-docker-configure-other.png deleted file mode 100644 index 08f95215b0..0000000000 Binary files a/docs/images/global-configurations/docker-registries/gc-docker-configure-other.png and /dev/null differ diff --git a/docs/images/global-configurations/git-accounts/gc-add-gitaccount.png b/docs/images/global-configurations/git-accounts/gc-add-gitaccount.png deleted file mode 100644 index d5549dfc3d..0000000000 Binary files a/docs/images/global-configurations/git-accounts/gc-add-gitaccount.png and /dev/null differ diff --git a/docs/images/global-configurations/git-accounts/gc-added-git-accounts.png b/docs/images/global-configurations/git-accounts/gc-added-git-accounts.png deleted file mode 100644 index 84c0f259cd..0000000000 Binary files a/docs/images/global-configurations/git-accounts/gc-added-git-accounts.png and /dev/null differ diff --git a/docs/images/global-configurations/git-accounts/gc-edit-git-account.png b/docs/images/global-configurations/git-accounts/gc-edit-git-account.png deleted file mode 100644 index 97b596c545..0000000000 Binary files a/docs/images/global-configurations/git-accounts/gc-edit-git-account.png and /dev/null differ diff --git a/docs/images/global-configurations/git-accounts/gc-git-account-configure-password.png b/docs/images/global-configurations/git-accounts/gc-git-account-configure-password.png deleted file mode 100644 index 2b45ad3345..0000000000 Binary files a/docs/images/global-configurations/git-accounts/gc-git-account-configure-password.png and /dev/null differ diff --git a/docs/images/global-configurations/git-accounts/gc-git-account-configure-user-auth.png b/docs/images/global-configurations/git-accounts/gc-git-account-configure-user-auth.png deleted file mode 100644 index d7bb5c7a4b..0000000000 Binary files a/docs/images/global-configurations/git-accounts/gc-git-account-configure-user-auth.png and /dev/null differ diff --git a/docs/images/global-configurations/git-accounts/gc-git-account-configure.png b/docs/images/global-configurations/git-accounts/gc-git-account-configure.png deleted file mode 100644 index 7716dba60d..0000000000 Binary files a/docs/images/global-configurations/git-accounts/gc-git-account-configure.png and /dev/null differ diff --git a/docs/images/global-configurations/manage-notification/gc-noitfication-add-notification-configuration-select-event.jpg b/docs/images/global-configurations/manage-notification/gc-noitfication-add-notification-configuration-select-event.jpg deleted file mode 100644 index 87cb86ebfc..0000000000 Binary files a/docs/images/global-configurations/manage-notification/gc-noitfication-add-notification-configuration-select-event.jpg and /dev/null differ diff --git a/docs/images/global-configurations/manage-notification/gc-noitfication-add-notification-configuration-select-event2.jpg b/docs/images/global-configurations/manage-notification/gc-noitfication-add-notification-configuration-select-event2.jpg deleted file mode 100644 index db9e313880..0000000000 Binary files a/docs/images/global-configurations/manage-notification/gc-noitfication-add-notification-configuration-select-event2.jpg and /dev/null differ diff --git a/docs/images/global-configurations/manage-notification/gc-noitfication-add-notification-configuration.jpg b/docs/images/global-configurations/manage-notification/gc-noitfication-add-notification-configuration.jpg deleted file mode 100644 index 24470c8786..0000000000 Binary files a/docs/images/global-configurations/manage-notification/gc-noitfication-add-notification-configuration.jpg and /dev/null differ diff --git a/docs/images/global-configurations/manage-notification/gc-noitfication-add-notification.jpg b/docs/images/global-configurations/manage-notification/gc-noitfication-add-notification.jpg deleted file mode 100644 index 9a8244e5c3..0000000000 Binary files a/docs/images/global-configurations/manage-notification/gc-noitfication-add-notification.jpg and /dev/null differ diff --git a/docs/images/global-configurations/manage-notification/gc-noitfication-condfiguration-add-slack.jpg b/docs/images/global-configurations/manage-notification/gc-noitfication-condfiguration-add-slack.jpg deleted file mode 100644 index 95897b3c40..0000000000 Binary files a/docs/images/global-configurations/manage-notification/gc-noitfication-condfiguration-add-slack.jpg and /dev/null differ diff --git a/docs/images/global-configurations/manage-notification/gc-noitfication-condfiguration-add.jpg b/docs/images/global-configurations/manage-notification/gc-noitfication-condfiguration-add.jpg deleted file mode 100644 index d4719595e8..0000000000 Binary files a/docs/images/global-configurations/manage-notification/gc-noitfication-condfiguration-add.jpg and /dev/null differ diff --git a/docs/images/global-configurations/manage-notification/gc-noitfication-condfiguration-configure-slack.jpg b/docs/images/global-configurations/manage-notification/gc-noitfication-condfiguration-configure-slack.jpg deleted file mode 100644 index 82eebc4eb6..0000000000 Binary files a/docs/images/global-configurations/manage-notification/gc-noitfication-condfiguration-configure-slack.jpg and /dev/null differ diff --git a/docs/images/global-configurations/manage-notification/gc-noitfication-condfiguration-ses-confige.jpg b/docs/images/global-configurations/manage-notification/gc-noitfication-condfiguration-ses-confige.jpg deleted file mode 100644 index ec208171f3..0000000000 Binary files a/docs/images/global-configurations/manage-notification/gc-noitfication-condfiguration-ses-confige.jpg and /dev/null differ diff --git a/docs/images/global-configurations/manage-notification/gc-noitfication-condfiguration-tab.jpg b/docs/images/global-configurations/manage-notification/gc-noitfication-condfiguration-tab.jpg deleted file mode 100644 index bb3dc5d3a9..0000000000 Binary files a/docs/images/global-configurations/manage-notification/gc-noitfication-condfiguration-tab.jpg and /dev/null differ diff --git a/docs/images/global-configurations/projects/gc-project.png b/docs/images/global-configurations/projects/gc-project.png deleted file mode 100644 index 470fdc831f..0000000000 Binary files a/docs/images/global-configurations/projects/gc-project.png and /dev/null differ diff --git a/docs/images/global-configurations/user-access/gc-user-access-add-group-configure.jpg b/docs/images/global-configurations/user-access/gc-user-access-add-group-configure.jpg deleted file mode 100644 index 9a57485cc7..0000000000 Binary files a/docs/images/global-configurations/user-access/gc-user-access-add-group-configure.jpg and /dev/null differ diff --git a/docs/images/global-configurations/user-access/gc-user-access-add-group-edit-configure.jpg b/docs/images/global-configurations/user-access/gc-user-access-add-group-edit-configure.jpg deleted file mode 100644 index 642ac38839..0000000000 Binary files a/docs/images/global-configurations/user-access/gc-user-access-add-group-edit-configure.jpg and /dev/null differ diff --git a/docs/images/global-configurations/user-access/gc-user-access-add-group.jpg b/docs/images/global-configurations/user-access/gc-user-access-add-group.jpg deleted file mode 100644 index cca177a83b..0000000000 Binary files a/docs/images/global-configurations/user-access/gc-user-access-add-group.jpg and /dev/null differ diff --git a/docs/images/global-configurations/user-access/gc-user-access-add-user.jpg b/docs/images/global-configurations/user-access/gc-user-access-add-user.jpg deleted file mode 100644 index d40e964fef..0000000000 Binary files a/docs/images/global-configurations/user-access/gc-user-access-add-user.jpg and /dev/null differ diff --git a/docs/images/global-configurations/user-access/gc-user-access-configure-chart-permission-edit.jpg b/docs/images/global-configurations/user-access/gc-user-access-configure-chart-permission-edit.jpg deleted file mode 100644 index f2fde3f4c8..0000000000 Binary files a/docs/images/global-configurations/user-access/gc-user-access-configure-chart-permission-edit.jpg and /dev/null differ diff --git a/docs/images/global-configurations/user-access/gc-user-access-configure-chart-permission-select-chart.jpg b/docs/images/global-configurations/user-access/gc-user-access-configure-chart-permission-select-chart.jpg deleted file mode 100644 index a717ee1e61..0000000000 Binary files a/docs/images/global-configurations/user-access/gc-user-access-configure-chart-permission-select-chart.jpg and /dev/null differ diff --git a/docs/images/global-configurations/user-access/gc-user-access-configure-chart-permission.jpg b/docs/images/global-configurations/user-access/gc-user-access-configure-chart-permission.jpg deleted file mode 100644 index 0603bba777..0000000000 Binary files a/docs/images/global-configurations/user-access/gc-user-access-configure-chart-permission.jpg and /dev/null differ diff --git a/docs/images/global-configurations/user-access/gc-user-access-configure-direct-permission.jpg b/docs/images/global-configurations/user-access/gc-user-access-configure-direct-permission.jpg deleted file mode 100644 index 89a64e7952..0000000000 Binary files a/docs/images/global-configurations/user-access/gc-user-access-configure-direct-permission.jpg and /dev/null differ diff --git a/docs/images/global-configurations/user-access/gc-user-access-edit-user-permission.jpg b/docs/images/global-configurations/user-access/gc-user-access-edit-user-permission.jpg deleted file mode 100644 index 36500c1408..0000000000 Binary files a/docs/images/global-configurations/user-access/gc-user-access-edit-user-permission.jpg and /dev/null differ diff --git a/docs/images/global-configurations/user-access/gc-user-access-superadmin-user.png b/docs/images/global-configurations/user-access/gc-user-access-superadmin-user.png deleted file mode 100644 index 99a4ca870c..0000000000 Binary files a/docs/images/global-configurations/user-access/gc-user-access-superadmin-user.png and /dev/null differ diff --git a/docs/images/namespaces-and-environments/environments1.jpg b/docs/images/namespaces-and-environments/environments1.jpg deleted file mode 100644 index d16d7e20ed..0000000000 Binary files a/docs/images/namespaces-and-environments/environments1.jpg and /dev/null differ diff --git a/docs/images/security-features/security-feature-app-details-vulnerability.png b/docs/images/security-features/security-feature-app-details-vulnerability.png deleted file mode 100644 index 8629c46d47..0000000000 Binary files a/docs/images/security-features/security-feature-app-details-vulnerability.png and /dev/null differ diff --git a/docs/images/security-features/security-feature-build-history-security.png b/docs/images/security-features/security-feature-build-history-security.png deleted file mode 100644 index f2569c96b8..0000000000 Binary files a/docs/images/security-features/security-feature-build-history-security.png and /dev/null differ diff --git a/docs/images/security-features/security-feature-deployed-image-1.png b/docs/images/security-features/security-feature-deployed-image-1.png deleted file mode 100755 index 1c32fa06fb..0000000000 Binary files a/docs/images/security-features/security-feature-deployed-image-1.png and /dev/null differ diff --git a/docs/images/security-features/security-feature-deployed-image-security.png b/docs/images/security-features/security-feature-deployed-image-security.png deleted file mode 100644 index 418278859c..0000000000 Binary files a/docs/images/security-features/security-feature-deployed-image-security.png and /dev/null differ diff --git a/docs/images/security-features/security-feature-deployed-image.png b/docs/images/security-features/security-feature-deployed-image.png deleted file mode 100644 index b93511e98d..0000000000 Binary files a/docs/images/security-features/security-feature-deployed-image.png and /dev/null differ diff --git a/docs/images/security-features/security-feature-global-security-policies-global.png b/docs/images/security-features/security-feature-global-security-policies-global.png deleted file mode 100644 index a533ffc703..0000000000 Binary files a/docs/images/security-features/security-feature-global-security-policies-global.png and /dev/null differ diff --git a/docs/images/security-features/security-feature-global-security-policies.png b/docs/images/security-features/security-feature-global-security-policies.png deleted file mode 100644 index 5bb2289746..0000000000 Binary files a/docs/images/security-features/security-feature-global-security-policies.png and /dev/null differ diff --git a/docs/images/security-features/security-feature-securitytab-list-vulnerability.png b/docs/images/security-features/security-feature-securitytab-list-vulnerability.png deleted file mode 100644 index 017c08fa4f..0000000000 Binary files a/docs/images/security-features/security-feature-securitytab-list-vulnerability.png and /dev/null differ diff --git a/docs/images/security-features/security-feature-securitytab-security-scan.png b/docs/images/security-features/security-feature-securitytab-security-scan.png deleted file mode 100644 index 93174a0307..0000000000 Binary files a/docs/images/security-features/security-feature-securitytab-security-scan.png and /dev/null differ diff --git a/docs/images/use-cases/connect-django-with-mysql-database/use-case-django-ingress-template.jpg b/docs/images/use-cases/connect-django-with-mysql-database/use-case-django-ingress-template.jpg deleted file mode 100644 index 2aff8733c6..0000000000 Binary files a/docs/images/use-cases/connect-django-with-mysql-database/use-case-django-ingress-template.jpg and /dev/null differ diff --git a/docs/images/use-cases/connect-django-with-mysql-database/use-case-django-view-edemo-data.jpg b/docs/images/use-cases/connect-django-with-mysql-database/use-case-django-view-edemo-data.jpg deleted file mode 100644 index 40ab55940c..0000000000 Binary files a/docs/images/use-cases/connect-django-with-mysql-database/use-case-django-view-edemo-data.jpg and /dev/null differ diff --git a/docs/images/use-cases/connect-expressjs-with-mongodb-database/use-case-expressjs-ingress-template.jpg b/docs/images/use-cases/connect-expressjs-with-mongodb-database/use-case-expressjs-ingress-template.jpg deleted file mode 100644 index b85b9f777b..0000000000 Binary files a/docs/images/use-cases/connect-expressjs-with-mongodb-database/use-case-expressjs-ingress-template.jpg and /dev/null differ diff --git a/docs/images/use-cases/connect-expressjs-with-mongodb-database/use-case-expressjs-view-demo-data.jpg b/docs/images/use-cases/connect-expressjs-with-mongodb-database/use-case-expressjs-view-demo-data.jpg deleted file mode 100644 index ab18a08ed9..0000000000 Binary files a/docs/images/use-cases/connect-expressjs-with-mongodb-database/use-case-expressjs-view-demo-data.jpg and /dev/null differ diff --git a/docs/images/use-cases/connect-expressjs-with-mongodb-database/use-case-expressjs-view-student-data-with-id.jpg b/docs/images/use-cases/connect-expressjs-with-mongodb-database/use-case-expressjs-view-student-data-with-id.jpg deleted file mode 100644 index c061312939..0000000000 Binary files a/docs/images/use-cases/connect-expressjs-with-mongodb-database/use-case-expressjs-view-student-data-with-id.jpg and /dev/null differ diff --git a/docs/images/use-cases/connect-springboot-with-mysql-database/use-cases-springboot-ingress-template.jpg b/docs/images/use-cases/connect-springboot-with-mysql-database/use-cases-springboot-ingress-template.jpg deleted file mode 100644 index 12e1d44495..0000000000 Binary files a/docs/images/use-cases/connect-springboot-with-mysql-database/use-cases-springboot-ingress-template.jpg and /dev/null differ diff --git a/docs/images/use-cases/connect-springboot-with-mysql-database/use-cases-springboot-view-student-data-with-id.jpg b/docs/images/use-cases/connect-springboot-with-mysql-database/use-cases-springboot-view-student-data-with-id.jpg deleted file mode 100644 index c2d9c5f3b3..0000000000 Binary files a/docs/images/use-cases/connect-springboot-with-mysql-database/use-cases-springboot-view-student-data-with-id.jpg and /dev/null differ diff --git a/docs/images/use-cases/connect-springboot-with-mysql-database/use-cases-springboot-view-student-data.jpg b/docs/images/use-cases/connect-springboot-with-mysql-database/use-cases-springboot-view-student-data.jpg deleted file mode 100644 index c061312939..0000000000 Binary files a/docs/images/use-cases/connect-springboot-with-mysql-database/use-cases-springboot-view-student-data.jpg and /dev/null differ diff --git a/docs/images/use-cases/devtron-generic-helm-chart-to-run-cron-job-or-one-time-job/use-case-chart-store.jpg b/docs/images/use-cases/devtron-generic-helm-chart-to-run-cron-job-or-one-time-job/use-case-chart-store.jpg deleted file mode 100644 index b5915b1413..0000000000 Binary files a/docs/images/use-cases/devtron-generic-helm-chart-to-run-cron-job-or-one-time-job/use-case-chart-store.jpg and /dev/null differ diff --git a/docs/images/use-cases/devtron-generic-helm-chart-to-run-cron-job-or-one-time-job/use-case-deploy-chart.jpg b/docs/images/use-cases/devtron-generic-helm-chart-to-run-cron-job-or-one-time-job/use-case-deploy-chart.jpg deleted file mode 100644 index 3762b296d0..0000000000 Binary files a/docs/images/use-cases/devtron-generic-helm-chart-to-run-cron-job-or-one-time-job/use-case-deploy-chart.jpg and /dev/null differ diff --git a/docs/images/use-cases/devtron-generic-helm-chart-to-run-cron-job-or-one-time-job/use-case-devtron-genric-configuration b/docs/images/use-cases/devtron-generic-helm-chart-to-run-cron-job-or-one-time-job/use-case-devtron-genric-configuration deleted file mode 100644 index 06d29473fb..0000000000 Binary files a/docs/images/use-cases/devtron-generic-helm-chart-to-run-cron-job-or-one-time-job/use-case-devtron-genric-configuration and /dev/null differ diff --git a/docs/reference/README.md b/docs/reference/README.md old mode 100644 new mode 100755 index 0b90557f91..6759fe76b8 --- a/docs/reference/README.md +++ b/docs/reference/README.md @@ -1,16 +1,20 @@ +--- +hide_table_of_contents: true +--- + # Additional Installation Resources Every environment is different, and you may want to tune, extend, or troubleshoot your installation. This section brings together all the extra resources you might need beyond the basic install: -* [Production Infra Recommendations](../setup/install/prod-infra.md) - Plan a stable, scalable Devtron setup in production. -* [Advanced Configurations](../setup/configurations/configurations-overview.md) - Learn how to adjust Devtron’s install and runtime behavior. - * [Installation Configurations](../setup/install/installation-configuration.md) - Fine-tune installation values for blob storage, node selectors and tolerations, StorageClass, etc. - * [Override Configurations](../setup/install/override-default-devtron-installation-configs.md) - Customize default settings. - * [Ingress Setup](../setup/install/ingress-setup.md) - Configure ingress for external access. -* [Install Devtron on Air-gapped Environment](../setup/install/install-devtron-in-airgapped-environment.md) - Steps to install Devtron in restricted/offline environments. -* [Devtron Kubernetes Desktop Client](../setup/install/install-devtron-Kubernetes-client.md) - Try Devtron locally without touching your cluster. -* [Installation Walkthrough on EKS, AKS, GKE](../setup/install/demo-tutorials.md) - Hands-on installation demos on EKS, AKS, and GKE. -* [Backup for Disaster Recovery](../setup/install/devtron-backup.md) - Protect your data and recover quickly. -* [FAQs](../setup/install/faq-on-installation.md) - Answers to common installation questions. +* **[Production Infra Recommendations](../setup/install/prod-infra.md)** - Plan a stable, scalable Devtron setup in production. +* **[Advanced Configurations](../setup/configurations/configurations-overview.md)** - Learn how to adjust Devtron’s install and runtime behavior. + * **[Installation Configurations](../setup/install/installation-configuration.md)** - Fine-tune installation values for blob storage, node selectors and tolerations, StorageClass, etc. + * **[Override Configurations](../setup/install/override-default-devtron-installation-configs.md)** - Customize default settings. + * **[Ingress Setup](../setup/install/ingress-setup.md)** - Configure ingress for external access. +* **[Install Devtron on Air-gapped Environment](../setup/install/install-devtron-in-airgapped-environment.md)** - Steps to install Devtron in restricted/offline environments. +* **[Devtron Kubernetes Desktop Client](../setup/install/install-devtron-Kubernetes-client.md)** - Try Devtron locally without touching your cluster. +* **[Installation Walkthrough on EKS, AKS, GKE](../setup/install/demo-tutorials.md)** - Hands-on installation demos on EKS, AKS, and GKE. +* **[Backup for Disaster Recovery](../setup/install/devtron-backup.md)** - Protect your data and recover quickly. +* **[FAQs](../setup/install/faq-on-installation.md)** - Answers to common installation questions. \ No newline at end of file diff --git a/docs/reference/glossary.md b/docs/reference/glossary.md old mode 100644 new mode 100755 index fff9b42799..c2e68f33c0 --- a/docs/reference/glossary.md +++ b/docs/reference/glossary.md @@ -4,17 +4,17 @@ An immutable blob of data generated as an output after the execution of a job, build, or deployment process, e.g., container image, helm chart. In Devtron, you can view the artifacts in the `Build History` and `Deployment History` of your application. Whereas, job artifacts are visible in the `Run history` of your job. -* Once a build is complete, you can view the build artifacts by going to Applications (choose your app) → Build History (tab) → (choose a pipeline and date of triggering the build) → Artifacts (tab). +* Once a build is complete, you can view the build artifacts by going to Application Management → Applications (choose your app) → Build History (tab) → (choose a pipeline and date of triggering the build) → Artifacts (tab). -* Once a deployment is complete, you can view the deployment artifacts by going to Applications (choose your app) → Deployment History (tab) → (choose an environment and date of deployment) → Artifacts (tab). +* Once a deployment is complete, you can view the deployment artifacts by going to Application Management → Applications (choose your app) → Deployment History (tab) → (choose an environment and date of deployment) → Artifacts (tab). -* Once a job is complete, you can view the job artifacts by going to Jobs → Run history (tab) → (choose a pipeline and date of triggering the build) → Artifacts (tab). +* Once a job is complete, you can view the job artifacts by going to Automation & Enablement → Jobs → Run history (tab) → (choose a pipeline and date of triggering the build) → Artifacts (tab). ### ArgoCD Apps ArgoCD Apps are the micro-services deployed using a [GitOps](#gitops) deployment tool named [Argo CD](https://argo-cd.readthedocs.io/en/stable/). -If ArgoCD applications are present in your cluster, they will appear in the [ArgoCD Apps listing](../user-guide/applications.md#enabling-argocd-app-listing). +If ArgoCD applications are present in your cluster, they will appear in the [ArgoCD Apps listing](../user-guide/infra-management/other-applications.md#enabling-argocd-app-listing). ### Deployment Template @@ -30,11 +30,11 @@ For building a docker image we require a [Dockerfile](#dockerfile) and a build c To build files from the root, use (.) as the build context. Or to refer a subdirectory, enter the path in the format `/myfolder` or `/myfolder/mysubfolder`. If the path is not set, the default path will be the root directory of selected git repository. -Go to Applications (choose your app) → App Configuration (tab) → Build Configuration → (choose 'I have a Dockerfile') → Set Build Context. +Go to Application Management → Applications (choose your app) → App Configuration (tab) → Build Configuration → (choose 'I have a Dockerfile') → Set Build Context. ### Build Pipeline -A series of automated steps that transform source code into a deployable container image. In Devtron, you can create a build pipeline by going to Applications (choose your app) → App Configuration (tab) → Workflow Editor → New Workflow. [Read More...](../user-guide/creating-application/workflow/ci-pipeline.md) +A series of automated steps that transform source code into a deployable container image. In Devtron, you can create a build pipeline by going to Application Management → Applications (choose your app) → App Configuration (tab) → Workflow Editor → New Workflow. [Read More...](../user-guide/creating-application/workflow/ci-pipeline.md) ### Chart Store @@ -64,7 +64,7 @@ An OCI-compliant registry can also store artifacts (such as helm charts). Here, ### Cordoning -Temporarily marking a node as unschedulable, preventing new pods from being assigned to it. In Devtron, you can cordon a node by going to Resource Browser → (choose a cluster) → Nodes → (click on a node) → Cordon (available in blue). [Read More...](../user-guide/resource-browser/nodes.md#cordon-a-node) +Temporarily marking a node as unschedulable, preventing new pods from being assigned to it. In Devtron, you can cordon a node by going to Infrastructure Management → Resource Browser → (choose a cluster) → Nodes → (click on a node) → Cordon (available in blue). [Read More...](../user-guide/resource-browser/nodes.md#cordon-a-node) ### CRD @@ -72,7 +72,7 @@ A Custom Resource Definition (CRD) allows you to add custom resource types to Ku ### CronJob -CronJob is used to create Jobs on a repeating schedule. It is commonly used for running periodic tasks with no manual intervention. In Devtron, you can view a list of cronjobs by going to Resource Browser → (choose a cluster) → Workloads → CronJob. [Read More...](../user-guide/creating-application/base-config/deployment-template/job-and-cronjob.md#id-2.-cronjob) +CronJob is used to create Jobs on a repeating schedule. It is commonly used for running periodic tasks with no manual intervention. In Devtron, you can view a list of cronjobs by going to Infrastructure Management → Resource Browser → (choose a cluster) → Workloads → CronJob. [Read More...](../user-guide/creating-application/base-config/deployment-template-types/job-and-cronjob.md#2-cronjob) ### Deployment Charts @@ -82,29 +82,29 @@ Devtron offers a variety of ready-made Helm charts for common tasks and function A Kubernetes object that ensures a specific pod runs on all or certain nodes within a cluster, often used for tasks such as logging or monitoring. -In Devtron, you can view a list of DaemonSets by going to Resource Browser → (choose a cluster) → Workloads → DaemonSet. +In Devtron, you can view a list of DaemonSets by going to Infrastructure Management → Resource Browser → (choose a cluster) → Workloads → DaemonSet. ### Deployment Strategy A defined approach for deploying updates or changes to applications. Devtron supports rolling updates, blue-green deployments, canary releases, and recreate strategy. -In Devtron, you can choose a deployment strategy by going to Applications (choose your app) → App Configuration (tab) → Workflow Editor → (edit deployment pipeline) → Deployment Strategy. [Read More...](../user-guide/creating-application/workflow/cd-pipeline.md#deployment-strategies) +In Devtron, you can choose a deployment strategy by going to Application Management → Applications (choose your app) → App Configuration (tab) → Workflow Editor → (edit deployment pipeline) → Deployment Strategy. [Read More...](../user-guide/creating-application/workflow/cd-pipeline.md#deployment-strategies) ### Devtron Apps -Devtron Apps are the micro-services deployed using Kubernetes-native CI/CD with Devtron. To create one, go to Applications → Create (button) → Custom App. +Devtron Apps are the micro-services deployed using Kubernetes-native CI/CD with Devtron. To create one, go to Application Management → Applications → Create (button) → Custom App. ### Dockerfile A script that defines how to build a Docker [container image](#image). It includes instructions to assemble the image's base, dependencies, and application code. It's recommended that you include a Dockerfile with your source code. -However, in case you don't have a Dockerfile, Devtron helps you create one. Go to Applications (choose your app) → App Configuration (tab) → Build Configuration. [Read More...](../user-guide/creating-application/docker-build-configuration.md#build-docker-image-by-creating-dockerfile) +However, in case you don't have a Dockerfile, Devtron helps you create one. Go to Application Management → Applications (choose your app) → App Configuration (tab) → Build Configuration. [Read More...](../user-guide/creating-application/docker-build-configuration.md#build-docker-image-by-creating-dockerfile) ### Draining Evacuating pods from a node before cordoning it, ensuring that running pods are gracefully rescheduled on other nodes. -In Devtron, you can drain a node by going to Resource Browser → (choose a cluster) → Nodes → (click on a node) → Drain (available in blue). [Read More...](../user-guide/resource-browser/nodes.md#drain-a-node) +In Devtron, you can drain a node by going to Infrastructure Management → Resource Browser → (choose a cluster) → Nodes → (click on a node) → Drain (available in blue). [Read More...](../user-guide/resource-browser/nodes.md#drain-a-node) ### Endpoints @@ -124,13 +124,13 @@ Similarly, the CPU and memory resources can be different for each environment. T ### External Links -You can add external links related to the application. For e.g., you can add Prometheus, Grafana, and many more to your application by going to Global Configurations → External Links. [Read More...](../user-guide/global-configurations/external-links.md) +You can add external links related to the application. For e.g., you can add Prometheus, Grafana, and many more to your application by going to Application Management → Configurations → External Links. [Read More...](../user-guide/global-configurations/external-links.md) ### FluxCD Apps FluxCD Apps are the micro-services deployed using a [GitOps](#gitops) deployment tool named [Flux CD](https://fluxcd.io/). -If FluxCD applications are present in your cluster, they will appear in the [FluxCD Apps listing](../user-guide/applications.md#view-external-fluxcd-app-listing). +If FluxCD applications are present in your cluster, they will appear in the [FluxCD Apps listing](../user-guide/infra-management/other-applications.md#view-external-fluxcd-app-listing). ### GitOps @@ -138,7 +138,7 @@ A methodology for managing and automating Kubernetes deployments using Git repos ### Helm Apps -Apps deployed using Helm Chart from the `Chart Store` section of Devtron. In Devtron, you can view such apps under a tab named `Helm Apps` in the Applications section. To create one, go to Applications → Create (button) → From Chart store. +Apps deployed using Helm Chart from the `Chart Store` section of Devtron. In Devtron, you can view such apps under a tab named `Helm Apps` in the Applications section. To create one, go to Application Management → Applications → Create (button) → From Chart store. ### Helm Charts/Packages @@ -180,19 +180,19 @@ In Devtron, you can view the manifest of K8s resources under `App Details` and a ### Material -In Git Repo, the source code of your application in a given commit is referred as material. The option to choose a Git material will be available in the CI stage under the `Build & Deploy` tab of your application. [Read More...](../user-guide/jobs/triggering-job.md#triggering-job-pipeline) +In Git Repo, the source code of your application in a given commit is referred as material. The option to choose a Git material will be available in the CI stage under the `Build & Deploy` tab of your application. [Read More...](../user-guide/jobs/triggering-job.md) ### Namespace A namespace is a way to organize and isolate resources within a Kubernetes cluster. It provides a logical separation between different applications or environments within a cluster. -In Devtron, you can view a list of namespaces by going to Resource Browser → (choose a cluster) → Namespaces. +In Devtron, you can view a list of namespaces by going to Infrastructure Management → Resource Browser → (choose a cluster) → Namespaces. ### Node Taint A setting applied to a node that influences the scheduling of pods. Taints can restrict which pods are allowed to run on the node. -In Devtron, you can edit the taints of a node by going to Resource Browser → (choose a cluster) → Nodes → (click on a node) → Edit taints (available in blue). [Read More...](../user-guide/resource-browser/nodes.md#taint-a-node) +In Devtron, you can edit the taints of a node by going to Infrastructure Management → Resource Browser → (choose a cluster) → Nodes → (click on a node) → Edit taints (available in blue). [Read More...](../user-guide/resource-browser/nodes.md#taint-a-node) ### NodePort @@ -202,7 +202,7 @@ A Kubernetes service type that exposes a port on each node in the cluster, makin The physical or virtual machines that make up a Kubernetes cluster, where containers are scheduled to run. -In Devtron, you can view nodes by going to Resource Browser → (choose a cluster) → Nodes. [Read More...](../user-guide/resource-browser/nodes.md) +In Devtron, you can view nodes by going to Infrastructure Management → Resource Browser → (choose a cluster) → Nodes. [Read More...](../user-guide/resource-browser/nodes.md) ### Objects @@ -214,43 +214,43 @@ Devtron's [Resource Browser](../user-guide/resource-browser/README.md) helps you The smallest deployable unit in Kubernetes, consisting of one or more containers that share storage and network resources within the same context. -In Devtron, you can view a list of Pods by going to Resource Browser → (choose a cluster) → Workloads → Pod. In Devtron, you can create a pod by going to Resource Browser → Create Resource (button). +In Devtron, you can view a list of Pods by going to Infrastructure Management → Resource Browser → (choose a cluster) → Workloads → Pod. In Devtron, you can create a pod by going to Resource Browser → Create Resource (button). ### Pre-build Actions or processes performed before the actual image-building process in a containerized application's deployment pipeline, e.g., Jira Issue Validator. -In Devtron, you can configure pre-build actions by going to Applications (choose your app) → App Configuration (tab) → Workflow Editor → (edit build pipeline) → Pre-build stage (tab) → Add task (button). [Read More...](../user-guide/creating-application/workflow/pre-post-tasks.md#creating-prepost-tasks) +In Devtron, you can configure pre-build actions by going to Application Management → Applications (choose your app) → App Configuration (tab) → Workflow Editor → (edit build pipeline) → Pre-build stage (tab) → Add task (button). [Read More...](../user-guide/creating-application/workflow/pre-post-tasks.md#creating-prepost-tasks) ### Post-build Actions or processes performed after the [image](#image) building process in a containerized application's deployment pipeline, e.g., email notification about build status. -In Devtron, you can configure post-build actions by going to Applications (choose your app) → App Configuration (tab) → Workflow Editor → (edit build pipeline) → Post-build stage (tab) → Add task (button). [Read More...](../user-guide/creating-application/workflow/pre-post-tasks.md#creating-prepost-tasks) +In Devtron, you can configure post-build actions by going to Application Management → Applications (choose your app) → App Configuration (tab) → Workflow Editor → (edit build pipeline) → Post-build stage (tab) → Add task (button). [Read More...](../user-guide/creating-application/workflow/pre-post-tasks.md#creating-prepost-tasks) ### Pre-deployment Steps, scripts, or configurations executed before deploying a new version of an application to a Kubernetes cluster. -In Devtron, you can configure pre-deployment actions by going to Applications (choose your app) → App Configuration (tab) → Workflow Editor → (edit deployment pipeline) → Pre-deployment stage (tab) → Add task (button). [Read More...](../user-guide/creating-application/workflow/cd-pipeline.md#pre-deployment-stage) +In Devtron, you can configure pre-deployment actions by going to Application Management → Applications (choose your app) → App Configuration (tab) → Workflow Editor → (edit deployment pipeline) → Pre-deployment stage (tab) → Add task (button). [Read More...](../user-guide/creating-application/workflow/cd-pipeline.md#pre-deployment-stage) ### Post-deployment Actions, checks, or processes carried out after a new version of an application is successfully deployed to a Kubernetes cluster, e.g., Jira Issue Updater. -In Devtron, you can configure post-deployment actions by going to Applications (choose your app) → App Configuration (tab) → Workflow Editor → (edit deployment pipeline) → Post-deployment stage (tab) → Add task (button). [Read More...](../user-guide/creating-application/workflow/cd-pipeline.md#post-deployment-stage) +In Devtron, you can configure post-deployment actions by going to Application Management → Applications (choose your app) → App Configuration (tab) → Workflow Editor → (edit deployment pipeline) → Post-deployment stage (tab) → Add task (button). [Read More...](../user-guide/creating-application/workflow/cd-pipeline.md#post-deployment-stage) ### ReplicaSet A Kubernetes object responsible for maintaining a specified number of replica pods, ensuring high availability and desired scaling. -In Devtron, you can view the deployed ReplicaSet by going to Applications (choose your app) → App Details (tab) → K8s Resources (under Application Metrics section). +In Devtron, you can view the deployed ReplicaSet by going to Application Management → Applications (choose your app) → App Details (tab) → K8s Resources (under Application Metrics section). ### Repo Abbreviation for "repository". It could either signify a Git repo, container repo, or helm repo. -**Git repo** - A version control system (like Git) that stores and manages source code and other project assets. Once you create a git repo, you can add it in Applications (choose your app) → App Configuration (tab) → Git Repository → Add Git Repository. +**Git repo** - A version control system (like Git) that stores and manages source code and other project assets. Once you create a git repo, you can add it in Application Management → Applications (choose your app) → App Configuration (tab) → Git Repository → Add Git Repository. **Container repo** - A collection of [container images](#image), e.g., Docker repository. @@ -264,7 +264,7 @@ The process where you allocate resources (e.g., `memory`) to different environme The process of reverting a deployment to a previously known working version in case of errors or issues with the current version. -In Devtron, you can rollback a deployment by going to Applications (choose your app) → Build & Deploy (tab) → (click the rollback icon in the deployment pipeline). [Read More...](../user-guide/deploying-application/rollback-deployment.md) +In Devtron, you can rollback a deployment by going to Application Management → Applications (choose your app) → Build & Deploy (tab) → (click the rollback icon in the deployment pipeline). [Read More...](../user-guide/deploying-application/rollback-deployment.md) ### Secrets @@ -274,7 +274,7 @@ In Devtron, you get the option to add secrets in the `App Configuration` tab of ### Security Context -A Kubernetes resource configuration that defines security settings and permissions for pods and containers. A security context defines privilege and access control settings for a pod or container. [Read More...](../user-guide/creating-application/base-config/deployment-template/deployment.md#security-context) +A Kubernetes resource configuration that defines security settings and permissions for pods and containers. A security context defines privilege and access control settings for a pod or container. [Read More...](../user-guide/creating-application/base-config/deployment-template-types/deployment.md#security-context) ### Service @@ -284,14 +284,10 @@ When the network addresses of pods changes frequently, it becomes difficult to c A Kubernetes object designed for managing stateful applications, maintaining stable network identities and storage across pod rescheduling. -In Devtron, view the list of StatefulSets by going to Resource Browser → (choose a cluster) → Workloads → StatefulSet. [Read More...](../user-guide/creating-application/base-config/deployment-template/statefulset.md) +In Devtron, view the list of StatefulSets by going to Infrastructure Management → Resource Browser → (choose a cluster) → Workloads → StatefulSet. [Read More...](../user-guide/creating-application/base-config/deployment-template-types/statefulset.md) ### Target Platform The operating system and architecture for which the [container image](#image) will be built, e.g., ubuntu/arm64, linux/amd64. The image will only be compatible to run only on the target platform chosen in the build configuration. -In Devtron, you can choose the target platform by going to Applications (choose your app) → App Configuration (tab) → Build Configuration → (create build pipeline) → (click `Allow Override` button) → Target platform for the build (section). [Read More...](../user-guide/creating-application/docker-build-configuration.md) - - - - +In Devtron, you can choose the target platform by going to Application Management → Applications (choose your app) → App Configuration (tab) → Build Configuration → (create build pipeline) → (click `Allow Override` button) → Target platform for the build (section). [Read More...](../user-guide/creating-application/docker-build-configuration.md) \ No newline at end of file diff --git a/docs/reference/graviton.md b/docs/reference/graviton.md old mode 100644 new mode 100755 index 312cb74197..674c560968 --- a/docs/reference/graviton.md +++ b/docs/reference/graviton.md @@ -18,14 +18,18 @@ The utilization of Graviton machines for building Graviton architecture has led **AMD Build** ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/resources/graviton/amd/amd-build.png) +
Figure 1: Amd Build
-![Resource Utilization on AMD](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/resources/graviton/amd/build-amd.png) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/resources/graviton/amd/build-amd.png) +
Figure 2: Resource Utilization on AMD
**ARM Build** ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/resources/graviton/arm/arm-build.png) +
Figure 3: ARM Build
-![Resource Utilization on ARM](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/resources/graviton/arm/build-arm.png) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/resources/graviton/arm/build-arm.png) +
Figure 4: Resource Utilization on ARM

@@ -47,10 +51,12 @@ We have attached some snapshots of the resource utilization for the critical mic **AMD-Based** ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/resources/graviton/amd/devtron-amd.png) +
Figure 5: Orchestrator - AMD Based
**ARM-Based** ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/resources/graviton/arm/devtron-arm.png) +
Figure 6: Orchestrator - ARM Based
#### 2. argocd-server @@ -58,31 +64,33 @@ We have attached some snapshots of the resource utilization for the critical mic **AMD-Based** ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/resources/graviton/amd/amd-argo-server.png) +
Figure 7: Argocd Server - AMD Based
**ARM-Based** ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/resources/graviton/arm/argocd-server-arm.png) +
Figure 8: Argocd Server - ARM Based
#### 3. argocd-application-controller **AMD-Based** ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/resources/graviton/amd/amd-app-controller.png) +
Figure 9: Argocd Application Controller - AMD Based
**ARM-Based** ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/resources/graviton/arm/app-controller-arm.png) +
Figure 10: Argocd Application Controller - ARM Based
#### 4. argocd-repo-server **AMD-Based** ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/resources/graviton/amd/amd-repo-server.png) +
Figure 11: Argocd Repo Server - AMD Based
**ARM-Based** ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/resources/graviton/arm/repo-server-arm.png) - - - - +
Figure 12: Argocd Repo Server - ARM Based
\ No newline at end of file diff --git a/docs/reference/resources.md b/docs/reference/resources.md new file mode 100755 index 0000000000..f26ede220b --- /dev/null +++ b/docs/reference/resources.md @@ -0,0 +1,24 @@ +--- +hide_table_of_contents: true +--- + +# Resources + +This section groups reference material, troubleshooting notes, upgrade/install resources, integrations and plugins, use-cases and other supporting docs. + +## Quick links + +* **[Glossary](./glossary)** - Definitions for Devtron terminology and common concepts used across the docs. +* **[Tron CLI](../cli/README.md)** - Automate Devtron application and configuration tasks using the CLI. +* **[Troubleshooting Guide](../FAQs/devtron-troubleshoot)** - Common issues and troubleshooting steps. +* **[Upgrade Devtron](../setup/upgrade)** - Guides for upgrading Devtron releases and the UI. Also includes version-specific notes. +* **[Additional installation resources](README.md)** - Extra installation references and environment notes. +* **[Integrations](../user-guide/integrations)** - How to integrate Devtron with CI/CD, Grafana, notifications and vulnerability scanners. Examples: Grafana, ArgoCD, Notifications, Vulnerability scanning (Trivy/Clair). +* **[Pipeline plugins](../user-guide/plugins/plugin-list)** - Plugin reference and how to build/use plugins in CI/CD pipelines. Examples: Jenkins, GitHub PR updater, Semgrep, container-image-exporter, etc. +* **[Using Devtron Intelligence](../user-guide/devtron-intelligence.md)** - Docs and notes about installing Devtron Intelligence and how to use it for debugging. +* **[Enable GitOps Deployments with FluxCD](../user-guide/creating-application/fluxcd.md)** - Guides and examples for FluxCD-based GitOps usage. +* **[Use cases](../user-guide/use-cases)** - Practical examples for common application patterns. +* **[Telemetry](../user-guide/telemetry)** - How telemetry works and what data Devtron collects. +* **[Graviton](./graviton)** - Information on the Graviton reference (architecture / compatibility). +* **[Release Notes](https://github.com/devtron-labs/devtron/releases)** - Official release notes and changelog (external). +* **[Uninstall Devtron](../setup/install/uninstall-devtron)** - Steps to remove Devtron from a cluster. \ No newline at end of file diff --git a/docs/setup/configurations/configurations-overview.md b/docs/setup/configurations/configurations-overview.md old mode 100644 new mode 100755 index c33397ca66..2f700e099e --- a/docs/setup/configurations/configurations-overview.md +++ b/docs/setup/configurations/configurations-overview.md @@ -1,3 +1,7 @@ +--- +hide_table_of_contents: true +--- + # Advanced Configurations You can configure Devtron by using configuration files. Configuration files are YAML files which are user-friendly. @@ -9,4 +13,4 @@ There are two ways you can perform configurations while setting up Devtron dashb * [Override Configurations](../install/override-default-devtron-installation-configs.md) -You can also setup `ingress` while setting up Devtron dashboard. Refer [here](../install/ingress-setup.md) for ingress setup. +You can also setup `ingress` while setting up Devtron dashboard. Refer [here](../install/ingress-setup.md) for ingress setup. \ No newline at end of file diff --git a/docs/setup/detailed-installation-instructions.md b/docs/setup/detailed-installation-instructions.md deleted file mode 100644 index 07ba7aa5a5..0000000000 --- a/docs/setup/detailed-installation-instructions.md +++ /dev/null @@ -1,2 +0,0 @@ -# Detailed Installation instructions - diff --git a/docs/setup/getting-started/README.md b/docs/setup/getting-started/README.md deleted file mode 100644 index a5e8c6a16f..0000000000 --- a/docs/setup/getting-started/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Start Using devtron - diff --git a/docs/setup/getting-started/deploying-sample-springboot-app.md b/docs/setup/getting-started/deploying-sample-springboot-app.md deleted file mode 100644 index 7ffd688361..0000000000 --- a/docs/setup/getting-started/deploying-sample-springboot-app.md +++ /dev/null @@ -1,2 +0,0 @@ -# Deploying sample springboot app - diff --git a/docs/setup/getting-started/getting-started.md b/docs/setup/getting-started/getting-started.md deleted file mode 100644 index e29aac7355..0000000000 --- a/docs/setup/getting-started/getting-started.md +++ /dev/null @@ -1,58 +0,0 @@ -# Getting Started - -### Introduction - -Devtron is installed over a Kubernetes cluster. Once you create a Kubernetes cluster, Devtron can be installed standalone or along with integrations. This section includes information about the minimum requirements you need to install and use Devtron. - -*** - -### Create a Kubernetes Cluster - -{% hint style="info" %} -**Setting up a production-grade infrastructure?** - -Refer [Devtron's Production Infra Recommendations](../install/prod-infra.md) -{% endhint %} - -You can create any [Kubernetes cluster](https://kubernetes.io/docs/tutorials/kubernetes-basics/create-cluster/) (preferably K8s version 1.16 or higher) for installing Devtron. - -| Cloud Provider | Description | -| ---------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **AWS EKS** |

Create a cluster using AWS EKS

Note: Refer our documentation for installing Devtron on AWS EKS Cluster

| -| **Google Kubernetes Engine (GKE)** | Create a cluster using [GKE](https://cloud.google.com/kubernetes-engine/) | -| **Azure Kubernetes Service (AKS)** | Create a cluster using [AKS](https://learn.microsoft.com/en-us/azure/aks/) | -| **k3s - Lightweight Kubernetes** |

Create a cluster using k3s - Lightweight Kubernetes

Note: Refer our documentation for installing Devtron on Minikube, Microk8s, K3s, or Kind

| - -*** - -### Recommended Resources - -The minimum requirements for installing Devtron depends on the integrations you need. - -* For configuring small resources (to manage not more than 5 apps on Devtron): - - | Integration | CPU | Memory | - | --------------------------------------------- | :-: | :----: | - | **With CI/CD, GitOps** | 2 | 6 GB | - | **Minimal (Only Dashboard, No Integrations)** | 1 | 1 GB | -* For configuring medium/larger resources (to manage more than 5 apps on Devtron): - - | Integration | CPU | Memory | - | --------------------------------------------- | :-: | :----: | - | **With CI/CD, GitOps** | 6 | 13 GB | - | **Minimal (Only Dashboard, No Integrations)** | 2 | 3 GB | - -> Refer to the [Override Configurations](../install/override-default-devtron-installation-configs.md) section for more information. If you have questions, let us know on our Discord channel. [![Join us on Discord](https://img.shields.io/badge/Join%20us%20on-Discord-e01563.svg)](https://discord.gg/jsRG5qx2gp) - -{% hint style="warning" %} -#### Note - -* Please make sure that the recommended resources are available on your Kubernetes cluster before you proceed with Devtron installation. -* We do not recommend using burstable CPU VMs (T series in AWS, B series in Azure, or E2/N1 in GCP) for installing Devtron, as they may lead to inconsistent performance. -{% endhint %} - -{% hint style="success" %} -#### Next Step - -[Install Devtron on your Kubernetes Cluster](../install/) -{% endhint %} diff --git a/docs/setup/getting-started/global-configurations.md b/docs/setup/getting-started/global-configurations.md deleted file mode 100644 index 733bef0b61..0000000000 --- a/docs/setup/getting-started/global-configurations.md +++ /dev/null @@ -1,2 +0,0 @@ -# Global Configurations - diff --git a/docs/setup/getting-started/initial-setup.md b/docs/setup/getting-started/initial-setup.md new file mode 100755 index 0000000000..b39fab5aa9 --- /dev/null +++ b/docs/setup/getting-started/initial-setup.md @@ -0,0 +1,54 @@ +# Initial Setup + +### Introduction + +Devtron is installed over a Kubernetes cluster. Once you create a Kubernetes cluster, Devtron can be installed standalone or along with integrations. This section includes information about the minimum requirements you need to install and use Devtron. + +--- + +### Create a Kubernetes Cluster + +:::info +**Setting up a production-grade infrastructure?** + +Refer [Devtron's Production Infra Recommendations](../install/prod-infra.md) +::: + +You can create any [Kubernetes cluster](https://kubernetes.io/docs/tutorials/kubernetes-basics/create-cluster/) (preferably K8s version 1.16 or higher) for installing Devtron. + +| Cloud Provider | | +| ---------------------------------- | -------------------------------------------------------- | +| **AWS EKS** |

Create a cluster using [AWS EKS](https://docs.aws.amazon.com/eks/latest/userguide/getting-started-console.html)

Note: [Refer our documentation](http://github.com/devtron-labs/devtron/blob/b33a37bb608d07966c8f8b89e4f59287db873c6c/docs/setup/install/install-devtron-on-aws-eks.md) for installing Devtron on AWS EKS Cluster

| +| **Google Kubernetes Engine (GKE)** | Create a cluster using [GKE](https://cloud.google.com/kubernetes-engine/) | +| **Azure Kubernetes Service (AKS)** | Create a cluster using [AKS](https://learn.microsoft.com/en-us/azure/aks/) | +| **k3s - Lightweight Kubernetes** |

Create a cluster using [k3s - Lightweight Kubernetes](https://devtron.ai/blog/deploy-your-applications-over-k3s-lightweight-kubernetes-in-no-time/)

Note: [Refer our documentation](../install/devtron-oss.md) for installing Devtron on Minikube, Microk8s, K3s, or Kind

| + +--- + +### Recommended Resources + +The minimum requirements for installing Devtron depends on the integrations you need. + +* For configuring small resources (to manage not more than 5 apps on Devtron): + + | Integration | CPU | Memory | + | --------------------------------------------- | :-: | :----: | + | **With CI/CD, GitOps** | 2 | 6 GB | + | **Minimal (Only Dashboard, No Integrations)** | 1 | 1 GB | +* For configuring medium/larger resources (to manage more than 5 apps on Devtron): + + | Integration | CPU | Memory | + | --------------------------------------------- | :-: | :----: | + | **With CI/CD, GitOps** | 6 | 13 GB | + | **Minimal (Only Dashboard, No Integrations)** | 2 | 3 GB | + +> Refer to the [Override Configurations](../install/override-default-devtron-installation-configs.md) section for more information. If you have questions, let us know on our Discord channel. [![](https://img.shields.io/badge/Join%20us%20on-Discord-e01563.svg)](https://discord.gg/jsRG5qx2gp) + +:::warning Note +* Please make sure that the recommended resources are available on your Kubernetes cluster before you proceed with Devtron installation. +* We do not recommend using burstable CPU VMs (T series in AWS, B series in Azure, or E2/N1 in GCP) for installing Devtron, as they may lead to inconsistent performance. +::: + +:::success Next Step +[Install Devtron on your Kubernetes Cluster](../install/) +::: \ No newline at end of file diff --git a/docs/setup/getting-started/installation-with-default-values.md b/docs/setup/getting-started/installation-with-default-values.md deleted file mode 100644 index 995f288425..0000000000 --- a/docs/setup/getting-started/installation-with-default-values.md +++ /dev/null @@ -1,2 +0,0 @@ -# Installation with default values - diff --git a/docs/setup/getting-started/other-quickstart-apps.md b/docs/setup/getting-started/other-quickstart-apps.md deleted file mode 100644 index 165f269aac..0000000000 --- a/docs/setup/getting-started/other-quickstart-apps.md +++ /dev/null @@ -1,2 +0,0 @@ -# Other quickstart apps - diff --git a/docs/setup/getting-started/why-devtron.md b/docs/setup/getting-started/why-devtron.md old mode 100644 new mode 100755 index 417ec0a894..17d702d03a --- a/docs/setup/getting-started/why-devtron.md +++ b/docs/setup/getting-started/why-devtron.md @@ -10,16 +10,10 @@ To improve the usage of Kubernetes, several tools are needed to be integrated. B This is where **Devtron** comes into the picture! -

+

The need to declaratively manage Kubernetes clusters and application delivery is what is driving **Devtron** on Kubernetes. Devtron is an open-source modular product that provides a `seamless` and `implementation-agnostic uniform interface`, that can be integrated with both open-source and commercial tools across the entire application lifecycle. -With Devtron, you can efficiently handle security, stability, cost, and more in a unified experience. - - - - - - +With Devtron, you can efficiently handle security, stability, cost, and more in a unified experience. \ No newline at end of file diff --git a/docs/setup/install/Install-devtron-on-Minikube-Microk8s-K3s-Kind.md b/docs/setup/install/Install-devtron-on-Minikube-Microk8s-K3s-Kind.md deleted file mode 100644 index 8f4171167f..0000000000 --- a/docs/setup/install/Install-devtron-on-Minikube-Microk8s-K3s-Kind.md +++ /dev/null @@ -1,284 +0,0 @@ -# Install Devtron on Minikube, Microk8s, K3s, Kind, Cloud VMs - -## Introduction - -You can install and try Devtron on a high-end machine or a Cloud VM. If you install it on a laptop/PC, it may start to respond slowly. - -{% hint style="success" %} - -Try Devtron Freemium to access all the enterprise features for free and forever, limited to adding one additional cluster. [Install Devtron Freemium](https://license.devtron.ai/dashboard) - -{% endhint %} - ---- - -## Tutorial - -{% embed url="https://www.youtube.com/watch?v=rKUymNJqcjA" caption="Installing Devtron on Minikube" %} - ---- - -## Add Helm Repo - -```bash -helm repo add devtron https://helm.devtron.ai -``` - ---- - -## Update Helm Repo - -```bash -helm repo update devtron -``` - ---- - -## For Minikube, MicroK8s, Kind, K3s - -{% hint style="warning" %} - -### Prerequisites - -Ensure you meet [all the requirements](../getting-started/getting-started.md#prerequisites) for installing Devtron. - -{% endhint %} - -### Installation Commands - -{% tabs %} - -{% tab title="Without Integrations" %} - -**Minikube/MicroK8s/Kind Cluster** - -To install Devtron on **Minikube/MicroK8s/Kind** cluster, run the following command: - -```bash -helm install devtron devtron/devtron-operator \ ---create-namespace --namespace devtroncd \ ---set components.devtron.service.type=NodePort -``` - -**K3s Cluster** - -To install Devtron on **K3s** cluster, run the following commands: - -```bash -kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/master/deploy/local-path-storage.yaml -``` - -```bash -helm install devtron devtron/devtron-operator \ ---create-namespace --namespace devtroncd \ ---set components.devtron.service.type=NodePort -``` - -{% endtab %} - -{% tab title="With CI/CD" %} - -**Minikube/MicroK8s/Kind Cluster** - -To install Devtron on **Minikube/MicroK8s/Kind** cluster, run the following command: - -```bash -helm install devtron devtron/devtron-operator \ ---create-namespace --namespace devtroncd \ ---set components.devtron.service.type=NodePort \ ---set installer.modules={cicd} -``` - -**K3s Cluster** - -To install Devtron on **K3s** cluster, run the following commands: - -```bash -kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/master/deploy/local-path-storage.yaml -``` - -```bash -helm install devtron devtron/devtron-operator \ ---create-namespace --namespace devtroncd \ ---set components.devtron.service.type=NodePort \ ---set installer.modules={cicd} -``` - -{% endtab %} - -{% tab title="With CI/CD and GitOps (Argo CD)" %} - -**Minikube/MicroK8s/Kind Cluster** - -To install Devtron on **Minikube/MicroK8s/Kind** cluster, run the following command: - -```bash -helm install devtron devtron/devtron-operator \ ---create-namespace --namespace devtroncd \ ---set components.devtron.service.type=NodePort \ ---set installer.modules={cicd} \ ---set argo-cd.enabled=true -``` - -**K3s Cluster** - -To install Devtron on **K3s** cluster, run the following commands: - -```bash -kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/master/deploy/local-path-storage.yaml -``` - -```bash -helm install devtron devtron/devtron-operator \ ---create-namespace --namespace devtroncd \ ---set components.devtron.service.type=NodePort \ ---set installer.modules={cicd} \ ---set argo-cd.enabled=true -``` - -{% endtab %} - -{% endtabs %} - -### Access Devtron Dashboard - -{% tabs %} -{% tab title="Minikube" %} - -To access the dashboard on **Minikube** cluster, run the following command: - -```bash -minikube service devtron-service --namespace devtroncd -``` - -This will directly open the dashboard URL in your browser - -{% endtab %} -{% tab title="MicroK8s/Kind/K3s Cluster" %} - -To access the dashboard on **MicroK8s/Kind/K3s** cluster, run the following command to port-forward the devtron service to port 8000: - -```bash -kubectl -n devtroncd port-forward service/devtron-service 8000:80 -``` - -After port-forwarding, you can access the dashboard at this URL: `http://127.0.0.1:8000` - -{% endtab %} -{% endtabs %} - -### Get Admin Credentials - -When you install Devtron for the first time, it creates a default admin user and password (with unrestricted access to Devtron). You can use those credentials to log in as an administrator. - -**Username**: `admin`
-**Password**: Run the following command to get the admin password: - -```bash -kubectl -n devtroncd get secret devtron-secret \ --o jsonpath='{.data.ADMIN_PASSWORD}' | base64 -d -``` - -You can also install integrations from the [Devtron Stack Manager](../../user-guide/integrations/README.md). - -{% hint style="info" %} - -#### Next Recommended Action - -When you install Devtron for the first time, it creates a default admin user and password (with unrestricted access to Devtron). You can use it to log in as an administrator. - -After the initial login, we recommend you set up any [Single Sign-On (SSO)](../../user-guide/global-configurations/sso-login.md) service like Google, GitHub, etc., and then add other users (including yourself). Subsequently, all the users can use the same SSO (e.g., GitHub) to log in to the Dashboard. - -{% endhint %} - ---- - -## For Cloud VM (AWS EC2, Azure VM, GCP VM) - -{% hint style="warning" %} - -### Prerequisites - -* Ensure you meet [all the requirements](../getting-started/getting-started.md#prerequisites) for installing Devtron. - -* It is recommended to use Cloud VM with 2vCPU+, 4GB+ free memory, 20GB+ storage, Compute Optimized VM type & Ubuntu Flavoured OS. - -{% endhint %} - -### Create MicroK8s Cluster - -```bash -sudo snap install microk8s --classic -sudo usermod -a -G microk8s $USER -sudo chown -f -R $USER ~/.kube -newgrp microk8s -microk8s enable dns storage helm3 -echo "alias kubectl='microk8s kubectl '" >> .bashrc -echo "alias helm='microk8s helm3 '" >> .bashrc -source .bashrc -``` - -### Installation Commands - -{% tabs %} - -{% tab title="Without Integrations" %} - -```bash -helm install devtron devtron/devtron-operator \ ---create-namespace --namespace devtroncd \ ---set components.devtron.service.type=NodePort -``` - -{% endtab %} - -{% tab title="With CI/CD" %} - -```bash -helm install devtron devtron/devtron-operator \ ---create-namespace --namespace devtroncd \ ---set components.devtron.service.type=NodePort \ ---set installer.modules={cicd} -``` - -{% endtab %} - -{% tab title="With CI/CD and GitOps (Argo CD)" %} - -```bash -helm install devtron devtron/devtron-operator \ ---create-namespace --namespace devtroncd \ ---set components.devtron.service.type=NodePort \ ---set installer.modules={cicd} \ ---set argo-cd.enabled=true -``` - -{% endtab %} - -{% endtabs %} - -### Get devtron-service Port Number - -```bash -kubectl get svc -n devtroncd devtron-service -o jsonpath='{.spec.ports[0].nodePort}' -``` - -Make sure that the port used by the devtron-service remain open in the VM's security group or network security group. - -You can also install integrations from the [Devtron Stack Manager](../../user-guide/integrations/README.md). - -{% hint style="info" %} - -#### Next Recommended Action - -When you install Devtron for the first time, it creates a default admin user and password (with unrestricted access to Devtron). You can use it to log in as an administrator. - -After the initial login, we recommend you set up any [Single Sign-On (SSO)](../../user-guide/global-configurations/sso-login.md) service like Google, GitHub, etc., and then add other users (including yourself). Subsequently, all the users can use the same SSO (e.g., GitHub) to log in to the Dashboard. - -{% endhint %} - -{% hint style="info" %} - -If you have questions, please let us know on our Discord channel. [![Join Discord](https://img.shields.io/badge/Join%20us%20on-Discord-e01563.svg)](https://discord.gg/jsRG5qx2gp) - -{% endhint %} \ No newline at end of file diff --git a/docs/setup/install/README.md b/docs/setup/install/README.md old mode 100644 new mode 100755 index 9011830d32..c77628ad71 --- a/docs/setup/install/README.md +++ b/docs/setup/install/README.md @@ -2,48 +2,16 @@ ## Introduction -Devtron can be installed on any [Kubernetes cluster](../getting-started/getting-started.md#create-a-kubernetes-cluster) of your choice. +Devtron can be installed on any [Kubernetes cluster](../getting-started/initial-setup.md#create-a-kubernetes-cluster) of your choice. The following tiers are available in Devtron: - - - - - - - - - - - - - - - - - - - - - - - - - -
TiersDescriptionInstallation Link
OSSOSS edition, with optional CI/CD and GitOps modules - - Install Devtron OSS - -
FreemiumAll enterprise features, limited to 1 cluster managed by Devtron - - Install Devtron Freemium - -
EnterpriseFull access to enterprise features, with multi-cluster support and enterprise-scale solutions - - Get Devtron Enterprise - -
+| Tiers | Description | Installation Link | +|------------|-----------------------------------------------------------------------------------------------|-------------------| +| OSS | OSS edition, with optional CI/CD and GitOps modules | [**Install Devtron OSS**](../install/devtron-oss.md) | +| Freemium | All enterprise features, limited to 1 cluster managed by Devtron | [**Install Devtron Freemium**](../install/devtron-freemium.md) | +| Enterprise | Full access to enterprise features, with multi-cluster support and enterprise-scale solutions | [**Get Devtron Enterprise**](https://devtron.ai/contact-sales) | + ## Additional Resources @@ -68,7 +36,7 @@ See the full guide here: [Install Devtron in Air-gapped Environment](install-dev Need help or demo? -* [Discord community for support](https://discord.gg/jsRG5qx2gp)[![Join Discord](https://img.shields.io/badge/Join%20us%20on-Discord-e01563.svg)](https://discord.gg/jsRG5qx2gp). +* [Discord community for support](https://discord.gg/jsRG5qx2gp) [![](https://img.shields.io/badge/Join%20us%20on-Discord-e01563.svg)](https://discord.gg/jsRG5qx2gp) * [Book time with our team](https://devtron.ai/demo) diff --git a/docs/setup/install/demo-tutorials.md b/docs/setup/install/demo-tutorials.md old mode 100644 new mode 100755 index 55b5ad1a66..33f1aa363e --- a/docs/setup/install/demo-tutorials.md +++ b/docs/setup/install/demo-tutorials.md @@ -6,7 +6,7 @@ Here we have demonstrated the installation of Devtron on popular cloud providers **Cloud Provider**: [Amazon Web Services (AWS)](https://aws.amazon.com/) -{% embed url="https://www.youtube.com/watch?v=eY2vudE5jFM" caption="Installing Devtron on AWS" %} +
--- @@ -14,7 +14,7 @@ Here we have demonstrated the installation of Devtron on popular cloud providers **Cloud Provider**: [Microsoft Azure](https://azure.microsoft.com/) -{% embed url="https://www.youtube.com/watch?v=8ZdhwJQ-IU4" caption="Installing Devtron on Azure" %} +
--- @@ -22,16 +22,13 @@ Here we have demonstrated the installation of Devtron on popular cloud providers **Cloud Provider**: [Google Cloud Platform (GCP)](https://console.cloud.google.com/) -{% embed url="https://www.youtube.com/watch?v=7UN_Fbo3VMM" caption="Installing Devtron on Google Cloud" %} +
--- -{% hint style="info" %} - -### Next Recommended Action - +:::info Next Recommended Action When you install Devtron for the first time, it creates a default admin user and password (with unrestricted access to Devtron). You can use it to log in as an administrator. After the initial login, we recommend you set up any [Single Sign-On (SSO)](../../user-guide/global-configurations/sso-login.md) service like Google, GitHub, etc., and then add other users (including yourself). Subsequently, all the users can use the same SSO (e.g., GitHub) to log in to the Dashboard. -{% endhint %} \ No newline at end of file +::: \ No newline at end of file diff --git a/docs/setup/install/devtron-backup.md b/docs/setup/install/devtron-backup.md old mode 100644 new mode 100755 index a0b2dc31ae..0c0be1288b --- a/docs/setup/install/devtron-backup.md +++ b/docs/setup/install/devtron-backup.md @@ -1,15 +1,16 @@ -## Devtron Backup +# Backup for Disaster Recovery Regular backups for Devtron PostgreSQL and ArgoCD are crucial components of a disaster recovery plan, as they protect against potential data loss due to unforeseen circumstances. This documentation provides instructions on how to take backups of Devtron and store them either on AWS S3 or Azure containers. 1. Go to the devtron chart store and search for `devtron-backups` chart. ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/backup/backup-chart-search.jpg) +
Figure 1: Search Chart
2. Select the `devtron-backups` and click `Configure & Deploy`. 3. Now follow either of the options described below according to your Cloud provider. -### AWS S3 Backup +## AWS S3 Backup To store Devtron backups on AWS S3, please follow these steps: @@ -18,23 +19,26 @@ To store Devtron backups on AWS S3, please follow these steps: 3. Obtain the access key and secret access key for the created user. 4. Configure the `devtron-backups` chart for AWS S3 by selecting the appropriate options: -![AWS Backup Configuration](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/backup/aws-backup-config.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/backup/aws-backup-config.jpg) +
Figure 2: AWS Backup Configuration
5. Deploy the chart, and the Devtron backup will be automatically uploaded to the AWS S3 bucket at the scheduled intervals. -### Azure Containers Backup +## Azure Containers Backup To store Devtron backups on Azure Containers, please follow these steps: 1. Create a storage account in Azure. 2. Within the storage account, create two containers for the Devtron backup. -3. Navigate to Security + Networking > Access Key section in Azure and copy the Access Key: +3. Navigate to Security + Networking → Access Key section in Azure and copy the Access Key: -![Azure Storage Account Key](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/backup/azure-sa-key.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/backup/azure-sa-key.jpg) +
Figure 3: Azure Storage Account Key
4. Configure the `devtron-backups` chart for Azure Containers by providing the Access Key: -![Azure Backup Configuration](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/backup/azure-backup-config.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/backup/azure-backup-config.jpg) +
Figure 4: Azure Backup Configuration
5. Before deploying the backup chart, ensure that `AWS.enabled` is set to `false`. This will ensure that Devtron backup will be automatically uploaded to the configured Azure containers on the scheduled intervals. diff --git a/docs/setup/install/devtron-freemium.md b/docs/setup/install/devtron-freemium.md old mode 100644 new mode 100755 index efdc85e85c..2ac3955e89 --- a/docs/setup/install/devtron-freemium.md +++ b/docs/setup/install/devtron-freemium.md @@ -11,14 +11,13 @@ With Devtron Freemium, you can access all the enterprise features limited to 1 c * Security scans * Policies related to approval, deployment, plugins, tags, infra...and many more. -{% hint style="info" %} -**Already using Devtron OSS?** +:::info Already using Devtron OSS? This guide is intended for fresh installation of **Devtron Freemium**.\ If you're currently using the [open-source (OSS) version of Devtron](../install/devtron-oss.md), we **do not recommend** upgrading your existing setup to Devtron Freemium. Instead, we suggest you to perform a fresh installation of Devtron Freemium on a separate cluster (following the steps below) for the best experience. -{% endhint %} +::: --- @@ -32,8 +31,11 @@ You can choose any of the two methods to sign up: [SSO](devtron-freemium.md#meth 1. Log in using **Google**, **GitHub**, or **Microsoft** SSO providers. Personal email accounts such as Gmail, Yahoo are not supported. - ![Figure 1: Selecting SSO Provider](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-license-dashboard-sso-v2.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-license-dashboard-sso-v2.jpg) +
Figure 1: Selecting SSO Provider
+ 2. Once logged in, the **Devtron License Dashboard** will open. + 3. Under **Tell Us About You**, fill the required basic details, and click **Next** to proceed to [Step 2: Install Devtron](devtron-freemium.md#step-2-install-devtron). ### Method 2: Sign up using Work Email @@ -42,42 +44,73 @@ Use this method if your email is not associated with any of the SSO options prov 1. Select **Continue with Email** to log in. - ![Figure 2: Selecting 'Continue with Email'](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-license-dashboard-email-v2.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-license-dashboard-email-v2.jpg) +
Figure 2: Selecting 'Continue with Email'
+ 2. Enter your work email and select **Send Login Link** - ![Figure 3: Entering Email](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-license-dashboard-enter-email-v2.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-license-dashboard-enter-email-v2.jpg) +
Figure 3: Entering Email
+ 3. A login link will be sent to the email address provided by you. If you do not receive the link, you can resend it after 30 seconds. **Note:** Your login link will be valid only for 10 minutes. - ![Figure 4: Sending Login Link](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/ent-trial/license-dashboard-resend-email.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/ent-trial/license-dashboard-resend-email.jpg) +
Figure 4: Sending Login Link
-{% hint style="info" %} +:::info **Did Not Receive Email?** * Check all sections of the mailbox, including the 'Spam' section. * If the email is in the Spam section, mark it as 'Not Spam'. -{% endhint %} +::: 4. Open the email and click **Login to License Dashboard**. - ![Figure 5: Email with Login Link](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/ent-trial/enterprise-license-email.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/ent-trial/enterprise-license-email.jpg) +
Figure 5: Email with Login Link
Once logged in, the **Devtron License Dashboard** will open. 5. Under **Tell Us About You**, fill the required basic details, and click **Next** to proceed to [Step 2: Install Devtron](devtron-freemium.md#step-2-install-devtron). - ![Figure 6: Entering the Details](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-enterprise-license-step-1.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-enterprise-license-step-1.jpg) +
Figure 6: Entering the Details
--- ## Step 2: Install Devtron -{% hint style="warning" %} -### Note +For convenience, Devtron Freemium offers you three installation options: + +* [**Option 1**: Install on own K8s Cluster](#option-1-install-on-own-k8s-cluster) +* [**Option 2**: Install via AWS Marketplace](#option-2-install-via-aws-marketplace) +* [**Option 3**: Devtron Cloud (SaaS)](#option-3-devtron-cloud-saas) + +The below table will help you identify the right option for you. + + +| If you want to… | Install on Own K8s Cluster | Via AWS Marketplace | Devtron Cloud (SaaS) | +| ----------------------------------------- | -------------------------- | --------------- | -------------------- | +| Get started in minutes with zero setup | ❌ | ❌ | ✅ | +| Use Devtron long term | ✅ | ✅ | ❌ | +| Evaluate Devtron quickly | ❌ | ❌ | ✅ | +| Run Devtron inside your own cloud account | ✅ | ✅ | ❌ | +| Use Devtron for production workloads | ✅ | ✅ | ❌ | +| Pay nothing for Devtron | ✅ | ✅ | ❌ (30-day trial) | + +### Option 1: Install on own K8s Cluster + +Choose this option if you want Devtron installed in your Kubernetes cluster. + +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/option1.jpg) +
Figure 7: Choosing 'Install on own K8s Cluster'
+ +:::warning Note We recommend installing Devtron on a separate Kubernetes cluster, since the cluster may run critical system services. Therefore, it should be kept separate from application workloads. Also ensure your `kubeconfig` is properly configured. See [Additional Installation Resources](../../reference/README.md) for production infra recommendations, air-gapped installs, blob storage, config overrides, StorageClass, Database, Ingress setup, backups, and more. -{% endhint %} +::: The installation commands are directly available on the [Devtron License Dashboard](https://license.devtron.ai/dashboard) for supported K8s distributions. @@ -89,7 +122,7 @@ The installation commands are directly available on the [Devtron License Dashboa Once Devtron is installed and you have the dashboard URL, click **Next** to proceed to [Step 3: Get License Key](devtron-freemium.md#step-3-get-license-key) -{% hint style="info" %} +:::info **Using MicroK8s/Kind/K3s/Cloud VMs? Want to Access Dashboard via NodePort? Or Locally from Remote VM?** * **Access via NodePort**: @@ -100,7 +133,7 @@ To obtain the Dashboard URL on MicroK8s/Kind/K3s/Cloud VMs using NodePort, run t kubectl get svc -n devtroncd devtron-service -o jsonpath='{.spec.ports[0].nodePort}' ``` -**Dashboard URL**: `http://:/dashboard` +**Dashboard URL**: `http://:/dashboard` --- @@ -114,8 +147,48 @@ kubectl config use-context # Set the correct context. kubectl -n devtroncd port-forward service/devtron-service 8000:80 ``` -**Dashboard URL**: `http://127.0.0.1:8000` -{% endhint %} +**Dashboard URL**: `http://127.0.0.1:8000` + +::: + +### Option 2: Install via AWS Marketplace + +Choose this option if you want a Devtron instance inside your AWS account with minimal setup effort. It will launch a preconfigured Devtron instance from AWS Marketplace. + +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/option2.jpg) +
Figure 8: Choosing 'Install via AWS Marketplace'
+ +
+ +:::caution +Since the instance runs inside your AWS account and infrastructure, you might incur infra costs. +::: + +### Option 3: Devtron Cloud (SaaS) + +Choose this option if you want to try Devtron without setting up any Kubernetes cluster. You will directly get the credentials to log in to Devtron. This is a 30-day trial meant for fair usage and not production workloads. + +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/option3.jpg) +
Figure 9: Choosing 'Devtron Cloud (SaaS)'
+ +* Click **Launch Devtron**. + + Devtron will provision the SaaS instance within a couple of minutes. The Dashboard URL and credentials will be shown on screen. + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/url-and-creds.jpg) +
Figure 10: Enter Installation Fingerprint
+ +* Click **Go to Devtron Dashboard** to open the Devtron login page. + + The username will be `admin`. Enter the password shown to you in the above step. + +:::caution +Instance will automatically hibernate after 72 hours of inactivity. +::: + +:::tip +Step 3 (given below) will not be applicable for **Devtron Cloud (SaaS)** as you already get the license key and credentials here. +::: --- @@ -123,7 +196,8 @@ kubectl -n devtroncd port-forward service/devtron-service 8000:80 You will now need to enter your Devtron **Installation Fingerprint** to generate a license key. -![Figure 7: Enter Installation Fingerprint](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-enterprise-license-step-3.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-enterprise-license-step-3.jpg) +
Figure 11: Enter Installation Fingerprint
### Get Devtron installation's fingerprint @@ -131,45 +205,53 @@ To get the **Installation Fingerprint**, follow the below steps: 1. Visit the Dashboard URL obtained in Step 2. - ![Figure 8: License Activation Screen](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/ent-trial/enterprise-license-fingerprint.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/ent-trial/enterprise-license-fingerprint.jpg) +
Figure 12: License Activation Screen
2. You will see an installation fingerprint that uniquely identifies your installation. Copy the fingerprint. - ![Figure 9: Copying Installation Fingerprint](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/ent-trial/enterprise-license-copy-fingerprint.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/ent-trial/enterprise-license-copy-fingerprint.jpg) +
Figure 13: Copying Installation Fingerprint
+ 3. Go back to the **License Dashboard** and paste the fingerprint you copied earlier and click **Get License Key**. - ![Figure 10: Pasting Installation Fingerprint](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-enterprise-license-paste-fingerprint.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-enterprise-license-paste-fingerprint.jpg) +
Figure 14: Pasting Installation Fingerprint
+ 4. Your license will be generated. Copy the license key. - ![Figure 11: Copying Generated License Key](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-enterprise-license-key-generated-2.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-enterprise-license-key-generated-2.jpg) +
Figure 15: Copying Generated License Key
-{% hint style="warning" %} +:::warning **Note** The license key you generate will be valid only for your Devtron Freemium installation. * Only one Devtron Freemium cluster per organization. * The license key is uniquely mapped to your installation fingerprint. -{% endhint %} +::: -{% hint style="danger" %} +:::danger **Warning** The license is bound to your Kubernetes cluster and cannot be transferred to another cluster. In case the cluster is deleted, you cannot claim freemium license on a new cluster. In that case, contact [support@devtron.ai](mailto:support@devtron.ai). -{% endhint %} +::: 5. Go back to your **Devtron Dashboard URL** page. Paste your license key under the **License Key** field, and click **Activate**. - ![Figure 12: Pasting License Key and Activating](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/ent-trial/enterprise-paste-license-key.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/ent-trial/enterprise-paste-license-key.jpg) +
Figure 16: Pasting License Key and Activating
6. Devtron Freemium will be activated, and you can log in to **Devtron Dashboard**. - ![Figure 13: Log in as Administrator](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/ent-trial/enterprise-license-login.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/ent-trial/enterprise-license-login.jpg) +
Figure 17: Log in as Administrator
-{% hint style="info" %} +:::info **Facing Issues?** Visit the [Troubleshoot](devtron-freemium.md#troubleshoot-issues) section to identify the issue or connect with [Devtron Support](mailto:support@devtron.ai). -{% endhint %} +::: --- @@ -177,7 +259,8 @@ Visit the [Troubleshoot](devtron-freemium.md#troubleshoot-issues) section to ide 1. After successful license activation, you will see the Devtron login page. - ![Figure 14: Devtron Login Page](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/ent-trial/enterprise-license-login-admin.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/ent-trial/enterprise-license-login-admin.jpg) +
Figure 18: Devtron Login Page
2. Initially, log in with the administrator credentials. By default, the username is **admin**. Run the following command to get the admin password: ```bash @@ -185,15 +268,14 @@ Visit the [Troubleshoot](devtron-freemium.md#troubleshoot-issues) section to ide -o jsonpath='{.data.ADMIN_PASSWORD}' | base64 -d ``` -{% hint style="success" %} -### Next Recommended Action - +:::success Next Recommended Action After the initial login, we recommend you set up an [Single Sign-On (SSO) service](../../user-guide/global-configurations/sso-login.md) like Google, GitHub, etc., and then [add other members](../../user-guide/global-configurations/authorization/user-access.md#add-users) (including yourself). Thereafter, they can log in using the configured SSO. -{% endhint %} +::: 3. After a successful login, the **Devtron Dashboard** will open, and you can explore all the enterprise features supported by Devtron Freemium. - ![Figure 15: Devtron Dashboard](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-enterprise-license-dashboard.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-enterprise-license-dashboard.jpg) +
Figure 19: Devtron Dashboard
--- @@ -207,19 +289,22 @@ In Devtron, click the **Help** menu (top-right corner) → **About Devtron** to * Installation fingerprint * Enterprise version -![Figure 16: 'About Devtron' Help Menu](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/ent-trial/license-check.gif) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/ent-trial/license-check.gif) +
Figure 20: 'About Devtron' Help Menu
### Update License If you have a new license key, you can update the license key directly within Devtron, from the **About Devtron** page. -![Figure 17: Updating License](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-update-license.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-update-license.jpg) +
Figure 21: Updating License
### Upgrade License If you want to add more than one cluster, email us at enterprise@devtron.ai or reach out to your Devtron representative to upgrade your license. -![Figure 18: Upgrade License](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-upgrade.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-upgrade.jpg) +
Figure 22: Upgrade License
--- @@ -227,12 +312,12 @@ If you want to add more than one cluster, email us at enterprise@devtron.ai or r | Issue | What it means | Where is it shown | Solution | | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- | ------------------------------------------- | ------------------------------------------------------------ | -|

License Claimed
Snapshot

| Someone from your organization has already availed a license | License Dashboard | Reach out to enterprise@devtron.ai | -|

Invalid License Key
Snapshot

| The license key is incorrect or partial | Devtron Dashboard Page | Go to the License Dashboard and recheck the license | -|

License Key No Longer Valid
Snapshot

| The license key has become invalid for your installation fingerprint | Devtron Dashboard Page | Generate a new license from License Dashboard. | -|

Invalid Fingerprint
Snapshot

| The fingerprint is incorrect or partial | License Dashboard (Step-3) | Go to the License Activation Page and verify the fingerprint | -|

Multiple Cluster Detected
Snapshot

| You have added more than one cluster | Devtron Dashboard Page or License Dashboard | Reach out to enterprise@devtron.ai for renewal | -|

License Key Already Exists for Fingerprint
Snapshot

| You cannot generate more than 1 license key for 1 fingerprint | License Dashboard (Step-3) | Contact Support | +|

License Claimed
Snapshot

| Someone from your organization has already availed a license | License Dashboard | Reach out to enterprise@devtron.ai | +|

Invalid License Key
Snapshot

| The license key is incorrect or partial | Devtron Dashboard Page | Go to the License Dashboard and recheck the license | +|

License Key No Longer Valid
Snapshot

| The license key has become invalid for your installation fingerprint | Devtron Dashboard Page | Generate a new license from License Dashboard. | +|

Invalid Fingerprint
Snapshot

| The fingerprint is incorrect or partial | License Dashboard (Step-3) | Go to the License Activation Page and verify the fingerprint | +|

Multiple Cluster Detected
Snapshot

| You have added more than one cluster | Devtron Dashboard Page or License Dashboard | Reach out to enterprise@devtron.ai for renewal | +|

License Key Already Exists for Fingerprint
Snapshot

| You cannot generate more than 1 license key for 1 fingerprint | License Dashboard (Step-3) | Contact Support | --- @@ -276,4 +361,4 @@ If the cluster is deleted, you will not be able to claim a Freemium license on a If you need help, contact [support@devtron.ai](mailto:support@devtron.ai). - + \ No newline at end of file diff --git a/docs/setup/install/devtron-oss.md b/docs/setup/install/devtron-oss.md old mode 100644 new mode 100755 index 1621693c9d..9aad5f8928 --- a/docs/setup/install/devtron-oss.md +++ b/docs/setup/install/devtron-oss.md @@ -1,3 +1,6 @@ +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + # Install Devtron OSS ## Introduction @@ -8,15 +11,13 @@ The table below shows the installation options available in Devtron OSS. Further | Installation Option | What Is Included | When To Use | | -------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | -------------------------------------------------------------------------------------- | -| [**Minimal (without integrations)**](devtron-oss.md#install-devtron-without-integrations) | Dashboard + Resource Browser + Core operator configurations | A unified view of Helm apps, FluxCD apps, ArgoCD apps, and their related K8s resources | -| [**With CI/CD**](devtron-oss.md#install-devtron-with-ci-cd) | Everything in Minimal + Build and Deploy (CI/CD) module | You need a complete CI-CD pipeline for your custom apps (a.k.a Devtron Apps) | -| [**With CI/CD + GitOps (Argo CD)**](devtron-oss.md#install-devtron-with-ci-cd--gitops-argocd) | Everything in CI/CD + GitOps (Argo CD) module | You need automated, Git-driven deployments | - -{% hint style="success" %} -#### Not Sure What To Choose? +| [**Minimal (without integrations)**](#option-a-minimal-without-integrations) | Dashboard + Resource Browser + Core operator configurations | A unified view of Helm apps, FluxCD apps, ArgoCD apps, and their related K8s resources | +| [**With CI/CD**](#option-b-install-devtron-with-cicd) | Everything in Minimal + Build and Deploy (CI/CD) module | You need a complete CI-CD pipeline for your custom apps (a.k.a Devtron Apps) | +| [**With CI/CD + GitOps (Argo CD)**](#option-c-install-devtron-with-cicd--gitops-argocd) | Everything in CI/CD + GitOps (Argo CD) module | You need automated, Git-driven deployments | +:::success Not Sure What To Choose? Begin with the **Minimal** version. You can always install CI/CD and GitOps integrations later from [Devtron Stack Manager](../../user-guide/integrations/). -{% endhint %} +::: --- @@ -26,9 +27,7 @@ Begin with the **Minimal** version. You can always install CI/CD and GitOps inte * [Helm v3.8+ installed](https://helm.sh/docs/intro/install/) * For production cases, fulfill the [Infrastructure Recommendations](prod-infra.md) -{% hint style="warning" %} -#### Cluster created on AWS? Is your EKS version 1.23 or above? - +:::warning Cluster created on AWS? Is your EKS version 1.23 or above? Install ['AWS EBS CSI' driver](https://docs.aws.amazon.com/eks/latest/userguide/ebs-csi.html) using the following command: ```bash @@ -37,23 +36,19 @@ helm repo update helm upgrade --install aws-ebs-csi-driver \ --namespace kube-system aws-ebs-csi-driver/aws-ebs-csi-driver ``` -{% endhint %} - -{% hint style="warning" %} -#### Using K3s? +::: +:::warning Using K3s? K3s does not include a default storage provisioner, so before you run Helm install in [Step 2](devtron-oss.md#step-2-choose-an-installation-option), apply the Rancher local-path-provisioner to enable dynamic storage: ```bash kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/master/deploy/local-path-storage.yaml ``` -{% endhint %} - -{% hint style="info" %} -#### Want to Customize the Installation? +::: +:::info Want to Customize the Installation? See [Additional Installation Resources](../../reference/README.md) for production infra recommendations, air-gapped installs, blob storage, config overrides, StorageClass, Database, Ingress setup, backups, and more. -{% endhint %} +::: --- @@ -68,10 +63,7 @@ helm repo update devtron ## Step 2: Choose an Installation Option -{% tabs %} -{% tab title="Minimal (Dashboard Only)" %} - -### Install Devtron without Integrations +### Option A: Minimal (without integrations) After you [add Devtron Helm Repository](#step-1-add-devtron-helm-repository) run the command below: @@ -79,11 +71,8 @@ After you [add Devtron Helm Repository](#step-1-add-devtron-helm-repository) run helm install devtron devtron/devtron-operator \ --create-namespace --namespace devtroncd ``` -{% endtab %} -{% tab title="With CI/CD" %} - -### Install Devtron with CI/CD +### Option B: Install Devtron with CI/CD After you [add Devtron Helm Repository](#step-1-add-devtron-helm-repository) run the command below: @@ -92,11 +81,8 @@ helm install devtron devtron/devtron-operator \ --create-namespace --namespace devtroncd \ --set installer.modules={cicd} ``` -{% endtab %} - -{% tab title="With CI/CD + GitOps (Argo CD)" %} -### Install Devtron with CI/CD + GitOps (ArgoCD) +### Option C: Install Devtron with CI/CD + GitOps (ArgoCD) After you [add Devtron Helm Repository](#step-1-add-devtron-helm-repository) run the command below: @@ -106,13 +92,9 @@ helm install devtron devtron/devtron-operator \ --set installer.modules={cicd} \ --set argo-cd.enabled=true ``` -{% endtab %} -{% endtabs %} -{% hint style="info" %} -### How much time does it take for installation? - -It usually takes 5–15 minutes to spin up all Devtron microservices (depending on your installation option). +:::info How much time does it take for installation? +It usually takes 5-15 minutes to spin up all Devtron microservices (depending on your installation option). You may check the status by running the command below. If the output is `Applied`, Devtron is installed. @@ -121,24 +103,25 @@ kubectl -n devtroncd get installers installer-devtron \ -o jsonpath='{.status.sync.status}' ``` -{% endhint %} +::: --- ## Step 3: Obtain the Dashboard URL -{% tabs %} -{% tab title="For EKS/AKS/GKE" %} + + To access the dashboard on EKS, AKS, or GKE cluster, run the following command: ```bash kubectl get svc -n devtroncd devtron-service -o jsonpath='{.status.loadBalancer.ingress}' ``` -**Dashboard URL**: The LoadBalancer URL displayed in the output -{% endtab %} +**Dashboard URL**: The LoadBalancer URL displayed in the output + + -{% tab title="MicroK8s/Kind/K3s (and Cloud VMs)" %} + You have a few different ways to open the Devtron dashboard on local or VM-based clusters.\ Pick the method that works best for you: quick port-forward, persistent NodePort, or remote access via kubeconfig. @@ -150,9 +133,9 @@ Run the following command to port-forward the devtron service to port `8000` kubectl -n devtroncd port-forward service/devtron-service 8000:80 ``` -**Dashboard URL**: `http://127.0.0.1:8000` +**Dashboard URL**: `http://127.0.0.1:8000` -*** +--- #### Accessing the Dashboard via NodePort @@ -168,9 +151,9 @@ Then run the following command to get the port number assigned to the service: kubectl get svc -n devtroncd devtron-service -o jsonpath='{.spec.ports[0].nodePort}' ``` -**Dashboard URL**: `http://:/dashboard` +**Dashboard URL**: `http://:/dashboard` -*** +--- #### Accessing the Dashboard locally from a remote VM (Port Forwarding via Kubeconfig) @@ -184,25 +167,28 @@ kubectl config use-context # Set the correct context. kubectl -n devtroncd port-forward service/devtron-service 8000:80 ``` -**Dashboard URL**: `http://127.0.0.1:8000` -{% endtab %} +**Dashboard URL**: `http://127.0.0.1:8000` -{% tab title="Minikube" %} + + + + Run the following command: ```bash minikube service devtron-service --namespace devtroncd ``` -**Dashboard URL**: (Directly opens in your browser) -{% endtab %} -{% endtabs %} +**Dashboard URL**: (Directly opens in your browser) + + + --- ## Step 4: Log in to Devtron -1. From your browser, visit the dashboard URL (obtained in the previous step) to view the login page of Devtron. +1. From your browser, visit the Dashboard URL (obtained in the previous step) to view the login page of Devtron. 2. Enter **`admin`** in the username. 3. Run the below command to get your password. @@ -213,8 +199,6 @@ minikube service devtron-service --namespace devtroncd You should see the **Devtron Dashboard** post successful login. -{% hint style="success" %} -#### Next Recommended Action - +:::success Next Recommended Action After the initial login, we recommend you set up an [Single Sign-On (SSO) service](../../user-guide/global-configurations/sso-login.md) like Google, GitHub, etc., and then [add other members](../../user-guide/global-configurations/authorization/user-access.md#add-users) (including yourself). Thereafter, they can log in using the configured SSO. -{% endhint %} +::: \ No newline at end of file diff --git a/docs/setup/install/faq-on-installation.md b/docs/setup/install/faq-on-installation.md old mode 100644 new mode 100755 index f3e7f66f05..c64ac2fad7 --- a/docs/setup/install/faq-on-installation.md +++ b/docs/setup/install/faq-on-installation.md @@ -1,3 +1,6 @@ +--- +hide_table_of_contents: true +--- # FAQ @@ -43,4 +46,4 @@ -Still facing issues, please reach out to us on [Discord](https://discord.gg/jsRG5qx2gp). +Still facing issues, please reach out to us on [Discord](https://discord.gg/jsRG5qx2gp). \ No newline at end of file diff --git a/docs/setup/install/freemium.md b/docs/setup/install/freemium.md old mode 100644 new mode 100755 index 1a8f868f5f..914ca8bf3b --- a/docs/setup/install/freemium.md +++ b/docs/setup/install/freemium.md @@ -2,6 +2,9 @@ hidden: true --- +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + # Install Devtron Freemium ## Introduction @@ -16,16 +19,14 @@ With Devtron Freemium, you can access all the enterprise features limited to add 6. Policies related to approval, deployment, plugins, tags, infra...and many more. -{% hint style="info" %} -#### Already using Devtron's Open Source version? - +:::info Already using Devtron's Open Source version? This guide is intended for fresh installation of **Devtron Freemium**. If you're currently using the open-source (OSS) version of Devtron, we **do not recommend** upgrading your existing setup to Devtron Freemium. Instead, we suggest you to perform a fresh installation of Devtron Freemium on a separate cluster (following the steps below) for the best experience. -{% endhint %} +::: -*** +--- ## Step 1: Go to the Devtron License Dashboard @@ -37,13 +38,15 @@ Log in with your work email to access the license dashboard. Devtron provides tw 1. Log in using **Google**, **GitHub**, or **Microsoft** SSO providers. Personal email accounts such as Gmail, Yahoo are not supported. -![Figure 1: Selecting SSO Provider](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-license-dashboard-sso.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-license-dashboard-sso.jpg) +
Figure 1: Selecting SSO Provider
2. Once logged in, the **Devtron License Dashboard** will open. 3. Under **Tell Us About You**, enter some basic details to help us improve your Devtron Experience. 4. After entering the details, click **Next** to proceed to [Step 2: Install Devtron](freemium.md#step-2-install-devtron). -![Figure 2: Entering the Details](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-enterprise-license-step-1.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-enterprise-license-step-1.jpg) +
Figure 2: Entering the Details
### Method 2: Log In with Email @@ -51,45 +54,46 @@ You can also log in via **Continue with Email**. This will send a login link to 1. Select **Continue with Email** to log in. -![Figure 3: Selecting 'Continue with Email'](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-license-dashboard-email.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-license-dashboard-email.jpg) +
Figure 3: Selecting 'Continue with Email'
2. Enter your work email and select **Send Login Link** -![Figure 4: Entering Email](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-license-dashboard-enter-email.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-license-dashboard-enter-email.jpg) +
Figure 4: Entering Email
3. A login link will be sent to the email provided by you. If you do not receive the link, you can resend it after 30 seconds. **Note:** Your login link is valid only for 10 minutes. -![Figure 5: Sending Login Link](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/ent-trial/license-dashboard-resend-email.jpg) - -{% hint style="info" %} -#### Email not received? +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/ent-trial/license-dashboard-resend-email.jpg) +
Figure 5: Sending Login Link
+:::info Email not received? * Check all sections of the mailbox, including the Spam section. * If you find the login link email in the Spam section, mark it as 'Not Spam'. -{% endhint %} +::: 4. Go to your provided email inbox and use the login link. -![Figure 6: Email with Login Link](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/ent-trial/enterprise-license-email.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/ent-trial/enterprise-license-email.jpg) +
Figure 6: Email with Login Link
Once logged in, the **Devtron License Dashboard** will open. 5. Under **Tell Us About You**, enter a few basic details to help us improve your Devtron Experience. 6. Click **Next** to proceed to [Step 2: Install Devtron](freemium.md#step-2-install-devtron). -![Figure 7: Entering the Details](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-enterprise-license-step-1.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-enterprise-license-step-1.jpg) +
Figure 7: Entering the Details
-*** +--- ## Step 2: Install Devtron -{% hint style="success" %} -#### Recommendation - +:::success Recommendation We recommend installing Devtron on a separate Kubernetes cluster, as Devtron Cluster (cluster on which Devtron is installed) has critical system services and should be kept separate from application workloads. -{% endhint %} +::: After entering the basic details, the next step is to install **Devtron Freemium**. @@ -97,23 +101,20 @@ The installation commands for installing **Devtron in Full Mode** (with integrat Choose your preferred K8s distribution and follow the displayed commands to install **Devtron in Full Mode**. -![Figure 8: Installing Devtron](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-enterprise-license-step-2.jpg) - -In case, you want to install Devtron dashboard only, use the commands given in **Devtron without integrations (only dashboard)** tab in [Choose an Installation Option](freemium.md#id-2.2-choose-an-installation-option) section. +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-enterprise-license-step-2.jpg) +
Figure 8: Installing Devtron
-{% hint style="info" %} -#### Install Devtron in Air-Gapped Environments +In case, you want to install Devtron dashboard only, use the commands given in **Devtron without integrations (only dashboard)** tab in [Choose an Installation Option](freemium.md#22-choose-an-installation-option) section. +:::info Install Devtron in Air-Gapped Environments You can also install Devtron in Air-Gapped environments to securely manage and deploy applications without internet access. Refer the [Devtron Enterprise (Air‐gapped) Guide](https://github.com/devtron-labs/utilities/wiki/Devtron-Enterprise-\(Air%E2%80%90gapped\)) to install Devtron in Air-Gapped environments. -{% endhint %} - -{% hint style="warning" %} -#### Note +::: +:::warning Note Please ensure that cluster `kubeconfig` is properly configured and available in your system. -{% endhint %} +::: ### 2.1 Add Devtron Helm Repository @@ -124,8 +125,8 @@ helm repo update devtron ### 2.2 Choose an Installation Option -{% tabs %} -{% tab title="Devtron in Full Mode" %} + + * To install Devtron with all core enterprise features **except ArgoCD**: ```bash @@ -137,9 +138,9 @@ helm install devtron devtron/devtron-enterprise --create-namespace --namespace d ```bash helm install devtron devtron/devtron-enterprise --create-namespace --namespace devtroncd --set devtron.argo-cd.enabled=true ``` -{% endtab %} + -{% tab title="Devtron without integrations (only Dashboard)" %} + To install only the Devtron Dashboard (without CI/CD, ArgoCD, Security, Notification, or Monitoring): ```bash @@ -147,13 +148,13 @@ helm install devtron devtron/devtron-enterprise --create-namespace --namespace d --set devtron.installer.modules={} --set devtron.security.enabled=false \ --set devtron.notifier.enabled=false --set devtron.security.trivy.enabled=false --set devtron.monitoring.grafana.enabled=false ``` -{% endtab %} -{% endtabs %} + + ### 2.3 Obtain the Dashboard URL -{% tabs %} -{% tab title="For EKS/AKS/GKE" %} + + Run the following command to get the Dashboard URL: ```bash @@ -161,9 +162,9 @@ kubectl get svc -n devtroncd devtron-service -o jsonpath='{.status.loadBalancer. ``` You can access your Devtron Dashboard using the LoadBalancer URL displayed in the output. -{% endtab %} + -{% tab title="MicroK8s/Kind/K3s" %} + #### Accessing the Dashboard locally (MicroK8s/Kind/K3s) To obtain the Dashboard URL when MicroK8s/Kind/K3s running locally, run the following command to port-forward the devtron service to port `8000` @@ -201,9 +202,9 @@ kubectl -n devtroncd port-forward service/devtron-service 8000:80 ``` The Dashboard URL will be `http://127.0.0.1:8000` on your local machine. -{% endtab %} + -{% tab title="Minikube" %} + To access the dashboard on Minikube cluster, run the following command: ```bash @@ -211,9 +212,9 @@ minikube service devtron-service --namespace devtroncd ``` This will directly open the dashboard URL on your browser -{% endtab %} + -{% tab title="Cloud VMs" %} + #### Accessing the Dashboard via NodePort To obtain the dashboard URL on Cloud VMs using NodePort, run the following command to retrieve the port number assigned to the service: @@ -241,77 +242,79 @@ kubectl -n devtroncd port-forward service/devtron-service 8000:80 ``` The Dashboard URL will be `http://127.0.0.1:8000` on your local machine. -{% endtab %} -{% endtabs %} + + After successfully installing Devtron and obtaining the dashboard URL, click **Next** to proceed to [Step 3: Get License Key](freemium.md#step-3-get-license-key) -*** +--- ## Step 3: Get License Key You will now need to enter your Devtron **Installation Fingerprint** to generate a license key. -![Figure 9: Enter Installation Fingerprint](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-enterprise-license-step-3.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-enterprise-license-step-3.jpg) +
Figure 9: Enter Installation Fingerprint
### Get Devtron installation's fingerprint To get the **Installation Fingerprint**, follow the below steps -1. Visit your Dashboard URL (which you have obtained in [Step-2.3](freemium.md#id-2.3-obtain-the-dashboard-url)) as shown below. +1. Visit your Dashboard URL (which you have obtained in [Step-2.3](freemium.md#23-obtain-the-dashboard-url)) as shown below. -![Figure 10: License Activation Screen](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/ent-trial/enterprise-license-fingerprint.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/ent-trial/enterprise-license-fingerprint.jpg) +
Figure 10: License Activation Screen
2. You will see an Installation Fingerprint that uniquely identifies your installation. Copy the fingerprint. -![Figure 11: Copying Installation Fingerprint](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/ent-trial/enterprise-license-copy-fingerprint.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/ent-trial/enterprise-license-copy-fingerprint.jpg) +
Figure 11: Copying Installation Fingerprint
3. Go back to the **License Dashboard** and paste the fingerprint you copied earlier and click **Get License Key**. -![Figure 12: Pasting Installation Fingerprint](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-enterprise-license-paste-fingerprint.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-enterprise-license-paste-fingerprint.jpg) +
Figure 12: Pasting Installation Fingerprint
4. Your license will be generated. Copy the license key. -![Figure 13: Copying Generated License Key](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-enterprise-license-key-generated-2.jpg) - -{% hint style="warning" %} -#### Note +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-enterprise-license-key-generated-2.jpg) +
Figure 13: Copying Generated License Key
+:::warning Note The license key you generate will be valid only for your Devtron Freemium installation. * Only one Devtron Freemium cluster per organization. * The license key is uniquely mapped to your installation fingerprint. -{% endhint %} - -{% hint style="danger" %} -#### Warning +::: +:::danger Warning The license is bound to your Kubernetes cluster and cannot be transferred to another cluster. In case cluster is deleted, you cannot claim freemium license on a new cluster. In such cases, contact [Devtron Support](mailto:support@devtron.ai). -{% endhint %} +::: 5. Go back to your **Devtron Dashboard URL** page and paste your license key under **License Key** field and click **Activate**. -![Figure 14: Pasting License Key and Activating](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/ent-trial/enterprise-paste-license-key.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/ent-trial/enterprise-paste-license-key.jpg) +
Figure 14: Pasting License Key and Activating
6. **Devtron Freemium** will be activated, and you can log in to **Devtron Dashboard**. -![Figure 15: Log in as Administrator](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/ent-trial/enterprise-license-login.jpg) - -{% hint style="info" %} -#### Facing Issues? +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/ent-trial/enterprise-license-login.jpg) +
Figure 15: Log in as Administrator
+:::info Facing Issues? Visit the [Troubleshoot](freemium.md#troubleshoot-issues) section to identify the issue or connect with [Devtron Support](mailto:support@devtron.ai). -{% endhint %} +::: -*** +--- ## Log in to Devtron 1. After successful license activation, you will see the Devtron login page. -![Figure 16: Devtron Login Page](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/ent-trial/enterprise-license-login-admin.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/ent-trial/enterprise-license-login-admin.jpg) +
Figure 16: Devtron Login Page
2. Initially, log in with the administrator credentials. By default, the username is **admin**. Run the following command to get the admin password: @@ -320,19 +323,18 @@ kubectl -n devtroncd get secret devtron-secret \ -o jsonpath='{.data.ADMIN_PASSWORD}' | base64 -d ``` -{% hint style="info" %} -#### Note - +:::info Note When you install Devtron for the first time, it creates a default admin user and password (with unrestricted access to Devtron). You can use it to log in as an administrator. After the initial login, we recommend you set up any [Single Sign-On (SSO) service](../../user-guide/global-configurations/sso-login.md) like Google, GitHub, etc., and then add other users (including yourself). Subsequently, all the users can use the same SSO (let's say, GitHub) to log in to the Dashboard. -{% endhint %} +::: 3. After a successful login, the **Devtron Dashboard** will open, and you can explore all the enterprise features supported by Devtron Freemium. -![Figure 17: Devtron Dashboard](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-enterprise-license-dashboard.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-enterprise-license-dashboard.jpg) +
Figure 17: Devtron Dashboard
-*** +--- ## Convert Enterprise Free Trial to Freemium @@ -340,35 +342,40 @@ You can switch to Devtron Freemium at no cost and no reinstallation is required. After upgrade, with Devtron Freemium, you will be able to access all Devtron enterprise features for free and forever, with the limit of adding one additional connected cluster (the default cluster where Devtron runs + 1 additional connected cluster). -{% hint style="warning" %} -#### Mandatory Action Before Upgrading - +:::warning Mandatory Action Before Upgrading Ensure your Enterprise Free Trial has no more than one additional cluster connected (Devtron Cluster + 1 additional connected cluster). If more than one additional cluster is connected, disconnect the extra clusters before upgrading; otherwise, the upgrade will not proceed. -{% endhint %} +::: 1. Open your Devtron dashboard and navigate to **Help** → **About Devtron** → **License**. - ![Figure 18: 'About Devtron' Help Menu](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/ent-trial/license-check.gif) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/ent-trial/license-check.gif) +
Figure 18: 'About Devtron' Help Menu
2. Copy the Installation fingerprint. - ![Figure 19: Copying Installation Fingerprint](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-copy-fingerprint-2.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-copy-fingerprint-2.jpg) +
Figure 19: Copying Installation Fingerprint
3. Navigate to the license dashboard; and you will be automatically redirected to the step 3 (Get License Key). - ![Figure 20: Devtron License Dashboard](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-license-dashboard-2.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-license-dashboard-2.jpg) +
Figure 20: Devtron License Dashboard
4. Paste the fingerprint you copied earlier and click **Get License Key**. - ![Figure 21: Pasting Fingerprint](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-paste-fingerprint-2.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-paste-fingerprint-2.jpg) +
Figure 21: Pasting Fingerprint
5. Your license will be generated. Copy the license key. - ![Figure 22: Copying the License Key](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-copy-license-2.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-copy-license-2.jpg) +
Figure 22: Copying the License Key
6. Navigate back to **Help** → **About Devtron** → **License**, and click **Update License**. - ![Figure 23: Clicking Update License](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/ent-trial/update-license.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/ent-trial/update-license.jpg) +
Figure 23: Clicking Update License
7. Paste the new license key you copied earlier and click **Activate**; Devtron Freemium is now activated. - ![Figure 24: Click Activate](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-paste-license-2.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-paste-license-2.jpg) +
Figure 24: Click Activate
-*** +--- ## Additional Actions @@ -380,34 +387,37 @@ In Devtron, click the **Help** menu (top-right corner) → **About Devtron** to * Installation fingerprint * Enterprise version -![Figure 25: 'About Devtron' Help Menu](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/ent-trial/license-check.gif) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/ent-trial/license-check.gif) +
Figure 25: 'About Devtron' Help Menu
### Update License If you have a new license key, you can update the license key directly within Devtron, from the **About Devtron** page. -![Figure 26: Updating License](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-update-license.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-update-license.jpg) +
Figure 26: Updating License
### Upgrade License If you want to add more than one cluster, email us at [enterprise@devtron.ai](mailto:enterprise@devtron.ai) or reach out to your Devtron representative to upgrade your license. -![Figure 27: Upgrade License](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-upgrade.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/freemium-upgrade.jpg) +
Figure 27: Upgrade License
-*** +--- ## Troubleshoot Issues | Issue | What it means | Where is it shown | Solution | | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- | ------------------------------------------- | ------------------------------------------------------------ | -|

License Claimed
Snapshot

| Someone from your organization has already availed a license | License Dashboard | Reach out to [enterprise@devtron.ai](mailto:enterprise@devtron.ai) | -|

Invalid License Key
Snapshot

| The license key is incorrect or partial | Devtron Dashboard Page | Go to the License Dashboard and recheck the license | -|

License Key No Longer Valid
Snapshot

| The license key has become invalid for your installation fingerprint | Devtron Dashboard Page | Generate a new license from License Dashboard. | -|

Invalid Fingerprint
Snapshot

| The fingerprint is incorrect or partial | License Dashboard (Step-3) | Go to the License Activation Page and verify the fingerprint | -|

Multiple Cluster Detected
Snapshot

| You have added more than one cluster | Devtron Dashboard Page or License Dashboard | Reach out to enterprise@devtron.ai for renewal | -|

License Key Already Exists for Fingerprint
Snapshot

| You cannot generate more than 1 license key for 1 fingerprint | License Dashboard (Step-3) | Contact Support | +|

License Claimed
Snapshot

| Someone from your organization has already availed a license | License Dashboard | Reach out to [enterprise@devtron.ai](mailto:enterprise@devtron.ai) | +|

Invalid License Key
Snapshot

| The license key is incorrect or partial | Devtron Dashboard Page | Go to the License Dashboard and recheck the license | +|

License Key No Longer Valid
Snapshot

| The license key has become invalid for your installation fingerprint | Devtron Dashboard Page | Generate a new license from License Dashboard. | +|

Invalid Fingerprint
Snapshot

| The fingerprint is incorrect or partial | License Dashboard (Step-3) | Go to the License Activation Page and verify the fingerprint | +|

Multiple Cluster Detected
Snapshot

| You have added more than one cluster | Devtron Dashboard Page or License Dashboard | Reach out to enterprise@devtron.ai for renewal | +|

License Key Already Exists for Fingerprint
Snapshot

| You cannot generate more than 1 license key for 1 fingerprint | License Dashboard (Step-3) | Contact Support | -*** +--- ## FAQs @@ -459,4 +469,4 @@ If the cluster is deleted, you will not be able to claim a Freemium license on a If you need help, contact [Devtron Support](mailto:support@devtron.ai). - + \ No newline at end of file diff --git a/docs/setup/install/ingress-setup.md b/docs/setup/install/ingress-setup.md old mode 100644 new mode 100755 index e889af66eb..8c0490db4f --- a/docs/setup/install/ingress-setup.md +++ b/docs/setup/install/ingress-setup.md @@ -14,7 +14,7 @@ If you have successfully configured Ingress, refer [Post Ingress Setup](#enable- ## Enabling Ingress during Devtron Installation -If you are installing Devtron, you can enable Ingress either via [set flag](#using-set-flag) or by using [ingress-values.yaml](#using-ingress-values.yaml) to specify the desired Ingress settings. +If you are installing Devtron, you can enable Ingress either via [set flag](#using-set-flag) or by using [ingress-values.yaml](#using-ingress-valuesyaml) to specify the desired Ingress settings. ### Using set flag diff --git a/docs/setup/install/install-devtron-Kubernetes-client.md b/docs/setup/install/install-devtron-Kubernetes-client.md old mode 100644 new mode 100755 index b2fb32d1bd..c19fef9639 --- a/docs/setup/install/install-devtron-Kubernetes-client.md +++ b/docs/setup/install/install-devtron-Kubernetes-client.md @@ -9,11 +9,10 @@ The **Devtron Kubernetes Desktop Client** comes packaged with the following modu * [Kubernetes Resource Browser](#kubernetes-resource-browser) - To manage all Kubernetes resources in your cluster(s) * [Clusters](#clusters) - To perform troubleshooting and node operations on the cluster(s) you connect from the Devtron Kubernetes Desktop Client -{% hint style="success" %} - +:::success Try Devtron Freemium to access all the enterprise features for free and forever, limited to adding one additional cluster. [Install Devtron Freemium](https://license.devtron.ai/dashboard) -{% endhint %} +::: --- @@ -25,10 +24,7 @@ Try Devtron Freemium to access all the enterprise features for free and forever, wget -O devtron-install.bash https://cdn.devtron.ai/k8s-client/devtron-install.bash && [ -f devtron-install.bash ] && sh devtron-install.bash start ``` -{% hint style="info" %} - -### Desktop Client not opening? - +:::info Desktop Client not opening? * In case you closed the Devtron Kubernetes Desktop Client browser tab by mistake, you can reopen it by executing the following command in your terminal: ```bash @@ -41,7 +37,7 @@ Try Devtron Freemium to access all the enterprise features for free and forever, rm -rf .devtron/ ``` -{% endhint %} +::: 2. Open your terminal and enter the following command to download and run a bash script for generating the [kubeconfig](https://kubernetes.io/docs/tasks/access-application-cluster/configure-access-multiple-clusters/): @@ -51,23 +47,23 @@ Try Devtron Freemium to access all the enterprise features for free and forever, The cluster credentials are displayed in the output of the command. -{% hint style="info" %} - -### Important Note - +:::info Important Note Upon executing the above-mentioned command, if you encounter an error saying that you already have a service account named `cd-user`, change the service account name in the command from `cd-user` to `cd-user1` or `cd-user2`. -{% endhint %} +::: 3. Fetch the cluster credentials (`Cluster name`, `Server URL`, `Bearer token`) from the terminal and note them aside. - ![Figure 1: Fetch Cluster Credentials](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/install+devtron+K8s+client/cluster-credentials.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/install+devtron+K8s+client/cluster-credentials.jpg) +
Figure 1: Fetch Cluster Credentials
-4. Navigate to **Global Configurations** → **Clusters** → **Add cluster** and paste the credentials in their respective fields. +4. Navigate to **Global Configurations** → **Clusters & Environments** → **Add cluster** and paste the credentials in their respective fields. - ![Figure 2a: Add a Cluster](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/install+devtron+K8s+client/global-configs-clusters.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/install+devtron+K8s+client/global-configs-clusters.jpg) +
Figure 2a: Add a Cluster
- ![Figure 2b: Add Cluster Credentials](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/install+devtron+K8s+client/adding-cluster.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/install+devtron+K8s+client/adding-cluster.jpg) +
Figure 2b: Add Cluster Credentials
5. Click **Save Cluster**. This cluster will now be displayed in the **Kubernetes Resource Browser** page. Refer [Kubernetes Resource Browser](#kubernetes-resource-browser) or [Clusters](#clusters) in the Devtron Kubernetes Desktop Client for more information. @@ -77,17 +73,14 @@ Upon executing the above-mentioned command, if you encounter an error saying tha sh devtron-install.bash stop ``` -{% hint style="info" %} - -### Note - +:::info Note The next time, if you wish to run the Devtron Kubernetes Desktop Client again, run the following command in your terminal: ```bash sh devtron-install.bash start ``` -{% endhint %} +::: --- @@ -111,17 +104,21 @@ On the left side bar, under the **K8s Resources** tab, the Kubernetes resources * Custom Resource -![Figure 3: Kubernetes Resource Browser](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/install+devtron+K8s+client/resource-browser.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/install+devtron+K8s+client/resource-browser.jpg) +
Figure 3: Kubernetes Resource Browser
For the convenience of the user, the Resource Browser page comes with a search box and filters to locate resource kinds quickly. -![Figure 4: Search Bar](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/install+devtron+K8s+client/search-bar.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/install+devtron+K8s+client/search-bar.jpg) +
Figure 4: Search Bar
-![Figure 5: Cluster and Namespace Filters](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/install+devtron+K8s+client/filter-boxes.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/install+devtron+K8s+client/filter-boxes.jpg) +
Figure 5: Cluster and Namespace Filters
### Create a Resource -![Figure 6: Create a Pod](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/install+devtron+K8s+client/creating-resource.gif) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/install+devtron+K8s+client/creating-resource.gif) +
Figure 6: Create a Pod
#### Sample Script for Creating a Pod @@ -142,15 +139,18 @@ spec: ### View a Resource -![Figure 7: View a Pod](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/install+devtron+K8s+client/viewing-resource.gif) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/install+devtron+K8s+client/viewing-resource.gif) +
Figure 7: View a Pod
### Update a Resource -![Figure 8: Update a Live Manifest](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/install+devtron+K8s+client/updating-resource.gif) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/install+devtron+K8s+client/updating-resource.gif) +
Figure 8: Update a Live Manifest
### Delete a Resource -![Figure 9: Delete a Pod](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/install+devtron+K8s+client/deleting-resource.gif) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/install+devtron+K8s+client/deleting-resource.gif) +
Figure 9: Delete a Pod
--- @@ -158,23 +158,28 @@ spec: Devtron Kubernetes Desktop Client allows you to add multiple clusters and manage all of them from your local machine. The **Clusters** module allows you to view CPU and Memory metrics like CPU Capacity, Memory Capacity, and much more. -![Figure 10: Clusters](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/install+devtron+K8s+client/clusters-metrics.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/install+devtron+K8s+client/clusters-metrics.jpg) +
Figure 10: Clusters
### Perform Node Operations You can perform node operations such as [Cordon](https://kubernetes.io/docs/reference/kubectl/generated/kubectl_cordon/), [Drain](https://kubernetes.io/docs/reference/kubectl/generated/kubectl_drain/), and [Taints](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) either from the (⋮) icon displayed against the cluster name or by clicking the cluster itself. -![Figure 11a: Peform Node Operations Using the (⋮) Icon](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/install+devtron+K8s+client/cluster-node-operations.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/install+devtron+K8s+client/cluster-node-operations.jpg) +
Figure 11a: Peform Node Operations Using the (⋮) Icon
-![Figure 11b: Peform Node Operations by Clicking the Cluster](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/install+devtron+K8s+client/cluster-view.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/install+devtron+K8s+client/cluster-view.jpg) +
Figure 11b: Peform Node Operations by Clicking the Cluster
### Access Cluster Terminal At any time, you can debug and troubleshoot any issues in your cluster using the Cluster Terminal. You can access the Cluster Terminal by either clicking **Terminal** option in the Overview page or by clicking the cluster and then clicking the **Debug** option. The same Cluster Terminal will be opened irrespective of the option that you choose. -![Figure 12a: Terminal Option](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/install+devtron+K8s+client/terminal-option.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/install+devtron+K8s+client/terminal-option.jpg) +
Figure 12a: Terminal Option
-![Figure 12b: Debug Option](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/install+devtron+K8s+client/debug-option.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/install+devtron+K8s+client/debug-option.jpg) +
Figure 12b: Debug Option
--- diff --git a/docs/setup/install/install-devtron-helm-3.md b/docs/setup/install/install-devtron-helm-3.md deleted file mode 100644 index 41484aa372..0000000000 --- a/docs/setup/install/install-devtron-helm-3.md +++ /dev/null @@ -1,265 +0,0 @@ -# Install Devtron using Helm - -## Before you begin - -Install [Helm3](https://helm.sh/docs/intro/install/). - -## Installing Devtron using Helm - -1. Add Devtron repository -2. Update Devtron repository -3. Install Devtron - - -{% tabs %} -{% tab title="Install with default configurations" %} -This installation will use Minio for storing build logs and cache. - -```bash -helm repo add devtron https://helm.devtron.ai - -helm repo update devtron - -helm install devtron devtron/devtron-operator --create-namespace --namespace devtroncd \ ---set installer.modules={cicd} -``` -{% endtab %} - -{% tab title="Install with AWS S3 Buckets" %} -This installation will use AWS s3 buckets for storing build logs and cache. Refer to the `AWS specific` parameters on the [Storage for Logs and Cache](./installation-configuration.md#storage-for-logs-and-cache) page. - -```bash -helm repo add devtron https://helm.devtron.ai -helm repo update devtron -helm install devtron devtron/devtron-operator --create-namespace --namespace devtroncd \ ---set installer.modules={cicd} \ ---set configs.BLOB_STORAGE_PROVIDER=S3 \ ---set configs.DEFAULT_CACHE_BUCKET=demo-s3-bucket \ ---set configs.DEFAULT_CACHE_BUCKET_REGION=us-east-1 \ ---set configs.DEFAULT_BUILD_LOGS_BUCKET=demo-s3-bucket \ ---set configs.DEFAULT_CD_LOGS_BUCKET_REGION=us-east-1 -``` -{% endtab %} - -{% tab title="Install with Azure Blob Storage" %} -This installation will use Azure Blob Storage for storing build logs and cache. -Refer to the `Azure specific` parameters on the [Storage for Logs and Cache](./installation-configuration.md#storage-for-logs-and-cache) page. - -```bash -helm repo add devtron https://helm.devtron.ai -helm repo update devtron -helm install devtron devtron/devtron-operator --create-namespace --namespace devtroncd \ ---set installer.modules={cicd} \ ---set secrets.AZURE_ACCOUNT_KEY=xxxxxxxxxx \ ---set configs.BLOB_STORAGE_PROVIDER=AZURE \ ---set configs.AZURE_ACCOUNT_NAME=test-account \ ---set configs.AZURE_BLOB_CONTAINER_CI_LOG=ci-log-container \ ---set configs.AZURE_BLOB_CONTAINER_CI_CACHE=ci-cache-container -``` -{% endtab %} -{% endtabs %} - -For those countries/users where Github is blocked, you can use Gitee as the installation source. - -{% tabs %} -{% tab title="Install with Gitee" %} -```bash -helm repo add devtron https://helm.devtron.ai -helm install devtron devtron/devtron-operator --create-namespace --namespace devtroncd --set installer.source=gitee -``` -{% endtab %} -{% endtabs %} - -If you are planning to use Devtron for `production deployments`, please refer to our recommended overrides for [Devtron Installation](override-default-devtron-installation-configs.md). - - -## Installing Devtron (Beta) using Helm - -We also release beta versions of devtron every few days before the stable release for people who would like to explore and test beta features before everyone else. If you want to install a fresh devtron from beta release channel, use the chart in our official devtron repository. - -This chart is currently not available on the official helm repository therefore you need to download it to install it. - -1. Clone Devtron Repository -2. Upgrade Helm Dependency -3. Install Devtron - -```bash -$ git clone [https://github.com/devtron-labs/devtron.git](https://github.com/devtron-labs/devtron.git) -$ cd devtron/charts/devtron -$ helm dependency up -$ #modify values in values.yaml -$ helm install devtron . --create-namespace --namespace devtroncd \ ---set installer.modules={cicd} - -``` -{% tab title="Install with AWS S3 Buckets" %} -This installation will use AWS s3 buckets for storing build logs and cache. Refer to the `AWS specific` parameters on the [Storage for Logs and Cache](./installation-configuration.md#storage-for-logs-and-cache) page. -```bash -$ git clone [https://github.com/devtron-labs/devtron.git](https://github.com/devtron-labs/devtron.git) -$ cd devtron/charts/devtron -$ helm dependency up -$ #modify values in values.yaml -$ helm install devtron . --create-namespace --namespace devtroncd \ ---set installer.modules={cicd}\ ---set configs.BLOB_STORAGE_PROVIDER=S3 \ ---set configs.DEFAULT_CACHE_BUCKET=demo-s3-bucket \ ---set configs.DEFAULT_CACHE_BUCKET_REGION=us-east-1 \ ---set configs.DEFAULT_BUILD_LOGS_BUCKET=demo-s3-bucket \ ---set configs.DEFAULT_CD_LOGS_BUCKET_REGION=us-east-1 -``` - -{% tab title="Install with Azure Blob Storage" %} -This installation will use Azure Blob Storage for storing build logs and cache. -Refer to the `Azure specific` parameters on the [Storage for Logs and Cache](./installation-configuration.md#storage-for-logs-and-cache) page. - -```bash -$ git clone [https://github.com/devtron-labs/devtron.git](https://github.com/devtron-labs/devtron.git) -$ cd devtron/charts/devtron -$ helm dependency up -$ #modify values in values.yaml -$ helm install devtron . --create-namespace --namespace devtroncd \ ---set installer.modules={cicd}\ ---set secrets.AZURE_ACCOUNT_KEY=xxxxxxxxxx \ ---set configs.BLOB_STORAGE_PROVIDER=AZURE \ ---set configs.AZURE_ACCOUNT_NAME=test-account \ ---set configs.AZURE_BLOB_CONTAINER_CI_LOG=ci-log-container \ ---set configs.AZURE_BLOB_CONTAINER_CI_CACHE=ci-cache-container -``` - -> Note: There is no option to upgrade to beta on stack manager UI as of now and you may always see upgrade available for latest stable version using which you'll be moved to latest stable version available. - -## Check Devtron installation status - -The install commands start Devtron-operator, which takes about 20 minutes to spin up all of the Devtron microservices one by one. You can use the following command to check the status of the installation: - -```bash -kubectl -n devtroncd get installers installer-devtron -o jsonpath='{.status.sync.status}' -``` - -The command executes with one of the following output message, indicating the status of the installation: - -| Status | Description | -| :--- | :--- | -| `Downloaded` | Installer has downloaded all the manifests and installation is in progress. | -| `Applied` | Installer has successfully applied all the manifests and installation is complete. | - -## Check the installer logs - -To check the installer logs run the following command: - -```bash -kubectl logs -f -l app=inception -n devtroncd -``` - -## Access Devtron dashboard - -If you did not provide a **BASE\_URL** during installation or have used the default installation, Devtron creates a load balancer for you on its own. Use the following command to get the dashboard URL. - -```bash -kubectl get svc -n devtroncd devtron-service -o jsonpath='{.status.loadBalancer.ingress}' -``` - -You will get an output similar to the one shown below: - -```bash -[test2@server ~]$ kubectl get svc -n devtroncd devtron-service -o jsonpath='{.status.loadBalancer.ingress}' -[map[hostname:aaff16e9760594a92afa0140dbfd99f7-305259315.us-east-1.elb.amazonaws.com]] -``` - -The hostname mentioned here `aaff16e9760594a92afa0140dbfd99f7-305259315.us-east-1.elb.amazonaws.com` is the Loadbalancer URL where you can access the Devtron dashboard. - -If you don't see any results or receive a message that says "service doesn't exist," it means Devtron is still installing; please check back in 5 minutes. - -> Note: You can also do a `CNAME` entry corresponding to your domain/subdomain to point to this Loadbalancer URL to access it at a custom domain. - -| Host | Type | Points to | -| ---: | :--- | :--- | -| devtron.yourdomain.com | CNAME | aaff16e9760594a92afa0140dbfd99f7-305259315.us-east-1.elb.amazonaws.com | - -### Devtron Admin credentials - -When you install Devtron for the first time, it creates a default admin user and password (with unrestricted access to Devtron). You can use that credentials to log in as an administrator. - -After the initial login, we recommend you set up any SSO service like Google, GitHub, etc., and then add other users (including yourself). Subsequently, all the users can use the same SSO (let's say, GitHub) to log in to Devtron's dashboard. - -The section below will help you understand the process of getting the administrator credentials. - -#### For Devtron version v0.6.0 and higher - -Use username:`admin` and for password run command mentioned below. -```bash -kubectl -n devtroncd get secret devtron-secret -o jsonpath='{.data.ADMIN_PASSWORD}' | base64 -d -``` - -#### For Devtron version less than v0.6.0 - -Use username:`admin` and for password run command mentioned below. -```bash -kubectl -n devtroncd get secret devtron-secret -o jsonpath='{.data.ACD_PASSWORD}' | base64 -d -``` - -## Cleaning Devtron Installer Helm3 - -Please make sure that you do not have anything inside namespaces devtroncd, devtron-cd, devtron-ci, and devtron-demo as the below steps will clean everything inside these namespaces: - -```bash -helm uninstall devtron --namespace devtroncd -kubectl delete -n devtroncd -f https://raw.githubusercontent.com/devtron-labs/charts/main/charts/devtron/crds/crd-devtron.yaml -kubectl delete -n argo -f https://raw.githubusercontent.com/devtron-labs/devtron/main/manifests/yamls/workflow.yaml -kubectl delete ns devtroncd devtron-cd devtron-ci devtron-demo -``` - -### Cleanup - -Run the following commands to delete all the components installed by Devtron: - -```bash -cd devtron-installation-script/ - -kubectl delete -n devtroncd -f yamls/ -kubectl delete -n devtroncd -f charts/devtron/templates/devtron-installer.yaml -kubectl delete -n devtroncd -f charts/devtron/templates/install.yaml -kubectl delete -n devtroncd -f charts/devtron/crds -kubectl delete ns devtroncd -``` - -### FAQs - -
- 1. How will I know when the installation is finished? - - Run the following command to check the status of the installation: - - ```bash - kubectl -n devtroncd get installers installer-devtron -o jsonpath='{.status.sync.status}' - ``` - - The above command will print `Applied` once the installation process is complete. The installation process could take up to 30 minutes. -
- -
- 2. How do I track the progress of the installation? - - Run the following command to check the logs of the Pod: - - ```bash - pod=$(kubectl -n devtroncd get po -l app=inception -o jsonpath='{.items[0].metadata.name}')&& kubectl -n devtroncd logs -f $pod - ``` -
- -
- 3. How can I restart the installation if the Devtron installer logs contain an error? - - First run the below command to clean up components installed by Devtron installer: - - ```bash - cd devtron-installation-script/ - kubectl delete -n devtroncd -f yamls/ - kubectl -n devtroncd patch installer installer-devtron --type json -p '[{"op": "remove", "path": "/status"}]' - ``` - - Next, [install Devtron using Helm3](./install-devtron-helm-3.md) -
- - -Still facing issues, please reach out to us on [discord](https://discord.gg/jsRG5qx2gp). diff --git a/docs/setup/install/install-devtron-in-airgapped-environment.md b/docs/setup/install/install-devtron-in-airgapped-environment.md old mode 100644 new mode 100755 index fa363d2bc4..d28664164b --- a/docs/setup/install/install-devtron-in-airgapped-environment.md +++ b/docs/setup/install/install-devtron-in-airgapped-environment.md @@ -1,19 +1,18 @@ +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + # Devtron Installation in an Airgapped Environment ## Introduction In certain scenarios, you may need to deploy Devtron to a Kubernetes cluster that isn’t connected to the internet. Such air-gapped environments are used for various reasons, particularly in industries with strict regulatory requirements like healthcare, banking, and finance. This is because air-gapped environments aren't exposed to the public internet; therefore, they create a controlled and secure space for handling sensitive data and operations. -{% hint style="success" %} - +:::success Try Devtron Freemium to access all the enterprise features for free and forever, limited to adding one additional cluster. [Install Devtron Freemium](https://license.devtron.ai/dashboard) -{% endhint %} - -{% hint style="warning" %} - -### Prerequisites +::: +:::warning Prerequisites 1. Install `podman` or `docker` on the VM from where you're executing the installation commands. 2. Get the latest image file @@ -26,7 +25,7 @@ curl -LO https://raw.githubusercontent.com/devtron-labs/devtron/refs/heads/main/ If you are using Docker, the TARGET_REGISTRY should be in the format `docker.io/` -{% endhint %} +::: --- @@ -207,9 +206,9 @@ This would download the tar file of the devtron-operator chart, Make sure to rep ### Installation Commands -{% tabs %} + -{% tab title="Without Integrations" %} + Use the below command to install Devtron without any integrations: @@ -223,9 +222,9 @@ Use the below command to install Devtron without any integrations: helm install devtron -n devtroncd --set global.containerRegistry="$TARGET_REGISTRY" --set global.imagePullSecrets[0].name=devtron-imagepull --set-string components.devtron.customOverrides.IS_AIR_GAP_ENVIRONMENT=true ``` -{% endtab %} + -{% tab title="With CI/CD" %} + Use the below command to install Devtron with only the CI/CD module @@ -239,9 +238,9 @@ Use the below command to install Devtron with only the CI/CD module helm install devtron -n devtroncd --set installer.modules={cicd} --set global.containerRegistry="$TARGET_REGISTRY" --set global.imagePullSecrets[0].name=devtron-imagepull --set-string components.devtron.customOverrides.IS_AIR_GAP_ENVIRONMENT=true ``` -{% endtab %} + -{% tab title="With CI/CD and GitOps (Argo CD)" %} + Use the below command to install Devtron with the CI/CD module and Argo CD @@ -255,9 +254,9 @@ Use the below command to install Devtron with the CI/CD module and Argo CD helm install devtron --create-namespace -n devtroncd --set installer.modules={cicd} --set argo-cd.enabled=true --set global.containerRegistry="$TARGET_REGISTRY" --set argo-cd.global.image.repository="${TARGET_REGISTRY}/argocd" --set argo-cd.redis.image.repository="${TARGET_REGISTRY}/redis" --set global.imagePullSecrets[0].name=devtron-imagepull --set-string components.devtron.customOverrides.IS_AIR_GAP_ENVIRONMENT=true ``` -{% endtab %} + -{% endtabs %} + --- @@ -293,7 +292,7 @@ Please wait until the installation is completed. When you install Devtron for the first time, it creates a default admin user and password (with unrestricted access to Devtron). You can use that credentials to log in as an administrator. -**Username**: `admin`
+**Username**: `admin`
**Password**: Run the following command to get the admin password: ```bash @@ -301,18 +300,14 @@ kubectl -n devtroncd get secret devtron-secret \ -o jsonpath='{.data.ADMIN_PASSWORD}' | base64 -d ``` -{% hint style="info" %} - -### Next Recommended Action - +:::info Next Recommended Action When you install Devtron for the first time, it creates a default admin user and password (with unrestricted access to Devtron). You can use it to log in as an administrator. After the initial login, we recommend you set up any [Single Sign-On (SSO)](../../user-guide/global-configurations/sso-login.md) service like Google, GitHub, etc., and then add other users (including yourself). Subsequently, all the users can use the same SSO (e.g., GitHub) to log in to the Dashboard. -{% endhint %} - -{% hint style="info" %} +::: -If you have questions, please let us know on our discord channel. [![Join Discord](https://img.shields.io/badge/Join%20us%20on-Discord-e01563.svg)](https://discord.gg/jsRG5qx2gp) +:::info +If you have questions, please let us know on our discord channel. [![](https://img.shields.io/badge/Join%20us%20on-Discord-e01563.svg)](https://discord.gg/jsRG5qx2gp) -{% endhint %} \ No newline at end of file +::: \ No newline at end of file diff --git a/docs/setup/install/install-devtron-with-cicd-with-gitops.md b/docs/setup/install/install-devtron-with-cicd-with-gitops.md deleted file mode 100644 index ece7210f5b..0000000000 --- a/docs/setup/install/install-devtron-with-cicd-with-gitops.md +++ /dev/null @@ -1,297 +0,0 @@ -# Install Devtron with CI/CD along with GitOps (Argo CD) - -## Introduction - -In this section, we describe the steps in detail on how you can install Devtron with CI/CD by enabling GitOps during the installation. - -{% hint style="success" %} - -Try Devtron Freemium to access all the enterprise features for free and forever, limited to adding one additional cluster. [Install Devtron Freemium](https://license.devtron.ai/dashboard) - -{% endhint %} - -{% hint style="warning" %} - -### Prerequisites - -* Install [Helm](https://helm.sh/docs/intro/install/), if you have not installed it already. - -* If you are using EKS version 1.23 or above, you must also install [aws-ebs-csi-driver](https://docs.aws.amazon.com/eks/latest/userguide/ebs-csi.html). Run the following command to install AWS EBS CSI driver using Helm: - -```bash -helm repo add aws-ebs-csi-driver \ -https://kubernetes-sigs.github.io/aws-ebs-csi-driver \ -helm repo update \ -helm upgrade --install aws-ebs-csi-driver \ ---namespace kube-system aws-ebs-csi-driver/aws-ebs-csi-driver -``` - -{% endhint %} - ---- - -## Install Devtron with CI/CD along with GitOps (Argo CD) - -Run the following command to install the latest version of Devtron with CI/CD along with GitOps (Argo CD) module: - -```bash -helm repo add devtron https://helm.devtron.ai - -helm repo update devtron - -helm install devtron devtron/devtron-operator \ ---create-namespace --namespace devtroncd \ ---set installer.modules={cicd} \ ---set argo-cd.enabled=true -``` - -**Note**: If you want to configure Blob Storage during the installation, refer [Configure Blob Storage During Installation](#configure-blob-storage-during-installation). - - - - ---- - -## Configure Blob Storage during Installation - -Configuring Blob Storage in your Devtron environment allows you to store build logs and cache. -In case, if you do not configure the Blob Storage, then: - -- You will not be able to access the build logs after an hour. -- Build time for commit hash takes longer as cache is not available. -- Artifact reports cannot be generated in pre/post build and deployment stages. - -Choose one of the options to configure blob storage: - -{% tabs %} - -{% tab title="MinIO Storage" %} - -Run the following command to install Devtron along with MinIO for storing logs and cache. - -```bash -helm repo add devtron https://helm.devtron.ai - -helm repo update devtron - -helm install devtron devtron/devtron-operator \ ---create-namespace --namespace devtroncd \ ---set installer.modules={cicd} \ ---set minio.enabled=true \ ---set argo-cd.enabled=true -``` -**Note**: Unlike global cloud providers such as AWS S3 Bucket, Azure Blob Storage and Google Cloud Storage, MinIO can be hosted locally also. - -{% endtab %} - -{% tab title="AWS S3 Bucket" %} - -Refer to the `AWS specific` parameters on the [Storage for Logs and Cache](./installation-configuration.md#aws-specific) page. - -Run the following command to install Devtron along with AWS S3 buckets for storing build logs and cache: - -* Install using S3 IAM policy. - ->Note: Please ensure that S3 permission policy to the IAM role attached to the nodes of the cluster if you are using below command. - -```bash -helm repo add devtron https://helm.devtron.ai - -helm repo update devtron - -helm install devtron devtron/devtron-operator \ ---create-namespace --namespace devtroncd \ ---set installer.modules={cicd} \ ---set configs.BLOB_STORAGE_PROVIDER=S3 \ ---set configs.DEFAULT_CACHE_BUCKET=demo-s3-bucket \ ---set configs.DEFAULT_CACHE_BUCKET_REGION=us-east-1 \ ---set configs.DEFAULT_BUILD_LOGS_BUCKET=demo-s3-bucket \ ---set configs.DEFAULT_CD_LOGS_BUCKET_REGION=us-east-1 \ ---set argo-cd.enabled=true -``` - -* Install using access-key and secret-key for AWS S3 authentication: - -```bash -helm repo add devtron https://helm.devtron.ai - -helm repo update devtron - -helm install devtron devtron/devtron-operator \ ---create-namespace --namespace devtroncd \ ---set installer.modules={cicd} \ ---set configs.BLOB_STORAGE_PROVIDER=S3 \ ---set configs.DEFAULT_CACHE_BUCKET=demo-s3-bucket \ ---set configs.DEFAULT_CACHE_BUCKET_REGION=us-east-1 \ ---set configs.DEFAULT_BUILD_LOGS_BUCKET=demo-s3-bucket \ ---set configs.DEFAULT_CD_LOGS_BUCKET_REGION=us-east-1 \ ---set secrets.BLOB_STORAGE_S3_ACCESS_KEY= \ ---set secrets.BLOB_STORAGE_S3_SECRET_KEY= \ ---set argo-cd.enabled=true -``` - -* Install using S3 compatible storages: - -```bash -helm repo add devtron https://helm.devtron.ai - -helm repo update devtron - -helm install devtron devtron/devtron-operator \ ---create-namespace --namespace devtroncd \ ---set installer.modules={cicd} \ ---set configs.BLOB_STORAGE_PROVIDER=S3 \ ---set configs.DEFAULT_CACHE_BUCKET=demo-s3-bucket \ ---set configs.DEFAULT_CACHE_BUCKET_REGION=us-east-1 \ ---set configs.DEFAULT_BUILD_LOGS_BUCKET=demo-s3-bucket \ ---set configs.DEFAULT_CD_LOGS_BUCKET_REGION=us-east-1 \ ---set secrets.BLOB_STORAGE_S3_ACCESS_KEY= \ ---set secrets.BLOB_STORAGE_S3_SECRET_KEY= \ ---set configs.BLOB_STORAGE_S3_ENDPOINT= \ ---set argo-cd.enabled=true -``` - -{% endtab %} - -{% tab title="Azure Blob Storage" %} - -Refer to the `Azure specific` parameters on the [Storage for Logs and Cache](./installation-configuration.md#azure-specific) page. - -Run the following command to install Devtron along with Azure Blob Storage for storing build logs and cache: - -```bash -helm repo add devtron https://helm.devtron.ai - -helm repo update devtron - -helm install devtron devtron/devtron-operator \ ---create-namespace --namespace devtroncd \ ---set installer.modules={cicd} \ ---set secrets.AZURE_ACCOUNT_KEY=xxxxxxxxxx \ ---set configs.BLOB_STORAGE_PROVIDER=AZURE \ ---set configs.AZURE_ACCOUNT_NAME=test-account \ ---set configs.AZURE_BLOB_CONTAINER_CI_LOG=ci-log-container \ ---set configs.AZURE_BLOB_CONTAINER_CI_CACHE=ci-cache-container \ ---set argo-cd.enabled=true -``` - -{% endtab %} - -{% tab title="Google Cloud Storage" %} - -Refer to the `Google Cloud specific` parameters on the [Storage for Logs and Cache](./installation-configuration.md#google-cloud-storage-specific) page. - -Run the following command to install Devtron along with Google Cloud Storage for storing build logs and cache: - - -```bash -helm repo add devtron https://helm.devtron.ai - -helm repo update devtron - -helm install devtron devtron/devtron-operator \ ---create-namespace --namespace devtroncd \ ---set installer.modules={cicd} \ ---set configs.BLOB_STORAGE_PROVIDER=GCP \ ---set secrets.BLOB_STORAGE_GCP_CREDENTIALS_JSON=eyJ0eXBlIjogInNlcnZpY2VfYWNjb3VudCIsInByb2plY3RfaWQiOiAiPHlvdXItcHJvamVjdC1pZD4iLCJwcml2YXRlX2tleV9pZCI6ICI8eW91ci1wcml2YXRlLWtleS1pZD4iLCJwcml2YXRlX2tleSI6ICI8eW91ci1wcml2YXRlLWtleT4iLCJjbGllbnRfZW1haWwiOiAiPHlvdXItY2xpZW50LWVtYWlsPiIsImNsaWVudF9pZCI6ICI8eW91ci1jbGllbnQtaWQ+IiwiYXV0aF91cmkiOiAiaHR0cHM6Ly9hY2NvdW50cy5nb29nbGUuY29tL28vb2F1dGgyL2F1dGgiLCJ0b2tlbl91cmkiOiAiaHR0cHM6Ly9vYXV0aDIuZ29vZ2xlYXBpcy5jb20vdG9rZW4iLCJhdXRoX3Byb3ZpZGVyX3g1MDlfY2VydF91cmwiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vb2F1dGgyL3YxL2NlcnRzIiwiY2xpZW50X3g1MDlfY2VydF91cmwiOiAiPHlvdXItY2xpZW50LWNlcnQtdXJsPiJ9Cg== \ ---set configs.DEFAULT_CACHE_BUCKET=cache-bucket \ ---set configs.DEFAULT_BUILD_LOGS_BUCKET=log-bucket \ ---set argo-cd.enabled=true -``` - -{% endtab %} -{% endtabs %} - ---- - -## Check Status of Devtron Installation - -**Note**: The installation takes about 15 to 20 minutes to spin up all of the Devtron microservices one by one. - - Run the following command to check the status of the installation: - -```bash -kubectl -n devtroncd get installers installer-devtron \ --o jsonpath='{.status.sync.status}' -``` - -The command executes with one of the following output messages, indicating the status of the installation: - -| Status | Description | -| :--- | :--- | -| `Downloaded` | The installer has downloaded all the manifests, and the installation is in progress. | -| `Applied` | The installer has successfully applied all the manifests, and the installation is completed. | - ---- - -## Check the installer logs - -Run the following command to check the installer logs: - -```bash -kubectl logs -f -l app=inception -n devtroncd -``` - ---- - -## Devtron dashboard - -Run the following command to get the Devtron dashboard URL: - -```bash -kubectl get svc -n devtroncd devtron-service \ --o jsonpath='{.status.loadBalancer.ingress}' -``` - -You will get an output similar to the example shown below: - -```bash -[map[hostname:aaff16e9760594a92afa0140dbfd99f7-305259315.us-east-1.elb.amazonaws.com]] -``` - -Use the hostname `aaff16e9760594a92afa0140dbfd99f7-305259315.us-east-1.elb.amazonaws.com` (Loadbalancer URL) to access the Devtron dashboard. - -**Note**: If you do not get a hostname or receive a message that says "service doesn't exist," it means Devtron is still installing. -Please wait until the installation is completed. - -**Note**: You can also use a `CNAME` entry corresponding to your domain/subdomain to point to the Loadbalancer URL to access at a customized domain. - -| Host | Type | Points to | -| :--- | :--- | :--- | -| devtron.yourdomain.com | CNAME | aaff16e9760594a92afa0140dbfd99f7-305259315.us-east-1.elb.amazonaws.com | - ---- - -## Devtron Admin credentials - -When you install Devtron for the first time, it creates a default admin user and password (with unrestricted access to Devtron). You can use that credentials to log in as an administrator. - -**Username**: `admin`
-**Password**: Run the following command to get the admin password: - -```bash -kubectl -n devtroncd get secret devtron-secret \ --o jsonpath='{.data.ADMIN_PASSWORD}' | base64 -d -``` - -{% hint style="info" %} - -### Next Recommended Action - -When you install Devtron for the first time, it creates a default admin user and password (with unrestricted access to Devtron). You can use it to log in as an administrator. - -After the initial login, we recommend you set up any [Single Sign-On (SSO)](../../user-guide/global-configurations/sso-login.md) service like Google, GitHub, etc., and then add other users (including yourself). Subsequently, all the users can use the same SSO (e.g., GitHub) to log in to the Dashboard. - -{% endhint %} - -{% hint style="info" %} - -If you have questions, please let us know on our discord channel. [![Join Discord](https://img.shields.io/badge/Join%20us%20on-Discord-e01563.svg)](https://discord.gg/jsRG5qx2gp) - -{% endhint %} \ No newline at end of file diff --git a/docs/setup/install/install-devtron-with-cicd.md b/docs/setup/install/install-devtron-with-cicd.md deleted file mode 100644 index e8d50a05f3..0000000000 --- a/docs/setup/install/install-devtron-with-cicd.md +++ /dev/null @@ -1,297 +0,0 @@ -# Install Devtron with CI/CD - -In this section, we describe the steps in detail on how you can install Devtron with CI/CD integration. - -{% hint style="success" %} - -Try Devtron Freemium to access all the enterprise features for free and forever, limited to adding one additional cluster. [Install Devtron Freemium](https://license.devtron.ai/dashboard) - -{% endhint %} - -{% hint style="warning" %} - -### Prerequisites - -* Install [Helm](https://helm.sh/docs/intro/install/), if you have not installed it already. - -* If you are using EKS version 1.23 or above, you must also install [aws-ebs-csi-driver](https://docs.aws.amazon.com/eks/latest/userguide/ebs-csi.html). Run the following command to install AWS EBS CSI driver using Helm: - -```bash -helm repo add aws-ebs-csi-driver \ -https://kubernetes-sigs.github.io/aws-ebs-csi-driver \ -helm repo update \ -helm upgrade --install aws-ebs-csi-driver \ ---namespace kube-system aws-ebs-csi-driver/aws-ebs-csi-driver -``` - -{% endhint %} - ---- - -## Command - -Run the following command to install the latest version of Devtron along with the CI/CD module: - -```bash -helm repo add devtron https://helm.devtron.ai - -helm repo update devtron - -helm install devtron devtron/devtron-operator \ ---create-namespace --namespace devtroncd \ ---set installer.modules={cicd} -``` - -{% hint style="info" %} - -If you want to configure Blob Storage during the installation, refer [Configure Blob Storage During Installation](#configure-blob-storage-during-installation). - -{% endhint %} - - - ---- - -## Configure Blob Storage during Installation - -Configuring Blob Storage in your Devtron environment allows you to store build logs and cache. -In case, if you do not configure the Blob Storage, then: - -- You will not be able to access the build logs after an hour. -- Build time for commit hash takes longer as cache is not available. -- Artifact reports cannot be generated in pre/post build and deployment stages. - -Choose one of the options to configure blob storage: - -{% tabs %} - -{% tab title="MinIO Storage" %} - -Run the following command to install Devtron along with MinIO for storing logs and cache. - -```bash -helm repo add devtron https://helm.devtron.ai - -helm repo update devtron - -helm install devtron devtron/devtron-operator \ ---create-namespace --namespace devtroncd \ ---set installer.modules={cicd} \ ---set minio.enabled=true -``` -**Note**: Unlike global cloud providers such as AWS S3 Bucket, Azure Blob Storage and Google Cloud Storage, MinIO can be hosted locally also. - -{% endtab %} - -{% tab title="AWS S3 Bucket" %} - -Refer to the `AWS specific` parameters on the [Storage for Logs and Cache](./installation-configuration.md#aws-specific) page. - -Run the following command to install Devtron along with AWS S3 buckets for storing build logs and cache: - -* Install using S3 IAM policy. - ->Note: Please ensure that S3 permission policy to the IAM role attached to the nodes of the cluster if you are using below command. - -```bash -helm repo add devtron https://helm.devtron.ai - -helm repo update devtron - -helm install devtron devtron/devtron-operator \ ---create-namespace --namespace devtroncd \ ---set installer.modules={cicd} \ ---set configs.BLOB_STORAGE_PROVIDER=S3 \ ---set configs.DEFAULT_CACHE_BUCKET=demo-s3-bucket \ ---set configs.DEFAULT_CACHE_BUCKET_REGION=us-east-1 \ ---set configs.DEFAULT_BUILD_LOGS_BUCKET=demo-s3-bucket \ ---set configs.DEFAULT_CD_LOGS_BUCKET_REGION=us-east-1 -``` - -* Install using access-key and secret-key for AWS S3 authentication: - -```bash -helm repo add devtron https://helm.devtron.ai - -helm repo update devtron - -helm install devtron devtron/devtron-operator \ ---create-namespace --namespace devtroncd \ ---set installer.modules={cicd} \ ---set configs.BLOB_STORAGE_PROVIDER=S3 \ ---set configs.DEFAULT_CACHE_BUCKET=demo-s3-bucket \ ---set configs.DEFAULT_CACHE_BUCKET_REGION=us-east-1 \ ---set configs.DEFAULT_BUILD_LOGS_BUCKET=demo-s3-bucket \ ---set configs.DEFAULT_CD_LOGS_BUCKET_REGION=us-east-1 \ ---set secrets.BLOB_STORAGE_S3_ACCESS_KEY= \ ---set secrets.BLOB_STORAGE_S3_SECRET_KEY= -``` - -* Install using S3 compatible storages: - -```bash -helm repo add devtron https://helm.devtron.ai - -helm repo update devtron - -helm install devtron devtron/devtron-operator \ ---create-namespace --namespace devtroncd \ ---set installer.modules={cicd} \ ---set configs.BLOB_STORAGE_PROVIDER=S3 \ ---set configs.DEFAULT_CACHE_BUCKET=demo-s3-bucket \ ---set configs.DEFAULT_CACHE_BUCKET_REGION=us-east-1 \ ---set configs.DEFAULT_BUILD_LOGS_BUCKET=demo-s3-bucket \ ---set configs.DEFAULT_CD_LOGS_BUCKET_REGION=us-east-1 \ ---set secrets.BLOB_STORAGE_S3_ACCESS_KEY= \ ---set secrets.BLOB_STORAGE_S3_SECRET_KEY= \ ---set configs.BLOB_STORAGE_S3_ENDPOINT= -``` - -{% endtab %} - -{% tab title="Azure Blob Storage" %} - -Refer to the `Azure specific` parameters on the [Storage for Logs and Cache](./installation-configuration.md#azure-specific) page. - -Run the following command to install Devtron along with Azure Blob Storage for storing build logs and cache: - -```bash -helm repo add devtron https://helm.devtron.ai - -helm repo update devtron - -helm install devtron devtron/devtron-operator \ ---create-namespace --namespace devtroncd \ ---set installer.modules={cicd} \ ---set secrets.AZURE_ACCOUNT_KEY=xxxxxxxxxx \ ---set configs.BLOB_STORAGE_PROVIDER=AZURE \ ---set configs.AZURE_ACCOUNT_NAME=test-account \ ---set configs.AZURE_BLOB_CONTAINER_CI_LOG=ci-log-container \ ---set configs.AZURE_BLOB_CONTAINER_CI_CACHE=ci-cache-container -``` - -{% endtab %} - -{% tab title="Google Cloud Storage" %} - -Refer to the `Google Cloud specific` parameters on the [Storage for Logs and Cache](./installation-configuration.md#google-cloud-storage-specific) page. - -Run the following command to install Devtron along with Google Cloud Storage for storing build logs and cache: - -```bash -helm repo add devtron https://helm.devtron.ai - -helm repo update devtron - -helm install devtron devtron/devtron-operator \ ---create-namespace --namespace devtroncd \ ---set installer.modules={cicd} \ ---set configs.BLOB_STORAGE_PROVIDER=GCP \ ---set secrets.BLOB_STORAGE_GCP_CREDENTIALS_JSON=eyJ0eXBlIjogInNlcnZpY2VfYWNjb3VudCIsInByb2plY3RfaWQiOiAiPHlvdXItcHJvamVjdC1pZD4iLCJwcml2YXRlX2tleV9pZCI6ICI8eW91ci1wcml2YXRlLWtleS1pZD4iLCJwcml2YXRlX2tleSI6ICI8eW91ci1wcml2YXRlLWtleT4iLCJjbGllbnRfZW1haWwiOiAiPHlvdXItY2xpZW50LWVtYWlsPiIsImNsaWVudF9pZCI6ICI8eW91ci1jbGllbnQtaWQ+IiwiYXV0aF91cmkiOiAiaHR0cHM6Ly9hY2NvdW50cy5nb29nbGUuY29tL28vb2F1dGgyL2F1dGgiLCJ0b2tlbl91cmkiOiAiaHR0cHM6Ly9vYXV0aDIuZ29vZ2xlYXBpcy5jb20vdG9rZW4iLCJhdXRoX3Byb3ZpZGVyX3g1MDlfY2VydF91cmwiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vb2F1dGgyL3YxL2NlcnRzIiwiY2xpZW50X3g1MDlfY2VydF91cmwiOiAiPHlvdXItY2xpZW50LWNlcnQtdXJsPiJ9Cg== \ ---set configs.DEFAULT_CACHE_BUCKET=cache-bucket \ ---set configs.DEFAULT_BUILD_LOGS_BUCKET=log-bucket -``` - -{% endtab %} -{% endtabs %} - ---- - -## Check Status of Devtron Installation - -{% hint style="info" %} -The installation takes about 15 to 20 minutes to spin up all of the Devtron microservices one by one -{% endhint %} - -Run the following command to check the status of the installation: - -```bash -kubectl -n devtroncd get installers installer-devtron \ --o jsonpath='{.status.sync.status}' -``` - -The command executes with one of the following output messages, indicating the status of the installation: - -| Status | Description | -| :--- | :--- | -| `Downloaded` | The installer has downloaded all the manifests, and the installation is in progress. | -| `Applied` | The installer has successfully applied all the manifests, and the installation is completed. | - ---- - -## Check the Installer Logs - -Run the following command to check the installer logs: - -```bash -kubectl logs -f -l app=inception -n devtroncd -``` - ---- - -## Devtron Dashboard - -Run the following command to get the Devtron dashboard URL: - -```bash -kubectl get svc -n devtroncd devtron-service \ --o jsonpath='{.status.loadBalancer.ingress}' -``` - -You will get an output similar to the example shown below: - -```bash -[map[hostname:aaff16e9760594a92afa0140dbfd99f7-305259315.us-east-1.elb.amazonaws.com]] -``` - -Use the hostname `aaff16e9760594a92afa0140dbfd99f7-305259315.us-east-1.elb.amazonaws.com` (Loadbalancer URL) to access the Devtron dashboard. - -{% hint style="info" %} -If you do not get a hostname or receive a message that says "service doesn't exist," it means Devtron is still installing. Please wait until the installation is completed. -{% endhint %} - -{% hint style="info" %} -You can also use a `CNAME` entry corresponding to your domain/subdomain to point to the Loadbalancer URL to access at a customized domain. -{% endhint %} - -| Host | Type | Points to | -| :--- | :--- | :--- | -| devtron.yourdomain.com | CNAME | aaff16e9760594a92afa0140dbfd99f7-305259315.us-east-1.elb.amazonaws.com | - ---- - -## Devtron Admin Credentials - -When you install Devtron for the first time, it creates a default admin user and password (with unrestricted access to Devtron). You can use that credentials to log in as an administrator. - -**Username**: `admin`
-**Password**: Run the following command to get the admin password: - -```bash -kubectl -n devtroncd get secret devtron-secret \ --o jsonpath='{.data.ADMIN_PASSWORD}' | base64 -d -``` - -{% hint style="info" %} - -### Next Recommended Action - -When you install Devtron for the first time, it creates a default admin user and password (with unrestricted access to Devtron). You can use it to log in as an administrator. - -After the initial login, we recommend you set up any [Single Sign-On (SSO)](../../user-guide/global-configurations/sso-login.md) service like Google, GitHub, etc., and then add other users (including yourself). Subsequently, all the users can use the same SSO (e.g., GitHub) to log in to the Dashboard. - -{% endhint %} - -{% hint style="info" %} - -If you have any questions, please let us know on our Discord channel. [![Join Discord](https://img.shields.io/badge/Join%20us%20on-Discord-e01563.svg)](https://discord.gg/jsRG5qx2gp) - -{% endhint %} \ No newline at end of file diff --git a/docs/setup/install/install-devtron.md b/docs/setup/install/install-devtron.md old mode 100644 new mode 100755 index 78aa676870..251bac4bdc --- a/docs/setup/install/install-devtron.md +++ b/docs/setup/install/install-devtron.md @@ -1,18 +1,19 @@ --- hidden: true +hide_table_of_contents: true --- -{% hint style="info" %} - -### Note +# Get Admin Credentials +:::info Note Refer [Install Devtron](./README.md) to know the available tiers and installation options. +::: -{% endhint %} +## Using Own Kubernetes Cluster? -When you install Devtron for the first time, it creates a default admin user and password (with unrestricted access to Devtron). You can use that credentials to log in as an administrator. +When Devtron is installed on your own Kubernetes cluster, it creates a default admin user and password (with unrestricted access to Devtron). You can use that credentials to log in as an administrator. -**Username**: `admin`
+**Username**: `admin`
**Password**: Run the following command to get the admin password: ```bash @@ -20,12 +21,21 @@ kubectl -n devtroncd get secret devtron-secret \ -o jsonpath='{.data.ADMIN_PASSWORD}' | base64 -d ``` -{% hint style="info" %} +--- + +## Using Devtron Cloud (SaaS)? + +If you are using the 30-day trial version of [Devtron Cloud (SaaS)](../install/devtron-freemium.md#option-3-devtron-cloud-saas), follow the steps below to get the credentials. -### Next Recommended Action +1. Go to [Devtron's License Dashboard](https://license.devtron.ai/dashboard/) and sign in using SSO or registered email address used at the time of installation. +2. Once logged in, the Devtron License Dashboard will show your existing license. Below the license, you will find the Dashboard URL and login password (username will be `admin`). + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/install-devtron/freemium/view-creds.jpg) +
Figure 1: License Page
+ +:::info Next Recommended Action When you install Devtron for the first time, it creates a default admin user and password (with unrestricted access to Devtron). You can use it to log in as an administrator. After the initial login, we recommend you set up any [Single Sign-On (SSO)](../../user-guide/global-configurations/sso-login.md) service like Google, GitHub, etc., and then add other users (including yourself). Subsequently, all the users can use the same SSO (e.g., GitHub) to log in to the Dashboard. - -{% endhint %} \ No newline at end of file +::: \ No newline at end of file diff --git a/docs/setup/install/installation-configuration.md b/docs/setup/install/installation-configuration.md old mode 100644 new mode 100755 index efe0d86fc7..c18f43cce3 --- a/docs/setup/install/installation-configuration.md +++ b/docs/setup/install/installation-configuration.md @@ -1,3 +1,6 @@ +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + # Installation Configuration ## Configure Secrets @@ -124,10 +127,10 @@ In case, if you do not configure the Blob Storage, then: You can configure Blob Storage with one of the following Blob Storage providers given below: **Note**: You can also use the respective following command to switch to another Blob Storage provider. As an example, If you are using MinIO Storage and want to switch to Azure Blob Storage, use the command provided on the Azure Blob Storage tab to switch. -{% tabs %} + -{% tab title="MinIO Storage" %} + Use the following command to configure MinIO for storing logs and cache. @@ -142,9 +145,9 @@ helm upgrade devtron devtron/devtron-operator --namespace devtroncd \ --set minio.enabled=true ``` -{% endtab %} + -{% tab title="AWS S3 Bucket" %} + Use the following command to configure AWS S3 bucket for storing build logs and cache. Refer to the `AWS specific` parameters on the [Storage for Logs and Cache](#aws-specific) page. * **Configure using S3 IAM policy:** @@ -199,9 +202,9 @@ helm upgrade devtron devtron/devtron-operator --namespace devtroncd \ --set configs.BLOB_STORAGE_S3_ENDPOINT= ``` -{% endtab %} + -{% tab title="Azure Blob Storage" %} + Use the following command to configure Azure Blob Storage for storing build logs and cache. Refer to the `Azure specific` parameters on the [Storage for Logs and Cache](#azure-specific) page. @@ -217,9 +220,9 @@ helm upgrade devtron devtron/devtron-operator --namespace devtroncd \ --set configs.AZURE_BLOB_CONTAINER_CI_CACHE=ci-cache-container ``` -{% endtab %} + -{% tab title="Google Cloud Storage" %} + Use the following command to configure Google Cloud Storage for storing build logs and cache. Refer to the `Google Cloud specific` parameters on the [Storage for Logs and Cache](#google-cloud-storage-specific) page. @@ -235,9 +238,9 @@ helm upgrade devtron devtron/devtron-operator --namespace devtroncd \ --set configs.DEFAULT_BUILD_LOGS_BUCKET=log-bucket ``` -{% endtab %} + -{% tab title="S3-compatible Storage" %} + Use the following command to configure S3-compatible storage (e.g., Longhorn) for storing build logs and cache. ```bash @@ -255,8 +258,8 @@ helm upgrade devtron devtron/devtron-operator --namespace devtroncd \ --set configs.BLOB_STORAGE_S3_ENDPOINT= ``` -{% endtab %} -{% endtabs %} + + --- @@ -379,13 +382,12 @@ Before installing Devtron, create the following databases on your external Postg 4. **casbin** - Authorization and policy database 5. **clairv4** - (*Optional*) Required only if you are using [Clair](../../user-guide/integrations/vulnerability-scanning/clair.md) for image scanning instead of [Trivy](../../user-guide/integrations/vulnerability-scanning/trivy.md) -{% hint style="warning" %} -### Not sure how to create a PostgreSQL database? +:::warning Not sure how to create a PostgreSQL database? Here’s how you can create databases using popular providers: * [Amazon RDS instance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateDBInstance.html) * [Google Cloud SQL for PostgreSQL](https://cloud.google.com/sql/docs/postgres/create-instance#create-2nd-gen) * [Azure Database for PostgreSQL](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/quickstart-create-server) -{% endhint %} +::: #### Database Creation Commands @@ -404,10 +406,9 @@ CREATE DATABASE clairv4; ### Devtron Configuration for External DB -{% hint style="warning" %} -### Note +:::warning Note Ensure the [required databases](#database-creation-commands) exist before proceeding. -{% endhint %} +::: When installing Devtron, you can specify your external PostgreSQL by using either of the following: * Updating `values.yaml` file @@ -501,4 +502,4 @@ HIDE_DISCORD=false |-|-| |RECOMMEND_SECURITY_SCANNING | If True, `security scanning` is `enabled` by default for a new build pipeline. Users can however turn it off in the new or existing pipelines.| |FORCE_SECURITY_SCANNING | If set to True, `security scanning` is forcefully `enabled` by default for a new build pipeline. Users can not turn it off for new as well as for existing build pipelines. Old pipelines that have security scanning disabled will remain unchanged and image scanning should be enabled manually for them.| -|HIDE_DISCORD | Hides discord chatbot from the dashboard.| +|HIDE_DISCORD | Hides discord chatbot from the dashboard.| \ No newline at end of file diff --git a/docs/setup/install/override-default-devtron-installation-configs.md b/docs/setup/install/override-default-devtron-installation-configs.md old mode 100644 new mode 100755 index ee3eb02a46..a036b96077 --- a/docs/setup/install/override-default-devtron-installation-configs.md +++ b/docs/setup/install/override-default-devtron-installation-configs.md @@ -82,4 +82,4 @@ In the existing namespace, apply the production overrides as we do it above. ```bash kubectl apply -f prod-configs -n devtroncd -``` +``` \ No newline at end of file diff --git a/docs/setup/install/prod-infra.md b/docs/setup/install/prod-infra.md old mode 100644 new mode 100755 index b4baae137e..beccbc1959 --- a/docs/setup/install/prod-infra.md +++ b/docs/setup/install/prod-infra.md @@ -46,10 +46,9 @@ Use our provided [Terraform scripts](https://github.com/devtron-labs/utilities/t ### Azure (AKS) Use our provided [Terraform scripts](https://github.com/devtron-labs/utilities/tree/main/terraform/terraform-aks) to set up AKS cluster for Devtron. -{% hint style="success" %} -### Next Step +:::success Next Step Proceed with the [Devtron installation on your cluster](../install/devtron-oss.md). -{% endhint %} +::: --- @@ -67,10 +66,7 @@ Below are the core components (Devtron microservices) for which you need to allo | **Kubewatch** | 200m | 300m | 600Mi | 1000Mi | -{% hint style="info" %} - -### Need a YAML template to add resources? - +:::info Need a YAML template to add resources? You can create a resources file similar to this [YAML file](https://github.com/devtron-labs/devtron/blob/main/charts/devtron/resources-small.yaml) and add resources according to your load and requirements for any service you want, and remove those you don’t wish to modify. Run the following command once the file is ready: @@ -79,7 +75,7 @@ Run the following command once the file is ready: helm upgrade devtron devtron/devtron-operator -n devtroncd --reuse-values -f resources-values-file.yaml ``` -{% endhint %} +::: --- @@ -89,11 +85,11 @@ helm upgrade devtron devtron/devtron-operator -n devtroncd --reuse-values -f res To ensure CI workloads run exclusively on the dedicated CI nodes, you need to specify the taints and labels to the node. Then, for the CI build pods, you can add the tolerations and node selectors in the `devtron-custom-cm` (ConfigMap) of `devtroncd` namespace using [these keys](./installation-configuration.md#configure-overrides). These will automatically propagate to CI workloads when they are created. -If you are following our [Cloud-Specific Setup Guidelines](#id-2.-cloud-specific-setup-guidelines) then set the below values for the keys in `devtron-custom-cm`: +If you are following our [Cloud-Specific Setup Guidelines](#2-cloud-specific-setup-guidelines) then set the below values for the keys in `devtron-custom-cm`: ``` bash CI_NODE_LABEL_SELECTOR: purpose=ci CI_NODE_TAINTS_KEY: dedicated CI_NODE_TAINTS_VALUE: ci -``` +``` \ No newline at end of file diff --git a/docs/setup/install/uninstall-devtron.md b/docs/setup/install/uninstall-devtron.md old mode 100644 new mode 100755 index 83222b5ddd..ec65f714ed --- a/docs/setup/install/uninstall-devtron.md +++ b/docs/setup/install/uninstall-devtron.md @@ -1,3 +1,7 @@ +--- +hide_table_of_contents: true +--- + # Uninstall Devtron To uninstall Devtron, run the following command: @@ -16,5 +20,4 @@ kubectl delete ns devtroncd devtron-cd devtron-ci devtron-demo argo ``` -**Note**: If you have questions, please let us know on our discord channel. [![Join Discord](https://img.shields.io/badge/Join%20us%20on-Discord-e01563.svg)](https://discord.gg/jsRG5qx2gp) - +**Note**: If you have questions, please let us know on our discord channel. [![](https://img.shields.io/badge/Join%20us%20on-Discord-e01563.svg)](https://discord.gg/jsRG5qx2gp) \ No newline at end of file diff --git a/docs/setup/start-using.md b/docs/setup/start-using.md old mode 100644 new mode 100755 index 7fd5959358..e45a351d63 --- a/docs/setup/start-using.md +++ b/docs/setup/start-using.md @@ -2,7 +2,7 @@ #### configure docker registry -Please [setup docker registry](../user-guide/global-configurations/docker-registries.md) before deploying application. +Please [setup docker registry](../user-guide/global-configurations/container-registries.md) before deploying application. ## Deploying Applications @@ -10,9 +10,8 @@ Please [setup docker registry](../user-guide/global-configurations/docker-regist Please use [this spring boot app](https://github.com/nishant-d/demo.git) repo for reference and follow steps described in the video -{% embed url="https://www.youtube.com/watch?v=Tz01aKDqBAI&feature" caption="" %} +
### deploy helm chart -for deploying helm chart follow [helm chart installation guide](../user-guide/deploy-chart/) - +for deploying helm chart follow [helm chart installation guide](../user-guide/deploy-chart/) \ No newline at end of file diff --git a/docs/setup/upgrade-devtron.md b/docs/setup/upgrade-devtron.md deleted file mode 100644 index 03e9482ceb..0000000000 --- a/docs/setup/upgrade-devtron.md +++ /dev/null @@ -1,2 +0,0 @@ -# Upgrade Devtron - diff --git a/docs/setup/upgrade/README.md b/docs/setup/upgrade/README.md old mode 100644 new mode 100755 index 478931ad44..4fce793b9d --- a/docs/setup/upgrade/README.md +++ b/docs/setup/upgrade/README.md @@ -18,4 +18,4 @@ Devtron can be upgraded in one of the following ways: ## Upgrade Devtron from the UI - [Update Devtron from Devtron UI](upgrade-devtron-ui.md) -- [Update Devtron to beta version](devtron-upgrade-to-beta.md) +- [Update Devtron to beta version](devtron-upgrade-to-beta.md) \ No newline at end of file diff --git a/docs/setup/upgrade/devtron-upgrade-0.2.x-0.3.x.md b/docs/setup/upgrade/devtron-upgrade-0.2.x-0.3.x.md old mode 100644 new mode 100755 diff --git a/docs/setup/upgrade/devtron-upgrade-0.3.x-0.3.x.md b/docs/setup/upgrade/devtron-upgrade-0.3.x-0.3.x.md old mode 100644 new mode 100755 index 17895d026f..c47930a29c --- a/docs/setup/upgrade/devtron-upgrade-0.3.x-0.3.x.md +++ b/docs/setup/upgrade/devtron-upgrade-0.3.x-0.3.x.md @@ -6,7 +6,7 @@ If you want to check the current version of Devtron you are using, please use th kubectl -n devtroncd get installers installer-devtron -o jsonpath='{.status.sync.data}' | grep "^LTAG=" | cut -d"=" -f2- ``` -## Follow the below mentioned steps to upgrade the Devtron version using Helm +## Upgrade the Devtron version using Helm 1. Fetch the latest Devtron helm chart @@ -27,7 +27,7 @@ helm upgrade devtron devtron/devtron-operator --namespace devtroncd --set instal ``` -## Follow the below mentioned steps to upgrade the Devtron version using Kubectl +## Upgrade the Devtron version using Kubectl 1. Input the target Devtron version that you want to upgrade to. You can find the latest releases from Devtron on Github https://github.com/devtron-labs/devtron/releases diff --git a/docs/setup/upgrade/devtron-upgrade-0.3.x-0.4.x.md b/docs/setup/upgrade/devtron-upgrade-0.3.x-0.4.x.md old mode 100644 new mode 100755 index 1c85beab45..db384a13f0 --- a/docs/setup/upgrade/devtron-upgrade-0.3.x-0.4.x.md +++ b/docs/setup/upgrade/devtron-upgrade-0.3.x-0.4.x.md @@ -6,7 +6,7 @@ If you want to check the current version of Devtron you are using, please use th kubectl -n devtroncd get installers installer-devtron -o jsonpath='{.status.sync.data}' | grep "^LTAG=" | cut -d"=" -f2- ``` -## Follow the below mentioned steps to upgrade the Devtron version using Helm +## Upgrade the Devtron version using Helm ### 1. Check the devtron release name ```bash @@ -64,4 +64,4 @@ DEVTRON_TARGET_VERSION=v0.4.x helm upgrade devtron devtron/devtron-operator --namespace devtroncd \ -f https://raw.githubusercontent.com/devtron-labs/devtron/$DEVTRON_TARGET_VERSION/charts/devtron/devtron-bom.yaml \ --set installer.modules={cicd} --reuse-values -``` +``` \ No newline at end of file diff --git a/docs/setup/upgrade/devtron-upgrade-0.4.x-0.4.x.md b/docs/setup/upgrade/devtron-upgrade-0.4.x-0.4.x.md old mode 100644 new mode 100755 index 8fdeb8cc5d..912d9f176a --- a/docs/setup/upgrade/devtron-upgrade-0.4.x-0.4.x.md +++ b/docs/setup/upgrade/devtron-upgrade-0.4.x-0.4.x.md @@ -6,7 +6,7 @@ If you want to check the current version of Devtron you are using, please use th kubectl -n devtroncd get installers installer-devtron -o jsonpath='{.status.sync.data}' | grep "^LTAG=" | cut -d"=" -f2- ``` -## Follow the below mentioned steps to upgrade the Devtron version using Helm +## Upgrade the Devtron version using Helm ### 1. Check the devtron release name @@ -44,4 +44,4 @@ DEVTRON_TARGET_VERSION=v0.4.x helm upgrade devtron devtron/devtron-operator --namespace devtroncd \ -f https://raw.githubusercontent.com/devtron-labs/devtron/$DEVTRON_TARGET_VERSION/charts/devtron/devtron-bom.yaml \ --set installer.modules={cicd} --reuse-values -``` +``` \ No newline at end of file diff --git a/docs/setup/upgrade/devtron-upgrade-0.4.x-0.5.x.md b/docs/setup/upgrade/devtron-upgrade-0.4.x-0.5.x.md old mode 100644 new mode 100755 index 5ee8b63f52..a31068593e --- a/docs/setup/upgrade/devtron-upgrade-0.4.x-0.5.x.md +++ b/docs/setup/upgrade/devtron-upgrade-0.4.x-0.5.x.md @@ -6,7 +6,7 @@ If you want to check the current version of Devtron you are using, please use th kubectl -n devtroncd get installers installer-devtron -o jsonpath='{.status.sync.data}' | grep "^LTAG=" | cut -d"=" -f2- ``` -## Follow the below mentioned steps to upgrade the Devtron version using Helm +## Upgrade the Devtron version using Helm ### 1. Apply Prerequisites Patch Job diff --git a/docs/setup/upgrade/devtron-upgrade-0.5.x-0.6.x.md b/docs/setup/upgrade/devtron-upgrade-0.5.x-0.6.x.md old mode 100644 new mode 100755 index ab9cca73ba..d1453ed1e3 --- a/docs/setup/upgrade/devtron-upgrade-0.5.x-0.6.x.md +++ b/docs/setup/upgrade/devtron-upgrade-0.5.x-0.6.x.md @@ -6,7 +6,7 @@ If you want to check the current version of Devtron you are using, please use th kubectl -n devtroncd get installers installer-devtron -o jsonpath='{.status.sync.data}' | grep "^LTAG=" | cut -d"=" -f2- ``` -## Follow the below mentioned steps to upgrade the Devtron version using Helm +## Upgrade the Devtron version using Helm ### 1. Check the devtron release name diff --git a/docs/setup/upgrade/devtron-upgrade-0.6.x-0.7.x.md b/docs/setup/upgrade/devtron-upgrade-0.6.x-0.7.x.md old mode 100644 new mode 100755 index 16cefd8693..f83b3cda1b --- a/docs/setup/upgrade/devtron-upgrade-0.6.x-0.7.x.md +++ b/docs/setup/upgrade/devtron-upgrade-0.6.x-0.7.x.md @@ -52,4 +52,5 @@ helm upgrade devtron devtron/devtron-operator -n devtroncd --reuse-values -f htt ## Expected Command Output -![Command Output](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/kubernetes-resource-browser/command-output.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/kubernetes-resource-browser/command-output.jpg) +
Figure 1: Command Output
\ No newline at end of file diff --git a/docs/setup/upgrade/devtron-upgrade-1.5.0.md b/docs/setup/upgrade/devtron-upgrade-1.5.0.md old mode 100644 new mode 100755 index 747c073b51..ba04b81544 --- a/docs/setup/upgrade/devtron-upgrade-1.5.0.md +++ b/docs/setup/upgrade/devtron-upgrade-1.5.0.md @@ -138,4 +138,4 @@ helm repo update ```bash helm upgrade devtron devtron/devtron-operator -n devtroncd --reuse-values -f https://raw.githubusercontent.com/devtron-labs/devtron/refs/tags/v1.5.1/charts/devtron/devtron-bom.yaml --version 0.22.93 -``` +``` \ No newline at end of file diff --git a/docs/setup/upgrade/devtron-upgrade-to-beta.md b/docs/setup/upgrade/devtron-upgrade-to-beta.md old mode 100644 new mode 100755 index 36aaf468cd..58c29f0eac --- a/docs/setup/upgrade/devtron-upgrade-to-beta.md +++ b/docs/setup/upgrade/devtron-upgrade-to-beta.md @@ -17,4 +17,4 @@ $ helm upgrade devtron . --reuse-values --namespace devtroncd \ -f devtron-bom.yaml ``` -> Note: There is no option to upgrade to beta on stack manager UI as of now and you may always see upgrade available for latest stable version using which you'll be moved to latest stable version available. +> Note: There is no option to upgrade to beta on stack manager UI as of now and you may always see upgrade available for latest stable version using which you'll be moved to latest stable version available. \ No newline at end of file diff --git a/docs/setup/upgrade/upgrade-devtron-ui.md b/docs/setup/upgrade/upgrade-devtron-ui.md old mode 100644 new mode 100755 index 6a2a3e9836..13ce370062 --- a/docs/setup/upgrade/upgrade-devtron-ui.md +++ b/docs/setup/upgrade/upgrade-devtron-ui.md @@ -1,8 +1,13 @@ +--- +hide_table_of_contents: true +--- + # Update Devtron from Devtron UI -Devtron can be updated from the **Devtron Stack Manager > About Devtron** section. +Devtron can be updated from the **Devtron Stack Manager → About Devtron** section. -![Upgrade Devtron](https://devtron-public-asset.s3.us-east-2.amazonaws.com/integrations/about-devtron.png) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/integrations/about-devtron.png) +
Upgrade Devtron
* Select **Update to Devtron** @@ -16,4 +21,4 @@ The update process may show one of the following statuses, with details availabl | Unknown | Status is unknown at the moment and will be updated shortly. | | Request timed out | The request to install has hit the maximum number of retries. You may retry the installation or [contact support](https://discord.devtron.ai/) for further assistance. | -> Updating Devtron also updates the installed integrations. +> Updating Devtron also updates the installed integrations. \ No newline at end of file diff --git a/docs/user-guide/Deploy-sample-app/nodejs_app.md b/docs/user-guide/Deploy-sample-app/nodejs_app.md deleted file mode 100644 index bd4aa87b8c..0000000000 --- a/docs/user-guide/Deploy-sample-app/nodejs_app.md +++ /dev/null @@ -1,12 +0,0 @@ -# Let's deploy a sample App - -Hurray! -Your Devtron stack is completely setup. Let's get started by deploying a simple application on it. - -{% embed url="https://www.youtube.com/watch?v=9u-pKiWV-tM&t=2s" caption="Deploy a Kubernetes Node.js micro-service using Devtron" %} - -## Find out the steps here - -This is a sample Nodejs application which we are going to deploy using Devtron. For a detailed step-wise procedure, please have a look at the link below - - -[Getting Started with Deploying application through devtron](https://github.com/devtron-labs/getting-started-nodejs#getting-started-with-deploying-application-through-devtron) \ No newline at end of file diff --git a/docs/user-guide/ai-recommendations/README.md b/docs/user-guide/ai-recommendations/README.md new file mode 100755 index 0000000000..372c3206c9 --- /dev/null +++ b/docs/user-guide/ai-recommendations/README.md @@ -0,0 +1,61 @@ +--- +title: AI Recommendations +sidebar_label: AI Recommendations +--- + +## Introduction + +As you scale with Kubernetes, you may come across the dilemma of inefficiency: +* Over-provisioned clusters +* Workloads running at, let's say, 20% utilization +* Soaring cloud bills + +Devtron’s AI-powered initiative redefines how Site Reliability Engineers (SREs) and DevOps teams interact with their infrastructure. It monitors, reasons, and acts on cost inefficiencies using explainable AI. + +
+ +It operates across two modules to implement rightsizing actions: + +1. [**Notifications**](#notifications) - Automated optimization insights of your Kubernetes resources. +2. [**Runbooks**](#runbooks) - Predefined or AI-generated remediation workflows. + +--- + +## User Personas + +| Persona | Role | +|----------|------| +| **SRE / DevOps Engineer** | Primary user for AI recommendations and runbook automation. | +| **Superadmin** | Reviews approvals and monitors audit trails. | +| **Developer** | Queries workloads and costs through AI Chat. | + +--- + +## Associated Modules + +### Notifications + +Sends intimation regarding potential optimization across clusters to save costs. +* Users can **Approve**, **Reject**, or **Revert** recommendations. +* Each action links to a relevant runbook for remediation. + +[Click here](notifications.md) to know more about Notifications. + +--- + +### Runbooks +Defines YAML-based remediation actions. +* Supports indefinite and time-bound approvals. +* Includes per-cluster execution and audit tracking. + +[Click here](runbook.md) to know more about Runbooks. + +#### Audit Logs +Maintains a full record of all user and AI-driven actions. +* Provides audit trail of runbook. +* Filterable by user, module, and action type. + +:::tip Additional Resources: +* [**Watch Devtron's AI Capabilities**](https://youtu.be/a_dgwYxrAD4). +* [**Devtron Intelligence**](../devtron-intelligence.md) - An AI agent that helps you will troubleshooting of workloads. +* **Ask Devtron Expert** - A simple chat interface for queries and analytics (accessible from the top-right of your screen). \ No newline at end of file diff --git a/docs/user-guide/ai-recommendations/notifications.md b/docs/user-guide/ai-recommendations/notifications.md new file mode 100755 index 0000000000..64db0e675f --- /dev/null +++ b/docs/user-guide/ai-recommendations/notifications.md @@ -0,0 +1,86 @@ +# Notifications + +The **Notifications** screen lists AI-generated recommendations for your Kubernetes cluster. Each recommendation highlights cost or performance improvement opportunities. + +--- + +## Viewing Recommendations + +Go to **AI Recommendations** → **Notifications** to view the list. + +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/ai-recommendations/notification-listing.jpg) +
Figure 1: 'Notification' Listing
+ +Each recommendation item includes: + +| Field | Description | +|--------|-------------| +| **Read/Unread Indicator** | Represented by a bulb icon on the left. Unread notifications display a red dot indicator 🔴. Once you read or acknowledge it, the red dot disappears. | +| **Title** | One-line description of what the AI recommends. | +| **Description** | Shows why the recommendation is suggested to you. | +| **Category** | Tags representing the scope of improvement: e.g. `Cost Optimization` or `Performance Improvement`. | +| **Priority** | Tags representing the importance of the recommendation item: `Low`, `Medium`, `High`, or `Urgent`. | +| **Potential Savings** | The impact or extent of savings (e.g., “80% resource reduction”). | +| **Cluster** | The affected cluster you have added to Devtron. | +| **Status** | Action Pending, Completed, Failed, etc. Check [all possible statuses and their meaning](#notification-feed-statuses). | +| **Processed By** | Associated runbook or automation. | +| **Timestamp** | Date and time when the recommendation is generated or updated. | +| **(⋮) Context Menu** | **Acknowledge** - To mark as read
**Revert Change** - To undo the remediation. Only possible when `Status` = `Completed`. | + +You can click a recommendation to get its [Detailed View](#detailed-view). + +--- + +## Detailed View + +This modal window has two tabs: [Summary](#summary) and [Recommended Change](#recommended-change): + +### Summary + +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/ai-recommendations/summary-proposal.jpg) +
Figure 2: Summary of AI Proposal
+ +Apart from the recommendation details seen earlier, this will show additional information, such as: + +* **AI Thought Process** - Displays the line-by-line analysis done by AI before suggesting you the recommendation. +* **Activity Trail** - Shows the actions taken by the AI as well as the approver. + +The next step is to [review the recommendation](#recommended-change). + +### Recommended Change + +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/ai-recommendations/recommended-change.jpg) +
Figure 3: Diff of Proposed Changes
+ +This tab shows you the configuration diff for you to compare the existing configuration vs recommended change. +If the recommended change is yet to be acted upon or depending on the [current status of notification](#notification-feed-statuses), you get **Approve** and **Reject** button for accepting/discarding the recommendation. + +AI automatically generates the runbook corresponding to the recommendation. When the user (superadmin) approves a recommendation, it triggers the corresponding runbook and the remediation takes place. + +:::info What is a Runbook? +A [Runbook](./runbook.md) is a predefined action that Devtron runs to apply a change, such as resizing resources or hibernating a namespace. +When you approve a recommendation, its linked runbook carries out the change with the required safety checks and approvals. +::: + + +--- + +## Extras + +### Notification Feed Statuses + +Each recommendation in the notification feed reflects one of the following backend statuses. + +| Status | Description | User Action | +|---------|--------------|-------------| +| **ACTION_REQUIRED** | The engine requires user approval before executing the recommendation. | **Approve / Reject** available. | +| **READY_FOR_TRIGGER** | All preconditions are met, and the recommendation can be triggered or executed. | May show **Approve** if still pending confirmation; otherwise system-handled. | +| **ACTION_IN_PROGRESS** | The remediation (runbook) linked to the recommendation is currently executing. | No action because execution is underway. | +| **COMPLETED** | The action has been successfully executed and finalized. | No action. May show **Revert Change** if rollback is supported. | +| **REJECTED** | The recommendation was explicitly rejected by the user or system. | No further action available unless the recommendation reappears. | +| **ERRORED** | The process failed due to an exception or invalid configuration. | No direct action. System or admin intervention may be required. | +| **REVERTED** | The applied change has been undone, returning to the previous state. | No action. Audit entry only. | + +:::tip +You can filter recommendations by status to monitor ongoing discoveries, pending actions, or completed remediations. +::: \ No newline at end of file diff --git a/docs/user-guide/ai-recommendations/runbook.md b/docs/user-guide/ai-recommendations/runbook.md new file mode 100755 index 0000000000..c7f13f3dc4 --- /dev/null +++ b/docs/user-guide/ai-recommendations/runbook.md @@ -0,0 +1,281 @@ +# Runbooks + +## Introduction + +A [Runbook](./runbook.md) is a predefined action that Devtron runs to apply a change, such as resizing resources or hibernating a namespace. When you approve an [AI recommendation](notifications.md), its linked runbook carries out the change with the required approvals. + +### Using AI-generated Runbooks + +Whenever AI detects an optimization opportunity, it automatically generates a corresponding runbook to carry out the recommended change once approved. These runbooks are auto-linked from [Notifications](notifications.md) of **AI Recommendations**. + +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/ai-recommendations/runbook-listing.jpg) +
Figure 1: Runbook Listing
+ +:::info Example of Remediation Action +When AI recommends a cost optimization such as reducing memory allocation, the linked runbook carries out that change. +For example, scaling down a pod’s memory limit from 6 Gi to 3 Gi across selected clusters. +::: + +:::tip Next Steps +1. [Verify/Edit Runbook Spec](#add-runbook-spec) +2. [Approve/Reject Runbook](#approval-types) +::: + +### Using Your Runbook + +If you wish to create or modify a runbook beyond what AI generates automatically, Devtron allows you to create one. + +:::info +Follow this section only if you wish to create a runbook different than the one generated by AI. +::: + +1. From the left navigation, go to **AI Recommendations** → **Runbooks**. + +2. Click **Create Runbook**. + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/ai-recommendations/create-runbook.jpg) +
Figure 2: Creating New Runbook
+ +3. Enter the following details: + * **Name** - Example: `update-resource-limits` + * **Description** - Example: Updates CPU and memory limits for workloads. + +4. Click **Create Runbook** to save. + +:::tip Next Steps +1. [Verify/Edit Runbook Spec](#add-runbook-spec) +2. [Approve/Reject Runbook](#approval-types) +::: + +--- + +## Add Runbook Spec + +You can edit your runbooks here. Each runbook follows a YAML structure that defines its metadata, tags, and executable steps. + +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/ai-recommendations/edit-runbook-spec.jpg) +
Figure 3: Edit Runbook Spec
+ +Use the YAML editor in Devtron to paste and modify this structure. + +```yaml +apiVersion: devtron.ai/v1 +kind: Runbook +metadata: + name: + description: + tags: + - + - +spec: + steps: + - name: + action: + type : + parameters: + param1: + param2: + onFailure: + - nextStep: +``` + +Each step in runbook spec represents one operation that can interact with Kubernetes resources, Devtron apps, or external systems. Below are the most commonly used predefined actions supported by Devtron runbooks. + +### Example 1: Get Deployment Manifest + +Retrieves the manifest of a specified deployment in a Kubernetes cluster. + +```yaml +spec: + steps: + - name: + action: get-k8s-workload-controller-manifest + type : kubectl-get + parameters: + clusterId: "{{.clusterId}}" + group: "{{.group}}" + version: "{{.version}}" + kind: "Deployment" + namespace: "{{.namespace}}" + resourceName: "{{.resourceName}}" +``` + +:::tip When to use +To inspect the configuration of an existing deployment before applying any changes. +::: + +### Example 2: Update Resource Spec in Deployment Manifest + +Updates the CPU and memory requests or limits for a container inside a Kubernetes workload. + +```yaml +spec: + steps: + - name: + action: update-k8s-workload-resource-spec + type : kubectl-patch + parameters: + clusterId: "{{.clusterId}}" + group: "{{.group}}" + version: "{{.version}}" + kind: "Pod" + namespace: "{{.namespace}}" + resourceName: "{{.resourceName}}" + patch: + spec: + container: + name: "{{.containerName}}" + resources: + requests: + cpu: "{{.newCpuRequestValue}}" + memory: "{{.newMemoryRequestValue}}" + limits: + cpu: "{{.newCpuLimitValue}}" + memory: "{{.newMemoryLimitValue}}" +``` + +:::tip When to use +To rightsize workload resource consumption and optimize costs. +::: + + +### Example 3: Update Resource Spec in Devtron Apps Config + +Applies resource specification updates within Devtron-managed application configurations. + +```yaml +spec: + steps: + - name: + action: update-resource-spec-devtron-apps-config + type : devtron-app-patch + parameters: + clusterId: "{{.clusterId}}" + group: "{{.group}}" + version: "{{.version}}" + kind: "Pod" + namespace: "{{.namespace}}" + resourceName: "{{.resourceName}}" + patch: + spec: + container: + name: "{{.containerName}}" + resources: + requests: + cpu: "{{.newCpuRequestValue}}" + memory: "{{.newMemoryRequestValue}}" + limits: + cpu: "{{.newCpuLimitValue}}" + memory: "{{.newMemoryLimitValue}}" +``` + +:::tip When to use +To modify resource values for Devtron-managed apps directly through the configuration interface. +::: + +### Example 4: Update Resource Spec in Helm Chart Values + +Modifies resource settings defined within Helm chart values YAML files. + +```yaml +spec: + steps: + - name: + action: update-resource-spec-helm-chart-values-yaml + type : helm-chart-patch + parameters: + clusterId: "{{.clusterId}}" + group: "{{.group}}" + version: "{{.version}}" + kind: "Pod" + namespace: "{{.namespace}}" + resourceName: "{{.resourceName}}" + patch: + spec: + container: + name: "{{.containerName}}" + resources: + requests: + cpu: "{{.newCpuRequestValue}}" + memory: "{{.newMemoryRequestValue}}" + limits: + cpu: "{{.newCpuLimitValue}}" + memory: "{{.newMemoryLimitValue}}" +``` + +:::tip When to use +To synchronize Helm chart values with runtime resource adjustments. +::: + +### Example 5: Webhook to Any Service + +Sends a webhook to an external service for integrations such as Slack notifications, monitoring tools, or CI/CD triggers. + +```yaml +spec: + steps: + - name: + action: webhook + type : devtron-action + parameters: + url: <<"url to which the webhook needs to be sent">> + headers: <<"headers to be included in the webhook">> + httpMethod: <<"HTTP method to be used (GET, POST, etc.)">> + body: <<"body of the webhook">> +``` + +:::tip When to use +To notify other systems or trigger automated workflows upon completion of a Devtron runbook. +::: + +--- + +## Approval Types + +Before execution, every AI-generated runbook requires an approval decision. You can approve or reject its execution for specific clusters and different durations. + +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/ai-recommendations/runbook-approval.gif) +
Figure 4: Approve or Reject Runbook
+ +When you take an action, Devtron applies the following logic: + +* If you approve or reject a runbook, the decision auto-applies to all the recommendations linked to that runbook across the selected clusters. +* If you approve or reject an individual recommendation, the runbook is rejected only for that specific cluster where the recommendation originated. + + +### Approve Options + +| Option | Behavior | Example Use Case | +| ----------- | ------------------------ | ------------------- | +| **Forever** | All future runs of this runbook stands indefinitely auto-approved. | For dev or sandbox clusters where downtime or failed runs are acceptable and you want continuous savings. | +| **Till date & time** | Auto-approves until a specific expiry date and time. | During a maintenance window or before a critical demo, so changes are applied automatically until that period ends. | +| **For duration** | Auto-approves temporarily for a set number of hours. | For short tests or limited-time fixes, such as approving remediation for the next few hours. | + + +### Reject Options +| Option | Behavior | Example Use Case | +| ------------ | ----------------------- | -------------------- | +| **Forever** | Blocks all future runs of this runbook permanently. | For production clusters where any automated remediation is risky or unwanted. | +| **Till date & time** | Rejects runs until a specific expiry date and time. | When you want the cluster to stay stable (e.g., during a product demo or release). | +| **For duration** | Rejects runs temporarily for a few hours. | To pause remediation during high-traffic periods or while verifying manual changes. | + +:::note What happens when the approval or rejection period expires? +When any approval or rejection period ends, the runbook status resets to **Action Pending**. The user is expected to take an action again. +::: + +--- + +## Audit Logs + +Every Runbook logs: + +* Created / Updated / Approved / Rejected actions +* User, timestamp, and resource +* Full JSON payload for traceability + +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/ai-recommendations/runbook-audit-log.gif) +
Figure 5: Audit Log
+ +You can access this under **AI Recommendations** → **Runbooks** → **Audit Logs**. + + diff --git a/docs/user-guide/app-configurations/README.md b/docs/user-guide/app-configurations/README.md new file mode 100755 index 0000000000..926936eaf1 --- /dev/null +++ b/docs/user-guide/app-configurations/README.md @@ -0,0 +1,38 @@ +--- +id: README +title: Configurations +sidebar_label: Configurations +description: Manage GitOps, chart repositories, notifications, and build infrastructure settings for applications in Devtron. +--- + +The **Configurations** section in Devtron lets you manage all foundational settings that influence how your applications are built, deployed, and updated. + +It provides the configuration layer that integrates source code, chart repositories, and notification systems across your organization. + +--- + +## Table of Contents + +### 1. [GitOps](../global-configurations/gitops.md) +Enable and manage GitOps to synchronize application states between Git repositories and Kubernetes clusters. + +### 2. [Git Accounts](../global-configurations/git-accounts.md) +Add and manage Git provider credentials used for fetching codebases and storing Helm chart configurations. + +### 3. [External Links](../global-configurations/external-links.md) +Add supporting quick links to dashboards, documentation, or observability tools within the Devtron apps. + +### 4. [Chart Repository](../global-configurations/chart-repo.md) +Integrate public or private Helm chart repositories for deploying charts. + +### 5. [Deployment Charts](../global-configurations/deployment-charts.md) +Manage custom Helm charts and deployment templates that define the characteristics of your applications. + +### 6. [Notifications](../global-configurations/manage-notification.md) +Configure notification channels (e.g., Slack, Email, Webhooks) to receive real-time deployment and build alerts. + +### 7. [Scoped Variables](../global-configurations/scoped-variables.md) +Define and manage scoped environment variables that can be reused across multiple application and jobs pipelines. + +### 8. [Build Infra](../global-configurations/build-infra.md) +Tweak the resources (CPU, RAM, and many more) as per the needs of your applications. \ No newline at end of file diff --git a/docs/user-guide/app-details/README.md b/docs/user-guide/app-details/README.md old mode 100644 new mode 100755 index a00cdcb51d..fe0844306e --- a/docs/user-guide/app-details/README.md +++ b/docs/user-guide/app-details/README.md @@ -18,7 +18,8 @@ The **App Details** page acts as a comprehensive dashboard that provides a bird' * Rollback deployments and much more -![Figure 1: "App Details" Page](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/app-details-home.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/app-details-home.jpg) +
Figure 1: "App Details" Page
Consider the **App Details** page as the following two sections: @@ -26,15 +27,12 @@ Consider the **App Details** page as the following two sections: * [Manage Kubernetes resources](app-resource-management.md) - Where you can manage the logs, manifest, and events of your Kubernetes resources and scan for vulnerabilities. -{% hint style="warning" %} - -### Who can perform this action? - +:::caution Who can perform this action? Anyone with a `View Only` permission can view this page, but only those at the level of `Admin` (with specific app permissions) or above can take actions on this page. Refer to [User Permissions](../global-configurations/authorization/user-access.md) for more information. -{% endhint %} +::: --- diff --git a/docs/user-guide/app-details/app-resource-management.md b/docs/user-guide/app-details/app-resource-management.md old mode 100644 new mode 100755 index fb047306a3..fa729bfcc8 --- a/docs/user-guide/app-details/app-resource-management.md +++ b/docs/user-guide/app-details/app-resource-management.md @@ -4,7 +4,8 @@ You can check for vulnerabilities, analyze logs, create ephemeral containers, and manage a few resource kinds directly from the **App Details** page. -![Figure 1: Resource Management](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/resource-management.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/resource-management.jpg) +
Figure 1: Resource Management
--- ## K8s Resources @@ -27,27 +28,25 @@ When you choose a Kubernetes resource kind (e.g., pods), you can perform a few a | **Actions** |**Description**| |:------------- |:--------------| -| **Logs** | Choose **Logs** when you want to view the logs of running pods (old and new). The logs that you get when you click **Logs** and the logs you get when you go via **Log Analyzer** are the same.
Note: **Logs** are available only for the **Pod** resource kind. | +| **Logs** | Choose **Logs** when you want to view the logs of running pods (old and new). The logs that you get when you click **Logs** and the logs you get when you go via **Log Analyzer** are the same.
Note: **Logs** are available only for the **Pod** resource kind. | | **Terminal** | Choose **Terminal** when you want to view logs, debug issues, or execute commands directly. Please note that this terminal is different from the cluster terminal that you get on a node level. | | **Events** | Choose **Events** when you want to view all the activities (create/update/delete) of the selected pod. | | **Manifest** | Choose **Manifest** when you want to view or edit the configuration of the selected pod. | -![Figure 2: Resource Kinds and Available Actions](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/available-actions.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/available-actions.jpg) +
Figure 2: Resource Kinds and Available Actions
--- ### Check Vulnerabilities -{% hint style="warning" %} - -### Prerequisite - +:::caution Prerequisite To check vulnerabilities, any one of the following integrations must be installed in your Devtron instance: * [Clair](../../user-guide/integrations/vulnerability-scanning/clair.md) * [Trivy](../../user-guide/integrations/vulnerability-scanning/trivy.md) -{% endhint %} +::: One of the primary reasons to check for vulnerabilities is to catch problems in images, or code, or in the Kubernetes manifest before they end up in production. While Code Scan and Kubernetes Manifest Scan are a part of Devtron's Enterprise offering, you can, however, check for vulnerabilities in your images directly from the **App Details** page. @@ -65,7 +64,8 @@ Follow the below steps to check for vulnerabilities: 3. Click **Check Vulnerabilities**. The **Security** page will be displayed. - ![Figure 3: Security Page](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/security-page.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/security-page.jpg) +
Figure 3: Security Page
From the **Security** page, you can view the scan results categorized by severity. When you click on the image link, you will get an even more detailed scan results, including CVE ID (Common Vulnerabilities and Exposures) and package (the specific place where the vulnerability is present) information. To know more, refer to [Security](../../user-guide/security-features.md). @@ -96,13 +96,12 @@ To know more about analyzing logs, refer to [Logs](../resource-browser/pods.md#l You create [Ephemeral Containers](https://kubernetes.io/docs/concepts/workloads/pods/ephemeral-containers/) when you want to add a temporary container to a running pod for troubleshooting and debugging purposes. -{% hint style="info" %} - +:::info Ephemeral containers are turned on by default in Kubernetes v1.23 and later -{% endhint %} +::: -{% embed url="https://www.youtube.com/watch?v=TnaHRugYvSI" caption="Launching Ephemeral Container from App Details" %} +
Follow the instructions below to create an ephemeral container from the **App Details** page: @@ -114,15 +113,18 @@ Follow the instructions below to create an ephemeral container from the **App De 4. Locate the pod you wish to debug. Hover over and click **Terminal**. - ![Figure 4: Opening a Terminal](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/debugging-deployment-and-monitoring/terminal.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/debugging-deployment-and-monitoring/terminal.jpg) +
Figure 4: Opening a Terminal
5. Click **Launch Ephemeral Container**. The **Launch ephemeral container on pod** page is displayed. - ![Figure 5: Launching an Ephemeral Container](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/debugging-deployment-and-monitoring/launch-ec-new.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/debugging-deployment-and-monitoring/launch-ec-new.jpg) +
Figure 5: Launching an Ephemeral Container
6. Choose **Basic** to create a bare minimum ephemeral container: - ![Figure 6: Basic View](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/debugging-deployment-and-monitoring/basic.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/debugging-deployment-and-monitoring/basic.jpg) +
Figure 6: Basic View
* Enter a prefix to your ephemeral container, for e.g., *debug* in the **Container name prefix** field. @@ -132,7 +134,8 @@ Follow the instructions below to create an ephemeral container from the **App De 7. Choose **Advanced** if you wish to use labels or annotations to create an ephemeral container since it provides additional key-value options. Refer [Ephemeral Container Spec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#ephemeralcontainer-v1-core) to view the supported options. - ![Figure 7: Advanced View](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/debugging-deployment-and-monitoring/advanced.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/debugging-deployment-and-monitoring/advanced.jpg) +
Figure 7: Advanced View
8. Click **Launch Container**. diff --git a/docs/user-guide/app-details/application-summary.md b/docs/user-guide/app-details/application-summary.md old mode 100644 new mode 100755 index 9d417f5330..e1df3ead25 --- a/docs/user-guide/app-details/application-summary.md +++ b/docs/user-guide/app-details/application-summary.md @@ -4,15 +4,13 @@ Devtron helps you to view your application summary in the form of [cards](#cards-overview) and [Application Metrics](#application-metrics). It also helps you perform [quick actions](#action-icons) and [manage the most widely used Kubernetes resources](app-resource-management.md) directly from the **App Details** page. -![Figure 1: App Details](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/cards-highlighted.jpg) - -{% hint style="warning" %} - -### Who can perform this action? +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/app-details/app-summary/cards-highlighted.jpg) +
Figure 1: App Details
+:::caution Who can perform this action? Anyone with a `View Only` permission can view this page, but only those at the level of `Admin` (with specific app permissions) or above can take actions on this page. Refer to [User Permissions](../global-configurations/authorization/user-access.md) for more information. -{% endhint %} +::: Follow the below steps to access the **App Details** page: @@ -28,9 +26,21 @@ The icon next to the **Env** drop-down box denotes the application deployment me * Deployed using FluxCD -![Figure 2: Deployment Method and Manifest Status](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/dep-method-manifest-status.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/app-details/app-summary/dep-method-manifest-status.jpg) +
Figure 2: Deployment Method and Manifest Status
-Manifest status (whether they are in sync or not) is denoted by [this](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/manifest-status-icon.jpg) icon. When you click on this icon, the **Live and desired manifest comparison** page is displayed (read-only) allowing you to compare the manifests and view config drifts (if there are any). +Manifest status (whether they are in sync or not) is denoted by [this](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/app-details/app-summary/manifest-status-icon.jpg) icon. When you click on this icon, the **Live and desired manifest comparison** page is displayed (read-only) allowing you to compare the manifests and view config drifts (if there are any). + +--- +## Filtering Environments + +If your application is deployed to several environments, you can narrow down the ones you want to focus on using the environment filter available in the **page header**. This filter is present across all the application pages, including **Overview**, **App Details**, **Build & Deploy**, **Build History**, **Deployment History**, **Deployment Metrics**, and **Configurations**. + +Open the filter and multi-select the environments you care about. The application then shows only the selected environments wherever the environment list appears, helping you cut through the noise when an application spans many environments. + +:::info Persistent selection +Your environment selection is saved in your browser's local storage on a per-application basis. The next time you open the same application, Devtron automatically restores the environments you had selected, so you don't have to filter them again. +::: --- ## Cards Overview @@ -39,13 +49,13 @@ Devtron provides you a quick summary of your application via cards. Refer to the | **Card Name** |**Description**| |:------------- |:--------------| -| **Application Status** | Tells you the application status (e.g., `Healthy` or `Degraded`). The available application statuses in Devtron are:
  • Degraded
  • Healthy
  • Hibernating
  • Missing
  • Not Deployed
  • Progressing
When you click **Details**, all the details about the resource kinds, their statuses, and the message (if any) are displayed. | -| **Blackout Window** / **Maintenance Window** ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/elements/EnterpriseTag.svg)| Tells you whether the application deployment is blocked or allowed for the chosen environment. This card also displays the upcoming blackout/maintenance window and the remaining time for the blackout/maintenance window to complete. Refer to [Deployment Window](../global-configurations/deployment-window.md) for more information. | +| **Application Status** | Tells you the application status (e.g., `Healthy` or `Degraded`). The available application statuses in Devtron are:
  • Degraded
  • Healthy
  • Hibernating
  • Missing
  • Not Deployed
  • Progressing
When you click **Details**, all the details about the resource kinds, their statuses, and the message (if any) are displayed. | +| **Blackout Window** / **Maintenance Window** | Tells you whether the application deployment is blocked or allowed for the chosen environment. This card also displays the upcoming blackout/maintenance window and the remaining time for the blackout/maintenance window to complete. Refer to [Deployment Window](../global-configurations/deployment-window.md) for more information. | | **Chart Used** (available only for Helm apps) | Displays the chart used to deploy the application. When you hover over the (**?**) icon in the card, you can directly configure the YAML values by clicking the **Go to Configure** option. | | **Deployed commit** (available only for Devtron apps) | Displays the commit ID of the deployed image. When you click **Details**, the commit ID, repository name, branch name, and the deployed image ID are displayed. | -| **Deployment Status** | Tells you the deployment status (e.g., `Succeeded` or `Failed`). The available deployment statuses in Devtron are:
  • Failed
  • Progressing
  • Succeeded
  • Timed Out
  • Triggered
When you click **Details**, the complete deployment status, from when it was deployed by whom to the current status of it, is displayed. | -| **Security** (available only for Devtron and Helm apps) | Displays the following security scan results:
  • Image Scan
  • Code Scan ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/elements/EnterpriseTag.svg)
  • Manifest Scan ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/elements/EnterpriseTag.svg)
Refer to [Security Policies](../security-features/security-policies.md) for more information.| -| **Rollout Deployment Visibility** ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/elements/EnterpriseTag.svg)|
  • **Canary Strategy** - Displays the live progress of how many users are being redirected to the new release. Refer to [Canary Deployments](deployment-visibility.md#for-canary-deployments) for more information.
  • **Blue Green Strategy** - Displays the progress of the Blue Green deployment. You can [swap traffic](deployment-visibility.md#swap-traffic) or [skip and promote full](deployment-visibility.md#skip--promote-full) directly from this card as per your requirement. Refer to [Blue Green Deployments](deployment-visibility.md#for-blue-green-deployments) for more information.
| +| **Deployment Status** | Tells you the deployment status (e.g., `Succeeded` or `Failed`). The available deployment statuses in Devtron are:
  • Failed
  • Progressing
  • Succeeded
  • Timed Out
  • Triggered
When you click **Details**, the complete deployment status, from when it was deployed by whom to the current status of it, is displayed. | +| **Security** (available only for Devtron and Helm apps) | Displays the following security scan results:
  • Image Scan
  • Code Scan
  • Manifest Scan
Refer to [Security Policies](../security-features/security-policies.md) for more information.| +| **Rollout Deployment Visibility** |
  • **Canary Strategy** - Displays the live progress of how many users are being redirected to the new release. Refer to [Canary Deployments](deployment-visibility.md#for-canary-deployments) for more information.
  • **Blue Green Strategy** - Displays the progress of the Blue Green deployment. You can [swap traffic](deployment-visibility.md#swap-traffic) or [skip and promote full](deployment-visibility.md#skip--promote-full) directly from this card as per your requirement. Refer to [Blue Green Deployments](deployment-visibility.md#for-blue-green-deployments) for more information.
| --- ## Action Icons @@ -56,9 +66,11 @@ You can perform a variety of actions right from the **App Details** page using t When you click the **URLs** icon, the **URLs** page is displayed with the [Ingress Host URL](../../reference/glossary.md#ingress-host-url) and the [Load Balancer URL](../../reference/glossary.md#load-balancer-url) (if available). -![Figure 3a: URLs icon](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/urls-apppage.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/app-details/app-summary/urls-apppage.jpg) +
Figure 3a: URLs icon
-![Figure 3b: URLs Page](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/debugging-deployment-and-monitoring/ingress-host-url1.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/debugging-deployment-and-monitoring/urls.jpg) +
Figure 3b: URLs Page
You can directly copy the URLs (Ingress and Load Balancer) from the **URLs** page instead of searching in the manifest. @@ -66,65 +78,56 @@ The Ingress Host URL will point to the load balancer of your application, and yo ### Hibernate -{% hint style="info" %} - -### Note - +:::info Note * This functionality is available as **Hibernate/Unhibernate** icons in Devtron apps and as a **Scale Workloads** icon in Helm apps. * When there is an ongoing blackout or maintenance window for the application, then the option to hibernate or unhibernate that app (**Scale Workloads**, in the case of a Helm app) will be restricted. -{% endhint %} +::: The **Hibernate** icon (**Scale Workloads**, in the case of a Helm app) allows you to hibernate (to rest) your application when not in use by scaling down the pods to nearly zero in that selected environment (e.g., `QA`). The application will automatically unhibernate when you make a new deployment. However, you can manually unhibernate the application by clicking the **Unhibernate** icon. -![Figure 4: Hibernate Your Application](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/hibernate.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/app-details/app-summary/hibernate.jpg) +
Figure 4: Hibernate Your Application
### Restart Workloads -{% hint style="info" %} - -### Note - +:::info Note * The **Restart Workloads** icon is available only for Devtron custom applications. * When there is an ongoing blackout or maintenance window for the application, then the **Restart Workloads** icon will be restricted. -{% endhint %} +::: When you are facing issues with your application (e.g., crashing of pods) or prefer to use a new configuration, you restart the workloads. When you click the **Restart Workloads** icon, the **Restart Workloads** page is displayed. -![Figure 5: Restart Workloads](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/restart-workloads.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/app-details/app-summary/restart-workloads.jpg) +
Figure 5: Restart Workloads
When you select a workload and click **Restart Workloads**, all the pods for the selected workloads are restarted using the configured deployment strategy (e.g., `Rolling`). ### Rollback -{% hint style="info" %} - -### Note - +:::info Note * The **Rollback** icon is available only for Devtron custom applications. * You will not be able to rollback your deployment during blackout window and outside maintenance window of the application. -{% endhint %} +::: You can perform a rollback of your deployment directly from the **App Details** page. When you click the **Rollback** icon, the following page is displayed. -![Figure 6: Rollback Your Deployment](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/rollback.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/app-details/app-summary/rollback.jpg) +
Figure 6: Rollback Your Deployment
* Select an image from the available list of previously deployed images in that specific environment. -{% hint style="info" %} - -### Note - +:::info Note When there is an active policy in place for an environment, and there are no approved images, then no images will be displayed in the **Rollback** page. -{% endhint %} +::: * Select one of the following deployment configurations in the **Deploy** drop-down box: @@ -142,19 +145,17 @@ When there is an active policy in place for an environment, and there are no app ### Deploy -{% hint style="info" %} - -### Note - +:::info Note * The **Deploy** button is available only for Devtron custom applications. * When there is an ongoing blackout or maintenance window for the application, the **Deploy** button will be changed to **Deployment is Blocked** and you will not be able to deploy during this time period. -{% endhint %} +::: Devtron helps you in deploying images directly from the **App Details** page. When you click the **Deploy** button, the following page is displayed. -![Figure 7: Deploy Your Application](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/deploy.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/app-details/app-summary/deploy.jpg) +
Figure 7: Deploy Your Application
Follow the below steps to deploy an image: @@ -176,41 +177,38 @@ Follow the below steps to deploy an image: ### Environment Configurations -{% hint style="info" %} - -### Note - +:::info Note The **Environment Configuration** icon is available only for Devtron custom applications. -{% endhint %} +::: You can quickly configure Deployment Templates, ConfigMaps and Secrets for the selected environment directly from the **App Details** page. When you click the **Go to Environment Config** icon, the following page is displayed. -![Figure 8: Environment Configurations](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/env-config.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/app-details/app-summary/env-config.jpg) +
Figure 8: Environment Configurations
-To configure enviroment specific Deployment Templates, ConfigMaps, Secrets, refer to [Environment Overrides](../creating-application/environment-overrides.md#environment-overrides). +To configure enviroment specific Deployment Templates, ConfigMaps, Secrets, refer to [Environment Overrides](../creating-application/environment-overrides.md). --- ## External Links All your [external links configured](../../user-guide/global-configurations/external-links.md) in the **Configurations** tab are displayed in the **App Details** page. When you hover around an external link (e.g. `Grafana`), a description of the external link is displayed. To know more, refer to [External Links](../global-configurations/external-links.md). -![Figure 9: External Links](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/external-links/app-details-external-link.jpg) - -{% hint style="info" %} - -### Note +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/external-links/app-details-external-link.jpg) +
Figure 9: External Links
+:::info Note If you enable `App admins can edit` in the **External Links** page, then only non super admins can view the selected links on the **App Details** page. -{% endhint %} +::: --- ## Application Metrics Application metrics help you in evaluating the performance and efficiency of your application. The Application Metrics section can be enabled by enabling the checkbox **Show application metrics** while configuring the application. Refer to [Application Metrics](../creating-application/app-metrics.md) for more information. -![Figure 10: Application Metrics](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-metrics/app-metrics.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-metrics/app-metrics.jpg) +
Figure 10: Application Metrics
--- ## Next Steps diff --git a/docs/user-guide/app-details/application-tags.md b/docs/user-guide/app-details/application-tags.md new file mode 100644 index 0000000000..af3f794444 --- /dev/null +++ b/docs/user-guide/app-details/application-tags.md @@ -0,0 +1,218 @@ +# Application Tags & Special Tag Handling + +## Introduction + +Application **tags** (also called **labels**) are key–value pairs you attach to a Devtron application. They are used to organize and search applications, to enforce governance through mandatory tags, and—when **propagated**—to add Kubernetes labels to the resources created for the application, including the **build (CI) infrastructure**. + +This document explains: + +* What application tags are and how to set them. +* The **Propagate** flag and where propagated tags end up. +* How tags are used by the **build infrastructure** (CI build pods). +* **Special and reserved tag handling** — the `devtron.ai/` reserved prefix, and enterprise **Global Tags** (mandatory tags, deployment policies, and value constraints). + +:::info +### What is OSS vs Enterprise +* **Application tags** and the **Propagate** flag are available in all editions. +* **Build Infrastructure profiles** are available in all editions; the **Node Selector**, **Tolerations**, **ConfigMap**, and **Secret** options are **Enterprise-only**. +* **Global Tags** (mandatory tags, deployment policies, value constraints) are an **Enterprise-only** feature. +::: + +--- + +## Application Tags (Labels) + +Each tag on an application has three parts: + +| Field | Type | Description | +| --- | --- | --- | +| `key` | string | The tag key. **Required.** Must be a valid Kubernetes label key when propagated. | +| `value` | string | The tag value. Optional when the tag is **not** propagated; **required** when propagated. | +| `propagate` | boolean | Whether the tag is added as a Kubernetes label on the application's resources. Defaults to `true`. | + +You set tags when creating or editing an application (under the application's **Overview / About** section), or via the API. A tag can be added with only a key (no value) as long as it is **not** propagated. + +### Tag Validation Rules + +Validation depends on whether the tag is propagated: + +* **`propagate = false`** — The tag is stored in Devtron only. The key is required; the value may be empty. It is **not** applied to any Kubernetes resource. +* **`propagate = true`** — The tag becomes a real Kubernetes label, so both key and value must satisfy Kubernetes label rules: + * **Key** must be a *qualified name* (optional DNS-subdomain prefix + name, allowed characters, length limits) and cannot be empty. + * **Value** must be a valid Kubernetes label value and cannot be empty. + +:::info +If a propagated tag's key or value is not a valid Kubernetes label, Devtron rejects the application create/update with a validation error. +::: + +--- + +## The Propagate Flag + +The `propagate` flag controls whether a tag is merely metadata inside Devtron or a real Kubernetes label on the resources Devtron creates for the application. + +* **`propagate = false`** — The tag is kept only in Devtron's database. Use this for organizational/searchable metadata (owner, team, cost-center notes, etc.) that you don't want on cluster objects. +* **`propagate = true`** — The tag is added as a Kubernetes label to the application's resources. Use this when you want the label to exist on the cluster for selection, cost allocation, network policies, or observability. + +You can filter an application's tags by propagation status when reading them (e.g. "show propagated only"). + +--- + +## Tags and Build Infrastructure + +When you trigger a CI build, the application's tags travel with the build request. Whether the **propagated** tags are applied as Kubernetes labels on the **build pod** (the buildx/CI runner pod) is controlled by a per-application feature flag. + +| Feature Flag | Default | Effect | +| --- | --- | --- | +| `propagate-labels-in-buildx-pod` | `FALSE` | When enabled for an application, that application's **propagated** tags are added as labels on the CI build (buildx) pod. When disabled, build pods are not labelled with the application's tags. | + +This lets platform teams apply governance, cost-allocation, or scheduling-related labels to the ephemeral build pods, consistently with the deployed workload. + +:::info +### Tags do not select the build infra profile +A common misconception is that tags choose *which* build infrastructure profile a build uses. They do **not**. Build infrastructure profiles are selected by **scope/identifiers** (application, project, environment) — see below. Tags only add **labels** to the build pod; they don't change its CPU/memory/node placement. +::: + +--- + +## Build Infrastructure Profiles + +A **Build Infrastructure profile** defines the resources and runtime settings for CI build pods. Profiles are applied by **scope** using identifiers (application / project / environment), not by tags. + +### Configurable Settings + +| Setting | API key | Availability | +| --- | --- | --- | +| CPU Request | `cpu_request` | All editions | +| CPU Limit | `cpu_limit` | All editions | +| Memory Request | `memory_request` | All editions | +| Memory Limit | `memory_limit` | All editions | +| Build Timeout | `timeout` | All editions | +| Node Selector | `node_selector` | Enterprise | +| Tolerations | `tolerations` | Enterprise | +| ConfigMap | `cm` | Enterprise | +| Secret | `cs` | Enterprise | + +### Profile Types + +| Type | Description | +| --- | --- | +| `GLOBAL` / `DEFAULT` | The baseline profile applied when no specific profile is targeted. | +| `NORMAL` | A custom profile you create and apply to specific identifiers (apps/projects/environments). | + +To target build pods to specific nodes (e.g. a dedicated build node pool), use the **Node Selector** and **Tolerations** settings of an Enterprise build infra profile — this is the supported way to control *where* a build runs, as opposed to using tags. + +--- + +## Special & Reserved Tag Handling + +### Reserved prefix: `devtron.ai/` + +Tag keys beginning with `devtron.ai/` are reserved by the platform. A tag with this prefix **cannot be propagated** — its `propagate` flag must be `false`. Attempting to propagate a `devtron.ai/*` tag is rejected with a validation error. + +### Global Tags [![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/elements/EnterpriseTag.svg)](https://devtron.ai/pricing) + +**Global Tags** let platform administrators define tag keys centrally and enforce them across applications. They differ from ordinary application tags in that they can be made **mandatory** and can **gate deployments**. + +A Global Tag has the following key properties: + +| Field | Description | +| --- | --- | +| `key` | The tag key (validated as a Kubernetes qualified name). | +| `description` | Human-readable description of the tag's purpose. | +| `mandatoryProjectIdsCsv` | Comma-separated list of project IDs for which this tag is mandatory. The special value `-1` makes it mandatory for **all** projects. | +| `propagate` | Whether the tag should be propagated as a Kubernetes label. | +| `deploymentPolicy` | How a missing mandatory tag affects deployments (see below). | +| `valueConstraint` | Optional restriction limiting the allowed values to a predefined choice list. | + +#### Deployment Policies + +When a Global Tag is mandatory, its **deployment policy** decides what happens if an application is missing that tag: + +| Policy | Effect | +| --- | --- | +| `allow` | Tag is not enforced at deploy time; deployment proceeds. | +| `block` | Deployment is **blocked** (for any environment) until the tag is present. | +| `block-prod` | Deployment to **production** environments is blocked until the tag is present. | +| `block-non-prod` | Deployment to **non-production** environments is blocked until the tag is present. | + +#### Mandatory Tag Validation + +For a project where a Global Tag is mandatory, Devtron validates each application's tags and rejects the operation if: + +* the mandatory tag **key is missing**, or +* the mandatory tag's **value is empty**, or +* the Global Tag is defined as `propagate = true` but the application's tag is **not** set to propagate. + +#### Value Constraints + +A Global Tag may carry a **value constraint** that restricts which values are acceptable (a predefined choice list). When enforced, a tag value that is not in the allowed list is rejected. + +--- + +## Validation Rules — Quick Reference + +| Rule | Applies to | Behavior | +| --- | --- | --- | +| Key required | All tags | A tag must have a non-empty key. | +| Value required | Propagated tags | A propagated tag must have a non-empty value. | +| Kubernetes label format | Propagated tags | Key must be a qualified name; value must be a valid label value. | +| `devtron.ai/` not propagatable | Reserved tags | Keys with this prefix must have `propagate = false`. | +| Mandatory tag present | Enterprise / Global Tags | Mandatory tags must be present with a value; propagate must match the Global Tag definition. | +| Value within allowed list | Enterprise / Global Tags | If a value constraint exists, the value must be one of the allowed choices. | +| Deployment policy | Enterprise / Global Tags | A missing mandatory tag can block deployment per its policy. | + +--- + +## API Reference + +### Application Tags + +| Method | Endpoint | Description | +| --- | --- | --- | +| `GET` | `/app/{appId}/labels` | Get an application's tags (supports `showPropagatedOnly=true/false`). | +| `GET` | `/app/{appId}/meta` | Get application meta info, including tags. | +| `PUT` | `/app/{appId}` | Update an application, including its tags. | + +### Global Tags (Enterprise) + +| Method | Endpoint | Description | +| --- | --- | --- | +| `GET` | `/global-tag` | List all active global tags. | +| `GET` | `/global-tag?id={id}` | Get a global tag by ID. | +| `GET` | `/global-tag/filter?projectId={id}` | Get active global tags for a project (with mandatory flags). | +| `POST` | `/global-tag` | Create global tags. | +| `PUT` | `/global-tag` | Update global tags. | +| `DELETE` | `/global-tag` | Delete global tags. | + +### Build Infrastructure Profiles + +| Method | Endpoint | Description | +| --- | --- | --- | +| `POST` | `/infra/config/profile/alpha1` | Create a profile. | +| `GET` | `/infra/config/profile/alpha1?name={name}` | Get a profile. | +| `PUT` | `/infra/config/profile/alpha1?name={name}` | Update a profile. | +| `GET` | `/infra/config/profile/alpha1/list` | List profiles. | +| `POST` | `/infra/config/identifier/{identifierType}/apply` | Apply a profile to identifiers (apps/projects/environments). | + +--- + +## Best Practices + +* Use **non-propagated** tags for internal/organizational metadata you don't want on cluster objects. +* Use **propagated** tags only for labels you genuinely need on Kubernetes resources (cost allocation, network policies, observability). Keep keys/values Kubernetes-valid. +* Reserve **Global Tags** for governance you must enforce (e.g. an `owner` or `cost-center` tag), and pick a **deployment policy** that matches how strictly it must be enforced (`block-prod` is a common choice). +* To control **where** build pods run, use a build infra profile's **Node Selector / Tolerations** — not tags. +* Avoid the `devtron.ai/` prefix for your own tags; it is reserved and cannot be propagated. + +--- + +## Troubleshooting + +| Symptom | Likely Cause | Resolution | +| --- | --- | --- | +| Cannot save a propagated tag | Key/value not Kubernetes-valid, or value empty | Ensure the key is a qualified name and the value is a valid, non-empty label value. | +| Propagated tag not showing on build pod | `propagate-labels-in-buildx-pod` disabled for the app | Enable the feature flag for the application. | +| "tag should not be propagated as label" error | Using a `devtron.ai/` key with propagate on | Set `propagate = false` for `devtron.ai/*` tags. | +| Deployment blocked by a tag | A mandatory Global Tag is missing or empty | Add the mandatory tag with a valid value (and matching propagate setting) to the application. | +| Build runs on the wrong nodes | Expecting tags to place build pods | Configure Node Selector / Tolerations in the build infra profile instead. | diff --git a/docs/user-guide/app-details/deployment-visibility.md b/docs/user-guide/app-details/deployment-visibility.md old mode 100644 new mode 100755 index 2e7dda36fb..8662b16ead --- a/docs/user-guide/app-details/deployment-visibility.md +++ b/docs/user-guide/app-details/deployment-visibility.md @@ -1,6 +1,6 @@ # Deployment Visibility & Actions -## Introduction ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/elements/EnterpriseTag.svg) +## Introduction Devtron helps you to manage your **Canary** and **Blue-Green** deployments by providing visibility and easy controls to manage how new versions (releases) are shared with users. @@ -18,23 +18,17 @@ Devtron allows you to: * Easily rollback deployments (if needed). -{% hint style="info" %} - -### Prerequisites - +:::info Prerequisites The [Deployment Chart Type](../creating-application/base-config/deployment-template.md#select-a-deployment-chart-type) must be set to rollout in order to use Blue-Green or Canary strategies. Deployment Visibility and Actions is only available for Canary and Blue-Green Strategies. Refer to the [Deployment Strategies](../creating-application/workflow/cd-pipeline.md#deployment-strategies) to learn more. -{% endhint %} - -{% hint style="warning" %} - -### Who Can Perform This Action? +::: +:::caution Who Can Perform This Action? Users need to have Build and Deploy or above (along with access to the environment and application). -{% endhint %} +::: --- @@ -44,20 +38,23 @@ Users need to have Build and Deploy or above (along with access to the environme After triggering the deployment, navigate to **App Details**, to get a quick overview of your release rollout status. -You can click the [Manage Traffic](../application-groups.md#managing-traffic) button to view the rollout status and steps involved in the release. +You can click the [Manage Traffic](../application-groups.md#managing-traffic-) button to view the rollout status and steps involved in the release. If you wish you can also trigger the next release steps (for example 25%, 50%, 75%) or you can also trigger the full rollout at once according to your use case. - ![Figure 1a: Selecting Manage Traffic](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/deployment-manage-traffic.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/app-details/deployment-visibility/deployment-manage-traffic.jpg) +
Figure 1a: Selecting Manage Traffic
- ![Figure 1b: Managing Canary Traffic](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/deployment-manage-traffic-2.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/app-details/deployment-visibility/deployment-manage-traffic-2.jpg) +
Figure 1b: Managing Canary Traffic
### For Blue Green deployments Devtron automatically swaps the traffic from the current running release to the new release based on the defined strategy configuration. In case `autoPromotionEnabled` field value is set to `false`, you can manually swap the traffic from the current release to the new release. -![Figure 2: autoPromotionEnabled: false](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/deployment-auto-promotion-enabled-false.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/app-details/deployment-visibility/deployment-auto-promotion-enabled-false.jpg) +
Figure 2: autoPromotionEnabled: false
To do so, follow the steps below: @@ -67,12 +64,14 @@ To do so, follow the steps below: 2. During Blue-Green deployment, click the **Swap Traffic** button to shift the traffic to application's new release. - ![Figure 3: Selecting Swap Traffic](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/deployment-awating-swap.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/app-details/deployment-visibility/deployment-awating-swap.jpg) +
Figure 3: Selecting Swap Traffic
3. Enter the name of the environment and select **Swap Traffic** - ![Figure 4: Swap Traffic Pop Up](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/deployment-swap-live-traffic.jpg) - + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/app-details/deployment-visibility/deployment-swap-live-traffic.jpg) +
Figure 4: Swap Traffic Pop Up
+ 4. This will route the end user traffic from the current running release to the new release on a particular environment. @@ -86,11 +85,13 @@ To do so, follow the below steps: 2. During Blue-Green deployment, click the **Skip & Promote Full** button to shift the traffic to application's new deployment. - ![Figure 5: Selecting 'Skip & Promote Full'](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/deployment-skip-and-promote.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/app-details/deployment-visibility/deployment-skip-and-promote.jpg) +
Figure 5: Selecting 'Skip & Promote Full'
3. Enter the name of the environment and select **Promote to Full**. - ![Figure 6: Promote to Full Pop Up](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/deployment-skip-and-promote-2.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/app-details/deployment-visibility/deployment-skip-and-promote-2.jpg) +
Figure 6: Promote to Full Pop Up
4. This will skip the Blue-Green Strategy and route the end user traffic from the current running release to the new release on a particular environment. @@ -108,18 +109,22 @@ To perform a rollback from App Details follow the below steps: * In case of Canary deployments, select **Rollback** under **Canary Strategy**. - ![Figure 7: Selecting Rollback For Canary Deployment](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/deployment-rollback.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/app-details/deployment-visibility/deployment-rollback.jpg) +
Figure 7: Selecting Rollback For Canary Deployment
* In case of Blue Green deployments, select **Rollback** under **Blue Green Strategy**. - ![Figure 8: Selecting Rollback For Blue Green Deployment](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/deployment-rollback-blue-green.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/app-details/deployment-visibility/deployment-rollback-blue-green.jpg) +
Figure 8: Selecting Rollback For Blue Green Deployment
3. Select the image to which you want your release to be rolled back and click **Deploy** to rollback the release. - ![Figure 9: Selecting the Image](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/deployment-rollback-select-image+.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/app-details/deployment-visibility/deployment-rollback-select-image.jpg) +
Figure 9: Selecting the Image
4. If you wish, you can select a different deployment strategy other than the default according to the use case. - ![Figure 10: Selecting Deployment Strategy](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/deployment-rollback-deploy-strag.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/app-details/deployment-visibility/deployment-rollback-deploy-strag.jpg) +
Figure 10: Selecting Deployment Strategy
5. The application will be rolled back to the previous release (image) using the selected deployment strategy. \ No newline at end of file diff --git a/docs/user-guide/app-details/ephemeral-containers.md b/docs/user-guide/app-details/ephemeral-containers.md old mode 100644 new mode 100755 index 71a61e98fa..0fe99a04cc --- a/docs/user-guide/app-details/ephemeral-containers.md +++ b/docs/user-guide/app-details/ephemeral-containers.md @@ -22,7 +22,7 @@ You can quickly create an ephemeral container directly from the **App Details** ## Create From Resource Browser -{% embed url="https://www.youtube.com/watch?v=Ml19i29Ivc4" caption="Launching Ephemeral Containers from Resource Browser" %} +
To create an ephemeral container from the Resource Browser, refer to [Launching Ephemeral Container](../resource-browser/pods.md#launching-ephemeral-container). @@ -30,13 +30,12 @@ To create an ephemeral container from the Resource Browser, refer to [Launching ## Create From Cluster Terminal -{% hint style="warning" %} - +:::caution This is not a recommended method. However, if you still wish to proceed, then this option is available only if you are an [Admin](../global-configurations/authorization/user-access.md). -{% endhint %} +::: -{% embed url="https://www.youtube.com/watch?v=PzB6dFRYe38" caption="Externally Created Ephemeral Container" %} +
--- @@ -44,10 +43,9 @@ This is not a recommended method. However, if you still wish to proceed, then th You can remove an ephemeral container from either the **App Details** page or the **Resource Browser**. -{% hint style="info" %} - +:::info If you had created an ephemeral container using the Kubernetes CLI, then you will not be able to remove the container from the **App Details** page or the **Resource Browser**. -{% endhint %} +::: -{% embed url="https://www.youtube.com/watch?v=tZID0YU0YUU" caption="Deleting Ephemeral Containers" %} \ No newline at end of file +
\ No newline at end of file diff --git a/docs/user-guide/app-labels.md b/docs/user-guide/app-labels.md old mode 100644 new mode 100755 index cfe53163d7..49e93f3c6f --- a/docs/user-guide/app-labels.md +++ b/docs/user-guide/app-labels.md @@ -17,6 +17,7 @@ values. Labels are optionals and can be entered `key:values` format. multiple labels can be added without repeating `key` name. ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-labels/app-labels-1.jpg) +
Figure 1: Add New APP
### 2. Application meta info @@ -26,16 +27,18 @@ left button next to application name `?`. This will open show you the applications meta details like project, labels associated with it. ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-labels/app-labels-2.jpg) +
Figure 2: About
### 3. Edit Labels to existing apps We also add or remove labels for app from here. ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-labels/app-labels-2.jpg) +
Figure 3: Edit Labels
### 3. Label Payload * `id` : integer unique label id * `appId` : integer application id * `key` : string key is the part of label stored individually in db. -* `value` : string value is the part of label stored individually in db. +* `value` : string value is the part of label stored individually in db. \ No newline at end of file diff --git a/docs/user-guide/app-management/README.md b/docs/user-guide/app-management/README.md new file mode 100755 index 0000000000..af24799524 --- /dev/null +++ b/docs/user-guide/app-management/README.md @@ -0,0 +1,65 @@ +--- +id: README +title: Application Management +sidebar_label: Application Management +description: Learn how to create, configure, deploy, and monitor applications using Devtron. +--- + +The **Application Management** section helps you understand every stage of the Devtron application lifecycle, from creation and configuration to deployment, monitoring, and governance. + +This section provides an end-to-end guide to how Devtron manages applications, integrates CI/CD automation, and ensures consistent, policy-driven deployments across all environments. + +--- + +## Table of Contents + +### 1. [Application Overview](./application-overview.md) +Get a high-level understanding of how applications are structured and managed in Devtron. + +### 2. [Applications](../applications.md) +Learn how to create and manage applications. +- [Create Application](../create-application.md) +- [Clone Application](../cloning-application.md) +- [Use Application Templates](../using-application-templates.md) + +#### App Configuration +- [Git Material](../creating-application/git-material.md) +- [Docker Build Configuration](../creating-application/docker-build-configuration.md) +- [Base Configurations](../creating-application/base-config/README.md) + - [Deployment Templates](../creating-application/base-config/deployment-template.md) + - [Types of Deployment Templates](../creating-application/base-config/deployment-template-types/README.md) + - [ConfigMaps](../creating-application/base-config/config-maps.md) + - [Secrets](../creating-application/base-config/secrets.md) + - [External Secrets (ESO)](../creating-application/base-config/eso/README.md) +- [GitOps Config](../creating-application/gitops-config.md) +- [Workflow Editor](../creating-application/workflow/README.md) +- [Environment Overrides](../creating-application/environment-overrides.md) +- [Deleting an Application](../deleting-application.md) + +#### Build & Deploy +- [Trigger CI/CD Pipelines](../deploying-application/README.md) +- [Rollback Deployment](../deploying-application/rollback-deployment.md) +- [Image Labels & Comments](../deploying-application/image-labels-and-comments.md) + +#### App Details +- [Application Summary](../app-details/application-summary.md) +- [App Metrics](../creating-application/app-metrics.md) +- [Deployment Visibility](../app-details/deployment-visibility.md) +- [Ephemeral Containers](../app-details/ephemeral-containers.md) + +### 3. [Application Groups](../application-groups.md) +Group related applications for unified deployment management. + +### 4. [Chart Store](../deploy-chart/README.md) +Deploy and manage Helm charts. +- [Chart Deployment](../deploy-chart/deployment-of-charts.md) +- [Chart Groups](../deploy-chart/chart-group.md) + +### 5. [Bulk Updates](../bulk-update.md) +Apply bulk configuration or template updates across applications. + +### 6. [Configurations](../app-configurations/README.md) +Manage GitOps, chart repositories, notifications, and build infrastructure. + +### 7. [Policies](../policies/README.md) +Define and enforce deployment windows, approvals, and plugin usage rules. \ No newline at end of file diff --git a/docs/user-guide/app-management/application-overview.md b/docs/user-guide/app-management/application-overview.md new file mode 100755 index 0000000000..9842fc96ff --- /dev/null +++ b/docs/user-guide/app-management/application-overview.md @@ -0,0 +1,268 @@ +import SupademoEmbed from '@site/src/components/SupademoEmbed'; + +# Application Overview + +## Introduction + +The **Application Overview** page in Devtron gives you a complete view of your Devtron Applications. It includes information about your projects, applications, environments, and pipelines, all in a single view. + +It helps you understand how your applications are organized, how your workflows are performing, thus, giving you better visibility and control in a single pane of view. + +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/application-overview/application-overview.jpg) +
Figure 1: Application Overview
+ +The **Application Overview** page contains the following sections: + +1. [At a Glance](#at-a-glance) +2. [Workflow Overview](#workflow-overview) +3. [Triggers & Build Time](#triggers--build-time) +4. [Most & Least Triggered Pipelines](#most--least-triggered-pipelines) +5. [Cost Visibility](#cost-visibility-) +6. [Best Practices](#best-practices-) + +--- + +## At a Glance + +The **At a Glance** section displays the total count of Projects, Devtron Applications, Helm Applications, and Environments, giving you an instant view of your overall applications in Devtron. + +
+ + +| **Card** | **Description** | +|------------------------|----------------| +| **Projects** | Total number of projects in Devtron | +| **Devtron Applications** | Total number of Devtron applications across all the clusters | +| **Helm Applications** | Total number of Helm applications across all the clusters| +| **Environments** | Total number of Environments in Devtron across all the clusters| + +--- + +## Workflow Overview + +The **Workflow Overview** section displays how your CI/CD workflows are functioning in Devtron. It displays important metrics such as the number of build and deployment pipelines, external image sources, and production pipelines. It also shows how many pipelines follow GitOps best practices and have image scanning enabled. + +
+ +| **Card** | **Description** | +|-----------|-----------------| +| **Build Pipelines** | Shows the total number of build pipelines configured in your Devtron | +| **Deployment Pipelines** | Shows the total number of deployment pipelines across all applications| +| **External Image Sources** | Shows the total number of build pipelines which uses external image source | +| **Scanning Enabled in Workflows** | Shows the percentage of workflows that have scanning enabled for images | +| **GitOps Compliance (Prod Pipelines)** | Shows how many production pipelines are configured using GitOps for configuration consistency| +| **Production Pipelines** | Shows the total number of production pipelines defined within your Devtron| + +### Build & Deployment Metrics + +The **Build & Deployment Metrics** section helps you assess how efficiently your teams deliver software using Devtron pipelines. It uses the industry standard DORA metrics to measure delivery performance and reliability across production deployment pipelines. + +
+ + +You can track four key metrics over a selected time range (for example, the last 30 days). + +| **Metric** | **Description** | +|-------------|-----------------| +| **Deployment Frequency** |Shows how often your deployment pipelines push new releases to production | +| **Mean Lead Time** | Shows the average time it takes for a code change to move from commit to production. It helps you understand how quickly your team can deliver new features or fixes| +| **Change Failure Rate** | Indicates the percentage of deployments that result in a failure or rollback. It helps you measure release stability and identify where improvements can reduce disruptions| +| **Mean Time to Recovery (MTTR)** | Measures how long it takes to recover from a failed deployment. It helps you assess how effectively your team can respond to and fix issues when they occur| +| **Pipelines Count by Performance** | Categorizes pipelines into **Elite**, **High**, **Medium**, and **Low** performance based on DORA metrics. Helps identify which pipelines are performing well and which may need improvement | + +Each DORA metric in Devtron uses color-coded categories to represent pipeline performance levels. These colors help you quickly interpret how your production deployment pipelines are performing, from **Elite** (best-performing) to **Low** (needs attention). + +The meaning for each color vary slightly across different metrics, reflecting how delivery speed, stability, and recovery time are measured in real-world DevOps performance. The table below summarizes what each color means for every DORA metric in Devtron. + +| **Metric** | **Color** | **Category** | **Description** | **Range / Criteria** | +|-------------|------------|---------------|------------------|-----------------------| +| **Deployment Frequency** | 🟪 **Elite** | Top performing pipelines | Deployed more than once per day | > 1 per day | +| | 🟩 **High** | High-performing pipelines | Deployed between once per day and once per week | 1 per day – 1 per week | +| | 🟨 **Medium** | Moderately active pipelines | Deployed between once per week and once per month | 1 per week – 1 per month | +| | 🟥 **Low** | Infrequently deployed pipelines | Deployed between once per month and once per 6 months | 1 per month – 1 per 6 months | +| **Mean Lead Time** | 🟪 **Elite** | Top performing pipelines | Mean lead time is less than 1 day | < 1 day | +| | 🟩 **High** | High-performing pipelines | Mean lead time is between 1 day and 1 week | 1 day - 1 week | +| | 🟨 **Medium** | Moderately efficient pipelines | Mean lead time is between 1 week and 1 month | 1 week - 1 month | +| | 🟥 **Low** | Slow pipelines | Mean lead time is between 1 day and 6 months | 1 day - 6 months | +| **Change Failure Rate** | 🟪 **Elite** | Top performing pipelines | Change failure rate is between 0-15% | 0-15% | +| | 🟩 **High** | High-performing pipelines | Change failure rate is between 16-30% | 16-30% | +| | 🟨 **Medium** | Moderately stable pipelines | Change failure rate is between 31–45% | 31–45% | +| | 🟥 **Low** | Unstable pipelines | Change failure rate is between 46–60% | 46–60% | +| **Mean Time to Recovery (MTTR)** | 🟪 **Elite** | Top performing pipelines | Mean time to recovery is less than 1 hour | < 1 hour | +| | 🟩 **High** | High-performing pipelines | Mean time to recovery is between 1 hour and 1 day | 1 hour – 1 day | +| | 🟨 **Medium** | Moderately resilient pipelines | Mean time to recovery is between 1 day and 1 week | 1 day – 1 week | +| | 🟥 **Low** | Slow recovery pipelines | Mean time to recovery is more than 1 week | > 1 week | + +:::tip Use Case + +Suppose your DevOps team is reviewing delivery performance for the last month. You notice that while Deployment Frequency has increased, the Mean Lead Time has also gone up. This suggests that more deployments are happening, but each one is taking longer to reach production. By comparing the Change Failure Rate and Mean Time to Recovery, your team can identify whether the delay is due to testing, approvals, or rollback handling. With these insights, you can fine-tune your workflow or automation to achieve faster and more reliable releases. + +::: + +--- + +## Triggers & Build Time + +The **Triggers & Build Time** section provides a detailed view of your build and deployment activities in Devtron. It helps you understand how frequently builds and deployments are triggered, how long they take, and how successful they are over time. + +
+ + +At the top, you will see three key indicators: + +| **Field** | **Description** | +|------------|----------------| +| **Total Build Triggers** | The total number of builds triggered across all pipelines within the selected time period. | +| **Average Build Time** | The average time taken for a build to complete successfully. | +| **Total Deployment Triggers** | The total number of deployments triggered during the selected time period. | + +Below each indicator, you will also find a corresponding graph that visualizes its trend over selected period of time. You can adjust the **Time Range** in the top-right corner of the graph to analyze workflow trends over different periods. + +| Option | Description | +|:----------------|:-------------| +| **Today** | Shows build and deployment activity for the current day | +| **This Week** | Displays data from the current week (Monday-Sunday) | +| **Last Week** | Displays data from the previous week for comparison | +| **This Month** | Aggregates data for the ongoing month | +| **Last Month** | Shows activity from the previous month to help you analyze changes month-over-month| +| **This Quarter**| Groups workflow data by the current quarter (**April-June**, **July-September**, **October-December**, or **Jan-March**) | + +### Build Triggers Graph + +This graph displays how build triggers change over time. +* **Blue line** - Total build triggers +* **Green line** - Successful builds +* **Red line** - Failed builds + +Hover over any point on the graph to view daily build statistics, including total, successful, and failed builds. This helps you identify trends in build frequency and stability. + +### Deployment Triggers Graph + +This graph tracks how often deployments are triggered and how many of them succeed or fail. + +* **Blue line** - Total deployments triggered +* **Green line** - Successful deployments +* **Red line** - Failed deployments + +Hover over a specific date to see deployment counts and outcomes, helping you understand deployment frequency and reliability trends. + + +### Average Build Time Graph + +This graph shows how the average build duration varies during the selected time range. + +* The **blue line** represents the average build time per day (in minutes). +* The **dotted line** shows the overall average for the selected period. + +It helps you identify days when build duration increased significantly, signaling potential issues like resource bottlenecks or slower build steps. + +:::success Use Case +Suppose your team wants to analyze why release cycles slowed down this month. +You open the **Triggers & Build Time** section and notice that build triggers spiked on October 10, with several failed builds. Deployment triggers show a similar peak on October 8, where 73 deployments ran, and 18 failed. Meanwhile, the Average Build Time graph shows a sudden rise on October 3, where builds took three times longer than usual. + +With these insights, your team can connect the dots between build failures, longer build durations, and delayed deployments, helping you take timely corrective action to keep releases smooth and predictable. + +::: + +--- + +## Most & Least Triggered Pipelines + +This section shows the build and deployment pipelines that were triggered the most and the least within the selected time range. +It helps you identify which pipelines are most active and where fewer executions might indicate inactive or underused workflows. + +
+ + +The section provides two tabs, **Build Pipelines** and **Deployment Pipelines**, each displaying a bar chart that ranks pipelines based on how frequently they were triggered during the selected time range. + +| **Tab** | **Description** | +|:---------|:----------------| +| **Build Pipelines** | Displays the most and least triggered build pipelines based on their total build trigger count. Each bar represents a single pipeline, and its length indicates how often the pipeline was triggered. | +| **Deployment Pipelines** | Displays the most and least triggered deployment pipelines based on their total deployment trigger count. Each bar represents a single deployment pipeline, and its length indicates the number of deployment triggers during the selected time range. | + +### Sorting and Filters + +| **Control** | **Description** | +|:--------------|:----------------| +| **Time Range** | Allows you to choose a time range such as **Today**, **This Week**, **This Month**, **Last Month**, or **This Quarter** to analyze pipeline activity during that period. | +| **Sorting Order** | Lets you sort the list **High to Low** or **Low to High** based on trigger count, helping you focus on the busiest or least used pipelines. | + +--- + +## Cost Visibility + +:::info +This section provides a quick overview of cost insights within the **Application Overview** dashboard. +For a more detailed breakdown of cost and usage across clusters, see the full [Cost Visibility](../finops/README.md) +::: + +The **Cost Visibility** section provides a comparison of costs across your applications and build pipelines within Devtron. + +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/application-overview/application-overview-cost-visibility.jpg) +
Figure 2: Cost Visibility
+ +It shows: + + * **Top 10 Costly Applications** - It shows which deployed applications consume the most resources (such as CPU, memory, or storage) across your clusters. + + * **Top 10 Costly Build Pipelines** - It shows the list of build pipelines that have the highest cost during image builds. + +You can use the time range filter (Last 24 Hours, Last 7 Days, Last 30 Days, or Last 90 Days) to select the preferred time range. + +:::warning Note +If a cluster does not have cost tracking enabled, its data will not appear in this section. +Enable the **Cost Visibility** module for those clusters to view accurate cost insights. Refer [Cost Visibility Configurations](../finops/configurations.md) to learn more. + +::: + +--- + +## Best Practices + +The **Best Practices** section helps shows you the percentage of production pipelines for which you have enabled approval policies. It gives you a quick view of how many pipelines have checks in place before important configuration changes or deployments go live. + +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/application-overview/application-overview-best-practices.jpg) +
Figure 3: Best Practices
+ +These insights help you ensure that the right governance controls are followed, reducing risks from unreviewed or accidental changes. + +| **Field** | **Description** | +|:-----------|:----------------| +| **Config Change Approval** | Indicates the percentage of pipelines that require approval before applying configuration changes| +| **Deployment Approval** | Indicates the percentage of pipelines that require approval before executing a deployment | + +## FAQs + +
+1. Why do the count of Devtron and Helm applications differs from what I see in my dashboards? + +The count displayed in the application overview reflects **all connected clusters** which are reachable. If some applications are missing, verify that the clusters where they are deployed are reachable. + +Disconnected clusters or standalone Helm releases won’t appear until Devtron syncs them. + +If still you cannot see your applications, contact [Devtron Support](mailto:enterprise@devtron.ai) for assistant. +
+ +
+2. Why do my triggers or build time graphs look empty? + +Graphs may appear blank if: +* No builds or deployments were triggered during the selected **Time Range** +* Pipelines were recently created and have no activity yet +Try expanding the time filter (for example, from **This Week** to **Last 30 Days**) or verifying pipeline execution history. +
+ +
+3. Why do I see cost data for some applications but not others? + +Cost data appears only for applications deployed in clusters where **Cost Visibility** is enabled. +If a cluster doesn’t have cost visibility enabled, its data won’t appear. +You can enable it under **Cost Visibility** → **Configurations** to start tracking cost for those applications. Refer [Configurations](../finops/configurations.md) to learn more. +
+ +
+4. How frequently are these metrics updated? + +Metrics on the **Application Overview** page are refreshed automatically every hour. +
\ No newline at end of file diff --git a/docs/user-guide/application-groups.md b/docs/user-guide/application-groups.md old mode 100644 new mode 100755 index 273cbae13f..b709e336c2 --- a/docs/user-guide/application-groups.md +++ b/docs/user-guide/application-groups.md @@ -4,37 +4,34 @@ Application groups in Devtron streamline the deployment of microservices by enabling you to build and deploy multiple applications simultaneously. This feature is particularly beneficial when your microservices are interdependent, as a change in one service often triggers the need to redeploy others. -{% hint style="info" %} - -### Note - +:::info Note Only one application group would exist for each [environment](../reference/glossary.md#environment). You cannot group applications belonging to different environments. -{% endhint %} +::: --- ## Accessing Application Groups -{% hint style="info" %} - -### Who Can Perform This Action? - +:::info Who Can Perform This Action? Users need to have [View only permission](../user-guide/global-configurations/authorization/user-access.md#devtron-apps-permissions) or above (along with access to the environment and applications) to view all the applications within a group. -{% endhint %} +::: 1. From the left sidebar, go to **Application Groups** - ![Figure 1: Application Group (Beta)](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/app-group-tab.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/app-group-tab.jpg) +
Figure 1: Application Group (Beta)
2. You will see a list of environments. Select the environment to view the application group. - ![Figure 2: List of Environments](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/app-groups.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/app-groups.jpg) +
Figure 2: List of Environments
3. The application group would contain the applications meant for deployment in the chosen environment. - ![Figure 3: Sample Application Group](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/app-group-overview-1.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/app-group-overview.jpg) +
Figure 3: Sample Application Group
As you can see, it has similar options as available under [Applications](./applications.md): * Overview @@ -51,67 +48,68 @@ First, we will walk you through the [key features](#key-features) of Application ### Building Application Images -{% hint style="info" %} - -### Who Can Perform This Action? - +:::info Who Can Perform This Action? Users need to have [Build and deploy permission](../user-guide/global-configurations/authorization/user-access.md#devtron-apps-permissions) or above (along with access to the environment and applications) to trigger the build. -{% endhint %} +::: The **Build & Deploy** tab of your application group enables you to trigger the [CI builds](../reference/glossary.md#image) of one or more applications in bulk. 1. Select the applications using the checkboxes and click the **Build Image** button present at the bottom. - ![Figure 4: Build Option](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/select-app.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/select-app.jpg) +
Figure 4: Build Option
2. The `Build image` screen opens. Select the application and the [commit](../reference/glossary.md#commit-hash) for which you want to trigger the CI build. - ![Figure 5: Selecting Commit](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/select-commit-1.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/select-commit-1.jpg) +
Figure 5: Selecting Commit
-{% hint style="info" %} -### Tip +:::info Tip Adding [image labels](./deploying-application/image-labels-and-comments.md) can help you quickly locate the container image from the list of images shown in Application Groups. -{% endhint %} +::: + +3. Similar to application, you can also [pass build parameters](./deploying-application/triggering-ci.md#passing-build-parameters-) in application groups before triggering the build. -3. Similar to application, you can also [pass build parameters](./deploying-application/triggering-ci.md#passing-build-parameters) in application groups before triggering the build. +:::info Note +Passing build parameters feature is only available in -{% hint style="info" %} -### Note -Passing build parameters feature is only available in -{% endhint %} +::: * Go to the **Parameters** tab. - ![Figure 6: Parameters Tab](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/ag-parameter-tab.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/ag-parameter-tab.jpg) +
Figure 6: Parameters Tab
* Click **+ Add parameter**. - ![Figure 7: Adding a Parameter](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/ag-add-parameter.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/ag-add-parameter.jpg) +
Figure 7: Adding a Parameter
* Enter your key-value pair as shown below. - ![Figure 8: Entering Key-Value Pair](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/ag-key-value.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/ag-key-value.jpg) +
Figure 8: Entering Key-Value Pair
* You may follow the above steps for other applications too, and then click **Start Build**. - ![Figure 9: Choosing Commit for Other Application](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/ag-next-app.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/ag-next-app.jpg) +
Figure 9: Choosing Commit for Other Application
- ![Figure 10: Passing Build Parameters and Triggering Build](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/ag-start-build.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/ag-start-build.jpg) +
Figure 10: Passing Build Parameters and Triggering Build
4. The builds will initiate, following which, you can close the `Build image` screen. - ![Figure 11: Triggered Deployment](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/build-image.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/build-image.jpg) +
Figure 11: Triggered Deployment
### Changing Configurations -{% hint style="info" %} - -### Who Can Perform This Action? - +:::info Who Can Perform This Action? Users need to have [Admin role](../user-guide/global-configurations/authorization/user-access.md#devtron-apps-permissions) or above (along with access to the environment and applications) to change their configuration. Please note, you might not be able to change the values of locked keys in deployment template. Refer [Lock Deployment Configuration](./global-configurations/lock-deployment-config.md) to know more. -{% endhint %} +::: The **Configurations** tab of your application group allows you to configure the following: @@ -121,23 +119,22 @@ The **Configurations** tab of your application group allows you to configure the As shown below, you can handle the configurations of more than one application from a single screen. -![Figure 12: Configurations of each App](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/configurations.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/configurations.jpg) +
Figure 12: Configurations of each App
### Deploying Applications -{% hint style="info" %} - -### Who Can Perform This Action? - +:::info Who Can Perform This Action? Users need to have [Build and deploy permission](../user-guide/global-configurations/authorization/user-access.md#devtron-apps-permissions) or above (along with access to the environment and applications) to initiate the deployment. -{% endhint %} +::: The **Build & Deploy** tab of your application group helps you deploy one or more applications in bulk. 1. Select the applications using the checkboxes. - ![Figure 13: Deploy Option](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/select-app-deploy.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/select-app-deploy.jpg) +
Figure 13: Deploy Option
2. You can also trigger Pre-deployment stage or Post-deployment stage for your applications in bulk. @@ -145,52 +142,56 @@ The **Build & Deploy** tab of your application group helps you deploy one or mor * To trigger Post-deployment stage, click the droupup next to **Deploy** and select **Trigger Post-deployment stage**. - ![Figure 14: Triggering Pre/Post Stages](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/application-groups-trigger-pre-post.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/application-groups-trigger-pre-post.jpg) +
Figure 14: Triggering Pre/Post Stages
-{% hint style="info" %} -### Note +:::info Note * The dropup appears only if your workflow has Pre-deployment stage or Post-deployment stage configured for the selected environment. * If both stages are configured, the dropup will display options for triggering **Pre-deployment** and **Post-deployment** stages. * If only one stage is configured, the dropup will show the option for triggering that specific stage. -{% endhint %} +::: 3. After selecting the applications, click the **Deploy** button present at the bottom. - ![Figure 15: Clicking 'Deploy'](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/application-groups-deploy.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/application-groups-deploy.jpg) +
Figure 15: Clicking 'Deploy'
4. Select the desired container image that you want to deploy for respective application. - ![Figure 16: Selecting Image](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/select-image-1.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/select-image-1.jpg) +
Figure 16: Selecting Image
Repeat the step for other applications too. - ![Figure 17: Deploying Apps](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/select-image-2.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/select-image-2.jpg) +
Figure 17: Deploying Apps
-5. If you wish, you can deploy all applications in an Application Group using a single deployment strategy, select the preferred deployment strategy for all the applications and click **Deploy**.

By default, all applications will be deployed using their respective default strategies. +5. If you wish, you can deploy all applications in an Application Group using a single deployment strategy, select the preferred deployment strategy for all the applications and click **Deploy**.

By default, all applications will be deployed using their respective default strategies. - ![Figure 18: Selecting Deployment Strategy](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/AG-default-strategy.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/ag-default-strategy.jpg) +
Figure 18: Selecting Deployment Strategy
- * **Deployment feasibility** page will open, in case for any application, the selected deployment strategy is not configured, you can select one of the configured strategies for that application.

If you do not select a configured deployment strategy, deployment will be skipped for that particular application. + * **Deployment feasibility** page will open, in case for any application, the selected deployment strategy is not configured, you can select one of the configured strategies for that application.

If you do not select a configured deployment strategy, deployment will be skipped for that particular application. - ![Figure 19: Deployment Feasibility](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/AG-deployment-feasibility.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/ag-deployment-feasibility.jpg) +
Figure 19: Deployment Feasibility
6. The deployment will be initiated, following which, you can close the screen as shown below. - ![Figure 20: Triggered Deployment](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/deploy-app.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/deploy-app.jpg) +
Figure 20: Triggered Deployment
7. Once the deployment is successful, the pipelines will show `Succeeded`. - ![Figure 21: Successful Deployment](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/successful.jpg) - -{% hint style="info" %} - -### Note + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/successful.jpg) +
Figure 21: Successful Deployment
+:::info Note You can go to the **App Details** tab to have a bird's-eye view of your application, view application metrics, and even perform quick actions (e.g., restarting workloads). Refer to [App Details](../user-guide/app-details/README.md) for more information. -{% endhint %} +::: -### Managing Traffic ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/elements/EnterpriseTag.svg) +### Managing Traffic While deployment, Devtron allows you to manage your **Canary** and **Blue-Green** deployments by providing visibility and easy controls to manage how new versions (releases) are shared with users. @@ -198,7 +199,8 @@ To do so, follow the below steps: 1. Go to **Overview** and click **Manage Traffic**. - ![Figure 22: Selecting Managing Traffic](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/application-groups-click-manage-traffic.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/application-groups-click-manage-traffic.jpg) +
Figure 22: Selecting Managing Traffic
2. Select the required applications, a side window will appear displaying all the eligible rollouts. @@ -206,37 +208,39 @@ To do so, follow the below steps: * For **Canary Deployments**, you can either choose to initiate the next step or to initiate the full rollout. - ![Figure 23: Selecting Action for Canary Deployments](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/AG-canray-options.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/ag-canray-options.jpg) +
Figure 23: Selecting Action for Canary Deployments
* For **Blue Green deployments**, you can either choose to **Swap Traffic**, or you can choose Skip & Promote Full. * **Swap Traffic**: This will swap the traffic from the current deployment to the application latest deployment. - ![Figure 24: Selecting 'Swap Traffic'](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/AG-blue-green-swap.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/ag-blue-green-swap.jpg) +
Figure 24: Selecting 'Swap Traffic'
* **Skip & Promote Full**: While deploying, this will directly deploy the whole traffic to application latest deployment. - ![Figure 25: Selecting 'Skip & Promote Full'](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/AG-blue-green-skip.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/ag-blue-green-skip.jpg) +
Figure 25: Selecting 'Skip & Promote Full'
4. Click **Initiate Eligible Rollouts** to implement the actions. - ![Figure 26a: Clicking 'Initiate Eligible Rollouts'](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/AG-initiate-eligible-rollouts.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/ag-initiate-eligible-rollouts.jpg) +
Figure 26a: Clicking 'Initiate Eligible Rollouts'
- ![Figure 26b: Rollout Status](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/AG-rollouts-success.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/ag-rollouts-success.jpg) +
Figure 26b: Rollout Status
--- ## Additional Features -### Clone Pipelines [![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/elements/EnterpriseTag.svg)](https://devtron.ai/pricing) - -{% hint style="warning" %} - -### Who Can Perform This Action? +### Clone Pipelines +:::caution Who Can Perform This Action? Only a [Super-Admin](../user-guide/global-configurations/authorization/user-access.md#grant-super-admin-permission) can clone pipelines. -{% endhint %} +::: This feature aims at helping the user clone existing CI/CD pipelines for new target environments in multiple applications. The configurations present in the given CI/CD pipeline also get copied to the cloned pipelines (refer the below table). @@ -244,11 +248,11 @@ This feature aims at helping the user clone existing CI/CD pipelines for new tar |----------------------------------|--------------------------------------------------------------| | [**CI Workflow**](../user-guide/creating-application/workflow/ci-pipeline.md) | Clones the source’s workflow CI as it is | | [**Pipeline Configuration**](../user-guide/creating-application/workflow/pre-post-tasks.md) | Cloned, including Pre-CD and Post-CD scripts/plugins | -| [**Environment Configuration**](../user-guide/creating-application/README.md#app-configuration) | Cloned, including Deployment Template (DT), ConfigMap (CM), and Secret | +| [**Environment Configuration**](../user-guide/creating-application/environment-overrides.md) | Cloned, including Deployment Template (DT), ConfigMap (CM), and Secret | | [**GitOps Configuration**](../user-guide/creating-application/gitops-config.md) | Not cloned | | [**Environment Policies**](../user-guide/creating-application/environment-overrides.md) | Cloned if at pipeline level,ignored if global | | [**CD Filter**](../user-guide/global-configurations/filter-condition.md) | Not cloned (handled globally) | -| [**Protect Configurations**](../user-guide/creating-application/config-approval.md) | Cloned (handled at pipeline level) | +| [**Protect Configurations**](../user-guide/global-configurations/approval-policy.md) | Cloned (handled at pipeline level) | | [**Deployment Approvals**](../user-guide/global-configurations/approval-policy.md) | Not cloned (handled globally) | | [**Lock Configurations**](../user-guide/global-configurations/lock-deployment-config.md) | Not cloned | | [**Mandatory Plugin**](../user-guide/global-configurations/plugin-policy.md) | Not cloned | @@ -267,17 +271,20 @@ This feature gives you two methods of cloning: 1. **New Workflow**: Creates a new workflow and clones the source CI and CD pipeline. Gives you the flexibility to tweak the cloned CI (e.g., changing code branch for build) too. - ![Figure 27: New Workflow](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/new-workflow-v2.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/new-workflow-v2.jpg) +
Figure 27: New Workflow
2. **Source Workflow**: Uses the same workflow and clones only the source CD pipeline, thus keeping the original CI pipeline unchanged. - ![Figure 28: Source Workflow](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/source-workflow-v2.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/source-workflow-v2.jpg) +
Figure 28: Source Workflow
#### Steps to Clone Pipelines 1. Go to **Application Groups** and click the source environment from the list. - ![Figure 29: Source Environment Selection](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/application-groups.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/application-groups.jpg) +
Figure 29: Source Environment Selection
2. Select the applications whose pipelines you wish to clone. @@ -285,38 +292,36 @@ This feature gives you two methods of cloning: * Alternatively, you may access **Clone Pipeline Config** from the `⋮` menu next to the application name. - ![Figure 30: Choosing Applications](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/application-groups-click-clone-pipelines.gif) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/application-groups-click-clone-pipelines.gif) +
Figure 30: Choosing Applications
4. From the dropdown, select the target environment for which pipelines should be created for selected applications. - ![Figure 31: Selecting Target Environment](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/application-groups-select-env.gif) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/application-groups-select-env.gif) +
Figure 31: Selecting Target Environment
5. Select the workflow where you wish to create deployment pipeline: **New Workflow** or **Workflow as source environment**. Refer [Methods of Cloning](#methods-of-cloning) to know which option will fulfill your requirement. - ![Figure 32: Creating CD Pipeline in Workflow](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/application-groups-choose-workflow.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/application-groups-choose-workflow.jpg) +
Figure 32: Creating CD Pipeline in Workflow
6. Click **Clone in new workflow** or **Clone in source workflow** (depending on the option you selected in the previous step). - ![Figure 33: Initiating Clone](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/application-groups-clone-status.gif) - -{% hint style="warning" %} - -### Note + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/application-groups-clone-status.gif) +
Figure 33: Initiating Clone
+:::caution Note The cloning process will skip if a CD pipeline (for the target environment) already exists in the chosen application's workflow. You can view this in the clone status generated after the above process. -{% endhint %} +::: ### Hibernating and Unhibernating Apps -{% hint style="warning" %} - -### Who Can Perform This Action? - +:::caution Who Can Perform This Action? Users need to have [Build & deploy permission](./global-configurations/authorization/user-access.md#devtron-apps-permissions) or above (along with access to the environment and application) to hibernate or unhibernate applications. -{% endhint %} +::: Since every application comes with an option to hibernate, the same is true for application groups. Using application group, you can hibernate one or more applications belonging to the same environment if you do not want them to consume resources (replica count will be set to 0). @@ -330,23 +335,25 @@ In other words, you can hibernate running applications or unhibernate hibernated * Alternatively, you may access **Hibernate** from the `⋮` menu next to the application name. - ![Figure 34: Selecting Apps to Hibernate](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/application-groups-click-hibernate.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/application-groups-click-hibernate.jpg) +
Figure 34: Selecting Apps to Hibernate
3. Confirm the hibernation by clicking **Hibernate**. - ![Figure 35: Confirming Hibernation](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/application-groups-confirm-hibernate.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/application-groups-confirm-hibernate.jpg) +
Figure 35: Confirming Hibernation
4. Hibernation will initiate as shown below. You may close the window. - ![Figure 36: Initiation Status of Hibernation](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/application-groups-hibernate-status.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/application-groups-hibernate-status.jpg) +
Figure 36: Initiation Status of Hibernation
Your applications pods would be scaled down and would stop incurring costs. -{% hint style="warning" %} -### Note +:::caution Note * The hibernation process will show the status as `Skipped` for the applications which are already hibernated. * The hibernation process will show the status as `Failed` for the applications which have no deployment history. -{% endhint %} +::: #### Unhibernation Process @@ -356,33 +363,32 @@ Your applications pods would be scaled down and would stop incurring costs. * Alternatively, you may access **Unhibernate** from the `⋮` menu next to the application name. - ![Figure 37: Selecting Hibernated Apps to Unhibernate](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/application-groups-click-unhibernate.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/application-groups-click-unhibernate.jpg) +
Figure 37: Selecting Hibernated Apps to Unhibernate
3. Confirm the unhibernation by clicking **Unhibernate**. - ![Figure 38: Confirming Unhibernation](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/application-groups-confirm-unhibernate.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/application-groups-confirm-unhibernate.jpg) +
Figure 38: Confirming Unhibernation
4. Unhibernation will initiate as shown below. You may close the window. - ![Figure 39: Initiation Status of Unhibernation](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/application-groups-unhibernate-status.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/application-groups-unhibernate-status.jpg) +
Figure 39: Initiation Status of Unhibernation
Your applications would be up and running in some time. -{% hint style="warning" %} -### Note +:::caution Note * The unhibernation process will show the status as `Skipped` for the applications which are already running. * The unhibernation process will show the status as `Failed` for the applications which have no deployment history. -{% endhint %} +::: ### Restart Workloads -{% hint style="warning" %} - -### Who Can Perform This Action? - +:::caution Who Can Perform This Action? Users need to have [Build & deploy permission](./global-configurations/authorization/user-access.md#devtron-apps-permissions) or above (along with access to the environment and application) to restart workloads in bulk. -{% endhint %} +::: Restarting workloads might be necessary if you want your new code or configuration to come into effect, or you are experiencing issues like crashing of pods. @@ -394,19 +400,26 @@ Using application group, you can select the workloads (i.e., Pod, Deployment, Re * Alternatively, you may access **Restart Workload** from the `⋮` menu next to the application name. - ![Figure 40: Selecting Apps to Restart](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/application-groups-click-restart-workloads.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/application-groups-click-restart-workloads.jpg) +
Figure 40: Selecting Apps to Restart
3. Next to the application, click the workload dropdown to view all the individual workloads of an application. Choose only the ones you wish to restart. - ![Figure 41: Choosing Workloads](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/choose-workload.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/choose-workload.jpg) +
Figure 41: Choosing Workloads
Moreover, you can easily select, deselect, or choose multiple workloads as shown below. - ![Figure 42: Selecting and Unselecting Workloads](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/bulk-restart.gif) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/bulk-restart.gif) +
Figure 42: Selecting and Unselecting Workloads
4. Click **Restart Workloads**. - ![Figure 43: Restarting Workloads](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/select-workloads.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/select-workloads.jpg) +
Figure 43a: Restarting Workloads
+ + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/retry-failed.jpg) +
Figure 43b: Retry Failed
Restarting workloads might take time depending on the number of applications. @@ -416,32 +429,39 @@ Assume you have multiple applications (maybe 10, 50, 100, or more) showing up in 1. Click the filter next to the application group as shown below. - ![Figure 44: Filter Option](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/app-filter-1.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/app-filter-1.jpg) +
Figure 44: Filter Option
2. The filter will show all the applications present in the group. Click to select the relevant ones. - ![Figure 45: All Apps](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/app-filter-2.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/app-filter-2.jpg) +
Figure 45: All Apps
3. The filter narrows down the list of applications as shown below. - ![Figure 46: Filtered Apps](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/app-filter-3.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/app-filter-3.jpg) +
Figure 46: Filtered Apps
+ + :::info Persistent selection + Your filter selection is remembered for each application group. When you reopen the group, Devtron automatically reapplies the applications you had filtered, so you don't have to reselect them every time. + ::: -4. (Optional) If required, you can save the filter for future use by clicking **Save selection as filter**. +4. (Optional) If required, you can save the filter for future use as a named selection by clicking **Save selection as filter**. A saved filter lets you select or deselect an entire group of applications in one click whenever you need it. - ![Figure 47: Saving a Filter](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/save-filter.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/save-filter.jpg) +
Figure 47: Saving a Filter
5. Add a name and description to the filter to help you know its purpose, and click **Save**. - ![Figure 48: Naming a Filter](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/save-filter-2.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/save-filter-2.jpg) +
Figure 48: Naming a Filter
Now when you access the application group, your saved filter will be visible on top. -![Figure 49: Saved Filter](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/save-filter-3.jpg) - -{% hint style="info" %} - -### Permissions +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/save-filter-3.jpg) +
Figure 49: Saved Filter
+:::info Permissions #### 1. Creating a filter Users can create a filter if they have Admin/Manager access on all selected applications. @@ -466,40 +486,39 @@ Users can edit a saved filter if they have Admin/Manager access on all applicati Users can delete a saved filter if they have Admin/Manager access on all applications in the saved filter. -{% endhint %} +::: ### Changing Branch -{% hint style="warning" %} - -### Who Can Perform This Action? - +:::caution Who Can Perform This Action? Users need to have [Admin role](../user-guide/global-configurations/authorization/user-access.md#devtron-apps-permissions) or above (along with access to the environment and applications) to update their branch. -{% endhint %} +::: Assume you have a few applications whose [build pipelines](../reference/glossary.md#build-pipeline) fetch from the `main` branch of your code repository. However, you decided to maintain a `master` branch, and you want all the upcoming CI builds to consider the `master` branch as the source. Devtron provides you the option to change the branch at both levels, individual application as well as application group. 1. In the **Build & Deploy** tab of your application group, select the intended applications and click the **Change Branch** button present at the bottom. - ![Figure 50: Changing Branch](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/change-branch.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/change-branch.jpg) +
Figure 50: Changing Branch
2. Enter the new branch name. If your build pipeline has `Branch Regex` as the Source Type, you must ensure your new branch name matches the regex (regular expression) provided in that build pipeline. Once done, click **Update Branch**. - ![Figure 51: Updating Branch Name](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/update-branch.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/update-branch.jpg) +
Figure 51: Updating Branch Name
### Changing Image Source -{% hint style="warning" %} -### Who Can Perform This Action? +:::caution Who Can Perform This Action? Users need to have [Admin role](../user-guide/global-configurations/authorization/user-access.md#devtron-apps-permissions) or above (along with access to the environment and applications) to update their branch. -{% endhint %} +::: The **Change Image Source** feature in Devtron lets you update the container image source for an application’s workflow without modifying it. 1. In the **Build & Deploy** tab of your application group, select the preferred workflows and click the **Change Image Source** button present at the bottom. - ![Figure 52: Clicking 'Change Image Source'](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/application-groups-change-image-source.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/application-groups-change-image-source.jpg) +
Figure 52: Clicking 'Change Image Source'
2. Select the preferred Workflow template, and enter the required details as per the workflow template. Currently, **Change Image Source** feature for **Application Groups** is only supported for **Build from Source Code** and **Sync with Environment**. @@ -512,26 +531,32 @@ The **Change Image Source** feature in Devtron lets you update the container ima * `No cd pipeline found for the selected app and env combination` * `Invalid request, trying to create self loop, cannot create sync-cd source pipeline with source environment in same workflow` - ![Figure 53a: Selecting 'Build From Source'](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/application-groups-build-from-source-code.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/application-groups-build-from-source-code.jpg) +
Figure 53a: Selecting 'Build From Source'
- ![Figure 53b: Feasibility Window](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/application-groups-build-from-source-code-feasibility-window.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/application-groups-build-from-source-code-feasibility-window.jpg) +
Figure 53b: Feasibility Window
* A pop-up window will open, enter the **Source Type** and **Branch** under **Select code source**. - ![Figure 54: Entering Required Details](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/application-groups-build-from-source-code-details.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/application-groups-build-from-source-code-details.jpg) +
Figure 54: Entering Required Details
* Click **Create Pipeline**. A modal window will appear showing the status of the image source change. - ![Figure 55: Clicking 'Create Pipeline'](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/application-groups-build-from-source-code-changed.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/application-groups-build-from-source-code-changed.jpg) +
Figure 55: Clicking 'Create Pipeline'
2. **Sync with Environment** * After selecting **Sync with Environment**, a modal window will open. - ![Figure 56: Selecting Sync With Environment](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/application-groups-sync-with-environment.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/application-groups-sync-with-environment.jpg) +
Figure 56: Selecting Sync With Environment
* Select the environment from which you want to sync your workflow, and then click **Next**. - ![Figure 57: Selecting Environment](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/application-groups-sync-with-environment-select-env.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/application-groups-sync-with-environment-select-env.jpg) +
Figure 57: Selecting Environment
* A feasibility check will run. You can click **Change Image Source** only if the application's feasibility is marked as `Can change`. @@ -541,11 +566,12 @@ The **Change Image Source** feature in Devtron lets you update the container ima * `No cd pipeline found for the selected app and env combination` * `Invalid request, trying to create self loop, cannot create sync-cd source pipeline with source environment in same workflow` - ![Figure 58: Feasibility Window](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/application-groups-sync-with-environment-feasibility.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/application-groups-sync-with-environment-feasibility.jpg) +
Figure 58: Feasibility Window
* Click **Change Image Source**. A modal window will appear showing the operation status. - ![Figure 59: Clicking 'Change Image Source'](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/application-groups/application-groups-sync-with-environment-changed.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/application-groups/application-groups-sync-with-environment-changed.jpg) +
Figure 59: Clicking 'Change Image Source'
-3. The image source is applied to all selected workflows where the feasibility check passed. - \ No newline at end of file +3. The image source is applied to all selected workflows where the feasibility check passed. \ No newline at end of file diff --git a/docs/user-guide/applications.md b/docs/user-guide/applications.md old mode 100644 new mode 100755 index b7bf760127..8b94e67388 --- a/docs/user-guide/applications.md +++ b/docs/user-guide/applications.md @@ -1,8 +1,13 @@ +--- +id: applications +title: Applications +--- + # Applications -{% hint style="warning" %} + ## Introduction @@ -14,9 +19,10 @@ The **Applications** page helps you create and manage your microservices, and it ### Application Listing -You can view the app name, its status, environment, namespace, and many more upfront. The apps are segregated into: [Devtron Apps](../reference/glossary.md#devtron-apps), [Helm Apps](../reference/glossary.md#helm-apps), [ArgoCD Apps](../reference/glossary.md#argocd-apps), and [FluxCD Apps](../reference/glossary.md#fluxcd-apps). +You can view the app name, its status, environment, namespace, and many more upfront. -![Figure 1: App Types](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/argocd/app-types.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/creating-application/app-listing-page.jpg) +
Figure 1: App Types
### Create Button @@ -28,146 +34,24 @@ You can use this to: ### Other Options There are additional options available for you: -* **Search and filters** to make it easier for you to find applications. +* **Search and filters** to make it easier for you to find applications. Refer to [Searching and Filtering](#searching-and-filtering) for more information. * **Export CSV** to download the data of Devtron apps (not supported for Helm apps and Argo CD apps). * **Sync button** to refresh the app listing. ---- - -## View External Helm App Listing - -{% hint style="tip" %} -### Want to Manage your Existing Helm Release using Devtron? -Apart from internal helm apps created in Devtron, you can also view your external Helm app listing. Moreover, you can manage their deployments using Devtron. Read [Migrate Helm Release to Devtron](../user-guide/creating-application/workflow/cd-pipeline.md#migrate-helm-release) to know more. -{% endhint %} - -{% hint style="warning" %} -### Who Can Perform This Action? -Users with view only permission or above for an application can view helm app listing. -{% endhint %} - -External Helm apps are Helm applications deployed outside of Devtron. - -1. Connect the cluster containing your external Helm apps in [Global Configurations → Cluster & Environments](./global-configurations/cluster-and-environments.md). - -2. Use the **Cluster** selection dropdown to choose the external cluster(s). You will see your external Helm apps under the **Helm Apps** tab. - - ![Figure 2: Helm App List](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/external-helm-apps.jpg) - ---- - - -## View External ArgoCD App Listing - -{% hint style="tip" %} -### Want to Manage your Existing Argo CD Apps using Devtron? -You can not only view your ArgoCD app list, but also manage their deployments using Devtron. Read [Migrate ArgoCD Apps to Devtron](../user-guide/creating-application/workflow/cd-pipeline.md#migrate-argo-cd-application) to know more. -{% endhint %} - -{% hint style="warning" %} -### Who Can Perform This Action? -Users need super-admin permission to view/enable/disable the ArgoCD listing. -{% endhint %} - -### Preface - -In Argo CD, a user manages one dashboard for one ArgoCD instance. Therefore, with multiple ArgoCD instances, the process becomes cumbersome for the user to manage several dashboards. - -With Devtron, you get an entire Argo CD app listing in one place. This listing includes: -* Apps deployed using [GitOps](../reference/glossary.md#gitops) on Devtron -* Other Argo CD apps present in your cluster - -![Figure 3: ArgoCD App List](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/argocd/app-details-argo.gif) - -### Advantages - -Devtron also bridges the gap for ArgoCD users by providing additional features as follows: - -* **Resource Scanning**: You can scan for vulnerabilities using Devtron's [resource scanning](../user-guide/security-features.md#from-app-details) feature. [![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/elements/EnterpriseTag.svg)](https://devtron.ai/pricing) - -* **Single-pane View**: All Argo CD apps will show details such as their app status, environment, cluster, and namespace together in one dashboard. - -* **Feature-rich Options**: Clicking an Argo CD app will give you access to its logs, terminal, events, manifest, available resource kinds, pod restart log, and many more. - -{% hint style="info" %} -### Additional References -[ArgoCD: Standalone Configuration vs Devtron Configuration](https://devtron.ai/blog/argocd-standalone-configuration-vs-devtron-configuration/#argocd-installation-and-configuration) -{% endhint %} - -### Prerequisite -The cluster in which Argo CD apps exist should be added in **Global Configurations** → **Clusters and Environments** - -### Feature Flag - -> **`ENABLE_EXTERNAL_ARGO_CD: "true"`** - -### Enabling ArgoCD App Listing - -{% embed url="https://www.youtube.com/watch?v=4KyYnsAEpqo" caption="Enabling External ArgoCD Listing" %} - -1. Go to the **Resource Browser** of Devtron. - -2. Select the cluster (in which your Argo CD app exists). - -3. Type `ConfigMap` in the 'Jump to Kind' field. - -4. Search for `dashboard-cm` using the available search bar and click it. - -5. Click **Edit Live Manifest**. - -6. Set the feature flag **ENABLE_EXTERNAL_ARGO_CD** to **"true"** - -7. Click **Apply Changes**. - -8. Go back to the 'Jump to Kind' field and type `Pod`. - -9. Search for `dashboard` pod and use the kebab menu (3 vertical dots) to delete the pod. - -10. Go to **Applications** and refresh the page. A new tab named **ArgoCD Apps** will be visible. - -11. Select the cluster(s) from the dropdown to view the Argo CD apps available in the chosen cluster(s). - - ![Figure 4: Cluster Selection for Argo CD Listing](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/argocd/argo-cluster-selection.jpg) - ---- - -## View External FluxCD App Listing - -{% hint style="warning" %} -### Who Can Perform This Action? -Users need super-admin permission to view/enable/disable the FluxCD listing. -{% endhint %} - -### Preface - -Flux CD doesn't have any official dashboard; however, Devtron supports the listing of your [Flux CD](https://fluxcd.io/) apps in one dashboard. Here, the [advantages](#advantages) are same as those of [ArgoCD app listing](#view-external-argocd-app-listing). - -![Figure 5: FluxCD App List and Details](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/fluxcd/fluxcd-listing.jpg) - -### Prerequisite -The cluster in which Flux CD apps exist should be added in **Global Configurations** → **Clusters and Environments** - -### Feature Flag - -> **`FEATURE_EXTERNAL_FLUX_CD_ENABLE: "true"`** - -### Enabling FluxCD App Listing - -{% hint style="info" %} -### Tip -You may refer the steps mentioned in the [Enabling ArgoCD App Listing](#enabling-argocd-app-listing) section since the procedure is similar. -{% endhint %} - -Using Devtron's Resource Browser, add the [feature flag](#feature-flag-1) in the Dashboard ConfigMap as shown below. +### Searching and Filtering -![Figure 6: Editing Dashboard ConfigMap](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/fluxcd/flux-feature-flag.jpg) +To help you quickly find the applications you need, the **Applications** page provides a search bar along with a set of filters (such as app status, project, environment, cluster, and namespace). -After successfully executing all the steps, a new tab named **FluxCD Apps** will be visible. Select the cluster(s) from the dropdown to view the Flux CD apps available in the chosen cluster(s). +Click **Filters** to open the filter dropdown and select the values you want to filter by. The application list updates to show only the applications matching your selection. -![Figure 7: Selecting Cluster](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/fluxcd/cluster-selection.jpg) +:::tip Keyboard shortcut +Press the `f` key anywhere on the **Applications** page to open the filter dropdown without using your mouse. +::: -(Optional) Once you choose cluster(s), you may use the **Template Type** dropdown to further filter your Flux CD app listing based on its type, i.e., [Kustomization](https://fluxcd.io/flux/components/kustomize/kustomizations/) or [Helmrelease](https://fluxcd.io/flux/components/helm/helmreleases/). +#### Persistent Filters -Click any Flux CD app to view its details as shown below. +Devtron remembers the filters you apply on the **Applications** page. The next time you return to the page — even after refreshing the page or signing in again in a new session — your previously applied filters are automatically reapplied, so you can pick up right where you left off. -![Figure 8: Flux App Details](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/fluxcd/app-details-flux.gif) \ No newline at end of file +:::info Note +Filtering by application **tags** is the only filter that is **not** persisted. Every other filter from the dropdown is remembered. +::: \ No newline at end of file diff --git a/docs/user-guide/automation/README.md b/docs/user-guide/automation/README.md new file mode 100755 index 0000000000..de22dc6530 --- /dev/null +++ b/docs/user-guide/automation/README.md @@ -0,0 +1,25 @@ +--- +id: README +title: Automation & Enablement +sidebar_label: Automation & Enablement +description: Learn how to automate operational workflows, job executions, and enable advanced automation capabilities in Devtron. +hide_table_of_contents: true +--- + +The **Automation & Enablement** section in Devtron helps teams build automation pipelines beyond standard CI/CD workflows. +It enables job creation, configuration, and scheduling for routine operational tasks. + +## Table of Contents + +* [Jobs](../jobs/README.md) + * [Create Job](../jobs/create-job.md) + * [Configurations](../jobs/configurations/source-code-job.md) + * [Source Code Job](../jobs/configurations/source-code-job.md) + * [Workflow Editor for Job](../jobs/configurations/workflow-editor-job.md) + * [ConfigMaps & Secrets](../jobs/configurations/configmap-secret/README.md) + * [ConfigMap Job](../jobs/configurations/configmap-secret/configmap-job.md) + * [Secret Job](../jobs/configurations/configmap-secret/secret-job.md) + * [Environment Override Job](../jobs/configurations/environment-override-job.md) + * [Triggering Job](../jobs/triggering-job.md) + * [Run History Job](../jobs/run-history-job.md) + * [Overview Job](../jobs/overview-job.md) diff --git a/docs/user-guide/automation/alerting.md b/docs/user-guide/automation/alerting.md new file mode 100755 index 0000000000..24dade02ad --- /dev/null +++ b/docs/user-guide/automation/alerting.md @@ -0,0 +1,3 @@ +# Alerting + +WIP \ No newline at end of file diff --git a/docs/user-guide/automation/api-portal.md b/docs/user-guide/automation/api-portal.md new file mode 100755 index 0000000000..c10af1621b --- /dev/null +++ b/docs/user-guide/automation/api-portal.md @@ -0,0 +1,4 @@ +# API Portal + + +WIP \ No newline at end of file diff --git a/docs/user-guide/automation/incident-response.md b/docs/user-guide/automation/incident-response.md new file mode 100755 index 0000000000..52292380f1 --- /dev/null +++ b/docs/user-guide/automation/incident-response.md @@ -0,0 +1,3 @@ +# Incident Response + +WIP \ No newline at end of file diff --git a/docs/user-guide/automation/runbook-automation.md b/docs/user-guide/automation/runbook-automation.md new file mode 100755 index 0000000000..f2748dbb8f --- /dev/null +++ b/docs/user-guide/automation/runbook-automation.md @@ -0,0 +1,3 @@ +# Runbook Automation + +WIP \ No newline at end of file diff --git a/docs/user-guide/bulk-update.md b/docs/user-guide/bulk-update.md old mode 100644 new mode 100755 index 6a80a63fa6..91d5ee3866 --- a/docs/user-guide/bulk-update.md +++ b/docs/user-guide/bulk-update.md @@ -1,101 +1,16 @@ -# Bulk Updates -This feature helps you to update Deployment Template, ConfigMaps & Secrets for multiple apps in one go! You can filter the apps on the basis of environments, global flag, and app names(we provide support for both substrings included and excluded in the app name). -## Overview +--- +slug: /user-guide/bulk-update +--- -Need to make some common changes across multiple devtron applications? -**Bulk Edit** allows you to do that.
-Eg. You can change the value for `MaxReplicas` in Deployment Templates of multiple Devtron applications or you can add key-value pairs in multiple ConfigMaps & Secrets. However, you might not be able to change the values of locked keys. Refer [Lock Deployment Configuration](./global-configurations/lock-deployment-config.md) to know more. +# Bulk Edit -## Support -Bulk edit is currently supported for: - - Deployment Template - - ConfigMaps - - Secrets +The **Bulk Edit** feature allows you to update **Deployment Templates**, **ConfigMaps**, and **Secrets** across multiple applications in a single operation. +This is useful when you need to apply configuration changes, such as updating resource limits, environment variables, or Helm values for several applications at once. -## Steps: - -1. Click on the `Bulk Edit` option in the main navigation. This is where you can write and execute scripts to perform bulk updates in Devtron objects. - - ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/bulk-edit/bulk-update-empty.jpg) - -2. To help you get started, a script template is provided under the `See Samples` section. - - ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/bulk-edit/bulk-update-readme.jpg) - -3. Copy and Paste the `Sample Script` in the code editor and make desired changes. Refer `Payload Configuration` in the Readme to understand the parameters. - - ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/bulk-edit/bulk-update-script.jpg) - -### Example -Example below will select all applications having `abc and xyz` present in their name and out of those will exclude applications having `abcd and xyza` in their name. Since global flag is false and envId 23 is provided, it will make changes in envId 23 and not in global deployment template for this application. - -If you want to update globally then please set `global: true`. If you have provided an envId but deployment template, ConfigMap or Secret is not overridden for that particular environment then it will not apply the changes. -Also, of all the provided names of ConfigMaps/secrets, for every app & environment override only the names that are present in them will be considered. - - -### Sample Script - -This is the piece of code which works as the input and has to be pasted in the code editor for achieving bulk updation -task. - -``` -apiVersion: batch/v1beta1 -kind: Application -spec: - includes: - names: - - "%abc%" - - "%xyz%" - excludes: - names: - - "%abcd%" - - "%xyza%" - envIds: - - 23 - global: false - deploymentTemplate: - spec: - patchJson: '[{ "op": "add", "path": "/MaxSurge", "value": 1 },{"op": "replace","path":"/GracePeriod","value": "30"}]' - configMap: - spec: - names: - - "configmap1" - - "configmap2" - - "configmap3" - patchJson: '[{ "op": "add", "path": "/{key}", "value": "{value}" },{"op": "replace","path":"/{key}","value": "{value}"}]' - secret: - spec: - names: - - "secret1" - - "secret2" - patchJson: '[{ "op": "add", "path": "/{key}", "value": "{value}" },{"op": "replace","path":"/{key}","value": "{value}"}]' -``` - - -### Payload Configuration -The following tables list the configurable parameters of the Payload component in the Script and their description along with example. Also, if you do not need to apply updates on all the tasks, i.e. Deployment Template, ConfigMaps & Secrets, leave the Spec object empty for that respective task. - -| Parameter | Description | Example | -| -------------------------- | ---------------------------------- | ---------------------------------------------------------- | -|`includes.names ` | Will filter apps having exact string or similar substrings | `["app%","%abc", "xyz"]` (will include all apps having `"app%"` **OR** `"%abc"` as one of their substring, example - app1, app-test, test-abc etc. **OR** application with name xyz) | -| `excludes.names` | Will filter apps not having exact string or similar substrings. | `["%z","%y", "abc"]` (will filter out all apps having `"%z"` **OR** `"%y"` as one of their substring, example - appz, test-app-y etc. **OR** application with name abc) | -| `envIds` | List of envIds to be updated for the selected applications. | `[1,2,3]` | -| `global` | Flag to update global deployment template of applications. | `true`,`false` | -| `deploymentTemplate.spec.patchJson` | String having the update operation(you can apply more than one changes at a time). It supports [JSON patch ](http://jsonpatch.com/) specifications for update. | `'[ { "op": "add", "path": "/MaxSurge", "value": 1 }, { "op": "replace", "path": "/GracePeriod", "value": "30" }]'` | -| `configMap.spec.names` | Names of all ConfigMaps to be updated. | `configmap1`,`configmap2`,`configmap3` | -| `secret.spec.names` | Names of all Secrets to be updated. | `secret1`,`secret2`| -| `configMap.spec.patchJson` / `secret.spec.patchJson` | String having the update operation for ConfigMaps/Secrets(you can apply more than one changes at a time). It supports [JSON patch ](http://jsonpatch.com/) specifications for update. | `'[{ "op": "add", "path": "/{key}", "value": "{value}" },{"op": "replace","path":"/{key}","value": "{value}"}]'`(Replace the `{key}` part to the key you want to perform operation on & the `{value}`is the key's corresponding value | - -
- -4. Once you have modified the script, you can click on the `Show Impacted Objects` button to see the names of all applications that will be modified when the script is `Run`. - - ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/bulk-edit/bulk-update-impactobj.jpg) - -5. Click on the `Run` button to execute the script. Status/Output of the script execution will be shown in the `Output` section of the bottom drawer. - - ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/bulk-edit/bulk-update-run.jpg) - +--- +## Table of Contents +* [**Bulk Update (v1beta1)**](./bulk-update/bulk-edit.md) - This is the standard bulk edit version available for all users. +* [**Bulk Update (v1beta2)**](./bulk-update/bulk-edit-ent.md) - This is the latest version of **Bulk Edit**, available only to Enterprise users. \ No newline at end of file diff --git a/docs/user-guide/bulk-update/bulk-edit-ent.md b/docs/user-guide/bulk-update/bulk-edit-ent.md new file mode 100755 index 0000000000..e847d73d74 --- /dev/null +++ b/docs/user-guide/bulk-update/bulk-edit-ent.md @@ -0,0 +1,667 @@ +# Bulk Edit (v1beta2) + +## Introduction + +**v1beta2** is the latest YAML script to perform bulk edits to Deployment Templates, ConfigMaps, or Secrets across multiple applications. This version is currently available only to Enterprise users. + +The script provides selectors for choosing the project, application, and environment within which you wish to edit the configs (can be used in combo). Moreover, you now have granular control over the update and delete operations you wish to perform on the configs. + +> **RBAC**: User needs to have [permissions](../global-configurations/authorization/user-access#grant-specific-permissions) to apps and environments to edit their configs. + +### Tree Structure of the Bulk Edit Script + +Below is the visual structure of the script. Refer [Examples](#examples-with-full-script) and [YAML Template](#combined-yaml-template) to know more. + +```yaml +v1beta2 Script +├── apiVersion # (API version is batch/v1beta2) +├── kind # (Resource kind is Application) +└── spec # (Main configuration) + ├── selectors # (Target apps filter) + │ └── match # (Filter logic used in solo or combo) + │ ├── project # (Project filters) + │ │ ├── includes # (Projects to include) + │ │ │ └── names # (Array of project names) + │ │ └── excludes # (Projects to exclude) + │ │ └── names # (Array of project names) + │ │ + │ ├── app # (Application filters) + │ │ ├── includes # (Apps to include) + │ │ │ └── names # (Array of app names) + │ │ └── excludes # (Apps to exclude) + │ │ └── names # (Array of app names) + │ │ + │ └── env # (Environment filters) + │ ├── includes # (Envs to include) + │ │ └── names # (Array of env names) + │ ├── excludes # (Envs to exclude) + │ │ └── names # (Array of env names) + │ └── type # (prod / non-prod) + │ + ├── deploymentTemplate # (Edit deployment template) + │ └── spec # (Template spec) + │ ├── match # (Filter for DT) + │ │ ├── include-base-config # (true or false) + │ │ └── chart # (Filter for charts) + │ │ ├── name # (Enter chart type, e.g. Deployment) + │ │ ├── custom # (true if it's a user-uploaded custom chart) + │ │ └── version # (Filter for chart version) + │ │ ├── value # (Enter chart version, e.g. 4.20.0) + │ │ └── operator # (EQUAL | LESS | GREATER | LESS_EQUAL | GREATER_EQUAL) + │ └── operation # (Edit operation) + │ ├── action # (update only) + │ ├── field # (values / version) + │ ├── patchJson # (Define if operation.field=values) + │ └── chartVersion # (Define if operation.field=version) + │ + ├── configMap # (Edit config maps) + │ └── spec # (ConfigMap spec) + │ ├── match # (Filter for ConfigMaps) + │ │ ├── include-base-config # (true or false) + │ │ ├── includes # (CMs to include) + │ │ │ └── names # (Array of config map names) + │ │ └── excludes # (CMs to exclude) + │ │ └── names # (Array of config map names) + │ │ + │ └── operation # (Edit operation) + │ ├── action # (create/update/delete) + │ ├── field # (data) + │ ├── patchJson # (JSON patch for update) + │ └── value # (Key-values for create/delete) + │ + └── secret # (Edit secrets) + └── spec # (Secret spec) + ├── match # (Filter for Secrets) + │ ├── include-base-config # (true or false) + │ ├── includes # (Secrets to include) + │ │ └── names # (Array of secret names) + │ └── excludes # (Secrets to exclude) + │ └── names # (Array of secret names) + │ + └── operation # (Edit operation) + ├── action # (create/update/delete) + ├── field # (data) + ├── patchJson # (JSON patch for update) + └── value # (Key-values for create/delete) +``` + +We recommend you to perform bulk edits in 4 parts: + +1. [Use Selector Block](#step-1-use-selector-block) +2. [Choose the Configs](#step-2-choose-the-configs) +3. [Specify the Operation](#step-3-specify-the-operation) +4. [Run the Script](#step-4-run-the-script) + +--- + +## Step 1: Use Selector Block + +In Devtron, configs like Deployment Template, ConfigMaps, and Secrets are specified within application. So you need to determine the target applications initially. + +In the first part, we will look at the selector script required to filter the applications. Only the applications that match your selector logic will have their Deployment Template, ConfigMap, or Secret available for edits. + +```yaml +apiVersion: batch/v1beta2 +kind: Application +spec: + selectors: + match: + project: + includes: + names: ["dev-project", "qa-project"] + excludes: + names: ["test-project"] + app: + includes: + names: ["%-dashboard"] + excludes: + names: ["demo-%"] + env: + includes: + names: ["staging", "dev"] + excludes: + names: ["%qa%"] + type: non-prod +# Next Steps: Add spec.deploymentTemplate, spec.configMap, and/or spec.secret (check Step 2 and 3) +``` + +You can use `project`, `app`, `env` selectors with the following lists: +* `includes.names` - A list to specify the ones we need to edit. +* `excludes.names` - A list to specify the ones which are not to be edited. + +In **includes** and **excludes**, you can give the names of your projects/apps/environments. Additionally, you may use wildcard patterns (like `%-dashboard%`). + +--- + +## Step 2: Choose the Configs + +Here you can filter the Deployment Templates, ConfigMaps, and Secrets you wish to edit (refer the block below). + +### Deployment Templates + +After you add the selector block, add `deploymentTemplate` object. + +```yaml +apiVersion: batch/v1beta2 +kind: Application +spec: + selectors: # Add selector logic (check Step 1) + deploymentTemplate: + spec: + match: + chart: + name: "Deployment" ## Name of the deployment chart + custom: false ## Set as true if using your uploaded custom deployment chart + version: + value: "4.20.0" + operator: EQUAL ## Supports "GREATER", "LESS", "GREATER_EQUAL", "LESS_EQUAL" + operation: # Add operation object (check Step 3) +``` + +#### What you can do? +* Add or remove Helm values defined in your chart +* Update the chart version itself +* When editing deployment templates, you may choose whether to apply changes to only environment-specific overrides or also to the base configuration: + * When `true`, your operations apply to base deployment template shared across environments + * When `false` or omitted, changes apply only to environment-level deployment templates +* Combine with `configMap` and `secret` objects in the same script + +:::success Next Step +[Add operations for your Deployment Template(s)](#on-deployment-templates) +::: + +### ConfigMaps + +```yaml +apiVersion: batch/v1beta2 +kind: Application +spec: + selectors: # Add selector logic (check Step 1) + configMap: + spec: + match: + include-base-config: true + includes: + names: ["qa-cm-%", "prod-cm-%"] + excludes: + names: ["%dev%", "%test%"] + operation: # Add operation object (check Step 3) +``` + +#### What you can do? +* Add new keys, e.g., `FEATURE_ENABLE_X: true` +* Update existing keys +* Delete keys or the entire ConfigMap by name +* Include Base Configuration + * This allows updates to the base-level ConfigMap + * Environment-level ConfigMaps remain unaffected if this flag is not set +* Combine with `deploymentTemplate` and `secret` objects in the same script. + +:::success Next Step +[Add operations for your ConfigMap(s)](#on-configmaps) +::: + +### Secrets + +```yaml +apiVersion: batch/v1beta2 +kind: Application +spec: + selectors: # Add selector logic (check Step 1) + secret: + spec: + match: + include-base-config: true + includes: + names: ["qa-secret-%", "prod-secret-%"] + excludes: + names: ["%dev%", "%test%"] + operation: # Add operation object (check Step 3) +``` + +#### What you can do? +* Add or update secret keys, e.g., `API_KEY: efd32tr6tsjbf43765` +* Delete keys or the entire Secret by name +* Same usage pattern as ConfigMaps using `action`, `field: data`, and `value`/`patchJson`. +* Include Base Configuration + * Enables edits on base-level Secret + * Use this to update secrets across environments from a single source of truth +* Combine with `deploymentTemplate` and `configMap` objects in the same script + +:::success Next Step +[Add operations for your Secret(s)](#on-secrets) +::: + +--- + +## Step 3: Specify the Operation + +Add the operation to be performed on the selected Deployment Templates, ConfigMaps, and Secrets. + +:::caution Supported operations vary by config type +The supported operations depend on the type of config being edited. + +| Config Type | Supported Actions | +|------------------------|---------------------------| +| Deployment Templates | `update` only | +| ConfigMaps | `create`, `update`, `delete` | +| Secrets | `create`, `update`, `delete` | +::: + + +### On Deployment Templates + +:::info +Deployment Templates support only `action: update`, along with `field: values` or `field: version`, and the corresponding `patchJson` or `chartVersion`. +::: + +#### Example 1 - Configure memory to `250Mi` + +```yaml +... +... +... # Add the following in deploymentTemplate.spec + operation: + action: update + field: values + patchJson: '[{ "op": "replace", "path": "/resources/requests/memory", "value": "250Mi" }]' +``` + +#### Example 2 - Add a new value `ENABLE_AUTOSCALING: true` + +```yaml +... +... +... # Add the following in deploymentTemplate.spec + operation: + action: update + field: values + patchJson: '[{ "op": "add", "path": "/ENABLE_AUTOSCALING", "value": true }]' +``` + +#### Example 3 - Update deployment chart version to `4.30.1` + +```yaml +... +... +... # Add the following in deploymentTemplate.spec + operation: + action: update + field: version + chartVersion: "4.30.1" +``` + +### On ConfigMaps + +#### Example 1 - Add `FEATURE_ENABLE_X` key in existing ConfigMap + +```yaml +... +... +... # Add the following in configMap.spec + operation: + action: update + field: data + patchJson: '[{ "op": "add", "path": "/FEATURE_ENABLE_X", "value": "true" }]' +``` + +#### Example 2 - Update existing key `FEATURE_ENABLE_X` + +```yaml +... +... +... # Add the following in configMap.spec + operation: + action: update + field: data + patchJson: '[{ "op": "replace", "path": "/FEATURE_ENABLE_X", "value": "false" }]' +``` + +#### Example 3 - Remove existing key `FEATURE_ENABLE_X: true` from ConfigMap + +```yaml +... +... +... # Add the following in configMap.spec + operation: + action: update + field: data + patchJson: '[{ "op": "remove", "path": "/FEATURE_ENABLE_X" }]' +``` + +#### Example 4 - Delete ConfigMap + +```yaml +... +... +... # Add the following in configMap.spec + operation: + action: delete + field: data + value: banking-cm # In 'value', enter the name of the ConfigMap to delete +``` + + +### On Secrets + +#### Example 1 - Add `API_TOKEN` key in existing secret + +```yaml +... +... +... # Add the following in secret.spec + operation: + action: update + field: data + patchJson: '[{ "op": "add", "path": "/API_TOKEN", "value": "u4hg847598fc" }]' +``` + +#### Example 2 - Update `DB_PASSWORD` key in secret + +```yaml +... +... +... # Add the following in secret.spec + operation: + action: update + field: data + patchJson: '[{ "op": "replace", "path": "/DB_PASSWORD", "value": "root@123" }]' +``` + +#### Example 3 - Remove `API_KEY` key in secret + +```yaml +... +... +... # Add the following in secret.spec + operation: + action: update + field: data + patchJson: '[{ "op": "remove", "path": "/API_KEY" }]' +``` + +#### Example 4 - Add multiple secret keys + +```yaml +... +... +... # Add the following in secret.spec + operation: + action: update + field: data + patchJson: '[ + { "op": "add", "path": "/TOKEN", "value": "shc24235" }, + { "op": "replace", "path": "/API_KEY", "value": "u4hg847598fc" } + ]' +``` + +#### Example 5 - Delete Secret + +```yaml +... +... +... # Add the following in secret.spec + operation: + action: delete + field: data + value: banking-secret # In 'value', enter the name of the secret to delete +``` + +--- + +## Step 4: Run the Script + +Before running the script, make sure to check the impacted applications and configs, by clicking the **Show Impacted Objects** button. We recommend you to do this just so you don't end up unintentionally editing any config (Deployment Templates, ConfigMaps, and Secrets). + +Next, click **Run** to execute the script. The output of the script execution will be shown in the **Output** tab in the bottom drawer. + +--- + +## Examples (With Full Script) + +### Edit Deployment Template + +**CASE 1**: Update `replicaCount` in only Base Deployment Templates of `devtron` project + +```YAML +apiVersion: batch/v1beta2 +kind: Application +spec: + selectors: + match: + project: + includes: + names: + - devtron + deploymentTemplate: + spec: + match: + include-base-config: true + operation: + action: update + field: values + patchJson: '[{ "op": "replace", "path": "/replicaCount", "value": 2 }]' +``` + +**CASE 2**: Remove `replicaCount` in only Base Deployment Templates of all applications (names) that end with `-sanity-app` + +```YAML +apiVersion: batch/v1beta2 +kind: Application +spec: + selectors: + match: + app: + includes: + names: + - "%-sanity-app" + deploymentTemplate: + spec: + match: + include-base-config: true + operation: + action: update + field: values + patchJson: '[{ "op": "remove", "path": "/replicaCount" }]' +``` + +**CASE 3**: Add `replicaCount` in both (Base + Env Override) Deployment Templates of all applications (names) having at least one prod environment (excluding any environment name containing `virtual`) + +```YAML +apiVersion: batch/v1beta2 +kind: Application +spec: + selectors: + match: + env: + type: prod + excludes: + names: + - "%virtual%" + deploymentTemplate: + spec: + match: + include-base-config: true + operation: + action: update + field: values + patchJson: '[{ "op": "add", "path": "/replicaCount", "value": 2 }]' +``` + +**CASE 4**: Change Deployment Chart Version (Only Env Override) to `4.30.0` for all `non-prod` environments having `Rollout Deployment` chart and version `<= 4.20.0` + +```YAML +apiVersion: batch/v1beta2 +kind: Application +spec: + selectors: + match: + env: + type: non-prod + deploymentTemplate: + spec: + match: + chart: + name: "Rollout Deployment" + version: + value: 4.20.0 + operator: LESS_EQUAL + operation: + action: update + field: version + chartVersion: 4.30.0 +``` + +### Edit ConfigMap + +**CASE 1**: Update `USE_GIT_CLI` in `orchestrator-cm` in only Base ConfigMap of all projects (names) that starts with `go-lang` + +```YAML +apiVersion: batch/v1beta2 +kind: Application +spec: + selectors: + match: + project: + includes: + names: + - "go-lang%" + configMap: + spec: + match: + include-base-config: true + operation: + action: update + field: data + patchJson: '[{ "op": "replace", "path": "/USE_GIT_CLI", "value": "true" }]' +``` + +**CASE 2**: Remove `USE_GIT_CLI` in `orchestrator-cm` in only Base ConfigMap of all applications, except for the ConfigMaps with name `orchestrator-cm` + +```YAML +apiVersion: batch/v1beta2 +kind: Application +spec: + selectors: + match: + app: + includes: + names: + - "%%" # %% Wildcard for all applications + configMap: + spec: + match: + include-base-config: true + excludes: + names: + - orchestrator-cm + operation: + action: update + field: data + patchJson: '[{ "op": "remove", "path": "/USE_GIT_CLI" }]' +``` + +**CASE 3**: Add `USE_GIT_CLI` in `orchestrator-cm` in both (Base + Env Override) ConfigMaps of all applications (names) having at least one `non-prod` environment (excluding any environment name containing `virtual`) + +```YAML +apiVersion: batch/v1beta2 +kind: Application +spec: + selectors: + match: + env: + type: non-prod + excludes: + names: + - "%virtual%" + configMap: + spec: + match: + include-base-config: true + operation: + action: update + field: data + patchJson: '[{ "op": "add", "path": "/USE_GIT_CLI", "value": "true" }]' +``` + +**CASE 4**: Delete a ConfigMap named `orchestrator-cm` (Only From Env Override) from all `non-prod` environments except for the applications with name `orchestrator-app` + +```YAML +apiVersion: batch/v1beta2 +kind: Application +spec: + selectors: + match: + app: + excludes: + names: + - orchestrator-app + env: + type: non-prod + configMap: + spec: + operation: + action: delete + value: orchestrator-cm +``` + +--- + +## Combined YAML Template + +You can use the below script as a template if you wish to edit Deployment Templates, ConfigMaps, Secrets of one or more apps in bulk. + +```yaml +apiVersion: batch/v1beta2 +kind: Application +spec: + selectors: + match: + project: + includes: + names: ["dev"] + excludes: + names: ["test"] + app: + includes: + names: ["%-dashboard", "%-server"] + excludes: + names: ["%demo-%", "%test-%"] + env: + type: non-prod + deploymentTemplate: + spec: + match: + include-base-config: true + chart: + name: "Deployment" + custom: false + version: + value: "4.20.0" + operator: LESS_EQUAL + configMap: + spec: + match: + include-base-config: true + includes: + names: ["qa-cm-%", "prod-cm-%"] + excludes: + names: ["%dev%", "%test%"] + operation: + action: update + field: data + patchJson: '[{ "op": "add", "path": "/FEAT_TEST_ENABLE", "value": "true" },{"op": "replace","path":"/LOG_LEVEL","value": "-1"}]' + secret: + spec: + match: + include-base-config: true + includes: + names: ["qa-secret-%", "prod-secret-%"] + excludes: + names: ["%dev%", "%test%"] + operation: + action: update + field: data + patchJson: '[{ "op": "add", "path": "/DB_PASSWORD", "value": "********" },{"op": "replace","path":"/ADMIN_PASSWORD","value": "********"}]' +``` + diff --git a/docs/user-guide/bulk-update/bulk-edit.md b/docs/user-guide/bulk-update/bulk-edit.md new file mode 100755 index 0000000000..11c758c725 --- /dev/null +++ b/docs/user-guide/bulk-update/bulk-edit.md @@ -0,0 +1,110 @@ +# Bulk Edit (v1beta1) + +This feature helps you to update Deployment Template, ConfigMaps & Secrets for multiple apps in one go! You can filter the apps on the basis of environments, global flag, and app names(we provide support for both substrings included and excluded in the app name). +## Overview + +Need to make some common changes across multiple devtron applications? +**Bulk Edit** allows you to do that.
+Eg. You can change the value for `MaxReplicas` in Deployment Templates of multiple Devtron applications or you can add key-value pairs in multiple ConfigMaps & Secrets. However, you might not be able to change the values of locked keys. Refer [Lock Deployment Configuration](../global-configurations/lock-deployment-config.md) to know more. + +## Support +Bulk edit is currently supported for: + - Deployment Template + - ConfigMaps + - Secrets + + +## Steps: + +1. Click on the `Bulk Edit` option in the main navigation. This is where you can write and execute scripts to perform bulk updates in Devtron objects. + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/bulk-edit/bulk-edit-nav.jpg) +
Figure 1: Navigating to Bulk Edit
+ +2. To help you get started, click **Refer Sample Payload** to view a script template. + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/bulk-edit/bulk-edit-sample-payload.jpg) +
Figure 2a: Refer Sample Payload
+ + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/bulk-edit/bulk-edit-readme.jpg) +
Figure 2b: Sample Script
+ +3. Copy and Paste the sample script in the code editor and make desired changes. Refer `Payload Configuration` in the Readme to understand the parameters. + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/bulk-edit/bulk-edit-script.jpg) +
Figure 3: Bulk Update Script
+ +### Example +Example below will select all applications having `abc and xyz` present in their name and out of those will exclude applications having `abcd and xyza` in their name. Since global flag is false and envId 23 is provided, it will make changes in envId 23 and not in global deployment template for this application. + +If you want to update globally then please set `global: true`. If you have provided an envId but deployment template, ConfigMap or Secret is not overridden for that particular environment then it will not apply the changes. +Also, of all the provided names of ConfigMaps/secrets, for every app & environment override only the names that are present in them will be considered. + + +### Sample Script + +This is the piece of code which works as the input and has to be pasted in the code editor for achieving bulk updation +task. + +``` +apiVersion: batch/v1beta1 +kind: Application +spec: + includes: + names: + - "%abc%" + - "%xyz%" + excludes: + names: + - "%abcd%" + - "%xyza%" + envIds: + - 23 + global: false + deploymentTemplate: + spec: + patchJson: '[{ "op": "add", "path": "/MaxSurge", "value": 1 },{"op": "replace","path":"/GracePeriod","value": "30"}]' + configMap: + spec: + names: + - "configmap1" + - "configmap2" + - "configmap3" + patchJson: '[{ "op": "add", "path": "/{key}", "value": "{value}" },{"op": "replace","path":"/{key}","value": "{value}"}]' + secret: + spec: + names: + - "secret1" + - "secret2" + patchJson: '[{ "op": "add", "path": "/{key}", "value": "{value}" },{"op": "replace","path":"/{key}","value": "{value}"}]' +``` + + +### Payload Configuration +The following tables list the configurable parameters of the Payload component in the Script and their description along with example. Also, if you do not need to apply updates on all the tasks, i.e. Deployment Template, ConfigMaps & Secrets, leave the Spec object empty for that respective task. + +| Parameter | Description | Example | +| -------------------------- | ---------------------------------- | ---------------------------------------------------------- | +|`includes.names ` | Will filter apps having exact string or similar substrings | `["app%","%abc", "xyz"]` (will include all apps having `"app%"` **OR** `"%abc"` as one of their substring, example - app1, app-test, test-abc etc. **OR** application with name xyz) | +| `excludes.names` | Will filter apps not having exact string or similar substrings. | `["%z","%y", "abc"]` (will filter out all apps having `"%z"` **OR** `"%y"` as one of their substring, example - appz, test-app-y etc. **OR** application with name abc) | +| `envIds` | List of envIds to be updated for the selected applications. | `[1,2,3]` | +| `global` | Flag to update global deployment template of applications. | `true`,`false` | +| `deploymentTemplate.spec.patchJson` | String having the update operation(you can apply more than one changes at a time). It supports [JSON patch ](http://jsonpatch.com/) specifications for update. | `'[ { "op": "add", "path": "/MaxSurge", "value": 1 }, { "op": "replace", "path": "/GracePeriod", "value": "30" }]'` | +| `configMap.spec.names` | Names of all ConfigMaps to be updated. | `configmap1`,`configmap2`,`configmap3` | +| `secret.spec.names` | Names of all Secrets to be updated. | `secret1`,`secret2`| +| `configMap.spec.patchJson` / `secret.spec.patchJson` | String having the update operation for ConfigMaps/Secrets(you can apply more than one changes at a time). It supports [JSON patch ](http://jsonpatch.com/) specifications for update. | `'[{ "op": "add", "path": "/{key}", "value": "{value}" },{"op": "replace","path":"/{key}","value": "{value}"}]'`(Replace the `{key}` part to the key you want to perform operation on & the `{value}`is the key's corresponding value | + +
+ +4. Once you have modified the script, you can click on the **Show Impacted Objects** button to see the names of all applications that will be modified when the script is executed. + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/bulk-edit/bulk-edit-impactobj.jpg) +
Figure 4: Impact Object
+ +5. Click on the **Execute** button to execute the script. Status/Output of the script execution will be shown in the `Output` tab of the bottom drawer. + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/bulk-edit/bulk-edit-run.jpg) +
Figure 5: Executing Bulk Edit
+ + + diff --git a/docs/user-guide/cloning-application.md b/docs/user-guide/cloning-application.md old mode 100644 new mode 100755 index 2bdc36d0c6..d27fc97da9 --- a/docs/user-guide/cloning-application.md +++ b/docs/user-guide/cloning-application.md @@ -1,12 +1,18 @@ +--- +hide_table_of_contents: true +--- + # Cloning Application Click on `Create New` and the select `Custom app` to create a new application. -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/cloning-application/custom-app.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/creating-application/create-button.jpg) +
Figure 1: Create Button
As soon you click on `Custom app`, you will get a popup window on screen where you have to enter `app name` and `project` for the application. there are two radio buttons present on the popup window, one is for `Blank app` and another one is for `Clone an existing app`. For cloning an existing application, select the second one. After this, one more drop-down will appear on the window from which you can select the application that you want to clone. For this, you will have to type minimum three character to see the matching results in the drop-down. After typing the matching characters, select the application that you want to clone. You also can add additional information about the application (eg. `created by`, `Created on`) using `tags` (only key:value allowed). -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/cloning-application/clone-app.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/creating-application/clone-app.jpg) +
Figure 2: Choosing an App to Clone
| Key | Description | | :--- | :--- | @@ -17,11 +23,11 @@ Click on `Create New` and the select `Custom app` to create a new application. Now click on `Clone App` to clone the selected application. -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/cloning-application/new-cloned-app.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/creating-application/new-cloned-app.jpg) +
Figure 3: Filling the Details
New application with a duplicate template is created. -{% hint style="warning" %} +:::caution When cloning an application with GitOps configuration, the configuration itself is not copied. To set up the configuration for your new application, refer [GitOps Configuration](./creating-application/gitops-config.md) guide. -{% endhint %} - +::: \ No newline at end of file diff --git a/docs/user-guide/command-bar.md b/docs/user-guide/command-bar.md old mode 100644 new mode 100755 index ab42cda489..0ad6811f76 --- a/docs/user-guide/command-bar.md +++ b/docs/user-guide/command-bar.md @@ -6,7 +6,8 @@ hidden: true ## Why command bar? The command bar is designed to enable you to navigate across the devtron dashboard without having to click around the screen. -![](../images/command-bar/command-bar-parts.png) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/command-bar/command-bar-parts.png) +
Figure 1: Command Bar Sections
Top-level categories (eg. app, chart, security, global-config) are auto-filled depending upon your location on the Devtron dashboard. @@ -20,15 +21,16 @@ Top-level categories (eg. app, chart, security, global-config) are auto-filled d | Explore nested options | `→` | | Navigate to a screen | `Enter` | -
+
### How to use the command bar (Eg. Navigate to Workflow editor of an App.) -
+
-![](../images/command-bar/cmd-bar-gif.gif) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/command-bar/cmd-bar.gif) +
Figure 2: Command Bar
-
+
### Steps to use @@ -42,7 +44,8 @@ Top-level categories (eg. app, chart, security, global-config) are auto-filled d 4. In this case, `app / dashboard / configure / workflow-editor` will navigate to the Workflow editor in dashboard application. -![](../images/command-bar/cmdbar-workflow-editor-path.png) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/command-bar/cmdbar-workflow-editor-path.png) +
Figure 3: Command Bar - Workflow Editor
Similarly, you can use the command bar to navigate around the Devtron dashboard without a click. diff --git a/docs/user-guide/create-application.md b/docs/user-guide/create-application.md old mode 100644 new mode 100755 index 682936ee8c..fe558251b7 --- a/docs/user-guide/create-application.md +++ b/docs/user-guide/create-application.md @@ -4,7 +4,8 @@ * On the upper-right corner of the screen, click **Create**. * Select **Custom app** from the drop-down list. -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/create-app-1.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/creating-application/create-button.jpg) +
Figure 1: Create Button
A new application can be created from one of the following options: @@ -16,12 +17,13 @@ A new application can be created from one of the following options: To create a new application from the custom app, select **Custom app**. -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/create-application.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/creating-application/create-application.jpg) +
Figure 2: Creating App from Scratch
* In the **Create application** window, enter an **App Name** and select a **Project**. -* Select either:
  • **Create from scratch** to create an application from scratch, or
  • **Clone existing application** to clone an existing application.
-* If you select **Create from scratch**, select the project from the drop-down list.
`Note`: You have to add [project under Global Configurations](./global-configurations/projects.md). Only then, it will appear in the drop-down list here. -* If you select **Clone existing application**, select an app you want to clone from and the project from the drop-down list.
`Note`: You have to add [project under Global Configurations](./global-configurations/projects.md). Only then, it will appear in the drop-down list here.
+* Select either:
  • **Create from scratch** to create an application from scratch
  • , or
  • **Clone existing application** to clone an existing application.
+* If you select **Create from scratch**, select the project from the drop-down list.
`Note`: You have to [add a project](./global-configurations/projects.md). Only then, it will appear in the drop-down list here. +* If you select **Clone existing application**, select an app you want to clone from and the project from the drop-down list.
`Note`: You have to [add a project](./global-configurations/projects.md). Only then, it will appear in the drop-down list here. ## Tags @@ -32,10 +34,9 @@ To create a new application from the custom app, select **Custom app**. When tags are propagated, they are considered as labels to Kubernetes resources. Kubernetes offers integrated support for using these labels to query objects and perform bulk operations e.g., consolidated billing using labels. You can use these tags to filter/identify resources via CLI or in other Kubernetes tools. ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/propagate-tags.jpg) +
Figure 3: Propagating Tags
* Click `+ Add tag` to add a new tag. -* Click the symbol on the left side of your tag to propagate a tag.
`Note`: Dark grey colour in symbol specifies that the tags are propagated. -* To remove the tags from propagation, click the symbol again. -* Click `Save`. - - +* Click the symbol ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/donot-propagate.jpg) on the left side of your tag to propagate a tag.
`Note`: Dark grey colour in symbol specifies that the tags are propagated. +* To remove the tags from propagation, click the symbol ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/propagate-dark.jpg) again. +* Click `Save`. \ No newline at end of file diff --git a/docs/user-guide/creating-application/README.md b/docs/user-guide/creating-application/README.md old mode 100644 new mode 100755 index f5ddacee13..326436aa48 --- a/docs/user-guide/creating-application/README.md +++ b/docs/user-guide/creating-application/README.md @@ -1,25 +1,46 @@ -# App Configuration +--- +hide_table_of_contents: true +--- -**Please configure Global Configurations before moving ahead with App Configuration** +# App Configurations -{% embed url="https://www.youtube.com/watch?v=9u-pKiWV-tM" caption="" %} + -**Parts of Documentation** +This section helps you define how your application is built, deployed, and managed within Devtron. Each part below guides you through the stages of the app configuration process. -[Git Repository](git-material.md) +--- -[Build Configuration](docker-build-configuration.md) +## Table of Contents -[Base Configurations](./base-config/README.md) +### [Git Repository](git-material.md) +Connect your application’s source code to Devtron by adding one or more Git repositories. +Here you’ll specify the repository URL, and branch or folder paths to pull your manifests and code from. -[GitOps Configuration](gitops-config.md) +### [Build Configuration](docker-build-configuration.md) +Define how your application’s container image is built. +You can set the Dockerfile path, build context, build arguments, and target Docker registry to generate the image for deployment. -[Workflow Editor](workflow/README.md) +### [Base Configurations](./base-config/README.md) +Set up the fundamental deployment parameters for your application. +This includes environment variables, secrets, deployment templates, and configuration files that define the behavior of your workloads. -[External Links](external-links.md) +### [GitOps Configuration](gitops-config.md) +Enable GitOps for your application to automatically sync configuration changes from Git to your cluster. +This ensures your deployments remain consistent with the declared state in your repositories. -[Environment Overrides](environment-overrides.md) +### [Workflow Editor](workflow/README.md) +Use the Workflow Editor to define CI/CD pipelines for your application. +Here you can create and customize build, test, and deployment stages, and add pre- or post-deployment tasks for full automation. -[Deleting Application](../deleting-application.md) +### [External Links](external-links.md) +Link your application to third-party tools or dashboards such as monitoring, logging, or analytics systems. +This helps you quickly navigate to related tools directly from Devtron. - \ No newline at end of file + +### [Environment Overrides](environment-overrides.md) +Override specific configurations for different environments (e.g., dev, staging, production). +Environment overrides let you have different parameters like resource limits in deployment template, configmaps, secrets, or URLs without changing the base configuration. + + +### [Deleting Application](../deleting-application.md) +Learn how to safely delete an application and its related configurations from Devtron when you no longer need it. \ No newline at end of file diff --git a/docs/user-guide/creating-application/app-metrics.md b/docs/user-guide/creating-application/app-metrics.md old mode 100644 new mode 100755 index aba0b7ff18..723bee7aaa --- a/docs/user-guide/creating-application/app-metrics.md +++ b/docs/user-guide/creating-application/app-metrics.md @@ -4,7 +4,8 @@ Application Metrics are the indicators used to evaluate the performance and efficiency of your application. It can be enabled in the Devtron platform to see your application's metrics. -![Figure 1: Application Metrics](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-metrics/app-metrics.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/app-details/app-metrics/app-metrics.jpg) +
Figure 1: Application Metrics
--- @@ -21,19 +22,17 @@ Application Metrics are the indicators used to evaluate the performance and effi ## Set Up Application Metrics -{% hint style="warning" %} -### Note +:::caution Note Application metrics can only be enabled if your application is deployed using Devtron Deployment Charts and not [Custom Deployment Charts](../global-configurations/deployment-charts.md). -{% endhint %} +::: ### Step 1: Install Monitoring (Grafana) Integration #### For OSS and Self-Managed Enterprise -{% hint style="warning" %} -### Who Can Perform This Action? +:::caution Who Can Perform This Action? Only super admin users can install Devtron integrations. -{% endhint %} +::: To use the Grafana dashboard, you need to first install the integration from the [Devtron Stack Manager](../integrations/README.md). Refer [Monitoring (Grafana) Integration](../integrations/grafana.md) to learn more. @@ -44,19 +43,18 @@ If you want to enable Grafana Integration, email us at [enterprise@devtron.ai](m ### Step 2: Install Prometheus -{% hint style="warning" %} -### Who Can Perform This Action? +:::caution Who Can Perform This Action? Users need to have [Admin role](../global-configurations/authorization/user-access.md#devtron-apps-permissions) or above to deploy a chart. -{% endhint %} +::: -{% hint style="warning" %} -### Note +:::caution Note Ensure [GitOps](../global-configurations/gitops.md) is configured before deploying Prometheus. If not, Prometheus will default to being deployed via Helm. -{% endhint %} +::: 1. Go to the **Chart Store** and search for `prometheus`. Use the Prometheus community's `kube-prometheus-stack` chart to deploy Prometheus. - ![Figure 2: Chart Store](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-metrics/app2.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/app-details/app-metrics/kube-prometheus-chart.jpg) +
Figure 2: Chart Store
2. After selecting the chart, configure these values as needed before deployment. @@ -66,20 +64,22 @@ Ensure [GitOps](../global-configurations/gitops.md) is configured before deployi - pods=[*] ``` -
+
```yaml serviceMonitorSelectorNilUsesHelmValues: false podMonitorSelectorNilUsesHelmValues: false ``` -
+
Search for the above parameters, and update them as shown (or customize as needed). - ![Figure 3a: Prometheus Chart Configuration](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-metrics/app3.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/app-details/app-metrics/configure-chart.jpg) +
Figure 3a: Prometheus Chart Configuration
- ![Figure 3b: Prometheus Chart Configuration (cont.)](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-metrics/app-metrics-config.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/app-details/app-metrics/configure-chart-1.jpg) +
Figure 3b: Prometheus Chart Configuration (cont.)
3. Enable `upgradeJob` parameter to install CRDs: @@ -87,78 +87,79 @@ Ensure [GitOps](../global-configurations/gitops.md) is configured before deployi In the Prometheus Helm chart settings, locate the `upgradeJob` parameter and set it to `true` if it is `false`. - ![Figure 4: upgradeJob Parameter](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-metrics/app-new2.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/app-details/app-metrics/configure-chart-2.jpg) +
Figure 4: upgradeJob Parameter
4. After enabling the parameter, click **Deploy Chart**. -{% hint style="warning" %} -### Common Pitfall: Prometheus Deployment Timeout due to Failed CRDs - +:::caution Common Pitfall: Prometheus Deployment Timeout due to Failed CRDs While deploying `kube-prometheus-stack` chart, the deployment status may show as **Timed out**, and some CustomResourceDefinitions (CRDs) may appear as **Failed**. -To solve it, refer [Troubleshoot Issues](#common-pitfall-prometheus-deployment-timeout-due-to-failed-crds) +To solve it, refer [Troubleshoot Issues](#troubleshoot-issues) -{% endhint %} +::: ### Step 3: Set Up Prometheus Endpoint -{% hint style="warning" %} -### Who Can Perform This Action? +:::caution Who Can Perform This Action? Only super admin users can set up Prometheus endpoint in a cluster. -{% endhint %} +::: 1. Once Prometheus is installed, go to its **App Details** and navigate to **Networking** → **Service** in the K8s resources. Expand the Prometheus server service to see the endpoints. 2. Copy the URL of the `kube-prometheus` service as shown in the image below. - ![Figure 5: Prometheus Service](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-metrics/app4.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/app-details/app-metrics/endpoint.jpg) +
Figure 5: Prometheus Service
3. To set Prometheus as a data source in Grafana, navigate to **Global Configurations** → **Clusters & Environments**, select your cluster, and edit its settings. - ![Figure 6: Clusters and Environments](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-metrics/app5.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/app-details/app-metrics/select-cluster.jpg) +
Figure 6: Clusters and Environments
4. Now to set up the Prometheus endpoint: 1. Enable the `See metrics for applications in this cluster` option, as shown in the image below. 2. Paste the copied URL into the Prometheus endpoint field, ensuring it includes `http://` 3. Click **Update Cluster** to save the changes. - ![Figure 7: Prometheus Endpoint](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-metrics/app6.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/app-details/app-metrics/enable-app-metrics.jpg) +
Figure 7: Prometheus Endpoint
### Step 4: Enable Application Metrics -{% hint style="warning" %} -### Who Can Perform This Action? +:::caution Who Can Perform This Action? Users need to have [Admin role](../global-configurations/authorization/user-access.md#devtron-apps-permissions) or above to enable application metrics. -{% endhint %} +::: After adding the endpoint in your preferred cluster, **CPU usage** and **Memory usage** metrics will be visible in the **App Details** page for all the Devtron apps in that cluster (it may take a few minutes). -![Figure 8: CPU Usage & Memory Usage](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-metrics/app7.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/app-details/app-metrics/cpu-memory.jpg) +
Figure 8: CPU Usage & Memory Usage
To enable **Throughput** and **Latency** metrics in Devtron, follow these steps: -{% hint style=“warning” %} -### Note +:::caution Note **Throughput** and **Latency** metrics will only display data if there is active traffic (i.e., incoming requests) to your application. If there is no traffic, these metrics will show `No data`. -{% endhint %} +::: 1. Open your Devtron app. -2. Go to **Configurations** → **Base Configurations** → **Deployment Template**. +2. Go to its **Configurations** (tab) → **Base Configurations** → **Deployment Template**. 3. Enable **Application Metrics** in the Deployment Template as shown below and save the changes. - ![Figure 9: Enable Application Metrics](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-metrics/app8.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/app-details/app-metrics/show-app-metrics.jpg) +
Figure 9: Enable Application Metrics
4. Now, you can track all your application metrics by navigating to **Applications** and going to the **App Details** page of your Devtron App as shown below. - ![Figure 10: Application Metrics](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-metrics/app-new3.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/app-details/app-metrics/app-new3.jpg) +
Figure 10: Application Metrics
-{% hint style="warning" %} -### Note +:::caution Note If your environment is [Overridden](../creating-application/environment-overrides.md), you need to enable the Application Metrics at the environment override deployment template instead of the base deployment template. -{% endhint %} +::: --- @@ -169,9 +170,11 @@ If your environment is [Overridden](../creating-application/environment-override While deploying `kube-prometheus-stack` chart, the deployment status may show as **Timed out**, and some CustomResourceDefinitions (CRDs) may appear as **Failed**. -![Figure 11a: Deployment Timed Out](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-metrics/app-metrics-deployment-timed-out-v2.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/app-details/app-metrics/app-metrics-deployment-timed-out-v2.jpg) +
Figure 11a: Deployment Timed Out
-![Figure 11b: CRDs Failed](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-metrics/app-metrics-crds-failed.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/app-details/app-metrics/app-metrics-crds-failed.jpg) +
Figure 11b: CRDs Failed
**This behavior is expected and do not require any action from you.** @@ -194,7 +197,7 @@ kubectl apply -f https://raw.githubusercontent.com/devtron-labs/devtron/main/man
Grafana dashboards not visible in App Details page even after adding prometheus endpoint or Graphs showing error panel with id 2 not found -If the graphs are not visible check if Prometheus is configured properly. Then go to **Global Configurations** > **Clusters & Environments** > Click on any environment for the cluster where you added Prometheus endpoint and simply click `Update`. +If the graphs are not visible check if Prometheus is configured properly. Then go to **Global Configurations** → **Clusters & Environments** → Click on any environment for the cluster where you added Prometheus endpoint and simply click `Update`. If the charts are still not visible, try visiting the URL: `/grafana?orgId=2` If you see `Not Found` on this page, then follow all the given steps or if the page is accessible, and you are getting `panel with id 2 not found` then follow from step 6: 1. Get Grafana password using `kubectl -n devtroncd get secret devtron-secret -o jsonpath='{.data.GRAFANA_PASSWORD}' | base64 -d` @@ -233,7 +236,7 @@ If you see `Not Found` on this page, then follow all the given steps or if the p 5. Now from Devtron UI, update any of the environment again and its data source will be created automatically. -6. In Grafana UI you need to be logged in and Go to Dashboards > Manage then click `Import` and Import the given dashboards one by one. +6. In Grafana UI you need to be logged in and Go to Dashboards → Manage then click `Import` and Import the given dashboards one by one. ``` https://grafana.com/api/dashboards/13322/revisions/4/download diff --git a/docs/user-guide/creating-application/base-config/README.md b/docs/user-guide/creating-application/base-config/README.md old mode 100644 new mode 100755 index 6bd3e8a6e4..e55aecf81e --- a/docs/user-guide/creating-application/base-config/README.md +++ b/docs/user-guide/creating-application/base-config/README.md @@ -14,7 +14,8 @@ Base Configurations in Devtron consists of: In Devtron, these are the core settings that dictate an application's behavior. -![Figure 1: Base Configurations of Application](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/deployment-template/base-config-main.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/base-configurations/base-configurations-section.jpg) +
Figure 1: Base Configurations of Application
## Next Steps diff --git a/docs/user-guide/creating-application/base-config/config-maps.md b/docs/user-guide/creating-application/base-config/config-maps.md old mode 100644 new mode 100755 index 18e5a3756d..a173b1dd45 --- a/docs/user-guide/creating-application/base-config/config-maps.md +++ b/docs/user-guide/creating-application/base-config/config-maps.md @@ -4,15 +4,20 @@ A ConfigMap stores key-value pairs (non-sensitive data) that your applications c ## Add ConfigMap -1. Navigate to the **Applications** page and click on your preferred application. +1. Go to **Application Management** → **Devtron Applications** → (Select Your App) -2. Go to the **Configurations** → **Base Configurations**. + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/configmaps/devtron-apps-nav.jpg) +
Figure 1: Navigating to App Configurations
- ![Figure 1: Application's 'Configurations' Page](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/config-maps/appconfig-page.jpg) +2. Go to **Configurations** (tab) → **Base Configurations**. + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/configmaps/appconfig-page.jpg) +
Figure 2: Application's 'Configurations' Page
3. Click the **+** button next to **ConfigMaps**. - ![Figure 2: Adding ConfigMap](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/config-maps/config-map.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/configmaps/add-configmap.jpg) +
Figure 3: Adding ConfigMap
4. **Data Type** - Choose between the following data types: @@ -30,7 +35,8 @@ Follow the instructions below to create a Kubernetes ConfigMap: 2. **Name** - Provide a name to your ConfigMap (cannot be changed later). - ![Figure 3: Naming the ConfigMap](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/config-maps/created-configmap.gif) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/configmaps/created-configmap.gif) +
Figure 4: Naming the ConfigMap
3. **Mount data as** - Select how you want to mount the ConfigMap: @@ -42,7 +48,7 @@ Follow the instructions below to create a Kubernetes ConfigMap: * **GUI mode** – User-friendly interface. Click **+Add** button and enter the **Key** and **Value** fields without quotes. * **YAML mode** – Raw YAML for entering key-value pairs in the format **`key: value`**. Boolean and numeric values must be wrapped in double quotes. - {% embed url="https://www.youtube.com/watch?v=QfJqX6KM2lU" %} +
5. You may [perform a dry run](#perform-a-dry-run) before clicking **Save**. @@ -65,13 +71,15 @@ Kubernetes External ConfigMap is usually created to reuse a configMap outside th ### Mount ConfigMap Data -![Figure 4: Selecting Data Volume Option](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/config-maps/cm-data-volume.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/configmaps/cm-data-volume.jpg) +
Figure 5: Selecting Data Volume Option
In the above example, we have seen how to pass environment variables in your ConfigMap. Additionally, there is an option to mount a ConfigMap by passing its content to a file. The content could be a plain text, json, yaml, bash script, etc. You can do so by selecting the `Data Volume` option in **Mount data as**. The key of the ConfigMap should be your filename and the value of the ConfigMap should be your file content. In the below example, you `file.json` is the key, and the json content is the value of that ConfigMap (below the pipe (**|**) symbol). This file will be created on your specified [volume mount path](#volume-mount-path). -![Figure 5: Adding File Content](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/config-maps/filecontent-cm.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/configmaps/filecontent-cm.jpg) +
Figure 6: Adding File Content
### Volume Mount Path @@ -85,15 +93,12 @@ When mounting multiple files to the same location, you can use the **Set Sub Pat * If **Set Sub Path** is disabled (unchecked), the system will delete any files already present in the [specified path](#volume-mount-path) and then mount the new files. -{% hint style="info" %} - -### Note - +:::info Note In case of Kubernetes ConfigMap, all keys will be mounted as files on the specified path. In case of Kubernetes External ConfigMap, manually specify the keys which should be mounted as files. -{% endhint %} +::: ### Set File Permission @@ -125,7 +130,8 @@ Before saving your configured ConfigMap, you can use the **Dry Run** option (as This feature helps you verify your configurations, detect issues, and ensure correctness. -![Figure 6: Performing a Dry Run](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/config-maps/dry-run-cm.gif) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/configmaps/dry-run-cm.gif) +
Figure 7: Performing a Dry Run
Your configurations will appear in the left pane, while the right pane will display a section named `Manifest generated from merged` showing the computed Kubernetes manifest. @@ -137,12 +143,12 @@ Your configurations will appear in the left pane, while the right pane will disp 2. Modify its values. 3. Click **Update**. -{% hint style="warning" %} -### Note +:::caution Note You cannot change the name of a ConfigMap. Create a new ConfigMap instead. -{% endhint %} +::: -![Figure 7: Updating Existing ConfigMap](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/config-maps/update_configmap.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/configmaps/update_configmap.jpg) +
Figure 8: Updating Existing ConfigMap
--- @@ -155,86 +161,13 @@ You may delete a ConfigMap if not in use anymore. Once a ConfigMap is deleted, i 3. Click **Delete**. 4. Confirm the deletion in the dialogbox. -![Figure 8: Deleting ConfigMap](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/config-maps/delete_configmap.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/configmaps/delete_configmap.jpg) +
Figure 9: Deleting ConfigMap
--- -## Edit a Protected ConfigMap [![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/elements/EnterpriseTag.svg)](https://devtron.ai/pricing) - -Any changes made to the protected base configurations (Deployment Template, ConfigMap, Secret) will require approval if an [approval policy](../../../user-guide/global-configurations/approval-policy.md) is enforced. When you want to edit a protected configuration, you can do it in the following ways: - -* [Normal Edit](#normal-edit) - Where changes to the protected configuration are made only after getting approval from the approver(s). - -* [Express Edit](#express-edit) - Where you bypass the approval process and directly make changes to the protected configuration. - -### Normal Edit - -{% hint style="warning" %} - -### Who Can Perform This Action? - -Only a Super-Admin, Manager, or an Admin can edit the configuration values. Refer to [User Permissions](../../global-configurations/authorization/user-access.md) for more information. - -{% endhint %} - -{% embed url="https://www.youtube.com/watch?v=gY9LKJSVS-g" %} - -Follow the below steps to edit a protected ConfigMap: - -1. Navigate to the **Applications** page and click on your preferred application. - -2. Go to the **Configurations** → **Base Configurations**. - -3. Click on **ConfigMaps** and select the ConfigMap you'd like to edit. - -4. Modify the values either by using **GUI** or **YAML** editor. - -5. Click **Save Changes**. The Base Configurations pop-up page will be displayed. - - * **Save as draft** - Select this option if you want to continue making your changes later but save your changes as a draft for now. - - * **Propose changes** - Select this option if you want to propose your changes to the approvers. You can then select the approvers to get notified regarding the change from the **Select approvers** to notify drop-down box. - -6. Enter your comments (reason for making the changes) in the **Comment** text box. - -7. Click **Propose Changes**. The corresponding approver will be notified via email regarding your request. - -### Express Edit - -{% hint style="warning" %} - -### Who Can Perform This Action? - -Only a Super-Admin (when the [Super admins toggle](../../global-configurations/approval-policy.md#excluding-super-admins) is enabled in the Exceptions tab) or [specific users / user groups](../../global-configurations/approval-policy.md#excluding-specific-users--user-groups--api-tokens) who are added as exceptions in the Approval Policy can make express edits. Refer to [Approval Policy](../../global-configurations/approval-policy.md) for more information. - -{% endhint %} - -Express edits allow you to bypass the approval process and make direct edits to the configurations. Follow the below steps to make express edits: - -1. Navigate to the **Applications** page and click on your preferred application. - -2. Go to the **Configurations** → **Base Configurations**. - -3. Click on **ConfigMaps** and select the ConfigMap you'd like to edit. - -4. Click on the **Edit** button. - -{% hint style="info" %} - -### Note - -The **Edit** button will only be displayed if: - -* You are a Super-Admin and the Super admins toggle is enabled in the Approval Policy page - -* You are added as an exception in the Approval Policy page. - -Refer to [Approval Policy](../../global-configurations/approval-policy.md) for more information. - -{% endhint %} - -5. Modify the values either by using **GUI** or **YAML** editor. +## Edit a Protected ConfigMap -6. Click on **Publish Changes** to direcly publish your changes. +Any changes made to the protected base configurations (Deployment Template, ConfigMap, Secret) will require approval if an [approval policy](../../../user-guide/global-configurations/approval-policy.md) is enforced. -![Figure 9: Express Edit](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/base-config/express-edit-configmap.gif) \ No newline at end of file +
\ No newline at end of file diff --git a/docs/user-guide/creating-application/base-config/deployment-template-types/README.md b/docs/user-guide/creating-application/base-config/deployment-template-types/README.md new file mode 100755 index 0000000000..f45ca769b9 --- /dev/null +++ b/docs/user-guide/creating-application/base-config/deployment-template-types/README.md @@ -0,0 +1,17 @@ +--- +hide_table_of_contents: true +--- + +# Types of Deployment Templates + +In Devtron, the following deployment charts are available for you to use for your application: + +* [Deployment](deployment.md) +* [Rollout Deployment](rollout-deployment.md) +* [Job and Cronjob](job-and-cronjob.md) +* [StatefulSets](statefulset.md) + +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/base-configurations/deployment-types/deployment-charts-devtron.gif) +
Figure 1: Deployment Charts by Devtron
+ +Each template serves a specific purpose; therefore, choose one based on your application’s requirements. \ No newline at end of file diff --git a/docs/user-guide/creating-application/base-config/deployment-template-types/deployment.md b/docs/user-guide/creating-application/base-config/deployment-template-types/deployment.md new file mode 100755 index 0000000000..cece37f901 --- /dev/null +++ b/docs/user-guide/creating-application/base-config/deployment-template-types/deployment.md @@ -0,0 +1,1133 @@ +# Deployment + +This chart creates a deployment that runs multiple replicas of your application and automatically replaces any instances that fail or become unresponsive. It does not support Blue/Green and Canary deployments. This is the default deployment chart. You can select `Deployment` chart when you want to use only basic use cases which contain the following: + +* Create a Deployment to rollout a ReplicaSet. The ReplicaSet creates Pods in the background. Check the status of the rollout to see if it succeeds or not. +* Declare the new state of the Pods. A new ReplicaSet is created and the Deployment manages moving the Pods from the old ReplicaSet to the new one at a controlled rate. Each new ReplicaSet updates the revision of the Deployment. +* Rollback to an earlier Deployment revision if the current state of the Deployment is not stable. Each rollback updates the revision of the Deployment. +* Scale up the Deployment to facilitate more load. +* Use the status of the Deployment as an indicator that a rollout has stuck. +* Clean up older ReplicaSets that you do not need anymore. + +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/base-configurations/deployment-types/select-deployment.jpg) +
Figure 1: Choosing 'Deployment' Chart
+ +You can define application behavior by providing information in the following sections: + +| Key | Descriptions | +| :--- | :--- | +| `Chart version` | Select the Chart Version using which you want to deploy the application.
Refer [Chart Version](../../../creating-application/base-config/deployment-template.md#choose-a-chart-version) section for more detail. | +| `GUI` | You can perform a basic deployment configuration for your application in the **GUI** section instead of configuring the YAML file.
Refer [Basic Configuration](../../../creating-application/base-config/deployment-template.md#using-gui) section for more detail.| +| `YAML` | If you want to do additional configurations, then click **YAML** for modifications.
Refer [YAML](#yaml) section for more detail. | +| `Show application metrics` | You can enable `Show application metrics` to see your application's metrics-CPU Service Monitor usage, Memory Usage, Status, Throughput and Latency.
Refer [Application Metrics](../../../creating-application/app-metrics.md) for more detail. | + + +:::caution Note +Super-admins can lock keys in deployment template to prevent non-super-admins from modifying those locked keys. Refer [Lock Deployment Configuration](../../../global-configurations/lock-deployment-config.md) to know more. +::: + +--- + +## YAML + +### Container Ports + +This defines ports on which application services will be exposed to other services + +```yaml +ContainerPort: + - envoyPort: 8799 + idleTimeout: + name: app + port: 8080 + servicePort: 80 + nodePort: 32056 + supportStreaming: true + useHTTP2: true +``` + +| Key | Description | +| :--- | :--- | +| `envoyPort` | envoy port for the container | +| `idleTimeout` | the duration of time that a connection is idle before the connection is terminated | +| `name` | name of the port | +| `port` | port for the container | +| `servicePort` | port of the corresponding kubernetes service | +| `nodePort` | nodeport of the corresponding kubernetes service | +| `supportStreaming` | Used for high performance protocols like grpc where timeout needs to be disabled | +| `useHTTP2` | Envoy container can accept HTTP2 requests | + +### EnvVariables +```yaml +EnvVariables: [] +``` +To set environment variables for the containers that run in the Pod. + +### EnvVariablesFromFieldPath +```yaml +EnvVariablesFromFieldPath: +- name: ENV_NAME + fieldPath: status.podIP (example) +``` +To set environment variables for the containers and fetching their values from pod-level fields. + +### Liveness Probe + +If this check fails, kubernetes restarts the pod. This should return error code in case of non-recoverable error. + +```yaml +LivenessProbe: + Path: "" + port: 8080 + initialDelaySeconds: 20 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + failureThreshold: 3 + httpHeaders: + - name: Custom-Header + value: abc + scheme: "" + tcp: true +``` + +| Key | Description | +| :--- | :--- | +| `Path` | It define the path where the liveness needs to be checked | +| `initialDelaySeconds` | It defines the time to wait before a given container is checked for liveliness | +| `periodSeconds` | It defines the time to check a given container for liveness | +| `successThreshold` | It defines the number of successes required before a given container is said to fulfill the liveness probe | +| `timeoutSeconds` | It defines the time for checking timeout | +| `failureThreshold` | It defines the maximum number of failures that are acceptable before a given container is not considered as live | +| `httpHeaders` | Custom headers to set in the request. HTTP allows repeated headers, you can override the default headers by defining .httpHeaders for the probe. | +| `scheme` | Scheme to use for connecting to the host (HTTP or HTTPS). Defaults to HTTP. +| `tcp` | The kubelet will attempt to open a socket to your container on the specified port. If it can establish a connection, the container is considered healthy. | + + +### MaxUnavailable + +```yaml + MaxUnavailable: 0 +``` +The maximum number of pods that can be unavailable during the update process. The value of "MaxUnavailable: " can be an absolute number or percentage of the replicas count. The default value of "MaxUnavailable: " is 25%. + +### MaxSurge + +```yaml +MaxSurge: 1 +``` +The maximum number of pods that can be created over the desired number of pods. For "MaxSurge: " also, the value can be an absolute number or percentage of the replicas count. +The default value of "MaxSurge: " is 25%. + +### Min Ready Seconds + +```yaml +MinReadySeconds: 60 +``` +This specifies the minimum number of seconds for which a newly created Pod should be ready without any of its containers crashing, for it to be considered available. This defaults to 0 (the Pod will be considered available as soon as it is ready). + +### Readiness Probe + +If this check fails, kubernetes stops sending traffic to the application. This should return error code in case of errors which can be recovered from if traffic is stopped. + +```yaml +ReadinessProbe: + Path: "" + port: 8080 + initialDelaySeconds: 20 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + failureThreshold: 3 + httpHeaders: + - name: Custom-Header + value: abc + scheme: "" + tcp: true +``` + +| Key | Description | +| :--- | :--- | +| `Path` | It define the path where the readiness needs to be checked | +| `initialDelaySeconds` | It defines the time to wait before a given container is checked for readiness | +| `periodSeconds` | It defines the time to check a given container for readiness | +| `successThreshold` | It defines the number of successes required before a given container is said to fulfill the readiness probe | +| `timeoutSeconds` | It defines the time for checking timeout | +| `failureThreshold` | It defines the maximum number of failures that are acceptable before a given container is not considered as ready | +| `httpHeaders` | Custom headers to set in the request. HTTP allows repeated headers, you can override the default headers by defining .httpHeaders for the probe. | +| `scheme` | Scheme to use for connecting to the host (HTTP or HTTPS). Defaults to HTTP. +| `tcp` | The kubelet will attempt to open a socket to your container on the specified port. If it can establish a connection, the container is considered healthy. | + +### Pod Disruption Budget + +You can create `PodDisruptionBudget` for each application. A PDB limits the number of pods of a replicated application that are down simultaneously from voluntary disruptions. For example, an application would like to ensure the number of replicas running is never brought below the certain number. + +```yaml +podDisruptionBudget: + minAvailable: 1 +``` + +or + +```yaml +podDisruptionBudget: + maxUnavailable: 50% +``` + +You can specify either `maxUnavailable` or `minAvailable` in a PodDisruptionBudget and it can be expressed as integers or as a percentage. + +| Key | Description | +| :--- | :--- | +| `minAvailable` | Evictions are allowed as long as they leave behind 1 or more healthy pods of the total number of desired replicas. | +| `maxUnavailable` | Evictions are allowed as long as at most 1 unhealthy replica among the total number of desired replicas. | + +### Ambassador Mappings + +You can create ambassador mappings to access your applications from outside the cluster. At its core a Mapping resource maps a resource to a service. + +```yaml +ambassadorMapping: + ambassadorId: "prod-emissary" + cors: {} + enabled: true + hostname: devtron.example.com + labels: {} + prefix: / + retryPolicy: {} + rewrite: "" + tls: + context: "devtron-tls-context" + create: false + hosts: [] + secretName: "" +``` + +| Key | Description | +| :--- | :--- | +| `enabled` | Set true to enable ambassador mapping else set false| +| `ambassadorId` | used to specify id for specific ambassador mappings controller | +| `cors` | used to specify cors policy to access host for this mapping | +| `weight` | used to specify weight for canary ambassador mappings | +| `hostname` | used to specify hostname for ambassador mapping | +| `prefix` | used to specify path for ambassador mapping | +| `labels` | used to provide custom labels for ambassador mapping | +| `retryPolicy` | used to specify retry policy for ambassador mapping | +| `corsPolicy` | Provide cors headers on flagger resource | +| `rewrite` | used to specify whether to redirect the path of this mapping and where | +| `tls` | used to create or define ambassador TLSContext resource | +| `extraSpec` | used to provide extra spec values which not present in deployment template for ambassador resource | + +### Autoscaling + +This is connected to HPA and controls scaling up and down in response to request load. + +```yaml +autoscaling: + enabled: false + MinReplicas: 1 + MaxReplicas: 2 + TargetCPUUtilizationPercentage: 90 + TargetMemoryUtilizationPercentage: 80 + extraMetrics: [] +``` + +| Key | Description | +| :--- | :--- | +| `enabled` | Set true to enable autoscaling else set false | +| `MinReplicas` | Minimum number of replicas allowed for scaling | +| `MaxReplicas` | Maximum number of replicas allowed for scaling | +| `TargetCPUUtilizationPercentage` | The target CPU utilization that is expected for a container | +| `TargetMemoryUtilizationPercentage` | The target memory utilization that is expected for a container | +| `extraMetrics` | Used to give external metrics for autoscaling | + +### Flagger + +You can use flagger for canary releases with deployment objects. It supports flexible traffic routing with istio service mesh as well. + +```yaml +flaggerCanary: + addOtherGateways: [] + addOtherHosts: [] + analysis: + interval: 15s + maxWeight: 50 + stepWeight: 5 + threshold: 5 + annotations: {} + appProtocol: http + corsPolicy: + allowCredentials: false + allowHeaders: + - x-some-header + allowMethods: + - GET + allowOrigin: + - example.com + maxAge: 24h + createIstioGateway: + annotations: {} + enabled: false + host: example.com + labels: {} + tls: + enabled: false + secretName: example-tls-secret + enabled: false + gatewayRefs: null + headers: + request: + add: + x-some-header: value + labels: {} + loadtest: + enabled: true + url: http://flagger-loadtester.istio-system/ + match: + - uri: + prefix: / + port: 8080 + portDiscovery: true + retries: null + rewriteUri: / + targetPort: 8080 + thresholds: + latency: 500 + successRate: 90 + timeout: null +``` + +| Key | Description | +| :--- | :--- | +| `enabled` | Set true to enable canary releases using flagger else set false | +| `addOtherGateways` | To provide multiple istio gateways for flagger | +| `addOtherHosts` | Add multiple hosts for istio service mesh with flagger | +| `analysis` | Define how the canary release should progress and at what interval | +| `annotations` | Annotation to add on flagger resource | +| `labels` | Labels to add on flagger resource | +| `appProtocol` | Protocol to use for canary | +| `corsPolicy` | Provide cors headers on flagger resource | +| `createIstioGateway` | Set to true if you want to create istio gateway as well with flagger | +| `headers` | Add headers if any | +| `loadtest` | Enable load testing for your canary release | + + + +### Fullname Override + +```yaml +fullnameOverride: app-name +``` +`fullnameOverride` replaces the release fullname created by default by devtron, which is used to construct Kubernetes object names. By default, devtron uses `{app-name}-{environment-name}` as release fullname. + +### Image + +```yaml +image: + pullPolicy: IfNotPresent +``` + +Image is used to access images in kubernetes, pullpolicy is used to define the instances calling the image, here the image is pulled when the image is not present,it can also be set as "Always". + +### imagePullSecrets + +`imagePullSecrets` contains the docker credentials that are used for accessing a registry. + +```yaml +imagePullSecrets: + - regcred +``` +regcred is the secret that contains the docker credentials that are used for accessing a registry. Devtron will not create this secret automatically, you'll have to create this secret using dt-secrets helm chart in the App store or create one using kubectl. You can follow this documentation Pull an Image from a Private Registry [https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/](https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/) . + +### serviceAccount + +```yaml +serviceAccount: + create: false + name: "" + annotations: {} +``` + +| Key | Description | +| :--- | :--- | +| `enabled` | Determines whether to create a ServiceAccount for pods or not. If set to `true`, a ServiceAccount will be created. | +| `name` | Specifies the name of the ServiceAccount to use. | +| `annotations` | Specify annotations for the ServiceAccount. | + +### HostAliases + + the hostAliases field is used in a Pod specification to associate additional hostnames with the Pod's IP address. This can be helpful in scenarios where you need to resolve specific hostnames to the Pod's IP within the Pod itself. + +```yaml + hostAliases: + - ip: "192.168.1.10" + hostnames: + - "hostname1.example.com" + - "hostname2.example.com" + - ip: "192.168.1.11" + hostnames: + - "hostname3.example.com" +``` + +### Ingress + +This allows public access to the url, please ensure you are using right nginx annotation for nginx class, its default value is nginx + +```yaml +ingress: + enabled: false + # For K8s 1.19 and above use ingressClassName instead of annotation kubernetes.io/ingress.class: + className: nginx + annotations: {} + hosts: + - host: example1.com + paths: + - /example + - host: example2.com + paths: + - /example2 + - /example2/healthz + tls: [] +``` +Legacy deployment-template ingress format + +```yaml +ingress: + enabled: false + # For K8s 1.19 and above use ingressClassName instead of annotation kubernetes.io/ingress.class: + ingressClassName: nginx-internal + annotations: {} + path: "" + host: "" + tls: [] +``` + +| Key | Description | +| :--- | :--- | +| `enabled` | Enable or disable ingress | +| `annotations` | To configure some options depending on the Ingress controller | +| `path` | Path name | +| `host` | Host name | +| `tls` | It contains security details | + +### Ingress Internal + +This allows private access to the url, please ensure you are using right nginx annotation for nginx class, its default value is nginx + +```yaml +ingressInternal: + enabled: false + # For K8s 1.19 and above use ingressClassName instead of annotation kubernetes.io/ingress.class: + ingressClassName: nginx-internal + annotations: {} + hosts: + - host: example1.com + paths: + - /example + - host: example2.com + paths: + - /example2 + - /example2/healthz + tls: [] +``` + +| Key | Description | +| :--- | :--- | +| `enabled` | Enable or disable ingress | +| `annotations` | To configure some options depending on the Ingress controller | +| `path` | Path name | +| `host` | Host name | +| `tls` | It contains security details | + +### Init Containers +```yaml +initContainers: + - reuseContainerImage: true + securityContext: + runAsUser: 1000 + runAsGroup: 3000 + fsGroup: 2000 + volumeMounts: + - mountPath: /etc/ls-oms + name: ls-oms-cm-vol + command: + - flyway + - -configFiles=/etc/ls-oms/flyway.conf + - migrate + + - name: nginx + image: nginx:1.14.2 + securityContext: + privileged: true + ports: + - containerPort: 80 + command: ["/usr/local/bin/nginx"] + args: ["-g", "daemon off;"] +``` +Specialized containers that run before app containers in a Pod. Init containers can contain utilities or setup scripts not present in an app image. One can use base image inside initContainer by setting the reuseContainerImage flag to `true`. + +### Pause For Seconds Before Switch Active +```yaml +pauseForSecondsBeforeSwitchActive: 30 +``` +To wait for given period of time before switch active the container. + +### Resources + +These define minimum and maximum RAM and CPU available to the application. + +```yaml +resources: + limits: + cpu: "1" + memory: "200Mi" + requests: + cpu: "0.10" + memory: "100Mi" +``` + +Resources are required to set CPU and memory usage. + +#### Limits + +Limits make sure a container never goes above a certain value. The container is only allowed to go up to the limit, and then it is restricted. + +#### Requests + +Requests are what the container is guaranteed to get. + +### Service + +This defines annotations and the type of service, optionally can define name also. + +```yaml + service: + type: ClusterIP + annotations: {} +``` + +### Volumes + +```yaml +volumes: + - name: log-volume + emptyDir: {} + - name: logpv + persistentVolumeClaim: + claimName: logpvc +``` + +It is required when some values need to be read from or written to an external disk. + +### Volume Mounts + +```yaml +volumeMounts: + - mountPath: /var/log/nginx/ + name: log-volume + - mountPath: /mnt/logs + name: logpvc + subPath: employee +``` + +It is used to provide mounts to the volume. + +### Affinity and anti-affinity + +```yaml +Spec: + Affinity: + Key: + Values: +``` + +Spec is used to define the desire state of the given container. + +Node Affinity allows you to constrain which nodes your pod is eligible to schedule on, based on labels of the node. + +Inter-pod affinity allow you to constrain which nodes your pod is eligible to be scheduled based on labels on pods. + +#### Key + +Key part of the label for node selection, this should be same as that on node. Please confirm with devops team. + +#### Values + +Value part of the label for node selection, this should be same as that on node. Please confirm with devops team. + +### Tolerations + +```yaml +tolerations: + - key: "key" + operator: "Equal" + value: "value" + effect: "NoSchedule|PreferNoSchedule|NoExecute(1.6 only)" +``` + +Taints are the opposite, they allow a node to repel a set of pods. + +A given pod can access the given node and avoid the given taint only if the given pod satisfies a given taint. + +Taints and tolerations are a mechanism which work together that allows you to ensure that pods are not placed on inappropriate nodes. Taints are added to nodes, while tolerations are defined in the pod specification. When you taint a node, it will repel all the pods except those that have a toleration for that taint. A node can have one or many taints associated with it. + +### Arguments + +```yaml +args: + enabled: false + value: [] +``` + +This is used to give arguments to command. + +### Command + +```yaml +command: + enabled: false + value: [] +``` + +It contains the commands for the server. + +| Key | Description | +| :--- | :--- | +| `enabled` | To enable or disable the command | +| `value` | It contains the commands | + + +### Containers +Containers section can be used to run side-car containers along with your main container within same pod. Containers running within same pod can share volumes and IP Address and can address each other @localhost. We can use base image inside container by setting the reuseContainerImage flag to `true`. + +```yaml + containers: + - name: nginx + image: nginx:1.14.2 + ports: + - containerPort: 80 + command: ["/usr/local/bin/nginx"] + args: ["-g", "daemon off;"] + - reuseContainerImage: true + securityContext: + runAsUser: 1000 + runAsGroup: 3000 + fsGroup: 2000 + volumeMounts: + - mountPath: /etc/ls-oms + name: ls-oms-cm-vol + command: + - flyway + - -configFiles=/etc/ls-oms/flyway.conf + - migrate +``` + +### Container Lifecycle Hooks + +Container lifecycle hooks are mechanisms that allow users to define custom actions to be performed at specific stages of a container's lifecycle i.e. PostStart or PreStop. + +```yaml +containerSpec: + lifecycle: + enabled: false + postStart: + httpGet: + host: example.com + path: /example + port: 90 + preStop: + exec: + command: + - sleep + - "10" +``` + +| Key | Description | +| :--- | :--- | +| `containerSpec` | containerSpec to define container lifecycle hooks configuration | +| `lifecycle` | Lifecycle hooks for the container | +| `enabled` | Set true to enable lifecycle hooks for the container else set false | +| `postStart` | The postStart hook is executed immediately after a container is created | +| `httpsGet` | Sends an HTTP GET request to a specific endpoint on the container | +| `host` | Specifies the host (example.com) to which the HTTP GET request will be sent | +| `path` | Specifies the path (/example) of the endpoint to which the HTTP GET request will be sent | +| `port` | Specifies the port (90) on the host where the HTTP GET request will be sent | +| `preStop` | The preStop hook is executed just before the container is stopped | +| `exec` | Executes a specific command, such as pre-stop.sh, inside the cgroups and namespaces of the container | +| `command` | The command to be executed is sleep 10, which tells the container to sleep for 10 seconds before it is stopped | + +### Prometheus + +```yaml + prometheus: + release: monitoring +``` + +It is a kubernetes monitoring tool and the name of the file to be monitored as monitoring in the given case. It describes the state of the Prometheus. + +### rawYaml + +```yaml +rawYaml: + - apiVersion: v1 + kind: Service + metadata: + name: my-service + spec: + selector: + app: MyApp + ports: + - protocol: TCP + port: 80 + targetPort: 9376 + type: ClusterIP +``` +Accepts an array of Kubernetes objects. You can specify any kubernetes yaml here and it will be applied when your app gets deployed. + +### Grace Period + +```yaml +GracePeriod: 30 +``` +Kubernetes waits for the specified time called the termination grace period before terminating the pods. By default, this is 30 seconds. If your pod usually takes longer than 30 seconds to shut down gracefully, make sure you increase the `GracePeriod`. + +A Graceful termination in practice means that your application needs to handle the SIGTERM message and begin shutting down when it receives it. This means saving all data that needs to be saved, closing down network connections, finishing any work that is left, and other similar tasks. + +There are many reasons why Kubernetes might terminate a perfectly healthy container. If you update your deployment with a rolling update, Kubernetes slowly terminates old pods while spinning up new ones. If you drain a node, Kubernetes terminates all pods on that node. If a node runs out of resources, Kubernetes terminates pods to free those resources. It’s important that your application handle termination gracefully so that there is minimal impact on the end user and the time-to-recovery is as fast as possible. + + +### Server + +```yaml +server: + deployment: + image_tag: 1-95a53 + image: "" +``` + +It is used for providing server configurations. + +#### Deployment + +It gives the details for deployment. + +| Key | Description | +| :--- | :--- | +| `image_tag` | It is the image tag | +| `image` | It is the URL of the image | + +### Service Monitor + +```yaml +servicemonitor: + enabled: true + path: /abc + scheme: 'http' + interval: 30s + scrapeTimeout: 20s + metricRelabelings: + - sourceLabels: [namespace] + regex: '(.*)' + replacement: myapp + targetLabel: target_namespace +``` + +It gives the set of targets to be monitored. + +### Db Migration Config + +```yaml +dbMigrationConfig: + enabled: false +``` + +It is used to configure database migration. + +### Istio + +These Istio configurations collectively provide a comprehensive set of tools for controlling access, authenticating requests, enforcing security policies, and configuring traffic behavior within a microservices architecture. The specific settings you choose would depend on your security and traffic management requirements. + +```yaml +istio: + enable: true + + gateway: + enabled: true + labels: + app: my-gateway + annotations: + description: "Istio Gateway for external traffic" + host: "example.com" + tls: + enabled: true + secretName: my-tls-secret + + virtualService: + enabled: true + labels: + app: my-service + annotations: + description: "Istio VirtualService for routing" + gateways: + - my-gateway + hosts: + - "example.com" + http: + - match: + - uri: + prefix: /v1 + route: + - destination: + host: my-service-v1 + subset: version-1 + - match: + - uri: + prefix: /v2 + route: + - destination: + host: my-service-v2 + subset: version-2 + + destinationRule: + enabled: true + labels: + app: my-service + annotations: + description: "Istio DestinationRule for traffic policies" + subsets: + - name: version-1 + labels: + version: "v1" + - name: version-2 + labels: + version: "v2" + trafficPolicy: + connectionPool: + tcp: + maxConnections: 100 + outlierDetection: + consecutiveErrors: 5 + interval: 30s + baseEjectionTime: 60s + + peerAuthentication: + enabled: true + labels: + app: my-service + annotations: + description: "Istio PeerAuthentication for mutual TLS" + selector: + matchLabels: + version: "v1" + mtls: + mode: STRICT + portLevelMtls: + 8080: + mode: DISABLE + + requestAuthentication: + enabled: true + labels: + app: my-service + annotations: + description: "Istio RequestAuthentication for JWT validation" + selector: + matchLabels: + version: "v1" + jwtRules: + - issuer: "issuer-1" + jwksUri: "https://issuer-1/.well-known/jwks.json" + + authorizationPolicy: + enabled: true + labels: + app: my-service + annotations: + description: "Istio AuthorizationPolicy for access control" + action: ALLOW + provider: + name: jwt + kind: Authorization + rules: + - from: + - source: + requestPrincipals: ["*"] + to: + - operation: + methods: ["GET"] +``` + +| Key | Description | +| :--- | :--- | +| `istio` | Istio enablement. When `istio.enable` set to true, Istio would be enabled for the specified configurations | +| `authorizationPolicy` | It allows you to define access control policies for service-to-service communication. | +| `action` | Determines whether to ALLOW or DENY the request based on the defined rules. | +| `provider` | Authorization providers are external systems or mechanisms used to make access control decisions. | +| `rules` | List of rules defining the authorization policy. Each rule can specify conditions and requirements for allowing or denying access. | +| `destinationRule` | It allows for the fine-tuning of traffic policies and load balancing for specific services. You can define subsets of a service and apply different traffic policies to each subset. | +| `subsets` | Specifies subsets within the service for routing and load balancing. | +| `trafficPolicy` | Policies related to connection pool size, outlier detection, and load balancing. | +| `gateway` | Allowing external traffic to enter the service mesh through the specified configurations. | +| `host` | The external domain through which traffic will be routed into the service mesh. | +| `tls` | Traffic to and from the gateway should be encrypted using TLS. | +| `secretName` | Specifies the name of the Kubernetes secret that contains the TLS certificate and private key. The TLS certificate is used for securing the communication between clients and the Istio gateway. | +| `peerAuthentication` | It allows you to enforce mutual TLS and control the authentication between services. | +| `mtls` | Mutual TLS. Mutual TLS is a security protocol that requires both client and server, to authenticate each other using digital certificates for secure communication. | +| `mode` | Mutual TLS mode, specifying how mutual TLS should be applied. Modes include STRICT, PERMISSIVE, and DISABLE. | +| `portLevelMtls` | Configures port-specific mTLS settings. Allows for fine-grained control over the application of mutual TLS on specific ports. | +| `selector` | Configuration for selecting workloads to apply PeerAuthentication. | +| `requestAuthentication` | Defines rules for authenticating incoming requests. | +| `jwtRules` | Rules for validating JWTs (JSON Web Tokens). It defines how incoming JWTs should be validated for authentication purposes. | +| `selector` | Specifies the conditions under which the RequestAuthentication rules should be applied. | +| `virtualService` | Enables the definition of rules for how traffic should be routed to different services within the service mesh. | +| `gateways` | Specifies the gateways to which the rules defined in the VirtualService apply. | +| `hosts` | List of hosts (domains) to which this VirtualService is applied. | +| `http` | Configuration for HTTP routes within the VirtualService. It define routing rules based on HTTP attributes such as URI prefixes, headers, timeouts, and retry policies. | + + +### KEDA Autoscaling +[KEDA](https://keda.sh) is a Kubernetes-based Event Driven Autoscaler. With KEDA, you can drive the scaling of any container in Kubernetes based on the number of events needing to be processed. KEDA can be installed into any Kubernetes cluster and can work alongside standard Kubernetes components like the Horizontal Pod Autoscaler(HPA). + +Example for autosccaling with KEDA using Prometheus metrics is given below: +```yaml +kedaAutoscaling: + enabled: true + minReplicaCount: 1 + maxReplicaCount: 2 + idleReplicaCount: 0 + pollingInterval: 30 + advanced: + restoreToOriginalReplicaCount: true + horizontalPodAutoscalerConfig: + behavior: + scaleDown: + stabilizationWindowSeconds: 300 + policies: + - type: Percent + value: 100 + periodSeconds: 15 + triggers: + - type: prometheus + metadata: + serverAddress: http://:9090 + metricName: http_request_total + query: envoy_cluster_upstream_rq{appId="300", cluster_name="300-0", container="envoy",} + threshold: "50" + triggerAuthentication: + enabled: false + name: + spec: {} + authenticationRef: {} +``` +Example for autosccaling with KEDA based on kafka is given below : +```yaml +kedaAutoscaling: + enabled: true + minReplicaCount: 1 + maxReplicaCount: 2 + idleReplicaCount: 0 + pollingInterval: 30 + advanced: {} + triggers: + - type: kafka + metadata: + bootstrapServers: b-2.kafka-msk-dev.example.c2.kafka.ap-southeast-1.amazonaws.com:9092,b-3.kafka-msk-dev.example.c2.kafka.ap-southeast-1.amazonaws.com:9092,b-1.kafka-msk-dev.example.c2.kafka.ap-southeast-1.amazonaws.com:9092 + topic: Orders-Service-ESP.info + lagThreshold: "100" + consumerGroup: oders-remove-delivered-packages + allowIdleConsumers: "true" + triggerAuthentication: + enabled: true + name: keda-trigger-auth-kafka-credential + spec: + secretTargetRef: + - parameter: sasl + name: keda-kafka-secrets + key: sasl + - parameter: username + name: keda-kafka-secrets + key: username + authenticationRef: + name: keda-trigger-auth-kafka-credential +``` + +### NetworkPolicy + +Kubernetes NetworkPolicies control pod communication by defining rules for incoming and outgoing traffic. + +```yaml +networkPolicy: + enabled: false + annotations: {} + labels: {} + podSelector: + matchLabels: + role: db + policyTypes: + - Ingress + - Egress + ingress: + - from: + - ipBlock: + cidr: 172.17.0.0/16 + except: + - 172.17.1.0/24 + - namespaceSelector: + matchLabels: + project: myproject + - podSelector: + matchLabels: + role: frontend + ports: + - protocol: TCP + port: 6379 + egress: + - to: + - ipBlock: + cidr: 10.0.0.0/24 + ports: + - protocol: TCP + port: 5978 +``` + +| Key | Description | +| :--- | :--- | +| `enabled` | Enable or disable NetworkPolicy. | +| `annotations` | Additional metadata or information associated with the NetworkPolicy. | +| `labels` | Labels to apply to the NetworkPolicy. +| `podSelector` | Each NetworkPolicy includes a podSelector which selects the grouping of pods to which the policy applies. The example policy selects pods with the label "role=db". An empty podSelector selects all pods in the namespace.| +| `policyTypes` | Each NetworkPolicy includes a policyTypes list which may include either Ingress, Egress, or both. | +| `Ingress` | Controls incoming traffic to pods. | +| `Egress` | Controls outgoing traffic from pods. | + +### Winter-Soldier +Winter Soldier can be used to +- cleans up (delete) Kubernetes resources +- reduce workload pods to 0 + +**_NOTE:_** After deploying this we can create the Hibernator object and provide the custom configuration by which workloads going to delete, sleep and many more. for more information check [the main repo](https://github.com/devtron-labs/winter-soldier) + +Given below is template values you can give in winter-soldier: +```yaml +winterSoldier: + enabled: false + apiVersion: pincher.devtron.ai/v1alpha1 + action: sleep + timeRangesWithZone: + timeZone: "Asia/Kolkata" + timeRanges: [] + targetReplicas: [] + fieldSelector: [] +``` + +| Key | values | Description | +| :--- | :--- | :--- | +| `enabled` | `false`,`true` | decide the enabling factor | +| `apiVersion` | `pincher.devtron.ai/v1beta1`, `pincher.devtron.ai/v1alpha1` | specific api version | +| `action` | `sleep`,`delete`, `scale` | This specify the action need to perform. | +| `timeRangesWithZone`:`timeZone` | eg:- `"Asia/Kolkata"`,`"US/Pacific"` | It use to specify the timeZone used. (It uses standard format. please refer [this](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)) | +| `timeRangesWithZone`:`timeRanges` | array of [ `timeFrom`, `timeTo`, `weekdayFrom`, `weekdayTo`] | It use to define time period/range on which the user need to perform the specified action. you can have multiple timeRanges.
These settings will take `action` on Sat and Sun from 00:00 to 23:59:59, | +| `targetReplicas` | `[n]` : n - number of replicas to scale. | These is mandatory field when the `action` is `scale`
Default value is `[]`. | +| `fieldSelector` | `- AfterTime(AddTime( ParseTime({{metadata.creationTimestamp}}, '2006-01-02T15:04:05Z'), '5m'), Now()) ` | These value will take a list of methods to select the resources on which we perform specified `action` . | + + +here is an example, +```yaml +winterSoldier: + apiVersion: pincher.devtron.ai/v1alpha1 + enabled: true + annotations: {} + labels: {} + timeRangesWithZone: + timeZone: "Asia/Kolkata" + timeRanges: + - timeFrom: 00:00 + timeTo: 23:59:59 + weekdayFrom: Sat + weekdayTo: Sun + - timeFrom: 00:00 + timeTo: 08:00 + weekdayFrom: Mon + weekdayTo: Fri + - timeFrom: 20:00 + timeTo: 23:59:59 + weekdayFrom: Mon + weekdayTo: Fri + action: scale + targetReplicas: [1,1,1] + fieldSelector: + - AfterTime(AddTime( ParseTime({{metadata.creationTimestamp}}, '2006-01-02T15:04:05Z'), '10h'), Now()) +``` +Above settings will take action on `Sat` and `Sun` from 00:00 to 23:59:59, and on `Mon`-`Fri` from 00:00 to 08:00 and 20:00 to 23:59:59. If `action:sleep` then runs hibernate at timeFrom and unhibernate at `timeTo`. If `action: delete` then it will delete workloads at `timeFrom` and `timeTo`. Here the `action:scale` thus it scale the number of resource replicas to `targetReplicas: [1,1,1]`. Here each element of `targetReplicas` array is mapped with the corresponding elements of array `timeRangesWithZone/timeRanges`. Thus make sure the length of both array is equal, otherwise the cnages cannot be observed. + +The above example will select the application objects which have been created 10 hours ago across all namespaces excluding application's namespace. Winter soldier exposes following functions to handle time, cpu and memory. + +- ParseTime - This function can be used to parse time. For eg to parse creationTimestamp use `ParseTime({{metadata.creationTimestamp}}, '2006-01-02T15:04:05Z')` +- AddTime - This can be used to add time. For eg `AddTime(ParseTime({{metadata.creationTimestamp}}, '2006-01-02T15:04:05Z'), '-10h')` ll add 10h to the time. Use d for day, h for hour, m for minutes and s for seconds. Use negative number to get earlier time. +- Now - This can be used to get current time. +- CpuToNumber - This can be used to compare CPU. For eg `any({{spec.containers.#.resources.requests}}, { MemoryToNumber(.memory) < MemoryToNumber('60Mi')})` will check if any resource.requests is less than 60Mi. + + +### Security Context +A security context defines privilege and access control settings for a Pod or Container. + +To add a security context for main container: +```yaml +containerSecurityContext: + allowPrivilegeEscalation: false +``` + +To add a security context on pod level: +```yaml +podSecurityContext: + runAsUser: 1000 + runAsGroup: 3000 + fsGroup: 2000 +``` + +### Topology Spread Constraints +You can use topology spread constraints to control how Pods are spread across your cluster among failure-domains such as regions, zones, nodes, and other user-defined topology domains. This can help to achieve high availability as well as efficient resource utilization. + +```yaml +topologySpreadConstraints: + - maxSkew: 1 + topologyKey: zone + whenUnsatisfiable: DoNotSchedule + autoLabelSelector: true + customLabelSelector: {} +``` + +### Deployment Metrics + +It gives the realtime metrics of the deployed applications + +| Key | Description | +| :--- | :--- | +| `Deployment Frequency` | It shows how often this app is deployed to production | +| `Change Failure Rate` | It shows how often the respective pipeline fails | +| `Mean Lead Time` | It shows the average time taken to deliver a change to production | +| `Mean Time to Recovery` | It shows the average time taken to fix a failed pipeline | + +--- + +## 4. Show Application Metrics + +If you want to see application metrics like different HTTP status codes metrics, application throughput, latency, response time. Enable the Application metrics from below the deployment template Save button. After enabling it, you should be able to see all metrics on App detail page. By default it remains disabled. + +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/base-configurations/deployment-types/app-metrics.jpg) +
Figure 2: Application Metrics
+ +Once all the Deployment template configurations are done, click on `Save` to save your deployment configuration. Now you are ready to create [Workflow](../../workflow/README.md) to do CI/CD. + +### Helm Chart Json Schema + +Helm Chart [json schema](https://github.com/devtron-labs/devtron/blob/main/scripts/devtron-reference-helm-charts/reference-chart_5-1-0/schema.json) is used to validate the deployment template values. + +### Other Validations in Json Schema + +The values of CPU and Memory in limits must be greater than or equal to in requests respectively. Similarly, In case of envoyproxy, the values of limits are greater than or equal to requests as mentioned below. +``` +resources.limits.cpu >= resources.requests.cpu +resources.limits.memory >= resources.requests.memory +envoyproxy.resources.limits.cpu >= envoyproxy.resources.requests.cpu +envoyproxy.resources.limits.memory >= envoyproxy.resources.requests.memory +``` \ No newline at end of file diff --git a/docs/user-guide/creating-application/base-config/deployment-template-types/job-and-cronjob.md b/docs/user-guide/creating-application/base-config/deployment-template-types/job-and-cronjob.md new file mode 100755 index 0000000000..64e7a5db24 --- /dev/null +++ b/docs/user-guide/creating-application/base-config/deployment-template-types/job-and-cronjob.md @@ -0,0 +1,72 @@ +# Job and CronJob + + +This chart deploys Job & CronJob. A Job is a controller object that represents a finite task and CronJob is used to schedule the creation of Jobs. + + * [Job](#1-job) + * [CronJob](#2-cronjob) + +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/base-configurations/deployment-types/select-job-cronjob.jpg) +
Figure 1: Choosing 'Job & CronJob' Chart
+ +## 1. Job + +A Job creates one or more Pods and will continue to retry execution of the Pods until a specified number of them successfully terminate. As pods successfully complete, the Job tracks the successful completions. When a specified number of successful completions is reached, the task (ie, Job) is complete. Deleting a Job will clean up the Pods it created. Suspeding a Job will delete its active Pods until the Job is resumed again. + +## **Example:** + +```yaml +kind: Job +jobConfigs: + activeDeadlineSeconds: 120 + backoffLimit: 6 + completions: 1 + parallelism: 1 + suspend: false + ttlSecondsAfterFinished: 100 +``` + +| Key | Description | +| :--- | :--- | +| `activeDeadlineSeconds` | Another way to terminate a Job is by setting an active deadline. Do this by setting the activeDeadlineSeconds field of the Job to a number of seconds. The activeDeadlineSeconds applies to the duration of the job, no matter how many Pods are created. Once a Job reaches activeDeadlineSeconds, all of its running Pods are terminated and the Job status will become type: Failed with reason: DeadlineExceeded. | +| `backoffLimit` | There are situations where you want to fail a Job after some amount of retries due to a logical error in configuration etc. To do so, set backoffLimit to specify the number of retries before considering a Job as failed. The back-off limit is set by default to 6. Failed Pods associated with the Job are recreated by the Job controller with an exponential back-off delay (10s, 20s, 40s ...) capped at six minutes. The back-off count is reset when a Job's Pod is deleted or successful without any other Pods for the Job failing around that time. | +| `completions` | Jobs with fixed completion count - that is , jobs that have non null completions - can have a completion mode that is specified in completionMode. | +| `parallelism` | The requested parallelism can be set to any non-negative value. If it is unspecified, it defaults to 1. If it is specified as 0, then the Job is effectively paused until it is increased. | +| `suspend` | The suspend field is also optional. If it is set to true, all subsequent executions are suspended. This setting does not apply to already started executions. Defaults to false. | +| `ttlSecondsAfterFinished` | The TTL controller only supports Jobs for now. A cluster operator can use this feature to clean up finished Jobs (either Complete or Failed) automatically by specifying the ttlSecondsAfterFinished field of a Job, as in this example. The TTL controller will assume that a resource is eligible to be cleaned up TTL seconds after the resource has finished, in other words, when the TTL has expired. When the TTL controller cleans up a resource, it will delete it cascadingly, that is to say it will delete its dependent objects together with it. Note that when the resource is deleted, its lifecycle guarantees, such as finalizers, will be honored. | +| `kind` | As with all other Kubernetes config, a Job and cronjob needs apiVersion, kind.cronjob and job also needs a section fields which is optional . these fields specify to deploy which job (conjob or job) should be kept. by default, they are set job. | + + +## 2. CronJob + +A CronJob creates jobs on a repeating schedule. One Cronjob object is like one line of a crontab (cron table) file. It runs a job periodically on a given schedule, written in Cron format. + CronJobs are meant for performing regular scheduled actions such as backups, report generation, and so on. Each task must be configured to recur indefinitely (as an example: once a day / week / month). You can schedule the time within that interval when the job should start. + + ## **Example:** + +```yaml +kind: CronJob +cronjobConfigs: + concurrencyPolicy: Allow + failedJobsHistoryLimit: 1 + restartPolicy: OnFailure + schedule: 32 8 * * * + startingDeadlineSeconds: 100 + successfulJobsHistoryLimit: 3 + suspend: false +``` + +| Key | Descriptions | +| :--- | :--- | +| `concurrencyPolicy` | A CronJob is counted as missed if it has failed to be created at its scheduled time. For example, If concurrencyPolicy is set to Forbid and a CronJob was attempted to be scheduled when there was a previous schedule still running, then it would count as missed,`Acceptable values: Allow / Forbid`. | +| `failedJobsHistoryLimit` | The failedJobsHistoryLimit fields are optional. These fields specify how many completed and failed jobs should be kept. By default, they are set to 3 and 1 respectively. Setting a limit to 0 corresponds to keeping none of the corresponding kind of jobs after they finish. | +| `restartPolicy` | The spec of a Pod has a restartPolicy field with possible values Always, OnFailure, and Never. The default value is Always.The restartPolicy applies to all containers in the Pod. restartPolicy only refers to restarts of the containers by the kubelet on the same node. After containers in a Pod exit, the kubelet restarts them with an exponential back-off delay (10s, 20s, 40s, …), that is capped at five minutes. Once a container has executed for 10 minutes without any problems, the kubelet resets the restart backoff timer for that container, `Acceptable values: Always / OnFailure / Never`. | +| `schedule` | To generate Cronjob schedule expressions, you can also use web tools like https://crontab.guru/. | +| `startingDeadlineSeconds` | If startingDeadlineSeconds is set to a large value or left unset (the default) and if concurrencyPolicy is set to Allow, the jobs will always run at least once. | +| `successfulJobsHistoryLimit` | The successfulJobsHistoryLimit fields are optional. These fields specify how many completed and failed jobs should be kept. By default, they are set to 3 and 1 respectively. Setting a limit to 0 corresponds to keeping none of the corresponding kind of jobs after they finish. | +| `suspend` | The suspend field is also optional. If it is set to true, all subsequent executions are suspended. This setting does not apply to already started executions. Defaults to false. | +| `kind` | As with all other Kubernetes config, a Job and cronjob needs apiVersion, kind.cronjob and job also needs a section fields which is optional . these fields specify to deploy which job (conjob or job) should be kept. by default, they are set cronjob. | + +:::caution Note +Super-admins can lock keys in Job & CronJob deployment template to prevent non-super-admins from modifying those locked keys. Refer [Lock Deployment Configuration](../../../global-configurations/lock-deployment-config.md) to know more. +::: \ No newline at end of file diff --git a/docs/user-guide/creating-application/base-config/deployment-template-types/rollout-deployment.md b/docs/user-guide/creating-application/base-config/deployment-template-types/rollout-deployment.md new file mode 100755 index 0000000000..5f18c4213a --- /dev/null +++ b/docs/user-guide/creating-application/base-config/deployment-template-types/rollout-deployment.md @@ -0,0 +1,1209 @@ + +# Rollout Deployment + +The `Rollout Deployment` chart deploys an advanced version of deployment that supports Blue/Green and Canary deployments. For functioning, it requires a rollout controller to run inside the cluster. + +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/base-configurations/deployment-types/select-rollout.jpg) +
Figure 1: Choosing 'Rollout' Chart
+ +You can define application behavior by providing information in the following sections: + +| Key | Descriptions | +| :--- | :--- | +| `Chart version` | Select the Chart Version using which you want to deploy the application.
Refer [Chart Version](../../../creating-application/base-config/deployment-template.md#choose-a-chart-version) section for more detail. | +| `GUI` | You can perform a basic deployment configuration for your application in the **GUI** section instead of configuring the YAML file.
Refer [Basic Configuration](../../../creating-application/base-config/deployment-template.md#using-gui) section for more detail.| +| `YAML` | If you want to do additional configurations, then click **YAML** for modifications.
Refer [YAML](#yaml) section for more detail. | +| `Show application metrics` | You can enable `Show application metrics` to see your application's metrics-CPU Service Monitor usage, Memory Usage, Status, Throughput and Latency.
Refer [Application Metrics](../../../creating-application/app-metrics.md) for more detail. | + +:::caution Note +Super-admins can lock keys in rollout deployment template to prevent non-super-admins from modifying those locked keys. Refer [Lock Deployment Configuration](../../../global-configurations/lock-deployment-config.md) to know more. +::: + +--- + +## YAML + +### Container Ports + +This defines the ports on which application services will be exposed to other services. + +```yaml +ContainerPort: + - envoyPort: 8799 + envoyTimeout: 15s + idleTimeout: + name: app + port: 8080 + servicePort: 80 + supportStreaming: true + useHTTP2: true +``` + +| Key | Description | +| :--- | :--- | +| `envoyPort` | envoy port for the container. | +| `envoyTimeout` | envoy Timeout for the container,envoy supports a wide range of timeouts that may need to be configured depending on the deployment.By default the envoytimeout is 15s. | +| `idleTimeout` | the duration of time that a connection is idle before the connection is terminated. | +| `name` | name of the port. | +| `port` | port for the container. | +| `servicePort` | port of the corresponding kubernetes service. | +| `supportStreaming` | Used for high performance protocols like grpc where timeout needs to be disabled. | +| `useHTTP2` | Envoy container can accept HTTP2 requests. | + +### EnvVariables +```yaml +EnvVariables: [] +``` +`EnvVariables` provide run-time information to containers and allow to customize how the application works and the behavior of the applications on the system. + +Here we can pass the list of env variables , every record is an object which contain the `name` of variable along with `value`. + +To set environment variables for the containers that run in the Pod. + +### Example of EnvVariables + +`IMP` Docker image should have env variables, whatever we want to set. +```yaml +EnvVariables: + - name: HOSTNAME + value: www.xyz.com + - name: DB_NAME + value: mydb + - name: USER_NAME + value: xyz +``` + +But `ConfigMap` and `Secret` are the preferred way to inject env variables. You can create this in **Configurations** page of your app. + +### ConfigMap + +It is a centralized storage, specific to k8s namespace where key-value pairs are stored in plain text. + +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/base-configurations/deployment-types/configure-configmap.jpg) +
Figure 2: ConfigMap
+ +### Secret + +It is a centralized storage, specific to k8s namespace where we can store the key-value pairs in plain text as well as in encrypted(`Base64`) form. + +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/base-configurations/deployment-types/created-secret.jpg) +
Figure 3: Secret
+ +`IMP` All key-values of `Secret` and `CofigMap` will reflect to your application. + +### Liveness Probe + +If this check fails, kubernetes restarts the pod. This should return error code in case of non-recoverable error. + +```yaml +LivenessProbe: + Path: "" + port: 8080 + initialDelaySeconds: 20 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + failureThreshold: 3 + command: + - python + - /etc/app/healthcheck.py + httpHeaders: + - name: Custom-Header + value: abc + scheme: "" + tcp: true +``` + +| Key | Description | +| :--- | :--- | +| `Path` | It define the path where the liveness needs to be checked. | +| `initialDelaySeconds` | It defines the time to wait before a given container is checked for liveliness. | +| `periodSeconds` | It defines how often (in seconds) to perform the liveness probe. | +| `successThreshold` | It defines the number of successes required before a given container is said to fulfil the liveness probe. | +| `timeoutSeconds` | The maximum time (in seconds) for the probe to complete. | +| `failureThreshold` | The number of consecutive failures required to consider the probe as failed. | +| `command` | The mentioned command is executed to perform the livenessProbe. If the command returns a non-zero value, it's equivalent to a failed probe. | +| `httpHeaders` | Custom headers to set in the request. HTTP allows repeated headers,You can override the default headers by defining .httpHeaders for the probe. | +| `scheme` | Scheme to use for connecting to the host (HTTP or HTTPS). Defaults to HTTP. | +| `tcp` | The kubelet will attempt to open a socket to your container on the specified port. If it can establish a connection, the container is considered healthy. | + + +### MaxUnavailable + +```yaml + MaxUnavailable: 0 +``` +The maximum number of pods that can be unavailable during the update process. The value of "MaxUnavailable: " can be an absolute number or percentage of the replicas count. The default value of "MaxUnavailable: " is 25%. + +### MaxSurge + +```yaml +MaxSurge: 1 +``` +The maximum number of pods that can be created over the desired number of pods. For "MaxSurge: " also, the value can be an absolute number or percentage of the replicas count. +The default value of "MaxSurge: " is 25%. + +### Min Ready Seconds + +```yaml +MinReadySeconds: 60 +``` +This specifies the minimum number of seconds for which a newly created Pod should be ready without any of its containers crashing, for it to be considered available. This defaults to 0 (the Pod will be considered available as soon as it is ready). + +### Readiness Probe + +If this check fails, kubernetes stops sending traffic to the application. This should return error code in case of errors which can be recovered from if traffic is stopped. + +```yaml +ReadinessProbe: + Path: "" + port: 8080 + initialDelaySeconds: 20 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + failureThreshold: 3 + command: + - python + - /etc/app/healthcheck.py + httpHeaders: + - name: Custom-Header + value: abc + scheme: "" + tcp: true +``` + +| Key | Description | +| :--- | :--- | +| `Path` | It define the path where the readiness needs to be checked. | +| `initialDelaySeconds` | It defines the time to wait before a given container is checked for readiness. | +| `periodSeconds` | It defines how often (in seconds) to perform the readiness probe. | +| `successThreshold` | It defines the number of successes required before a given container is said to fulfill the readiness probe. | +| `timeoutSeconds` | The maximum time (in seconds) for the probe to complete. | +| `failureThreshold` | The number of consecutive failures required to consider the probe as failed. | +| `command` | The mentioned command is executed to perform the readinessProbe. If the command returns a non-zero value, it's equivalent to a failed probe. | +| `httpHeaders` | Custom headers to set in the request. HTTP allows repeated headers,You can override the default headers by defining .httpHeaders for the probe. | +| `scheme` | Scheme to use for connecting to the host (HTTP or HTTPS). Defaults to HTTP. | +| `tcp` | The kubelet will attempt to open a socket to your container on the specified port. If it can establish a connection, the container is considered healthy. | + + +### Startup Probe + +Startup Probe in Kubernetes is a type of probe used to determine when a container within a pod is ready to start accepting traffic. It is specifically designed for applications that have a longer startup time. + +```yaml +StartupProbe: + Path: "" + port: 8080 + initialDelaySeconds: 20 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + failureThreshold: 3 + httpHeaders: + - name: Custom-Header + value: abc + command: + - python + - /etc/app/healthcheck.py + tcp: false +``` + +| Key | Description | +| :--- | :--- | +| `Path` | It define the path where the startup needs to be checked. | +| `initialDelaySeconds` | It defines the time to wait before a given container is checked for startup. | +| `periodSeconds` | It defines how often (in seconds) to perform the startup probe. | +| `successThreshold` | The number of consecutive successful probe results required to mark the container as ready. | +| `timeoutSeconds` | The maximum time (in seconds) for the probe to complete. | +| `failureThreshold` | The number of consecutive failures required to consider the probe as failed. | +| `command` | The mentioned command is executed to perform the startup probe. If the command returns a non-zero value, it's equivalent to a failed probe. | +| `httpHeaders` | Custom headers to set in the request. HTTP allows repeated headers,You can override the default headers by defining .httpHeaders for the probe. | +| `tcp` | The kubelet will attempt to open a socket to your container on the specified port. If it can establish a connection, the container is considered healthy. | + +### Autoscaling + +This is connected to HPA and controls scaling up and down in response to request load. + +```yaml +autoscaling: + enabled: false + MinReplicas: 1 + MaxReplicas: 2 + TargetCPUUtilizationPercentage: 90 + TargetMemoryUtilizationPercentage: 80 + extraMetrics: [] +``` + +| Key | Description | +| :--- | :--- | +| `enabled` | Set true to enable autoscaling else set false.| +| `MinReplicas` | Minimum number of replicas allowed for scaling. | +| `MaxReplicas` | Maximum number of replicas allowed for scaling. | +| `TargetCPUUtilizationPercentage` | The target CPU utilization that is expected for a container. | +| `TargetMemoryUtilizationPercentage` | The target memory utilization that is expected for a container. | +| `extraMetrics` | Used to give external metrics for autoscaling. | + +### Fullname Override + +```yaml +fullnameOverride: app-name +``` +`fullnameOverride` replaces the release fullname created by default by devtron, which is used to construct Kubernetes object names. By default, devtron uses `{app-name}-{environment-name}` as release fullname. + +### Image + +```yaml +image: + pullPolicy: IfNotPresent +``` + +Image is used to access images in kubernetes, pullpolicy is used to define the instances calling the image, here the image is pulled when the image is not present,it can also be set as "Always". + +### serviceAccount + +```yaml +serviceAccount: + create: false + name: "" + annotations: {} +``` + +| Key | Description | +| :--- | :--- | +| `enabled` | Determines whether to create a ServiceAccount for pods or not. If set to `true`, a ServiceAccount will be created. | +| `name` | Specifies the name of the ServiceAccount to use. | +| `annotations` | Specify annotations for the ServiceAccount. | + + +### imagePullSecrets + +`imagePullSecrets` contains the docker credentials that are used for accessing a registry. + +```yaml +imagePullSecrets: + - regcred +``` +regcred is the secret that contains the docker credentials that are used for accessing a registry. Devtron will not create this secret automatically, you'll have to create this secret using dt-secrets helm chart in the App store or create one using kubectl. You can follow this documentation Pull an Image from a Private Registry [https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/](https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/) . + +### HostAliases + + the hostAliases field is used in a Pod specification to associate additional hostnames with the Pod's IP address. This can be helpful in scenarios where you need to resolve specific hostnames to the Pod's IP within the Pod itself. + +```yaml + hostAliases: + - ip: "192.168.1.10" + hostnames: + - "hostname1.example.com" + - "hostname2.example.com" + - ip: "192.168.1.11" + hostnames: + - "hostname3.example.com" +``` + +### Ingress + +This allows public access to the url. Please ensure you are using the right nginx annotation for nginx class. +The default value is `nginx`. + +```yaml +ingress: + enabled: false + # For K8s 1.19 and above use ingressClassName instead of annotation kubernetes.io/ingress.class: + className: nginx + annotations: {} + hosts: + - host: example1.com + pathType: "ImplementationSpecific" + paths: + - /example + - host: example2.com + pathType: "ImplementationSpecific" + paths: + - /example2 + - /example2/healthz + tls: [] +``` +Legacy deployment-template ingress format + +```yaml +ingress: + enabled: false + # For K8s 1.19 and above use ingressClassName instead of annotation kubernetes.io/ingress.class: + ingressClassName: nginx-internal + annotations: {} + path: "" + host: "" + tls: [] +``` + +| Key | Description | +| :--- | :--- | +| `enabled` | Enable or disable ingress | +| `annotations` | To configure some options depending on the Ingress controller | +| `host` | Host name | +| `pathType` | Path in an Ingress is required to have a corresponding path type. Supported path types are `ImplementationSpecific`, `Exact` and `Prefix`. | +| `path` | Path name | +| `tls` | It contains security details | + +### Ingress Internal + +This allows private access to the url, please ensure you are using right nginx annotation for nginx class, its default value is nginx + +```yaml +ingressInternal: + enabled: false + # For K8s 1.19 and above use ingressClassName instead of annotation kubernetes.io/ingress.class: + ingressClassName: nginx-internal + annotations: {} + hosts: + - host: example1.com + pathType: "ImplementationSpecific" + paths: + - /example + - host: example2.com + pathType: "ImplementationSpecific" + paths: + - /example2 + - /example2/healthz + tls: [] +``` + +| Key | Description | +| :--- | :--- | +| `enabled` | Enable or disable ingress | +| `annotations` | To configure some options depending on the Ingress controller | +| `host` | Host name | +| `pathType` | Path in an Ingress is required to have a corresponding path type. Supported path types are `ImplementationSpecific`, `Exact` and `Prefix`. | +| `path` | Path name | +| `pathType` | Supported path types are `ImplementationSpecific`, `Exact` and `Prefix`.| +| `tls` | It contains security details | + +### Init Containers +```yaml +initContainers: + - reuseContainerImage: true + securityContext: + runAsUser: 1000 + runAsGroup: 3000 + fsGroup: 2000 + volumeMounts: + - mountPath: /etc/ls-oms + name: ls-oms-cm-vol + command: + - flyway + - -configFiles=/etc/ls-oms/flyway.conf + - migrate + + - name: nginx + image: nginx:1.14.2 + securityContext: + privileged: true + ports: + - containerPort: 80 + command: ["/usr/local/bin/nginx"] + args: ["-g", "daemon off;"] +``` +Specialized containers that run before app containers in a Pod. Init containers can contain utilities or setup scripts not present in an app image. One can use base image inside initContainer by setting the reuseContainerImage flag to `true`. + +### Pause For Seconds Before Switch Active +```yaml +pauseForSecondsBeforeSwitchActive: 30 +``` +To wait for given period of time before switch active the container. + +### Resources + +These define minimum and maximum RAM and CPU available to the application. + +```yaml +resources: + limits: + cpu: "1" + memory: "200Mi" + requests: + cpu: "0.10" + memory: "100Mi" +``` + +Resources are required to set CPU and memory usage. + +#### Limits + +Limits make sure a container never goes above a certain value. The container is only allowed to go up to the limit, and then it is restricted. + +#### Requests + +Requests are what the container is guaranteed to get. + +### Service + +This defines annotations and the type of service, optionally can define name also. + +```yaml + service: + type: ClusterIP + annotations: {} +``` +| Key | Description | +| :--- | :--- | +| `type` | Select the type of service, default `ClusterIP` | +| `annotations` | Annotations are widely used to attach metadata and configs in Kubernetes. | +| `name` | Optional field to assign name to service | +| `loadBalancerSourceRanges` | If service type is `LoadBalancer`, Provide a list of whitelisted IPs CIDR that will be allowed to use the Load Balancer. | + +Note - If `loadBalancerSourceRanges` is not set, Kubernetes allows traffic from 0.0.0.0/0 to the LoadBalancer / Node Security Group(s). + + +### Volumes + +```yaml +volumes: + - name: log-volume + emptyDir: {} + - name: logpv + persistentVolumeClaim: + claimName: logpvc +``` + +It is required when some values need to be read from or written to an external disk. + +### Volume Mounts + +```yaml +volumeMounts: + - mountPath: /var/log/nginx/ + name: log-volume + - mountPath: /mnt/logs + name: logpvc + subPath: employee +``` + +It is used to provide mounts to the volume. + +### Affinity and anti-affinity + +```yaml +Spec: + Affinity: + Key: + Values: +``` + +Spec is used to define the desire state of the given container. + +Node Affinity allows you to constrain which nodes your pod is eligible to schedule on, based on labels of the node. + +Inter-pod affinity allow you to constrain which nodes your pod is eligible to be scheduled based on labels on pods. + +#### Key + +Key part of the label for node selection, this should be same as that on node. Please confirm with devops team. + +#### Values + +Value part of the label for node selection, this should be same as that on node. Please confirm with devops team. + +### Tolerations + +```yaml +tolerations: + - key: "key" + operator: "Equal" + value: "value" + effect: "NoSchedule|PreferNoSchedule|NoExecute(1.6 only)" +``` + +Taints are the opposite, they allow a node to repel a set of pods. + +A given pod can access the given node and avoid the given taint only if the given pod satisfies a given taint. + +Taints and tolerations are a mechanism which work together that allows you to ensure that pods are not placed on inappropriate nodes. Taints are added to nodes, while tolerations are defined in the pod specification. When you taint a node, it will repel all the pods except those that have a toleration for that taint. A node can have one or many taints associated with it. + +### Arguments + +```yaml +args: + enabled: false + value: [] +``` + +This is used to give arguments to command. + +### Command + +```yaml +command: + enabled: false + value: [] + workingDir: {} +``` + +It contains the commands to run inside the container. + +| Key | Description | +| :--- | :--- | +| `enabled` | To enable or disable the command. | +| `value` | It contains the commands. | +| `workingDir` | It is used to specify the working directory where commands will be executed. | + +### Containers +Containers section can be used to run side-car containers along with your main container within same pod. Containers running within same pod can share volumes and IP Address and can address each other @localhost. We can use base image inside container by setting the reuseContainerImage flag to `true`. + +```yaml + containers: + - name: nginx + image: nginx:1.14.2 + ports: + - containerPort: 80 + command: ["/usr/local/bin/nginx"] + args: ["-g", "daemon off;"] + - reuseContainerImage: true + securityContext: + runAsUser: 1000 + runAsGroup: 3000 + fsGroup: 2000 + volumeMounts: + - mountPath: /etc/ls-oms + name: ls-oms-cm-vol + command: + - flyway + - -configFiles=/etc/ls-oms/flyway.conf + - migrate + +``` + +### Prometheus + +```yaml + prometheus: + release: monitoring +``` + +It is a kubernetes monitoring tool and the name of the file to be monitored as monitoring in the given case.It describes the state of the prometheus. + +### rawYaml + +```yaml +rawYaml: + - apiVersion: v1 + kind: Service + metadata: + name: my-service + spec: + selector: + app: MyApp + ports: + - protocol: TCP + port: 80 + targetPort: 9376 + type: ClusterIP +``` +Accepts an array of Kubernetes objects. You can specify any kubernetes yaml here and it will be applied when your app gets deployed. + +### Grace Period + +```yaml +GracePeriod: 30 +``` +Kubernetes waits for the specified time called the termination grace period before terminating the pods. By default, this is 30 seconds. If your pod usually takes longer than 30 seconds to shut down gracefully, make sure you increase the `GracePeriod`. + +A Graceful termination in practice means that your application needs to handle the SIGTERM message and begin shutting down when it receives it. This means saving all data that needs to be saved, closing down network connections, finishing any work that is left, and other similar tasks. + +There are many reasons why Kubernetes might terminate a perfectly healthy container. If you update your deployment with a rolling update, Kubernetes slowly terminates old pods while spinning up new ones. If you drain a node, Kubernetes terminates all pods on that node. If a node runs out of resources, Kubernetes terminates pods to free those resources. It’s important that your application handle termination gracefully so that there is minimal impact on the end user and the time-to-recovery is as fast as possible. + + +### Server + +```yaml +server: + deployment: + image_tag: 1-95a53 + image: "" +``` + +It is used for providing server configurations. + +#### Deployment + +It gives the details for deployment. + +| Key | Description | +| :--- | :--- | +| `image_tag` | It is the image tag | +| `image` | It is the URL of the image | + +### Service Monitor + +```yaml +servicemonitor: + enabled: true + path: /abc + scheme: 'http' + interval: 30s + scrapeTimeout: 20s + metricRelabelings: + - sourceLabels: [namespace] + regex: '(.*)' + replacement: myapp + targetLabel: target_namespace +``` + +It gives the set of targets to be monitored. + +### Db Migration Config + +```yaml +dbMigrationConfig: + enabled: false +``` + +It is used to configure database migration. + +### Istio + +These Istio configurations collectively provide a comprehensive set of tools for controlling access, authenticating requests, enforcing security policies, and configuring traffic behavior within a microservices architecture. The specific settings you choose would depend on your security and traffic management requirements. + + +### Istio + +These Istio configurations collectively provide a comprehensive set of tools for controlling access, authenticating requests, enforcing security policies, and configuring traffic behavior within a microservices architecture. The specific settings you choose would depend on your security and traffic management requirements. + +```yaml +istio: + enable: true + + gateway: + enabled: true + labels: + app: my-gateway + annotations: + description: "Istio Gateway for external traffic" + host: "example.com" + tls: + enabled: true + secretName: my-tls-secret + + virtualService: + enabled: true + labels: + app: my-service + annotations: + description: "Istio VirtualService for routing" + gateways: + - my-gateway + hosts: + - "example.com" + http: + - match: + - uri: + prefix: /v1 + route: + - destination: + host: my-service-v1 + subset: version-1 + - match: + - uri: + prefix: /v2 + route: + - destination: + host: my-service-v2 + subset: version-2 + + destinationRule: + enabled: true + labels: + app: my-service + annotations: + description: "Istio DestinationRule for traffic policies" + subsets: + - name: version-1 + labels: + version: "v1" + - name: version-2 + labels: + version: "v2" + trafficPolicy: + connectionPool: + tcp: + maxConnections: 100 + outlierDetection: + consecutiveErrors: 5 + interval: 30s + baseEjectionTime: 60s + + peerAuthentication: + enabled: true + labels: + app: my-service + annotations: + description: "Istio PeerAuthentication for mutual TLS" + selector: + matchLabels: + version: "v1" + mtls: + mode: STRICT + portLevelMtls: + 8080: + mode: DISABLE + + requestAuthentication: + enabled: true + labels: + app: my-service + annotations: + description: "Istio RequestAuthentication for JWT validation" + selector: + matchLabels: + version: "v1" + jwtRules: + - issuer: "issuer-1" + jwksUri: "https://issuer-1/.well-known/jwks.json" + + authorizationPolicy: + enabled: true + labels: + app: my-service + annotations: + description: "Istio AuthorizationPolicy for access control" + action: ALLOW + provider: + name: jwt + kind: Authorization + rules: + - from: + - source: + requestPrincipals: ["*"] + to: + - operation: + methods: ["GET"] +``` + +| Key | Description | +| :--- | :--- | +| `istio` | Istio enablement. When `istio.enable` set to true, Istio would be enabled for the specified configurations | +| `authorizationPolicy` | It allows you to define access control policies for service-to-service communication. | +| `action` | Determines whether to ALLOW or DENY the request based on the defined rules. | +| `provider` | Authorization providers are external systems or mechanisms used to make access control decisions. | +| `rules` | List of rules defining the authorization policy. Each rule can specify conditions and requirements for allowing or denying access. | +| `destinationRule` | It allows for the fine-tuning of traffic policies and load balancing for specific services. You can define subsets of a service and apply different traffic policies to each subset. | +| `subsets` | Specifies subsets within the service for routing and load balancing. | +| `trafficPolicy` | Policies related to connection pool size, outlier detection, and load balancing. | +| `gateway` | Allowing external traffic to enter the service mesh through the specified configurations. | +| `host` | The external domain through which traffic will be routed into the service mesh. | +| `tls` | Traffic to and from the gateway should be encrypted using TLS. | +| `secretName` | Specifies the name of the Kubernetes secret that contains the TLS certificate and private key. The TLS certificate is used for securing the communication between clients and the Istio gateway. | +| `peerAuthentication` | It allows you to enforce mutual TLS and control the authentication between services. | +| `mtls` | Mutual TLS. Mutual TLS is a security protocol that requires both client and server, to authenticate each other using digital certificates for secure communication. | +| `mode` | Mutual TLS mode, specifying how mutual TLS should be applied. Modes include STRICT, PERMISSIVE, and DISABLE. | +| `portLevelMtls` | Configures port-specific mTLS settings. Allows for fine-grained control over the application of mutual TLS on specific ports. | +| `selector` | Configuration for selecting workloads to apply PeerAuthentication. | +| `requestAuthentication` | Defines rules for authenticating incoming requests. | +| `jwtRules` | Rules for validating JWTs (JSON Web Tokens). It defines how incoming JWTs should be validated for authentication purposes. | +| `selector` | Specifies the conditions under which the RequestAuthentication rules should be applied. | +| `virtualService` | Enables the definition of rules for how traffic should be routed to different services within the service mesh. | +| `gateways` | Specifies the gateways to which the rules defined in the VirtualService apply. | +| `hosts` | List of hosts (domains) to which this VirtualService is applied. | +| `http` | Configuration for HTTP routes within the VirtualService. It define routing rules based on HTTP attributes such as URI prefixes, headers, timeouts, and retry policies. | + +### Application Metrics + +Application metrics can be enabled to see your application's metrics-CPU Service Monitor usage, Memory Usage, Status, Throughput and Latency. + +### Deployment Metrics + +It gives the realtime metrics of the deployed applications + +| Key | Description | +| :--- | :--- | +| `Deployment Frequency` | It shows how often this app is deployed to production | +| `Change Failure Rate` | It shows how often the respective pipeline fails. | +| `Mean Lead Time` | It shows the average time taken to deliver a change to production. | +| `Mean Time to Recovery` | It shows the average time taken to fix a failed pipeline. | + + +## Addon features in Deployment Template Chart version 3.9.0 + +### Service Account + +```yaml +serviceAccountName: orchestrator +``` + +A service account provides an identity for the processes that run in a Pod. + +When you access the cluster, you are authenticated by the API server as a particular User Account. Processes in containers inside pod can also contact the API server. When you are authenticated as a particular Service Account. + +When you create a pod, if you do not create a service account, it is automatically assigned the default service account in the namespace. + +### Pod Disruption Budget + +You can create `PodDisruptionBudget` for each application. A PDB limits the number of pods of a replicated application that are down simultaneously from voluntary disruptions. For example, an application would like to ensure the number of replicas running is never brought below the certain number. + +```yaml +podDisruptionBudget: + minAvailable: 1 +``` + +or + +```yaml +podDisruptionBudget: + maxUnavailable: 50% +``` + +You can specify either `maxUnavailable` or `minAvailable` in a PodDisruptionBudget and it can be expressed as integers or as a percentage. + +| Key | Description | +| :--- | :--- | +| `minAvailable` | Evictions are allowed as long as they leave behind 1 or more healthy pods of the total number of desired replicas. | +| `maxUnavailable` | Evictions are allowed as long as at most 1 unhealthy replica among the total number of desired replicas. | + +### Application metrics Envoy Configurations + +```yaml +envoyproxy: + image: envoyproxy/envoy:v1.14.1 + configMapName: "" + resources: + limits: + cpu: "50m" + memory: "50Mi" + requests: + cpu: "50m" + memory: "50Mi" +``` + +Envoy is attached as a sidecar to the application container to collect metrics like 4XX, 5XX, Throughput and latency. You can now configure the envoy settings such as idleTimeout, resources etc. + +### Prometheus Rule + +```yaml +prometheusRule: + enabled: true + additionalLabels: {} + namespace: "" + rules: + - alert: TooMany500s + expr: 100 * ( sum( nginx_ingress_controller_requests{status=~"5.+"} ) / sum(nginx_ingress_controller_requests) ) > 5 + for: 1m + labels: + severity: critical + annotations: + description: Too many 5XXs + summary: More than 5% of the all requests did return 5XX, this require your attention +``` + +Alerting rules allow you to define alert conditions based on Prometheus expressions and to send notifications about firing alerts to an external service. + +In this case, Prometheus will check that the alert continues to be active during each evaluation for 1 minute before firing the alert. Elements that are active, but not firing yet, are in the pending state. + +### Pod Labels +Labels are key/value pairs that are attached to pods. Labels are intended to be used to specify identifying attributes of objects that are meaningful and relevant to users, but do not directly imply semantics to the core system. Labels can be used to organize and to select subsets of objects. +```yaml +podLabels: + severity: critical +``` + +### Pod Annotations +Pod Annotations are widely used to attach metadata and configs in Kubernetes. + +```yaml +podAnnotations: + fluentbit.io/exclude: "true" +``` + +### Custom Metrics in HPA + +```yaml +autoscaling: + enabled: true + MinReplicas: 1 + MaxReplicas: 2 + TargetCPUUtilizationPercentage: 90 + TargetMemoryUtilizationPercentage: 80 + behavior: + scaleDown: + stabilizationWindowSeconds: 300 + policies: + - type: Percent + value: 100 + periodSeconds: 15 + scaleUp: + stabilizationWindowSeconds: 0 + policies: + - type: Percent + value: 100 + periodSeconds: 15 + - type: Pods + value: 4 + periodSeconds: 15 + selectPolicy: Max +``` + +HPA, by default is configured to work with CPU and Memory metrics. These metrics are useful for internal cluster sizing, but you might want to configure wider set of metrics like service latency, I/O load etc. The custom metrics in HPA can help you to achieve this. + +### Wait For Seconds Before Scaling Down +```yaml +waitForSecondsBeforeScalingDown: 30 +``` +Wait for given period of time before scaling down the container. + + + +## 4. Show Application Metrics + +If you want to see application metrics like different HTTP status codes metrics, application throughput, latency, response time. Enable the Application metrics from below the deployment template Save button. After enabling it, you should be able to see all metrics on App detail page. By default it remains disabled. + +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/base-configurations/deployment-types/app-metrics.jpg) +
Figure 4: Application Metrics
+ +Once all the Deployment template configurations are done, click on `Save` to save your deployment configuration. Now you are ready to create [Workflow](../../workflow/README.md) to do CI/CD. + +### Helm Chart Json Schema Table + +Helm Chart json schema is used to validate the deployment template values. + +| Chart Version | Link | +| :--- | :--- | +| `reference-chart_3-12-0` | [Json Schema](https://github.com/devtron-labs/devtron/blob/main/scripts/devtron-reference-helm-charts/reference-chart_3-12-0/schema.json) | +| `reference-chart_3-11-0` | [Json Schema](https://github.com/devtron-labs/devtron/blob/main/scripts/devtron-reference-helm-charts/reference-chart_3-11-0/schema.json) | +| `reference-chart_3-10-0` | [Json Schema](https://github.com/devtron-labs/devtron/blob/main/scripts/devtron-reference-helm-charts/reference-chart_3-10-0/schema.json) | +| `reference-chart_3-9-0` | [Json Schema](https://github.com/devtron-labs/devtron/blob/main/scripts/devtron-reference-helm-charts/reference-chart_3-9-0/schema.json) | + + +### Other Validations in Json Schema + +The values of CPU and Memory in limits must be greater than or equal to in requests respectively. Similarly, In case of envoyproxy, the values of limits are greater than or equal to requests as mentioned below. +``` +resources.limits.cpu >= resources.requests.cpu +resources.limits.memory >= resources.requests.memory +envoyproxy.resources.limits.cpu >= envoyproxy.resources.requests.cpu +envoyproxy.resources.limits.memory >= envoyproxy.resources.requests.memory +``` + +## Addon features in Deployment Template Chart version 4.11.0 + +### KEDA Autoscaling + +**Prerequisite:** KEDA controller should be installed in the cluster. To install KEDA controller using Helm, navigate to chart store and search for `keda` chart and deploy it. You can follow this [documentation](../../../deploy-chart/deployment-of-charts.md) for deploying a Helm chart on Devtron. + +KEDA Helm repo : https://kedacore.github.io/charts + + +[KEDA](https://keda.sh) is a Kubernetes-based Event Driven Autoscaler. With KEDA, you can drive the scaling of any container in Kubernetes based on the number of events needing to be processed. KEDA can be installed into any Kubernetes cluster and can work alongside standard Kubernetes components like the Horizontal Pod Autoscaler(HPA). + + +Example for autoscaling with KEDA using Prometheus metrics is given below: +```yaml +kedaAutoscaling: + enabled: true + minReplicaCount: 1 + maxReplicaCount: 2 + idleReplicaCount: 0 + pollingInterval: 30 + advanced: + restoreToOriginalReplicaCount: true + horizontalPodAutoscalerConfig: + behavior: + scaleDown: + stabilizationWindowSeconds: 300 + policies: + - type: Percent + value: 100 + periodSeconds: 15 + triggers: + - type: prometheus + metadata: + serverAddress: http://:9090 + metricName: http_request_total + query: envoy_cluster_upstream_rq{appId="300", cluster_name="300-0", container="envoy",} + threshold: "50" + triggerAuthentication: + enabled: false + name: + spec: {} + authenticationRef: {} +``` + +Example for autosccaling with KEDA based on kafka is given below : + +```yaml +kedaAutoscaling: + enabled: true + minReplicaCount: 1 + maxReplicaCount: 2 + idleReplicaCount: 0 + pollingInterval: 30 + advanced: {} + triggers: + - type: kafka + metadata: + bootstrapServers: b-2.kafka-msk-dev.example.c2.kafka.ap-southeast-1.amazonaws.com:9092,b-3.kafka-msk-dev.example.c2.kafka.ap-southeast-1.amazonaws.com:9092,b-1.kafka-msk-dev.example.c2.kafka.ap-southeast-1.amazonaws.com:9092 + topic: Orders-Service-ESP.info + lagThreshold: "100" + consumerGroup: oders-remove-delivered-packages + allowIdleConsumers: "true" + triggerAuthentication: + enabled: true + name: keda-trigger-auth-kafka-credential + spec: + secretTargetRef: + - parameter: sasl + name: keda-kafka-secrets + key: sasl + - parameter: username + name: keda-kafka-secrets + key: username + authenticationRef: + name: keda-trigger-auth-kafka-credential +``` + +### NetworkPolicy + +Kubernetes NetworkPolicies control pod communication by defining rules for incoming and outgoing traffic. + +```yaml +networkPolicy: + enabled: false + annotations: {} + labels: {} + podSelector: + matchLabels: + role: db + policyTypes: + - Ingress + - Egress + ingress: + - from: + - ipBlock: + cidr: 172.17.0.0/16 + except: + - 172.17.1.0/24 + - namespaceSelector: + matchLabels: + project: myproject + - podSelector: + matchLabels: + role: frontend + ports: + - protocol: TCP + port: 6379 + egress: + - to: + - ipBlock: + cidr: 10.0.0.0/24 + ports: + - protocol: TCP + port: 5978 +``` + +| Key | Description | +| :--- | :--- | +| `enabled` | Enable or disable NetworkPolicy. | +| `annotations` | Additional metadata or information associated with the NetworkPolicy. | +| `labels` | Labels to apply to the NetworkPolicy. +| `podSelector` | Each NetworkPolicy includes a podSelector which selects the grouping of pods to which the policy applies. The example policy selects pods with the label "role=db". An empty podSelector selects all pods in the namespace.| +| `policyTypes` | Each NetworkPolicy includes a policyTypes list which may include either Ingress, Egress, or both. | +| `Ingress` | Controls incoming traffic to pods. | +| `Egress` | Controls outgoing traffic from pods. | + + +### Winter-Soldier +Winter Soldier can be used to +- cleans up (delete) Kubernetes resources +- reduce workload pods to 0 + +**_NOTE:_** After deploying this we can create the Hibernator object and provide the custom configuration by which workloads going to delete, sleep and many more. for more information check [the main repo](https://github.com/devtron-labs/winter-soldier) + +Given below is template values you can give in winter-soldier: +```yaml +winterSoldier: + enabled: false + apiVersion: pincher.devtron.ai/v1alpha1 + action: sleep + timeRangesWithZone: + timeZone: "Asia/Kolkata" + timeRanges: [] + targetReplicas: [] + fieldSelector: [] +``` + +| Key | values | Description | +| :--- | :--- | :--- | +| `enabled` | `false`,`true` | decide the enabling factor | +| `apiVersion` | `pincher.devtron.ai/v1beta1`, `pincher.devtron.ai/v1alpha1` | specific api version | +| `action` | `sleep`,`delete`, `scale` | This specify the action need to perform. | +| `timeRangesWithZone`:`timeZone` | eg:- `"Asia/Kolkata"`,`"US/Pacific"` | It use to specify the timeZone used. (It uses standard format. please refer [this](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)) | +| `timeRangesWithZone`:`timeRanges` | array of [ `timeFrom`, `timeTo`, `weekdayFrom`, `weekdayTo`] | It use to define time period/range on which the user need to perform the specified action. you can have multiple timeRanges.
These settings will take `action` on Sat and Sun from 00:00 to 23:59:59, | +| `targetReplicas` | `[n]` : n - number of replicas to scale. | These is mandatory field when the `action` is `scale`
Default value is `[]`. | +| `fieldSelector` | `- AfterTime(AddTime( ParseTime({{metadata.creationTimestamp}}, '2006-01-02T15:04:05Z'), '5m'), Now()) ` | These value will take a list of methods to select the resources on which we perform specified `action` . | + + +here is an example, +```yaml +winterSoldier: + apiVersion: pincher.devtron.ai/v1alpha1 + enabled: true + annotations: {} + labels: {} + timeRangesWithZone: + timeZone: "Asia/Kolkata" + timeRanges: + - timeFrom: 00:00 + timeTo: 23:59:59 + weekdayFrom: Sat + weekdayTo: Sun + - timeFrom: 00:00 + timeTo: 08:00 + weekdayFrom: Mon + weekdayTo: Fri + - timeFrom: 20:00 + timeTo: 23:59:59 + weekdayFrom: Mon + weekdayTo: Fri + action: scale + targetReplicas: [1,1,1] + fieldSelector: + - AfterTime(AddTime( ParseTime({{metadata.creationTimestamp}}, '2006-01-02T15:04:05Z'), '10h'), Now()) +``` + +Above settings will take action on `Sat` and `Sun` from 00:00 to 23:59:59, and on `Mon`-`Fri` from 00:00 to 08:00 and 20:00 to 23:59:59. If `action:sleep` then runs hibernate at timeFrom and unhibernate at `timeTo`. If `action: delete` then it will delete workloads at `timeFrom` and `timeTo`. Here the `action:scale` thus it scale the number of resource replicas to `targetReplicas: [1,1,1]`. Here each element of `targetReplicas` array is mapped with the corresponding elements of array `timeRangesWithZone/timeRanges`. Thus make sure the length of both array is equal, otherwise the cnages cannot be observed. + +The above example will select the application objects which have been created 10 hours ago across all namespaces excluding application's namespace. Winter soldier exposes following functions to handle time, cpu and memory. + +- ParseTime - This function can be used to parse time. For eg to parse creationTimestamp use `ParseTime({{metadata.creationTimestamp}}, '2006-01-02T15:04:05Z')` +- AddTime - This can be used to add time. For eg `AddTime(ParseTime({{metadata.creationTimestamp}}, '2006-01-02T15:04:05Z'), '-10h')` ll add 10h to the time. Use d for day, h for hour, m for minutes and s for seconds. Use negative number to get earlier time. +- Now - This can be used to get current time. +- CpuToNumber - This can be used to compare CPU. For eg `any({{spec.containers.#.resources.requests}}, { MemoryToNumber(.memory) < MemoryToNumber('60Mi')})` will check if any resource.requests is less than 60Mi. + + + +### Security Context +A security context defines privilege and access control settings for a Pod or Container. + +To add a security context for main container: +```yaml +containerSecurityContext: + allowPrivilegeEscalation: false +``` + +To add a security context on pod level: +```yaml +podSecurityContext: + runAsUser: 1000 + runAsGroup: 3000 + fsGroup: 2000 +``` + +### Topology Spread Constraints +You can use topology spread constraints to control how Pods are spread across your cluster among failure-domains such as regions, zones, nodes, and other user-defined topology domains. This can help to achieve high availability as well as efficient resource utilization. + +```yaml +topologySpreadConstraints: + - maxSkew: 1 + topologyKey: zone + whenUnsatisfiable: DoNotSchedule + autoLabelSelector: true + customLabelSelector: {} +``` \ No newline at end of file diff --git a/docs/user-guide/creating-application/base-config/deployment-template-types/statefulset.md b/docs/user-guide/creating-application/base-config/deployment-template-types/statefulset.md new file mode 100755 index 0000000000..4ad66e1530 --- /dev/null +++ b/docs/user-guide/creating-application/base-config/deployment-template-types/statefulset.md @@ -0,0 +1,993 @@ +# StatefulSet + +The StatefulSet chart in Devtron allows you to deploy and manage stateful applications. StatefulSet is a Kubernetes resource that provides guarantees about the ordering and uniqueness of Pods during deployment and scaling. + +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/base-configurations/deployment-types/select-statefulset.jpg) +
Figure 1: Choosing 'StatefulSet' Chart
+ +It supports only `ONDELETE` and `ROLLINGUPDATE` deployment strategy. + +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/base-configurations/deployment-types/sts-strategy.jpg) +
Figure 2: Selecting Deployment Strategy
+ + +You can select `StatefulSet` chart when you want to use only basic use cases which contain the following: + +* **Managing Stateful Applications:** StatefulSets are ideal for managing stateful applications, such as databases or distributed systems, that require stable network identities and persistent storage for each Pod. + +* **Ordered Pod Management:** StatefulSets ensure ordered and predictable management of Pods by providing each Pod with a unique and stable hostname based on a defined naming convention and ordinal index. + +* **Updating and Scaling Stateful Applications:** StatefulSets support updating and scaling stateful applications by creating new versions of the StatefulSet and performing rolling updates or scaling operations in a controlled manner, ensuring minimal disruption to the application. + +* **Persistent Storage:** StatefulSets have built-in mechanisms for handling persistent volumes, allowing each Pod to have its own unique volume claim and storage. This ensures data persistence even when Pods are rescheduled or restarted. + +* **Maintaining Pod Identity:** StatefulSets guarantee consistent identity for each Pod throughout its lifecycle. This stability is maintained even if the Pods are rescheduled, allowing applications to rely on stable network identities. + +* **Rollback Capability:** StatefulSets provide the ability to rollback to a previous version in case the current state of the application is unstable or encounters issues, ensuring a known working state for the application. + +* **Status Monitoring:** StatefulSets offer status information that can be used to monitor the deployment, including the current version, number of replicas, and the readiness of each Pod. This helps in tracking the health and progress of the StatefulSet deployment. + +* **Resource Cleanup:** StatefulSets allow for easy cleanup of older versions by deleting StatefulSets and their associated Pods and persistent volumes that are no longer needed, ensuring efficient resource utilization. + +:::caution Note +Super-admins can lock keys in StatefulSet deployment template to prevent non-super-admins from modifying those locked keys. Refer [Lock Deployment Configuration](../../../global-configurations/lock-deployment-config.md) to know more. +::: + + +## 1. Yaml File + +### Container Ports + +This defines ports on which application services will be exposed to other services + +```yaml +ContainerPort: + - envoyPort: 8799 + idleTimeout: + name: app + port: 8080 + servicePort: 80 + nodePort: 32056 + supportStreaming: true + useHTTP2: true +``` + +| Key | Description | +| :--- | :--- | +| `envoyPort` | envoy port for the container. | +| `idleTimeout` | the duration of time that a connection is idle before the connection is terminated. | +| `name` | name of the port. | +| `port` | port for the container. | +| `servicePort` | port of the corresponding kubernetes service. | +| `nodePort` | nodeport of the corresponding kubernetes service. | +| `supportStreaming` | Used for high performance protocols like grpc where timeout needs to be disabled. | +| `useHTTP2` | Envoy container can accept HTTP2 requests. | + +### EnvVariables +```yaml +EnvVariables: [] +``` + +### EnvVariablesFromSecretKeys +```yaml +EnvVariablesFromSecretKeys: + - name: ENV_NAME + secretName: SECRET_NAME + keyName: SECRET_KEY + +``` + It is used to get the name of Environment Variable name, Secret name and the Key name from which we are using the value in that corresponding Environment Variable. + + ### EnvVariablesFromConfigMapKeys +```yaml +EnvVariablesFromConfigMapKeys: + - name: ENV_NAME + configMapName: CONFIG_MAP_NAME + keyName: CONFIG_MAP_KEY + +``` + It is used to get the name of Environment Variable name, Config Map name and the Key name from which we are using the value in that corresponding Environment Variable. + +To set environment variables for the containers that run in the Pod. +### StatefulSetConfig +These are all the configuration settings for the StatefulSet. +```yaml +statefulSetConfig: + labels: + app: my-statefulset + environment: production + annotations: + example.com/version: "1.0" + serviceName: "my-statefulset-service" + podManagementPolicy: "Parallel" + revisionHistoryLimit: 5 + mountPath: "/data" + volumeClaimTemplates: + - apiVersion: v1 + kind: PersistentVolumeClaim + metadata: + labels: + app: my-statefulset + spec: + accessModes: + - ReadWriteOnce + dataSource: + kind: Snapshot + apiGroup: snapshot.storage.k8s.io + name: my-snapshot + resources: + requests: + storage: 5Gi + limits: + storage: 10Gi + storageClassName: my-storage-class + selector: + matchLabels: + app: my-statefulset + volumeMode: Filesystem + volumeName: my-pv + - apiVersion: v1 + kind: PersistentVolumeClaim + metadata: + name: pvc-logs + labels: + app: myapp + spec: + accessModes: + - ReadWriteMany + dataSourceRef: + kind: Secret + apiGroup: v1 + name: my-secret + resources: + requests: + storage: 5Gi + storageClassName: my-storage-class + selector: + matchExpressions: + - {key: environment, operator: In, values: [production]} + volumeMode: Block + volumeName: my-pv + +``` +Mandatoryfields in statefulSetConfig is +``` +statefulSetConfig: + mountPath: /tmp + volumeClaimTemplates: + - spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 2Gi +``` +Here is an explanation of each field in the statefulSetConfig : + + +| Key | Description | +| :--- | :--- | +| `labels` | set of key-value pairs used to identify the StatefulSet . | +| `annotations` | A map of key-value pairs that are attached to the stateful set as metadata. | +| `serviceName` | The name of the Kubernetes Service that the StatefulSet should create. | +| `podManagementPolicy` | A policy that determines how Pods are created and deleted by the StatefulSet. In this case, the policy is set to "Parallel", which means that all Pods are created at once. | +| `revisionHistoryLimit` | The number of revisions that should be stored for each replica of the StatefulSet. | +| `updateStrategy` | The update strategy used by the StatefulSet when rolling out changes. | +| `mountPath` | The path where the volume should be mounted in the container. | + +volumeClaimTemplates: An array of volume claim templates that are used to create persistent volumes for the StatefulSet. Each volume claim template specifies the storage class, access mode, storage size, and other details of the persistent volume. + + +| Key | Description | +| :--- | :--- | +| `apiVersion` | The API version of the PVC . | +| `kind` | The type of object that the PVC is. | +| `metadata` | Metadata that is attached to the resource being created. | +| `labels` | A set of key-value pairs used to label the object for identification and selection. | +| `spec` | The specification of the object, which defines its desired state and behavior.| +| `accessModes` | A list of access modes for the PersistentVolumeClaim, such as "ReadWriteOnce" or "ReadWriteMany". | +| `dataSource` | A data source used to populate the PersistentVolumeClaim, such as a Snapshot or a StorageClass. | +| `kind`| specifies the kind of the snapshot, in this case Snapshot.| +| `apiGroup`| specifies the API group of the snapshot API, in this case snapshot.storage.k8s.io.| +| `name`| specifies the name of the snapshot, in this case my-snapshot.| +| `dataSourceRef` | A reference to a data source used to create the persistent volume. In this case, it's a secret. | +| `updateStrategy` | The update strategy used by the StatefulSet when rolling out changes. | +| `resources` | The resource requests and limits for the PersistentVolumeClaim, which define the minimum and maximum amount of storage it can use. | +| `requests` | The amount of storage requested by the PersistentVolumeClaim. | +| `limits` | The maximum amount of storage that the PersistentVolumeClaim can use. | +| `storageClassName` | The name of the storage class to use for the persistent volume. | +| `selector` | The selector used to match a persistent volume to a persistent volume claim. | +| `matchLabels` | a map of key-value pairs to match the labels of the corresponding PersistentVolume.| +| `matchExpressions` |A set of requirements that the selected object must meet to be considered a match. | +| `key` | The key of the label or annotation to match.| +| `operator` | The operator used to compare the key-value pairs (in this case, "In" specifies a set membership test).| +| `values` | A list of values that the selected object's label or annotation must match.| +| `volumeMode` | The mode of the volume, either "Filesystem" or "Block". | +| `volumeName` | The name of the PersistentVolume that is created for the PersistentVolumeClaim. | + + +### Liveness Probe + +If this check fails, kubernetes restarts the pod. This should return error code in case of non-recoverable error. + +```yaml +LivenessProbe: + Path: "" + port: 8080 + initialDelaySeconds: 20 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + failureThreshold: 3 + httpHeaders: + - name: Custom-Header + value: abc + scheme: "" + tcp: true +``` + +| Key | Description | +| :--- | :--- | +| `Path` | It define the path where the liveness needs to be checked. | +| `initialDelaySeconds` | It defines the time to wait before a given container is checked for liveliness. | +| `periodSeconds` | It defines the time to check a given container for liveness. | +| `successThreshold` | It defines the number of successes required before a given container is said to fulfil the liveness probe. | +| `timeoutSeconds` | It defines the time for checking timeout. | +| `failureThreshold` | It defines the maximum number of failures that are acceptable before a given container is not considered as live. | +| `httpHeaders` | Custom headers to set in the request. HTTP allows repeated headers,You can override the default headers by defining .httpHeaders for the probe. | +| `scheme` | Scheme to use for connecting to the host (HTTP or HTTPS). Defaults to HTTP. +| `tcp` | The kubelet will attempt to open a socket to your container on the specified port. If it can establish a connection, the container is considered healthy. | + + +### MaxUnavailable + +```yaml + MaxUnavailable: 0 +``` +The maximum number of pods that can be unavailable during the update process. The value of "MaxUnavailable: " can be an absolute number or percentage of the replicas count. The default value of "MaxUnavailable: " is 25%. + +### MaxSurge + +```yaml +MaxSurge: 1 +``` +The maximum number of pods that can be created over the desired number of pods. For "MaxSurge: " also, the value can be an absolute number or percentage of the replicas count. +The default value of "MaxSurge: " is 25%. + +### Min Ready Seconds + +```yaml +MinReadySeconds: 60 +``` +This specifies the minimum number of seconds for which a newly created Pod should be ready without any of its containers crashing, for it to be considered available. This defaults to 0 (the Pod will be considered available as soon as it is ready). + +### Readiness Probe + +If this check fails, kubernetes stops sending traffic to the application. This should return error code in case of errors which can be recovered from if traffic is stopped. + +```yaml +ReadinessProbe: + Path: "" + port: 8080 + initialDelaySeconds: 20 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + failureThreshold: 3 + httpHeaders: + - name: Custom-Header + value: abc + scheme: "" + tcp: true +``` + +| Key | Description | +| :--- | :--- | +| `Path` | It define the path where the readiness needs to be checked. | +| `initialDelaySeconds` | It defines the time to wait before a given container is checked for readiness. | +| `periodSeconds` | It defines the time to check a given container for readiness. | +| `successThreshold` | It defines the number of successes required before a given container is said to fulfill the readiness probe. | +| `timeoutSeconds` | It defines the time for checking timeout. | +| `failureThreshold` | It defines the maximum number of failures that are acceptable before a given container is not considered as ready. | +| `httpHeaders` | Custom headers to set in the request. HTTP allows repeated headers,You can override the default headers by defining .httpHeaders for the probe. | +| `scheme` | Scheme to use for connecting to the host (HTTP or HTTPS). Defaults to HTTP. +| `tcp` | The kubelet will attempt to open a socket to your container on the specified port. If it can establish a connection, the container is considered healthy. | + +### Ambassador Mappings + +You can create ambassador mappings to access your applications from outside the cluster. At its core a Mapping resource maps a resource to a service. + +```yaml +ambassadorMapping: + ambassadorId: "prod-emissary" + cors: {} + enabled: true + hostname: devtron.example.com + labels: {} + prefix: / + retryPolicy: {} + rewrite: "" + tls: + context: "devtron-tls-context" + create: false + hosts: [] + secretName: "" +``` + +| Key | Description | +| :--- | :--- | +| `enabled` | Set true to enable ambassador mapping else set false.| +| `ambassadorId` | used to specify id for specific ambassador mappings controller. | +| `cors` | used to specify cors policy to access host for this mapping. | +| `weight` | used to specify weight for canary ambassador mappings. | +| `hostname` | used to specify hostname for ambassador mapping. | +| `prefix` | used to specify path for ambassador mapping. | +| `labels` | used to provide custom labels for ambassador mapping. | +| `retryPolicy` | used to specify retry policy for ambassador mapping. | +| `corsPolicy` | Provide cors headers on flagger resource. | +| `rewrite` | used to specify whether to redirect the path of this mapping and where. | +| `tls` | used to create or define ambassador TLSContext resource. | +| `extraSpec` | used to provide extra spec values which not present in deployment template for ambassador resource. | + +### Autoscaling + +This is connected to HPA and controls scaling up and down in response to request load. + +```yaml +autoscaling: + enabled: false + MinReplicas: 1 + MaxReplicas: 2 + TargetCPUUtilizationPercentage: 90 + TargetMemoryUtilizationPercentage: 80 + extraMetrics: [] +``` + +| Key | Description | +| :--- | :--- | +| `enabled` | Set true to enable autoscaling else set false.| +| `MinReplicas` | Minimum number of replicas allowed for scaling. | +| `MaxReplicas` | Maximum number of replicas allowed for scaling. | +| `TargetCPUUtilizationPercentage` | The target CPU utilization that is expected for a container. | +| `TargetMemoryUtilizationPercentage` | The target memory utilization that is expected for a container. | +| `extraMetrics` | Used to give external metrics for autoscaling. | + +### Fullname Override + +```yaml +fullnameOverride: app-name +``` +`fullnameOverride` replaces the release fullname created by default by devtron, which is used to construct Kubernetes object names. By default, devtron uses `{app-name}-{environment-name}` as release fullname. + +### Image + +```yaml +image: + pullPolicy: IfNotPresent +``` + +Image is used to access images in kubernetes, pullpolicy is used to define the instances calling the image, here the image is pulled when the image is not present,it can also be set as "Always". + +### imagePullSecrets + +`imagePullSecrets` contains the docker credentials that are used for accessing a registry. + +```yaml +imagePullSecrets: + - regcred +``` +regcred is the secret that contains the docker credentials that are used for accessing a registry. Devtron will not create this secret automatically, you'll have to create this secret using dt-secrets helm chart in the App store or create one using kubectl. You can follow this documentation Pull an Image from a Private Registry [https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/](https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/) . + +### Ingress + +This allows public access to the url, please ensure you are using right nginx annotation for nginx class, its default value is nginx + +```yaml +ingress: + enabled: false + # For K8s 1.19 and above use ingressClassName instead of annotation kubernetes.io/ingress.class: + className: nginx + annotations: {} + hosts: + - host: example1.com + paths: + - /example + - host: example2.com + paths: + - /example2 + - /example2/healthz + tls: [] +``` +Legacy deployment-template ingress format + +```yaml +ingress: + enabled: false + # For K8s 1.19 and above use ingressClassName instead of annotation kubernetes.io/ingress.class: + ingressClassName: nginx-internal + annotations: {} + path: "" + host: "" + tls: [] +``` + +| Key | Description | +| :--- | :--- | +| `enabled` | Enable or disable ingress | +| `annotations` | To configure some options depending on the Ingress controller | +| `path` | Path name | +| `host` | Host name | +| `tls` | It contains security details | + +### Ingress Internal + +This allows private access to the url, please ensure you are using right nginx annotation for nginx class, its default value is nginx + +```yaml +ingressInternal: + enabled: false + # For K8s 1.19 and above use ingressClassName instead of annotation kubernetes.io/ingress.class: + ingressClassName: nginx-internal + annotations: {} + hosts: + - host: example1.com + paths: + - /example + - host: example2.com + paths: + - /example2 + - /example2/healthz + tls: [] +``` + +| Key | Description | +| :--- | :--- | +| `enabled` | Enable or disable ingress | +| `annotations` | To configure some options depending on the Ingress controller | +| `path` | Path name | +| `host` | Host name | +| `tls` | It contains security details | + +### Init Containers +```yaml +initContainers: + - reuseContainerImage: true + securityContext: + runAsUser: 1000 + runAsGroup: 3000 + fsGroup: 2000 + volumeMounts: + - mountPath: /etc/ls-oms + name: ls-oms-cm-vol + command: + - flyway + - -configFiles=/etc/ls-oms/flyway.conf + - migrate + + - name: nginx + image: nginx:1.14.2 + securityContext: + privileged: true + ports: + - containerPort: 80 + command: ["/usr/local/bin/nginx"] + args: ["-g", "daemon off;"] +``` +Specialized containers that run before app containers in a Pod. Init containers can contain utilities or setup scripts not present in an app image. One can use base image inside initContainer by setting the reuseContainerImage flag to `true`. + +### Istio + +Istio is a service mesh which simplifies observability, traffic management, security and much more with it's virtual services and gateways. + +```yaml +istio: + enable: true + gateway: + annotations: {} + enabled: false + host: example.com + labels: {} + tls: + enabled: false + secretName: example-tls-secret + virtualService: + annotations: {} + enabled: false + gateways: [] + hosts: [] + http: + - corsPolicy: + allowCredentials: false + allowHeaders: + - x-some-header + allowMethods: + - GET + allowOrigin: + - example.com + maxAge: 24h + headers: + request: + add: + x-some-header: value + match: + - uri: + prefix: /v1 + - uri: + prefix: /v2 + retries: + attempts: 2 + perTryTimeout: 3s + rewriteUri: / + route: + - destination: + host: service1 + port: 80 + timeout: 12s + - route: + - destination: + host: service2 + labels: {} +``` + +| Key | Description | +| :--- | :--- | +| `istio` | Istio enablement. When `istio.enable` set to true, Istio would be enabled for the specified configurations | +| `gateway` | Allowing external traffic to enter the service mesh through the specified configurations. | +| `host` | The external domain through which traffic will be routed into the service mesh. | +| `tls` | Traffic to and from the gateway should be encrypted using TLS. | +| `secretName` | Specifies the name of the Kubernetes secret that contains the TLS certificate and private key. The TLS certificate is used for securing the communication between clients and the Istio gateway. | +| `virtualService` | Enables the definition of rules for how traffic should be routed to different services within the service mesh. | +| `gateways` | Specifies the gateways to which the rules defined in the VirtualService apply. | +| `hosts` | List of hosts (domains) to which this VirtualService is applied. | +| `http` | Configuration for HTTP routes within the VirtualService. It define routing rules based on HTTP attributes such as URI prefixes, headers, timeouts, and retry policies. | +| `corsPolicy` | Cross-Origin Resource Sharing (CORS) policy configuration. | +| `headers` | Additional headers to be added to the HTTP request. | +| `match` | Conditions that need to be satisfied for this route to be used. | +| `uri` | This specifies a match condition based on the URI of the incoming request. | +| `prefix` | It specifies that the URI should have the specified prefix. | +| `retries` | Retry configuration for failed requests. | +| `attempts` | It specifies the number of retry attempts for failed requests. | +| `perTryTimeout` | sets the timeout for each individual retry attempt. | +| `rewriteUri` | Rewrites the URI of the incoming request. | +| `route` | List of destination rules for routing traffic. | + +### Pause For Seconds Before Switch Active +```yaml +pauseForSecondsBeforeSwitchActive: 30 +``` +To wait for given period of time before switch active the container. + +### Resources + +These define minimum and maximum RAM and CPU available to the application. + +```yaml +resources: + limits: + cpu: "1" + memory: "200Mi" + requests: + cpu: "0.10" + memory: "100Mi" +``` + +Resources are required to set CPU and memory usage. + +#### Limits + +Limits make sure a container never goes above a certain value. The container is only allowed to go up to the limit, and then it is restricted. + +#### Requests + +Requests are what the container is guaranteed to get. + +### Service + +This defines annotations and the type of service, optionally can define name also. + +```yaml + service: + type: ClusterIP + annotations: {} +``` + +### Volumes + +```yaml +volumes: + - name: log-volume + emptyDir: {} + - name: logpv + persistentVolumeClaim: + claimName: logpvc +``` + +It is required when some values need to be read from or written to an external disk. + +### Volume Mounts + +```yaml +volumeMounts: + - mountPath: /var/log/nginx/ + name: log-volume + - mountPath: /mnt/logs + name: logpvc + subPath: employee +``` + +It is used to provide mounts to the volume. + +### Affinity and anti-affinity + +```yaml +Spec: + Affinity: + Key: + Values: +``` + +Spec is used to define the desire state of the given container. + +Node Affinity allows you to constrain which nodes your pod is eligible to schedule on, based on labels of the node. + +Inter-pod affinity allow you to constrain which nodes your pod is eligible to be scheduled based on labels on pods. + +#### Key + +Key part of the label for node selection, this should be same as that on node. Please confirm with devops team. + +#### Values + +Value part of the label for node selection, this should be same as that on node. Please confirm with devops team. + +### Tolerations + +```yaml +tolerations: + - key: "key" + operator: "Equal" + value: "value" + effect: "NoSchedule|PreferNoSchedule|NoExecute(1.6 only)" +``` + +Taints are the opposite, they allow a node to repel a set of pods. + +A given pod can access the given node and avoid the given taint only if the given pod satisfies a given taint. + +Taints and tolerations are a mechanism which work together that allows you to ensure that pods are not placed on inappropriate nodes. Taints are added to nodes, while tolerations are defined in the pod specification. When you taint a node, it will repel all the pods except those that have a toleration for that taint. A node can have one or many taints associated with it. + +### Arguments + +```yaml +args: + enabled: false + value: [] +``` + +This is used to give arguments to command. + +### Command + +```yaml +command: + enabled: false + value: [] +``` + +It contains the commands for the server. + +| Key | Description | +| :--- | :--- | +| `enabled` | To enable or disable the command. | +| `value` | It contains the commands. | + + +### Containers +Containers section can be used to run side-car containers along with your main container within same pod. Containers running within same pod can share volumes and IP Address and can address each other @localhost. We can use base image inside container by setting the reuseContainerImage flag to `true`. + +```yaml + containers: + - name: nginx + image: nginx:1.14.2 + ports: + - containerPort: 80 + command: ["/usr/local/bin/nginx"] + args: ["-g", "daemon off;"] + - reuseContainerImage: true + securityContext: + runAsUser: 1000 + runAsGroup: 3000 + fsGroup: 2000 + volumeMounts: + - mountPath: /etc/ls-oms + name: ls-oms-cm-vol + command: + - flyway + - -configFiles=/etc/ls-oms/flyway.conf + - migrate +``` + +### Prometheus + +```yaml + prometheus: + release: monitoring +``` + +It is a kubernetes monitoring tool and the name of the file to be monitored as monitoring in the given case.It describes the state of the prometheus. + +### rawYaml + +```yaml +rawYaml: + - apiVersion: v1 + kind: Service + metadata: + name: my-service + spec: + selector: + app: MyApp + ports: + - protocol: TCP + port: 80 + targetPort: 9376 + type: ClusterIP +``` +Accepts an array of Kubernetes objects. You can specify any kubernetes yaml here and it will be applied when your app gets deployed. + +### Grace Period + +```yaml +GracePeriod: 30 +``` +Kubernetes waits for the specified time called the termination grace period before terminating the pods. By default, this is 30 seconds. If your pod usually takes longer than 30 seconds to shut down gracefully, make sure you increase the `GracePeriod`. + +A Graceful termination in practice means that your application needs to handle the SIGTERM message and begin shutting down when it receives it. This means saving all data that needs to be saved, closing down network connections, finishing any work that is left, and other similar tasks. + +There are many reasons why Kubernetes might terminate a perfectly healthy container. If you update your deployment with a rolling update, Kubernetes slowly terminates old pods while spinning up new ones. If you drain a node, Kubernetes terminates all pods on that node. If a node runs out of resources, Kubernetes terminates pods to free those resources. It’s important that your application handle termination gracefully so that there is minimal impact on the end user and the time-to-recovery is as fast as possible. + + +### Server + +```yaml +server: + deployment: + image_tag: 1-95a53 + image: "" +``` + +It is used for providing server configurations. + +#### Deployment + +It gives the details for deployment. + +| Key | Description | +| :--- | :--- | +| `image_tag` | It is the image tag | +| `image` | It is the URL of the image | + +### Service Monitor + +```yaml +servicemonitor: + enabled: true + path: /abc + scheme: 'http' + interval: 30s + scrapeTimeout: 20s + metricRelabelings: + - sourceLabels: [namespace] + regex: '(.*)' + replacement: myapp + targetLabel: target_namespace +``` + +It gives the set of targets to be monitored. + +### Db Migration Config + +```yaml +dbMigrationConfig: + enabled: false +``` + +It is used to configure database migration. + + +### KEDA Autoscaling +[KEDA](https://keda.sh) is a Kubernetes-based Event Driven Autoscaler. With KEDA, you can drive the scaling of any container in Kubernetes based on the number of events needing to be processed. KEDA can be installed into any Kubernetes cluster and can work alongside standard Kubernetes components like the Horizontal Pod Autoscaler(HPA). + +Example for autosccaling with KEDA using Prometheus metrics is given below: +```yaml +kedaAutoscaling: + enabled: true + minReplicaCount: 1 + maxReplicaCount: 2 + idleReplicaCount: 0 + pollingInterval: 30 + advanced: + restoreToOriginalReplicaCount: true + horizontalPodAutoscalerConfig: + behavior: + scaleDown: + stabilizationWindowSeconds: 300 + policies: + - type: Percent + value: 100 + periodSeconds: 15 + triggers: + - type: prometheus + metadata: + serverAddress: http://:9090 + metricName: http_request_total + query: envoy_cluster_upstream_rq{appId="300", cluster_name="300-0", container="envoy",} + threshold: "50" + triggerAuthentication: + enabled: false + name: + spec: {} + authenticationRef: {} +``` +Example for autosccaling with KEDA based on kafka is given below : +```yaml +kedaAutoscaling: + enabled: true + minReplicaCount: 1 + maxReplicaCount: 2 + idleReplicaCount: 0 + pollingInterval: 30 + advanced: {} + triggers: + - type: kafka + metadata: + bootstrapServers: b-2.kafka-msk-dev.example.c2.kafka.ap-southeast-1.amazonaws.com:9092,b-3.kafka-msk-dev.example.c2.kafka.ap-southeast-1.amazonaws.com:9092,b-1.kafka-msk-dev.example.c2.kafka.ap-southeast-1.amazonaws.com:9092 + topic: Orders-Service-ESP.info + lagThreshold: "100" + consumerGroup: oders-remove-delivered-packages + allowIdleConsumers: "true" + triggerAuthentication: + enabled: true + name: keda-trigger-auth-kafka-credential + spec: + secretTargetRef: + - parameter: sasl + name: keda-kafka-secrets + key: sasl + - parameter: username + name: keda-kafka-secrets + key: username + authenticationRef: + name: keda-trigger-auth-kafka-credential +``` +### Winter-Soldier +Winter Soldier can be used to +- cleans up (delete) Kubernetes resources +- reduce workload pods to 0 + +**_NOTE:_** After deploying this we can create the Hibernator object and provide the custom configuration by which workloads going to delete, sleep and many more. for more information check [the main repo](https://github.com/devtron-labs/winter-soldier) + +Given below is template values you can give in winter-soldier: +```yaml +winterSoilder: + enable: false + apiVersion: pincher.devtron.ai/v1alpha1 + action: sleep + timeRangesWithZone: + timeZone: "Asia/Kolkata" + timeRanges: [] + targetReplicas: [] + fieldSelector: [] +``` +Here, +| Key | values | Description | +| :--- | :--- | :--- | +| `enable` | `false`,`true` | decide the enabling factor | +| `apiVersion` | `pincher.devtron.ai/v1beta1`, `pincher.devtron.ai/v1alpha1` | specific api version | +| `action` | `sleep`,`delete`, `scale` | This specify the action need to perform. | +| `timeRangesWithZone`:`timeZone` | eg:- `"Asia/Kolkata"`,`"US/Pacific"` | It use to specify the timeZone used. (It uses standard format. please refer [this](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)) | +| `timeRangesWithZone`:`timeRanges` | array of [ `timeFrom`, `timeTo`, `weekdayFrom`, `weekdayTo`] | It use to define time period/range on which the user need to perform the specified action. you can have multiple timeRanges.
These settings will take `action` on Sat and Sun from 00:00 to 23:59:59, | +| `targetReplicas` | `[n]` : n - number of replicas to scale. | These is mandatory field when the `action` is `scale`
Default value is `[]`. | +| `fieldSelector` | `- AfterTime(AddTime( ParseTime({{metadata.creationTimestamp}}, '2006-01-02T15:04:05Z'), '5m'), Now()) ` | These value will take a list of methods to select the resources on which we perform specified `action` . | + + +here is an example, +```yaml +winterSoilder: + apiVersion: pincher.devtron.ai/v1alpha1 + enable: true + annotations: {} + labels: {} + timeRangesWithZone: + timeZone: "Asia/Kolkata" + timeRanges: + - timeFrom: 00:00 + timeTo: 23:59:59 + weekdayFrom: Sat + weekdayTo: Sun + - timeFrom: 00:00 + timeTo: 08:00 + weekdayFrom: Mon + weekdayTo: Fri + - timeFrom: 20:00 + timeTo: 23:59:59 + weekdayFrom: Mon + weekdayTo: Fri + action: scale + targetReplicas: [1,1,1] + fieldSelector: + - AfterTime(AddTime( ParseTime({{metadata.creationTimestamp}}, '2006-01-02T15:04:05Z'), '10h'), Now()) +``` +Above settings will take action on `Sat` and `Sun` from 00:00 to 23:59:59, and on `Mon`-`Fri` from 00:00 to 08:00 and 20:00 to 23:59:59. If `action:sleep` then runs hibernate at timeFrom and unhibernate at `timeTo`. If `action: delete` then it will delete workloads at `timeFrom` and `timeTo`. Here the `action:scale` thus it scale the number of resource replicas to `targetReplicas: [1,1,1]`. Here each element of `targetReplicas` array is mapped with the corresponding elements of array `timeRangesWithZone/timeRanges`. Thus make sure the length of both array is equal, otherwise the cnages cannot be observed. + +The above example will select the application objects which have been created 10 hours ago across all namespaces excluding application's namespace. Winter soldier exposes following functions to handle time, cpu and memory. + +- ParseTime - This function can be used to parse time. For eg to parse creationTimestamp use `ParseTime({{metadata.creationTimestamp}}, '2006-01-02T15:04:05Z')` +- AddTime - This can be used to add time. For eg `AddTime(ParseTime({{metadata.creationTimestamp}}, '2006-01-02T15:04:05Z'), '-10h')` ll add 10h to the time. Use d for day, h for hour, m for minutes and s for seconds. Use negative number to get earlier time. +- Now - This can be used to get current time. +- CpuToNumber - This can be used to compare CPU. For eg `any({{spec.containers.#.resources.requests}}, { MemoryToNumber(.memory) < MemoryToNumber('60Mi')})` will check if any resource.requests is less than 60Mi. + + + +### Security Context +A security context defines privilege and access control settings for a Pod or Container. + +To add a security context for main container: +```yaml +containerSecurityContext: + allowPrivilegeEscalation: false +``` + +To add a security context on pod level: +```yaml +podSecurityContext: + runAsUser: 1000 + runAsGroup: 3000 + fsGroup: 2000 +``` + +### Topology Spread Constraints +You can use topology spread constraints to control how Pods are spread across your cluster among failure-domains such as regions, zones, nodes, and other user-defined topology domains. This can help to achieve high availability as well as efficient resource utilization. + +```yaml +topologySpreadConstraints: + - maxSkew: 1 + topologyKey: zone + whenUnsatisfiable: DoNotSchedule + autoLabelSelector: true + customLabelSelector: {} +``` + +### Deployment Metrics + +It gives the realtime metrics of the deployed applications + +| Key | Description | +| :--- | :--- | +| `Deployment Frequency` | It shows how often this app is deployed to production | +| `Change Failure Rate` | It shows how often the respective pipeline fails. | +| `Mean Lead Time` | It shows the average time taken to deliver a change to production. | +| `Mean Time to Recovery` | It shows the average time taken to fix a failed pipeline. | + +## 2. Show application metrics + +If you want to see application metrics like different HTTP status codes metrics, application throughput, latency, response time. Enable the Application metrics from below the deployment template Save button. After enabling it, you should be able to see all metrics on App detail page. By default it remains disabled. + +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/base-configurations/deployment-types/app-metrics.jpg) +
Figure 3: Application Metrics
+ +Once all the Deployment template configurations are done, click on `Save` to save your deployment configuration. Now you are ready to create [Workflow](../../workflow/README.md) to do CI/CD. + +### Helm Chart Json Schema + +Helm Chart [json schema](https://github.com/devtron-labs/devtron/blob/main/scripts/devtron-reference-helm-charts/reference-chart_5-1-0/schema.json) is used to validate the deployment template values. + +### Other Validations in Json Schema + +The values of CPU and Memory in limits must be greater than or equal to in requests respectively. Similarly, In case of envoyproxy, the values of limits are greater than or equal to requests as mentioned below. +``` +resources.limits.cpu >= resources.requests.cpu +resources.limits.memory >= resources.requests.memory +envoyproxy.resources.limits.cpu >= envoyproxy.resources.requests.cpu +envoyproxy.resources.limits.memory >= envoyproxy.resources.requests.memory +``` \ No newline at end of file diff --git a/docs/user-guide/creating-application/base-config/deployment-template.md b/docs/user-guide/creating-application/base-config/deployment-template.md old mode 100644 new mode 100755 index e8d1fd7f03..c0bcefeed7 --- a/docs/user-guide/creating-application/base-config/deployment-template.md +++ b/docs/user-guide/creating-application/base-config/deployment-template.md @@ -2,7 +2,8 @@ ## Introduction -![Figure 1: Deployment Template](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/base-config/deployment-template.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/base-configurations/deployment-template/deployment-template.jpg) +
Figure 1: Deployment Template
In Devtron, a [Deployment Template](../../../reference/glossary.md#deployment-template) defines how your application should run by defining its specifications. Devtron uses [Helm charts](../../../reference/glossary.md#helm-chartspackages) to manage these deployments, allowing you to control everything from [Resource Allocation](../../../reference/glossary.md#resource-allocation) to environment variables. @@ -20,77 +21,71 @@ This guide covers how to: * [Perform a Dry Run](#perform-a-dry-run) -* [Extra: Edit a Protected Deployment Configuration](#edit-a-protected-deployment-template) [![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/elements/EnterpriseTag.svg)](https://devtron.ai/pricing) +* [Extra: Edit a Protected Deployment Configuration](#edit-a-protected-deployment-template-) --- ## Select a Deployment Chart Type -{% hint style="warning" %} +:::caution Who Can Perform This Action? +Users need to have [Admin role](../../../user-guide/global-configurations/authorization/user-access.md#roles-available-for-devtron-apps) or above to select a chart. -### Who Can Perform This Action? - -Users need to have [Admin role](../../../user-guide/global-configurations/user-access.md#role-based-access-levels) or above to select a chart. - -{% endhint %} +::: 1. Go to the **Configurations** page of your application. - ![Figure 2: Application's 'Configurations' Page](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/deployment-template/app-config-page.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/base-configurations/deployment-template/app-config-page.jpg) +
Figure 2: Application's 'Configurations' Page
2. Click **Base Configuration** → **Deployment Template**. - ![Figure 3: Navigating to Base Configurations](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/deployment-template/click-baseconfig.gif) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/base-configurations/deployment-template/click-baseconfig.gif) +
Figure 3: Navigating to Base Configurations
3. Select the **Chart** drop-down box. The following tabs are displayed: - * [Charts by Devtron](./deployment-template/README.md) - Displays the default deployment charts provided by Devtron + * [Charts by Devtron](./deployment-template-types/README.md) - Displays the default deployment charts provided by Devtron * [Custom charts](../../global-configurations/deployment-charts.md) - Displays your custom deployment charts (if available). To create a custom deployment chart, refer to [Deployment Charts](../../global-configurations/deployment-charts.md). - ![Figure 4a: Charts by Devtron](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/base-config/deployment-charts-devtron.gif) - - ![Figure 4b: Custom Charts](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/base-config/deployment-charts-custom.gif) - -{% hint style="danger" %} + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/base-configurations/deployment-template/deployment-charts-devtron.gif) +
Figure 4a: Charts by Devtron
-### Important Note + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/base-configurations/deployment-template/deployment-charts-custom.gif) +
Figure 4b: Custom Charts
+:::danger Important Note After you select and save a chart type for a given application, you won't be able to change it later. Make sure to choose the correct chart type before saving. -{% endhint %} +::: --- ## Choose a Chart Version -{% hint style="warning" %} - -### Who Can Perform This Action? - +:::caution Who Can Perform This Action? Users need to have [Admin role](../../../user-guide/global-configurations/authorization/user-access.md#roles-available-for-devtron-apps) or above to select a chart version. -{% endhint %} +::: Devtron maintains multiple chart versions for each chart type. Additionally, each chart version has a supporting README file that you can use to know more about the features and variables. -![Figure 5: Accessing the README file](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/deployment-template/readme-version.gif) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/base-configurations/deployment-template/readme-version.gif) +
Figure 5: Accessing the README file
Once you [select a deployment chart](#select-a-deployment-chart-type), choose a chart version with which you wish to deploy your application from the **Version** drop-down box. By default, the latest version of the helm chart is selected. -![Figure 6: Choosing the Chart Version](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/deployment-template/chart-version.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/base-configurations/deployment-template/chart-version.jpg) +
Figure 6: Choosing the Chart Version
--- ## Configure the Deployment Template -{% hint style="warning" %} - -### Who Can Perform This Action? - +:::caution Who Can Perform This Action? Users need to have [Admin role](../../../user-guide/global-configurations/authorization/user-access.md#roles-available-for-devtron-apps) or above to configure a deployment template. However, super-admins can lock keys in deployment template to prevent non-super-admins from modifying them. Refer [Lock Deployment Configuration](../../global-configurations/lock-deployment-config.md) to know more. -{% endhint %} +::: You can edit a deployment template using the following two ways: @@ -102,7 +97,8 @@ You can edit a deployment template using the following two ways: If you prefer to use a simple way to configure your chosen deployment chart, select **GUI**. -![Figure 7: GUI Option](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/deployment-template/basic-gui.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/base-configurations/deployment-template/basic-gui.jpg) +
Figure 7: GUI Option
By default, the following fields are commonly available for you to modify in the **GUI** section of most charts: @@ -129,27 +125,22 @@ By default, the following fields are commonly available for you to modify in the If you wish to perform additional configurations, click the **Switch to Advanced** button or **YAML** button. Or [perform a dry run](#perform-a-dry-run) before saving your configuration. -![Figure 8: Switch to Advanced (YAML Method)](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/deployment-template/yaml-switch-new.jpg) - -{% hint style="info" %} - -### Note +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/base-configurations/deployment-template/yaml-switch.jpg) +
Figure 8: Switch to Advanced (YAML Method)
+:::info Note * If you change any values in the **GUI**, then the corresponding values will change in **YAML** too. * Users who are not super-admins will land on **GUI** section when they visit **Deployment Template** page; whereas super-admins will land on **YAML** section. This is just a default behavior, they can still navigate to the other section if needed. -{% endhint %} +::: -#### Customize the GUI [![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/elements/EnterpriseTag.svg)](https://devtron.ai/pricing) +#### Customize the GUI -{% hint style="warning" %} +:::caution Who Can Perform This Action? +Only a [Super-Admin](../../global-configurations/authorization/user-access.md#grant-super-admin-permission) can customize the GUI section. -### Who Can Perform This Action? - -Only a [Super-Admin](../../global-configurations/user-access.md#assign-super-admin-permissions) can customize the GUI section. - -{% endhint %} +::: By default, the **GUI** section comes with multiple predefined fields as seen earlier [in the table](#using-gui). However, if you wish to display a different set of fields to your team, you can modify the whole section as per your requirement. @@ -165,11 +156,11 @@ This is useful in scenarios where: There are two ways you can customize the GUI, use any one of the following: -1. From [Deployment Charts](../../global-configurations/deployment-charts.md#editing-gui-schema-of-deployment-charts) section +1. From [Deployment Charts](../../global-configurations/deployment-charts.md#editing-gui-schema-of-deployment-charts-) section 2. Using APIs (explained below) -{% embed url="https://www.youtube.com/watch?v=09VP1I-WvUs" caption="JSON-driven Deployment Schema" %} +
You can pass a custom JSON (deployment schema) of your choice through the following API. You may need to run the API with the `POST` method if you are doing it for the first time. @@ -177,9 +168,7 @@ You can pass a custom JSON (deployment schema) of your choice through the follow PUT {{DEVTRON_BASEURL}}/orchestrator/deployment/template/schema ``` -{% code title="Sample API Request Body" overflow="wrap" lineNumbers="true" %} - -```json +```json title="Sample API Request Body" showLineNumbers { "name": "schema-1", "type": "JSON", @@ -229,7 +218,7 @@ PUT {{DEVTRON_BASEURL}}/orchestrator/deployment/template/schema } ``` -{% endcode %} + 1. In the `name` field, give a name to your schema, e.g., *schema-1* @@ -261,19 +250,20 @@ PUT {{DEVTRON_BASEURL}}/orchestrator/deployment/template/schema If you prefer to perform additional configurations in your chosen deployment template, select **YAML**. -![Figure 9: YAML Option](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/deployment-template/advanced-yaml.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/base-configurations/deployment-template/yaml-switch.jpg) +
Figure 9: YAML Option
Every chart version has its own YAML file that provides specifications for your application. To make it easy to use, we have created templates for the YAML file and added some variables inside the YAML. You can provide or change the values of these variables as per your requirement. Refer the respective templates to view the YAML details. -* [Deployment](./deployment-template/deployment.md) +* [Deployment](./deployment-template-types/deployment.md) -* [Rollout Deployment](./deployment-template/rollout-deployment.md) +* [Rollout Deployment](./deployment-template-types/rollout-deployment.md) -* [Job & CronJob](./deployment-template/job-and-cronjob.md) +* [Job & CronJob](./deployment-template-types/job-and-cronjob.md) -* [StatefulSet](./deployment-template/statefulset.md) +* [StatefulSet](./deployment-template-types/statefulset.md) Before saving your configuration in YAML, make sure to [perform a dry run](#perform-a-dry-run). @@ -290,19 +280,17 @@ The availability of application metrics depends on the selected chart type and v To enable this, turn on the **Show application metrics** toggle. -![Figure 10: Enabling Application Metrics](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/deployment-template/show-application-metrics-v2.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/base-configurations/deployment-template/show-application-metrics.jpg) +
Figure 10: Enabling Application Metrics
Once enabled, you can view the application metrics on the **App Details** page. -![Figure 11: Application metrics on 'App Details' page](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/deployment-template/app-metric-op.jpg) - -{% hint style="info" %} - -### Important +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/base-configurations/deployment-template/app-metrics.jpg) +
Figure 11: Application metrics on 'App Details' page
+:::info Important Enabling application metrics adds a sidecar container to your main container, which may require additional configuration. We recommend running a load test in a non-production environment before enabling it in production. - -{% endhint %} +::: --- @@ -312,51 +300,43 @@ Before saving your configured deployment template, you can use the **Dry Run** o This feature helps you verify your configurations, detect issues, and ensure correctness before actual deployment. -![Figure 12: Show application metrics](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/deployment-template/dry-run-dt.gif) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/base-configurations/deployment-template/dry-run-dt.gif) +
Figure 12: Show application metrics
Your configurations will appear in the left pane, while the right pane will display a section named `Manifest generated from merged` showing the computed Kubernetes manifests, each representing a separate resource after merging all your changes. --- -## Edit a Protected Deployment Template [![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/elements/EnterpriseTag.svg)](https://devtron.ai/pricing) - -{% hint style="info" %} - -### Who Can Perform This Action? +## Edit a Protected Deployment Template +:::info Who Can Perform This Action? Only a super-admin, manager, and admin can edit the configuration values. -{% endhint %} +::: Any changes made to the deployment template will require approval if an approval policy is enforced. To check if your deployment template is protected, check the stamp/approve symbol as shown below. -![Figure 13: Checking Protected Configuration](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/deployment-template/protected-dt.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/base-configurations/deployment-template/protected-dt.jpg) +
Figure 13: Checking Protected Configuration
-When you want to edit a protected configuration, you can do it in the following ways: - -* [Normal Edit](#normal-edit) - Where changes to the protected configuration can be proposed or pushed as a draft, but published only after getting approval from the approver(s). - -* [Express Edit](#express-edit) - Where you bypass the approval process and directly make changes to the protected configuration. - -### Normal Edit +### Request Approval for Changes Let's assume you are the application admin and your deployment template in **Base Configurations** is protected from edits. 1. In the YAML editor of the deployment template, modify the values. - ![Figure 14: Selecting Values to Change](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/deployment-template/edit-deployment-template-v2.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/base-configurations/deployment-template/edit-deployment-template.jpg) +
Figure 14: Selecting Values to Change
2. You can change the value of a key to a desired value as shown below. Once done, click the **Save Changes** button. - ![Figure 15: Changing Values](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/deployment-template/changed-values-v2.jpg) - -{% hint style="info" %} - -### What if the keys are locked from editing? + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/base-configurations/deployment-template/changed-values.jpg) +
Figure 15: Changing Values
+:::info What if the keys are locked from editing? You cannot modify locked keys in deployment template unless you are a super-admin. Refer [Lock Deployment Configuration](../../global-configurations/lock-deployment-config.md) to know more. -{% endhint %} +::: 3. Since the deployment configuration is protected, your changes won't be published right away. You can do either of the following: @@ -366,82 +346,37 @@ You cannot modify locked keys in deployment template unless you are a super-admi Since we are proposing the changes immediately, click **Propose Changes**. - ![Figure 16: Proposing Changes](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/deployment-template/propose-changes-v2.gif) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/base-configurations/deployment-template/propose-changes.gif) +
Figure 16: Proposing Changes
4. You can also view the approval status if you wish. - ![Figure 17: Viewing the Approval Status](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/deployment-template/approval-status.jpg) - -{% hint style="info" %} - -### Can I approve my own changes? + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/base-configurations/deployment-template/approval-status.jpg) +
Figure 17: Viewing the Approval Status
+:::info Can I approve my own changes? No, the one who performs the edits cannot approve their own changes. A different user has to review and approve. -{% endhint %} +::: Only one draft can exist at time and you cannot create multiple drafts. In the top-right corner, you have the option to discard the draft if you don't wish to proceed with the edits you made. -![Figure 18: Discarding the Draft](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/deployment-template/discard-draft.jpg) - -### Express Edit - -{% hint style="warning" %} - -### Who Can Perform This Action? - -Only a Super-Admin (when the [Super admins toggle](../../global-configurations/approval-policy.md#excluding-super-admins) is enabled in the Exceptions tab) or [specific users / user groups](../../global-configurations/approval-policy.md#excluding-specific-users-user-groups-api-tokens) who are added as exceptions in the Approval Policy can make express edits. Refer to [Approval Policy](../../global-configurations/approval-policy.md) for more information. - -{% endhint %} - -Express edits allow you to bypass the approval process and make direct edits to the configurations. Follow the below steps to make express edits: - -1. Navigate to the **Applications** page and click on your preferred application. - -2. Go to the **Configurations** → **Base Configurations**. - -3. Click on **Deployment Template**. - -4. Click on the **Edit** button. - -{% hint style="info" %} - -### Note - -The **Edit** button will only be displayed if: - -* You are a Super-Admin and the Super admins toggle is enabled in the Approval Policy page - -* You are added as an exception in the Approval Policy page. - -Refer to [Approval Policy](../../global-configurations/approval-policy.md) for more information. - -{% endhint %} - -5. Modify the values either by using **GUI** or **YAML** editor. - -6. Click on **Publish Changes** to direcly publish your changes. - -![Figure 19: Express Edit a Protected Deployment Template](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/base-config/express-edit-dt.gif) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/base-configurations/deployment-template/discard-draft.jpg) +
Figure 18: Discarding the Draft
### Grant Approval for Changes -{% hint style="info" %} - -### Who Can Perform This Action? - +:::info Who Can Perform This Action? Only a valid approver or a Super-Admin can approve the changes made to the deployment configuration. Refer to [Approval Policy](../../global-configurations/approval-policy.md) for more information. -{% endhint %} +::: Go to the edited configuration file to review and approve the changes as shown below. -![Figure 20: Approving the Changes](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/deployment-template/approval-screen-v2.jpg) - -{% hint style="info" %} - -### Note +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/base-configurations/deployment-template/approval-screen.jpg) +
Figure 19: Approving the Changes
+:::info Note If [SES/SMTP](../../global-configurations/manage-notification.md) is configured in Devtron, the approver gets notified via email. Therefore, the approver can take an action directly from the mail as shown below. Once the approver validates and approves your configuration changes, you can proceed to deploy your application with the updated configuration. -{% endhint %} \ No newline at end of file +::: \ No newline at end of file diff --git a/docs/user-guide/creating-application/base-config/deployment-template/README.md b/docs/user-guide/creating-application/base-config/deployment-template/README.md deleted file mode 100644 index 578a2c88e4..0000000000 --- a/docs/user-guide/creating-application/base-config/deployment-template/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# Types of Deployment Templates - -In Devtron, the following deployment charts are available for you to use for your application: - -* [Deployment](deployment.md) -* [Rollout Deployment](rollout-deployment.md) -* [Job and Cronjob](job-and-cronjob.md) -* [StatefulSets](statefulset.md) - -![Deployment Charts by Devtron](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/deployment-template/select-devtron-chart.gif) - -Each template serves a specific purpose; therefore, choose one based on your application’s requirements. \ No newline at end of file diff --git a/docs/user-guide/creating-application/base-config/deployment-template/deployment.md b/docs/user-guide/creating-application/base-config/deployment-template/deployment.md deleted file mode 100644 index dc3672b0f2..0000000000 --- a/docs/user-guide/creating-application/base-config/deployment-template/deployment.md +++ /dev/null @@ -1,1140 +0,0 @@ -# Deployment - -This chart creates a deployment that runs multiple replicas of your application and automatically replaces any instances that fail or become unresponsive. It does not support Blue/Green and Canary deployments. This is the default deployment chart. You can select `Deployment` chart when you want to use only basic use cases which contain the following: - -* Create a Deployment to rollout a ReplicaSet. The ReplicaSet creates Pods in the background. Check the status of the rollout to see if it succeeds or not. -* Declare the new state of the Pods. A new ReplicaSet is created and the Deployment manages moving the Pods from the old ReplicaSet to the new one at a controlled rate. Each new ReplicaSet updates the revision of the Deployment. -* Rollback to an earlier Deployment revision if the current state of the Deployment is not stable. Each rollback updates the revision of the Deployment. -* Scale up the Deployment to facilitate more load. -* Use the status of the Deployment as an indicator that a rollout has stuck. -* Clean up older ReplicaSets that you do not need anymore. - -![Figure 1: Choosing 'Deployment' Chart](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/deployment-template/dt-type-3.jpg) - -You can define application behavior by providing information in the following sections: - -| Key | Descriptions | -| :--- | :--- | -| `Chart version` | Select the Chart Version using which you want to deploy the application.
Refer [Chart Version](../../../creating-application/base-config/deployment-template.md#choose-a-chart-version) section for more detail.
| -| `GUI` | You can perform a basic deployment configuration for your application in the **GUI** section instead of configuring the YAML file.
Refer [Basic Configuration](../../../creating-application/base-config/deployment-template.md#using-gui) section for more detail.
| -| `YAML` | If you want to do additional configurations, then click **YAML** for modifications.
Refer [YAML](#yaml) section for more detail.
| -| `Show application metrics` | You can enable `Show application metrics` to see your application's metrics-CPU Service Monitor usage, Memory Usage, Status, Throughput and Latency.
Refer [Application Metrics](../../../creating-application/app-metrics.md) for more detail.
| - - -{% hint style="warning" %} -### Note -Super-admins can lock keys in deployment template to prevent non-super-admins from modifying those locked keys. Refer [Lock Deployment Configuration](../../../global-configurations/lock-deployment-config.md) to know more. -{% endhint %} - - - ---- - -## YAML - -### Container Ports - -This defines ports on which application services will be exposed to other services - -```yaml -ContainerPort: - - envoyPort: 8799 - idleTimeout: - name: app - port: 8080 - servicePort: 80 - nodePort: 32056 - supportStreaming: true - useHTTP2: true -``` - -| Key | Description | -| :--- | :--- | -| `envoyPort` | envoy port for the container | -| `idleTimeout` | the duration of time that a connection is idle before the connection is terminated | -| `name` | name of the port | -| `port` | port for the container | -| `servicePort` | port of the corresponding kubernetes service | -| `nodePort` | nodeport of the corresponding kubernetes service | -| `supportStreaming` | Used for high performance protocols like grpc where timeout needs to be disabled | -| `useHTTP2` | Envoy container can accept HTTP2 requests | - -### EnvVariables -```yaml -EnvVariables: [] -``` -To set environment variables for the containers that run in the Pod. - -### EnvVariablesFromFieldPath -```yaml -EnvVariablesFromFieldPath: -- name: ENV_NAME - fieldPath: status.podIP (example) -``` -To set environment variables for the containers and fetching their values from pod-level fields. - -### Liveness Probe - -If this check fails, kubernetes restarts the pod. This should return error code in case of non-recoverable error. - -```yaml -LivenessProbe: - Path: "" - port: 8080 - initialDelaySeconds: 20 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 5 - failureThreshold: 3 - httpHeaders: - - name: Custom-Header - value: abc - scheme: "" - tcp: true -``` - -| Key | Description | -| :--- | :--- | -| `Path` | It define the path where the liveness needs to be checked | -| `initialDelaySeconds` | It defines the time to wait before a given container is checked for liveliness | -| `periodSeconds` | It defines the time to check a given container for liveness | -| `successThreshold` | It defines the number of successes required before a given container is said to fulfill the liveness probe | -| `timeoutSeconds` | It defines the time for checking timeout | -| `failureThreshold` | It defines the maximum number of failures that are acceptable before a given container is not considered as live | -| `httpHeaders` | Custom headers to set in the request. HTTP allows repeated headers, you can override the default headers by defining .httpHeaders for the probe. | -| `scheme` | Scheme to use for connecting to the host (HTTP or HTTPS). Defaults to HTTP. -| `tcp` | The kubelet will attempt to open a socket to your container on the specified port. If it can establish a connection, the container is considered healthy. | - - -### MaxUnavailable - -```yaml - MaxUnavailable: 0 -``` -The maximum number of pods that can be unavailable during the update process. The value of "MaxUnavailable: " can be an absolute number or percentage of the replicas count. The default value of "MaxUnavailable: " is 25%. - -### MaxSurge - -```yaml -MaxSurge: 1 -``` -The maximum number of pods that can be created over the desired number of pods. For "MaxSurge: " also, the value can be an absolute number or percentage of the replicas count. -The default value of "MaxSurge: " is 25%. - -### Min Ready Seconds - -```yaml -MinReadySeconds: 60 -``` -This specifies the minimum number of seconds for which a newly created Pod should be ready without any of its containers crashing, for it to be considered available. This defaults to 0 (the Pod will be considered available as soon as it is ready). - -### Readiness Probe - -If this check fails, kubernetes stops sending traffic to the application. This should return error code in case of errors which can be recovered from if traffic is stopped. - -```yaml -ReadinessProbe: - Path: "" - port: 8080 - initialDelaySeconds: 20 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 5 - failureThreshold: 3 - httpHeaders: - - name: Custom-Header - value: abc - scheme: "" - tcp: true -``` - -| Key | Description | -| :--- | :--- | -| `Path` | It define the path where the readiness needs to be checked | -| `initialDelaySeconds` | It defines the time to wait before a given container is checked for readiness | -| `periodSeconds` | It defines the time to check a given container for readiness | -| `successThreshold` | It defines the number of successes required before a given container is said to fulfill the readiness probe | -| `timeoutSeconds` | It defines the time for checking timeout | -| `failureThreshold` | It defines the maximum number of failures that are acceptable before a given container is not considered as ready | -| `httpHeaders` | Custom headers to set in the request. HTTP allows repeated headers, you can override the default headers by defining .httpHeaders for the probe. | -| `scheme` | Scheme to use for connecting to the host (HTTP or HTTPS). Defaults to HTTP. -| `tcp` | The kubelet will attempt to open a socket to your container on the specified port. If it can establish a connection, the container is considered healthy. | - -### Pod Disruption Budget - -You can create `PodDisruptionBudget` for each application. A PDB limits the number of pods of a replicated application that are down simultaneously from voluntary disruptions. For example, an application would like to ensure the number of replicas running is never brought below the certain number. - -```yaml -podDisruptionBudget: - minAvailable: 1 -``` - -or - -```yaml -podDisruptionBudget: - maxUnavailable: 50% -``` - -You can specify either `maxUnavailable` or `minAvailable` in a PodDisruptionBudget and it can be expressed as integers or as a percentage. - -| Key | Description | -| :--- | :--- | -| `minAvailable` | Evictions are allowed as long as they leave behind 1 or more healthy pods of the total number of desired replicas. | -| `maxUnavailable` | Evictions are allowed as long as at most 1 unhealthy replica among the total number of desired replicas. | - -### Ambassador Mappings - -You can create ambassador mappings to access your applications from outside the cluster. At its core a Mapping resource maps a resource to a service. - -```yaml -ambassadorMapping: - ambassadorId: "prod-emissary" - cors: {} - enabled: true - hostname: devtron.example.com - labels: {} - prefix: / - retryPolicy: {} - rewrite: "" - tls: - context: "devtron-tls-context" - create: false - hosts: [] - secretName: "" -``` - -| Key | Description | -| :--- | :--- | -| `enabled` | Set true to enable ambassador mapping else set false| -| `ambassadorId` | used to specify id for specific ambassador mappings controller | -| `cors` | used to specify cors policy to access host for this mapping | -| `weight` | used to specify weight for canary ambassador mappings | -| `hostname` | used to specify hostname for ambassador mapping | -| `prefix` | used to specify path for ambassador mapping | -| `labels` | used to provide custom labels for ambassador mapping | -| `retryPolicy` | used to specify retry policy for ambassador mapping | -| `corsPolicy` | Provide cors headers on flagger resource | -| `rewrite` | used to specify whether to redirect the path of this mapping and where | -| `tls` | used to create or define ambassador TLSContext resource | -| `extraSpec` | used to provide extra spec values which not present in deployment template for ambassador resource | - -### Autoscaling - -This is connected to HPA and controls scaling up and down in response to request load. - -```yaml -autoscaling: - enabled: false - MinReplicas: 1 - MaxReplicas: 2 - TargetCPUUtilizationPercentage: 90 - TargetMemoryUtilizationPercentage: 80 - extraMetrics: [] -``` - -| Key | Description | -| :--- | :--- | -| `enabled` | Set true to enable autoscaling else set false | -| `MinReplicas` | Minimum number of replicas allowed for scaling | -| `MaxReplicas` | Maximum number of replicas allowed for scaling | -| `TargetCPUUtilizationPercentage` | The target CPU utilization that is expected for a container | -| `TargetMemoryUtilizationPercentage` | The target memory utilization that is expected for a container | -| `extraMetrics` | Used to give external metrics for autoscaling | - -### Flagger - -You can use flagger for canary releases with deployment objects. It supports flexible traffic routing with istio service mesh as well. - -```yaml -flaggerCanary: - addOtherGateways: [] - addOtherHosts: [] - analysis: - interval: 15s - maxWeight: 50 - stepWeight: 5 - threshold: 5 - annotations: {} - appProtocol: http - corsPolicy: - allowCredentials: false - allowHeaders: - - x-some-header - allowMethods: - - GET - allowOrigin: - - example.com - maxAge: 24h - createIstioGateway: - annotations: {} - enabled: false - host: example.com - labels: {} - tls: - enabled: false - secretName: example-tls-secret - enabled: false - gatewayRefs: null - headers: - request: - add: - x-some-header: value - labels: {} - loadtest: - enabled: true - url: http://flagger-loadtester.istio-system/ - match: - - uri: - prefix: / - port: 8080 - portDiscovery: true - retries: null - rewriteUri: / - targetPort: 8080 - thresholds: - latency: 500 - successRate: 90 - timeout: null -``` - -| Key | Description | -| :--- | :--- | -| `enabled` | Set true to enable canary releases using flagger else set false | -| `addOtherGateways` | To provide multiple istio gateways for flagger | -| `addOtherHosts` | Add multiple hosts for istio service mesh with flagger | -| `analysis` | Define how the canary release should progress and at what interval | -| `annotations` | Annotation to add on flagger resource | -| `labels` | Labels to add on flagger resource | -| `appProtocol` | Protocol to use for canary | -| `corsPolicy` | Provide cors headers on flagger resource | -| `createIstioGateway` | Set to true if you want to create istio gateway as well with flagger | -| `headers` | Add headers if any | -| `loadtest` | Enable load testing for your canary release | - - - -### Fullname Override - -```yaml -fullnameOverride: app-name -``` -`fullnameOverride` replaces the release fullname created by default by devtron, which is used to construct Kubernetes object names. By default, devtron uses {app-name}-{environment-name} as release fullname. - -### Image - -```yaml -image: - pullPolicy: IfNotPresent -``` - -Image is used to access images in kubernetes, pullpolicy is used to define the instances calling the image, here the image is pulled when the image is not present,it can also be set as "Always". - -### imagePullSecrets - -`imagePullSecrets` contains the docker credentials that are used for accessing a registry. - -```yaml -imagePullSecrets: - - regcred -``` -regcred is the secret that contains the docker credentials that are used for accessing a registry. Devtron will not create this secret automatically, you'll have to create this secret using dt-secrets helm chart in the App store or create one using kubectl. You can follow this documentation Pull an Image from a Private Registry [https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/](https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/) . - -### serviceAccount - -```yaml -serviceAccount: - create: false - name: "" - annotations: {} -``` - -| Key | Description | -| :--- | :--- | -| `enabled` | Determines whether to create a ServiceAccount for pods or not. If set to `true`, a ServiceAccount will be created. | -| `name` | Specifies the name of the ServiceAccount to use. | -| `annotations` | Specify annotations for the ServiceAccount. | - -### HostAliases - - the hostAliases field is used in a Pod specification to associate additional hostnames with the Pod's IP address. This can be helpful in scenarios where you need to resolve specific hostnames to the Pod's IP within the Pod itself. - -```yaml - hostAliases: - - ip: "192.168.1.10" - hostnames: - - "hostname1.example.com" - - "hostname2.example.com" - - ip: "192.168.1.11" - hostnames: - - "hostname3.example.com" -``` - -### Ingress - -This allows public access to the url, please ensure you are using right nginx annotation for nginx class, its default value is nginx - -```yaml -ingress: - enabled: false - # For K8s 1.19 and above use ingressClassName instead of annotation kubernetes.io/ingress.class: - className: nginx - annotations: {} - hosts: - - host: example1.com - paths: - - /example - - host: example2.com - paths: - - /example2 - - /example2/healthz - tls: [] -``` -Legacy deployment-template ingress format - -```yaml -ingress: - enabled: false - # For K8s 1.19 and above use ingressClassName instead of annotation kubernetes.io/ingress.class: - ingressClassName: nginx-internal - annotations: {} - path: "" - host: "" - tls: [] -``` - -| Key | Description | -| :--- | :--- | -| `enabled` | Enable or disable ingress | -| `annotations` | To configure some options depending on the Ingress controller | -| `path` | Path name | -| `host` | Host name | -| `tls` | It contains security details | - -### Ingress Internal - -This allows private access to the url, please ensure you are using right nginx annotation for nginx class, its default value is nginx - -```yaml -ingressInternal: - enabled: false - # For K8s 1.19 and above use ingressClassName instead of annotation kubernetes.io/ingress.class: - ingressClassName: nginx-internal - annotations: {} - hosts: - - host: example1.com - paths: - - /example - - host: example2.com - paths: - - /example2 - - /example2/healthz - tls: [] -``` - -| Key | Description | -| :--- | :--- | -| `enabled` | Enable or disable ingress | -| `annotations` | To configure some options depending on the Ingress controller | -| `path` | Path name | -| `host` | Host name | -| `tls` | It contains security details | - -### Init Containers -```yaml -initContainers: - - reuseContainerImage: true - securityContext: - runAsUser: 1000 - runAsGroup: 3000 - fsGroup: 2000 - volumeMounts: - - mountPath: /etc/ls-oms - name: ls-oms-cm-vol - command: - - flyway - - -configFiles=/etc/ls-oms/flyway.conf - - migrate - - - name: nginx - image: nginx:1.14.2 - securityContext: - privileged: true - ports: - - containerPort: 80 - command: ["/usr/local/bin/nginx"] - args: ["-g", "daemon off;"] -``` -Specialized containers that run before app containers in a Pod. Init containers can contain utilities or setup scripts not present in an app image. One can use base image inside initContainer by setting the reuseContainerImage flag to `true`. - -### Pause For Seconds Before Switch Active -```yaml -pauseForSecondsBeforeSwitchActive: 30 -``` -To wait for given period of time before switch active the container. - -### Resources - -These define minimum and maximum RAM and CPU available to the application. - -```yaml -resources: - limits: - cpu: "1" - memory: "200Mi" - requests: - cpu: "0.10" - memory: "100Mi" -``` - -Resources are required to set CPU and memory usage. - -#### Limits - -Limits make sure a container never goes above a certain value. The container is only allowed to go up to the limit, and then it is restricted. - -#### Requests - -Requests are what the container is guaranteed to get. - -### Service - -This defines annotations and the type of service, optionally can define name also. - -```yaml - service: - type: ClusterIP - annotations: {} -``` - -### Volumes - -```yaml -volumes: - - name: log-volume - emptyDir: {} - - name: logpv - persistentVolumeClaim: - claimName: logpvc -``` - -It is required when some values need to be read from or written to an external disk. - -### Volume Mounts - -```yaml -volumeMounts: - - mountPath: /var/log/nginx/ - name: log-volume - - mountPath: /mnt/logs - name: logpvc - subPath: employee -``` - -It is used to provide mounts to the volume. - -### Affinity and anti-affinity - -```yaml -Spec: - Affinity: - Key: - Values: -``` - -Spec is used to define the desire state of the given container. - -Node Affinity allows you to constrain which nodes your pod is eligible to schedule on, based on labels of the node. - -Inter-pod affinity allow you to constrain which nodes your pod is eligible to be scheduled based on labels on pods. - -#### Key - -Key part of the label for node selection, this should be same as that on node. Please confirm with devops team. - -#### Values - -Value part of the label for node selection, this should be same as that on node. Please confirm with devops team. - -### Tolerations - -```yaml -tolerations: - - key: "key" - operator: "Equal" - value: "value" - effect: "NoSchedule|PreferNoSchedule|NoExecute(1.6 only)" -``` - -Taints are the opposite, they allow a node to repel a set of pods. - -A given pod can access the given node and avoid the given taint only if the given pod satisfies a given taint. - -Taints and tolerations are a mechanism which work together that allows you to ensure that pods are not placed on inappropriate nodes. Taints are added to nodes, while tolerations are defined in the pod specification. When you taint a node, it will repel all the pods except those that have a toleration for that taint. A node can have one or many taints associated with it. - -### Arguments - -```yaml -args: - enabled: false - value: [] -``` - -This is used to give arguments to command. - -### Command - -```yaml -command: - enabled: false - value: [] -``` - -It contains the commands for the server. - -| Key | Description | -| :--- | :--- | -| `enabled` | To enable or disable the command | -| `value` | It contains the commands | - - -### Containers -Containers section can be used to run side-car containers along with your main container within same pod. Containers running within same pod can share volumes and IP Address and can address each other @localhost. We can use base image inside container by setting the reuseContainerImage flag to `true`. - -```yaml - containers: - - name: nginx - image: nginx:1.14.2 - ports: - - containerPort: 80 - command: ["/usr/local/bin/nginx"] - args: ["-g", "daemon off;"] - - reuseContainerImage: true - securityContext: - runAsUser: 1000 - runAsGroup: 3000 - fsGroup: 2000 - volumeMounts: - - mountPath: /etc/ls-oms - name: ls-oms-cm-vol - command: - - flyway - - -configFiles=/etc/ls-oms/flyway.conf - - migrate -``` - -### Container Lifecycle Hooks - -Container lifecycle hooks are mechanisms that allow users to define custom actions to be performed at specific stages of a container's lifecycle i.e. PostStart or PreStop. - -```yaml -containerSpec: - lifecycle: - enabled: false - postStart: - httpGet: - host: example.com - path: /example - port: 90 - preStop: - exec: - command: - - sleep - - "10" -``` - -| Key | Description | -| :--- | :--- | -| `containerSpec` | containerSpec to define container lifecycle hooks configuration | -| `lifecycle` | Lifecycle hooks for the container | -| `enabled` | Set true to enable lifecycle hooks for the container else set false | -| `postStart` | The postStart hook is executed immediately after a container is created | -| `httpsGet` | Sends an HTTP GET request to a specific endpoint on the container | -| `host` | Specifies the host (example.com) to which the HTTP GET request will be sent | -| `path` | Specifies the path (/example) of the endpoint to which the HTTP GET request will be sent | -| `port` | Specifies the port (90) on the host where the HTTP GET request will be sent | -| `preStop` | The preStop hook is executed just before the container is stopped | -| `exec` | Executes a specific command, such as pre-stop.sh, inside the cgroups and namespaces of the container | -| `command` | The command to be executed is sleep 10, which tells the container to sleep for 10 seconds before it is stopped | - -### Prometheus - -```yaml - prometheus: - release: monitoring -``` - -It is a kubernetes monitoring tool and the name of the file to be monitored as monitoring in the given case. It describes the state of the Prometheus. - -### rawYaml - -```yaml -rawYaml: - - apiVersion: v1 - kind: Service - metadata: - name: my-service - spec: - selector: - app: MyApp - ports: - - protocol: TCP - port: 80 - targetPort: 9376 - type: ClusterIP -``` -Accepts an array of Kubernetes objects. You can specify any kubernetes yaml here and it will be applied when your app gets deployed. - -### Grace Period - -```yaml -GracePeriod: 30 -``` -Kubernetes waits for the specified time called the termination grace period before terminating the pods. By default, this is 30 seconds. If your pod usually takes longer than 30 seconds to shut down gracefully, make sure you increase the `GracePeriod`. - -A Graceful termination in practice means that your application needs to handle the SIGTERM message and begin shutting down when it receives it. This means saving all data that needs to be saved, closing down network connections, finishing any work that is left, and other similar tasks. - -There are many reasons why Kubernetes might terminate a perfectly healthy container. If you update your deployment with a rolling update, Kubernetes slowly terminates old pods while spinning up new ones. If you drain a node, Kubernetes terminates all pods on that node. If a node runs out of resources, Kubernetes terminates pods to free those resources. It’s important that your application handle termination gracefully so that there is minimal impact on the end user and the time-to-recovery is as fast as possible. - - -### Server - -```yaml -server: - deployment: - image_tag: 1-95a53 - image: "" -``` - -It is used for providing server configurations. - -#### Deployment - -It gives the details for deployment. - -| Key | Description | -| :--- | :--- | -| `image_tag` | It is the image tag | -| `image` | It is the URL of the image | - -### Service Monitor - -```yaml -servicemonitor: - enabled: true - path: /abc - scheme: 'http' - interval: 30s - scrapeTimeout: 20s - metricRelabelings: - - sourceLabels: [namespace] - regex: '(.*)' - replacement: myapp - targetLabel: target_namespace -``` - -It gives the set of targets to be monitored. - -### Db Migration Config - -```yaml -dbMigrationConfig: - enabled: false -``` - -It is used to configure database migration. - -### Istio - -These Istio configurations collectively provide a comprehensive set of tools for controlling access, authenticating requests, enforcing security policies, and configuring traffic behavior within a microservices architecture. The specific settings you choose would depend on your security and traffic management requirements. - -```yaml -istio: - enable: true - - gateway: - enabled: true - labels: - app: my-gateway - annotations: - description: "Istio Gateway for external traffic" - host: "example.com" - tls: - enabled: true - secretName: my-tls-secret - - virtualService: - enabled: true - labels: - app: my-service - annotations: - description: "Istio VirtualService for routing" - gateways: - - my-gateway - hosts: - - "example.com" - http: - - match: - - uri: - prefix: /v1 - route: - - destination: - host: my-service-v1 - subset: version-1 - - match: - - uri: - prefix: /v2 - route: - - destination: - host: my-service-v2 - subset: version-2 - - destinationRule: - enabled: true - labels: - app: my-service - annotations: - description: "Istio DestinationRule for traffic policies" - subsets: - - name: version-1 - labels: - version: "v1" - - name: version-2 - labels: - version: "v2" - trafficPolicy: - connectionPool: - tcp: - maxConnections: 100 - outlierDetection: - consecutiveErrors: 5 - interval: 30s - baseEjectionTime: 60s - - peerAuthentication: - enabled: true - labels: - app: my-service - annotations: - description: "Istio PeerAuthentication for mutual TLS" - selector: - matchLabels: - version: "v1" - mtls: - mode: STRICT - portLevelMtls: - 8080: - mode: DISABLE - - requestAuthentication: - enabled: true - labels: - app: my-service - annotations: - description: "Istio RequestAuthentication for JWT validation" - selector: - matchLabels: - version: "v1" - jwtRules: - - issuer: "issuer-1" - jwksUri: "https://issuer-1/.well-known/jwks.json" - - authorizationPolicy: - enabled: true - labels: - app: my-service - annotations: - description: "Istio AuthorizationPolicy for access control" - action: ALLOW - provider: - name: jwt - kind: Authorization - rules: - - from: - - source: - requestPrincipals: ["*"] - to: - - operation: - methods: ["GET"] -``` - -| Key | Description | -| :--- | :--- | -| `istio` | Istio enablement. When `istio.enable` set to true, Istio would be enabled for the specified configurations | -| `authorizationPolicy` | It allows you to define access control policies for service-to-service communication. | -| `action` | Determines whether to ALLOW or DENY the request based on the defined rules. | -| `provider` | Authorization providers are external systems or mechanisms used to make access control decisions. | -| `rules` | List of rules defining the authorization policy. Each rule can specify conditions and requirements for allowing or denying access. | -| `destinationRule` | It allows for the fine-tuning of traffic policies and load balancing for specific services. You can define subsets of a service and apply different traffic policies to each subset. | -| `subsets` | Specifies subsets within the service for routing and load balancing. | -| `trafficPolicy` | Policies related to connection pool size, outlier detection, and load balancing. | -| `gateway` | Allowing external traffic to enter the service mesh through the specified configurations. | -| `host` | The external domain through which traffic will be routed into the service mesh. | -| `tls` | Traffic to and from the gateway should be encrypted using TLS. | -| `secretName` | Specifies the name of the Kubernetes secret that contains the TLS certificate and private key. The TLS certificate is used for securing the communication between clients and the Istio gateway. | -| `peerAuthentication` | It allows you to enforce mutual TLS and control the authentication between services. | -| `mtls` | Mutual TLS. Mutual TLS is a security protocol that requires both client and server, to authenticate each other using digital certificates for secure communication. | -| `mode` | Mutual TLS mode, specifying how mutual TLS should be applied. Modes include STRICT, PERMISSIVE, and DISABLE. | -| `portLevelMtls` | Configures port-specific mTLS settings. Allows for fine-grained control over the application of mutual TLS on specific ports. | -| `selector` | Configuration for selecting workloads to apply PeerAuthentication. | -| `requestAuthentication` | Defines rules for authenticating incoming requests. | -| `jwtRules` | Rules for validating JWTs (JSON Web Tokens). It defines how incoming JWTs should be validated for authentication purposes. | -| `selector` | Specifies the conditions under which the RequestAuthentication rules should be applied. | -| `virtualService` | Enables the definition of rules for how traffic should be routed to different services within the service mesh. | -| `gateways` | Specifies the gateways to which the rules defined in the VirtualService apply. | -| `hosts` | List of hosts (domains) to which this VirtualService is applied. | -| `http` | Configuration for HTTP routes within the VirtualService. It define routing rules based on HTTP attributes such as URI prefixes, headers, timeouts, and retry policies. | - - -### KEDA Autoscaling -[KEDA](https://keda.sh) is a Kubernetes-based Event Driven Autoscaler. With KEDA, you can drive the scaling of any container in Kubernetes based on the number of events needing to be processed. KEDA can be installed into any Kubernetes cluster and can work alongside standard Kubernetes components like the Horizontal Pod Autoscaler(HPA). - -Example for autosccaling with KEDA using Prometheus metrics is given below: -```yaml -kedaAutoscaling: - enabled: true - minReplicaCount: 1 - maxReplicaCount: 2 - idleReplicaCount: 0 - pollingInterval: 30 - advanced: - restoreToOriginalReplicaCount: true - horizontalPodAutoscalerConfig: - behavior: - scaleDown: - stabilizationWindowSeconds: 300 - policies: - - type: Percent - value: 100 - periodSeconds: 15 - triggers: - - type: prometheus - metadata: - serverAddress: http://:9090 - metricName: http_request_total - query: envoy_cluster_upstream_rq{appId="300", cluster_name="300-0", container="envoy",} - threshold: "50" - triggerAuthentication: - enabled: false - name: - spec: {} - authenticationRef: {} -``` -Example for autosccaling with KEDA based on kafka is given below : -```yaml -kedaAutoscaling: - enabled: true - minReplicaCount: 1 - maxReplicaCount: 2 - idleReplicaCount: 0 - pollingInterval: 30 - advanced: {} - triggers: - - type: kafka - metadata: - bootstrapServers: b-2.kafka-msk-dev.example.c2.kafka.ap-southeast-1.amazonaws.com:9092,b-3.kafka-msk-dev.example.c2.kafka.ap-southeast-1.amazonaws.com:9092,b-1.kafka-msk-dev.example.c2.kafka.ap-southeast-1.amazonaws.com:9092 - topic: Orders-Service-ESP.info - lagThreshold: "100" - consumerGroup: oders-remove-delivered-packages - allowIdleConsumers: "true" - triggerAuthentication: - enabled: true - name: keda-trigger-auth-kafka-credential - spec: - secretTargetRef: - - parameter: sasl - name: keda-kafka-secrets - key: sasl - - parameter: username - name: keda-kafka-secrets - key: username - authenticationRef: - name: keda-trigger-auth-kafka-credential -``` - -### NetworkPolicy - -Kubernetes NetworkPolicies control pod communication by defining rules for incoming and outgoing traffic. - -```yaml -networkPolicy: - enabled: false - annotations: {} - labels: {} - podSelector: - matchLabels: - role: db - policyTypes: - - Ingress - - Egress - ingress: - - from: - - ipBlock: - cidr: 172.17.0.0/16 - except: - - 172.17.1.0/24 - - namespaceSelector: - matchLabels: - project: myproject - - podSelector: - matchLabels: - role: frontend - ports: - - protocol: TCP - port: 6379 - egress: - - to: - - ipBlock: - cidr: 10.0.0.0/24 - ports: - - protocol: TCP - port: 5978 -``` - -| Key | Description | -| :--- | :--- | -| `enabled` | Enable or disable NetworkPolicy. | -| `annotations` | Additional metadata or information associated with the NetworkPolicy. | -| `labels` | Labels to apply to the NetworkPolicy. -| `podSelector` | Each NetworkPolicy includes a podSelector which selects the grouping of pods to which the policy applies. The example policy selects pods with the label "role=db". An empty podSelector selects all pods in the namespace.| -| `policyTypes` | Each NetworkPolicy includes a policyTypes list which may include either Ingress, Egress, or both. | -| `Ingress` | Controls incoming traffic to pods. | -| `Egress` | Controls outgoing traffic from pods. | - -### Winter-Soldier -Winter Soldier can be used to -- cleans up (delete) Kubernetes resources -- reduce workload pods to 0 - -**_NOTE:_** After deploying this we can create the Hibernator object and provide the custom configuration by which workloads going to delete, sleep and many more. for more information check [the main repo](https://github.com/devtron-labs/winter-soldier) - -Given below is template values you can give in winter-soldier: -```yaml -winterSoldier: - enabled: false - apiVersion: pincher.devtron.ai/v1alpha1 - action: sleep - timeRangesWithZone: - timeZone: "Asia/Kolkata" - timeRanges: [] - targetReplicas: [] - fieldSelector: [] -``` - -| Key | values | Description | -| :--- | :--- | :--- | -| `enabled` | `false`,`true` | decide the enabling factor | -| `apiVersion` | `pincher.devtron.ai/v1beta1`, `pincher.devtron.ai/v1alpha1` | specific api version | -| `action` | `sleep`,`delete`, `scale` | This specify the action need to perform. | -| `timeRangesWithZone`:`timeZone` | eg:- `"Asia/Kolkata"`,`"US/Pacific"` | It use to specify the timeZone used. (It uses standard format. please refer [this](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)) | -| `timeRangesWithZone`:`timeRanges` | array of [ `timeFrom`, `timeTo`, `weekdayFrom`, `weekdayTo`] | It use to define time period/range on which the user need to perform the specified action. you can have multiple timeRanges.
These settings will take `action` on Sat and Sun from 00:00 to 23:59:59, | -| `targetReplicas` | `[n]` : n - number of replicas to scale. | These is mandatory field when the `action` is `scale`
Default value is `[]`. | -| `fieldSelector` | `- AfterTime(AddTime( ParseTime({{metadata.creationTimestamp}}, '2006-01-02T15:04:05Z'), '5m'), Now()) ` | These value will take a list of methods to select the resources on which we perform specified `action` . | - - -here is an example, -```yaml -winterSoldier: - apiVersion: pincher.devtron.ai/v1alpha1 - enabled: true - annotations: {} - labels: {} - timeRangesWithZone: - timeZone: "Asia/Kolkata" - timeRanges: - - timeFrom: 00:00 - timeTo: 23:59:59 - weekdayFrom: Sat - weekdayTo: Sun - - timeFrom: 00:00 - timeTo: 08:00 - weekdayFrom: Mon - weekdayTo: Fri - - timeFrom: 20:00 - timeTo: 23:59:59 - weekdayFrom: Mon - weekdayTo: Fri - action: scale - targetReplicas: [1,1,1] - fieldSelector: - - AfterTime(AddTime( ParseTime({{metadata.creationTimestamp}}, '2006-01-02T15:04:05Z'), '10h'), Now()) -``` -Above settings will take action on `Sat` and `Sun` from 00:00 to 23:59:59, and on `Mon`-`Fri` from 00:00 to 08:00 and 20:00 to 23:59:59. If `action:sleep` then runs hibernate at timeFrom and unhibernate at `timeTo`. If `action: delete` then it will delete workloads at `timeFrom` and `timeTo`. Here the `action:scale` thus it scale the number of resource replicas to `targetReplicas: [1,1,1]`. Here each element of `targetReplicas` array is mapped with the corresponding elements of array `timeRangesWithZone/timeRanges`. Thus make sure the length of both array is equal, otherwise the cnages cannot be observed. - -The above example will select the application objects which have been created 10 hours ago across all namespaces excluding application's namespace. Winter soldier exposes following functions to handle time, cpu and memory. - -- ParseTime - This function can be used to parse time. For eg to parse creationTimestamp use ParseTime({{metadata.creationTimestamp}}, '2006-01-02T15:04:05Z') -- AddTime - This can be used to add time. For eg AddTime(ParseTime({{metadata.creationTimestamp}}, '2006-01-02T15:04:05Z'), '-10h') ll add 10h to the time. Use d for day, h for hour, m for minutes and s for seconds. Use negative number to get earlier time. -- Now - This can be used to get current time. -- CpuToNumber - This can be used to compare CPU. For eg any({{spec.containers.#.resources.requests}}, { MemoryToNumber(.memory) < MemoryToNumber('60Mi')}) will check if any resource.requests is less than 60Mi. - - -### Security Context -A security context defines privilege and access control settings for a Pod or Container. - -To add a security context for main container: -```yaml -containerSecurityContext: - allowPrivilegeEscalation: false -``` - -To add a security context on pod level: -```yaml -podSecurityContext: - runAsUser: 1000 - runAsGroup: 3000 - fsGroup: 2000 -``` - -### Topology Spread Constraints -You can use topology spread constraints to control how Pods are spread across your cluster among failure-domains such as regions, zones, nodes, and other user-defined topology domains. This can help to achieve high availability as well as efficient resource utilization. - -```yaml -topologySpreadConstraints: - - maxSkew: 1 - topologyKey: zone - whenUnsatisfiable: DoNotSchedule - autoLabelSelector: true - customLabelSelector: {} -``` - -### Deployment Metrics - -It gives the realtime metrics of the deployed applications - -| Key | Description | -| :--- | :--- | -| `Deployment Frequency` | It shows how often this app is deployed to production | -| `Change Failure Rate` | It shows how often the respective pipeline fails | -| `Mean Lead Time` | It shows the average time taken to deliver a change to production | -| `Mean Time to Recovery` | It shows the average time taken to fix a failed pipeline | - ---- - -## 4. Show Application Metrics - -If you want to see application metrics like different HTTP status codes metrics, application throughput, latency, response time. Enable the Application metrics from below the deployment template Save button. After enabling it, you should be able to see all metrics on App detail page. By default it remains disabled. - -![Figure 2: Application Metrics](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/deployment-template/deployment_application_metrics.jpg) - -Once all the Deployment template configurations are done, click on `Save` to save your deployment configuration. Now you are ready to create [Workflow](../../workflow/README.md) to do CI/CD. - -### Helm Chart Json Schema - -Helm Chart [json schema](https://github.com/devtron-labs/devtron/blob/main/scripts/devtron-reference-helm-charts/reference-chart_5-1-0/schema.json) is used to validate the deployment template values. - -### Other Validations in Json Schema - -The values of CPU and Memory in limits must be greater than or equal to in requests respectively. Similarly, In case of envoyproxy, the values of limits are greater than or equal to requests as mentioned below. -``` -resources.limits.cpu >= resources.requests.cpu -resources.limits.memory >= resources.requests.memory -envoyproxy.resources.limits.cpu >= envoyproxy.resources.requests.cpu -envoyproxy.resources.limits.memory >= envoyproxy.resources.requests.memory -``` diff --git a/docs/user-guide/creating-application/base-config/deployment-template/job-and-cronjob.md b/docs/user-guide/creating-application/base-config/deployment-template/job-and-cronjob.md deleted file mode 100644 index be8c454a1c..0000000000 --- a/docs/user-guide/creating-application/base-config/deployment-template/job-and-cronjob.md +++ /dev/null @@ -1,72 +0,0 @@ -# Job and CronJob - - -This chart deploys Job & CronJob. A Job is a controller object that represents a finite task and CronJob is used to schedule the creation of Jobs. - - * [Job](#id-1.-job) - * [CronJob](#id-2.-cronjob) - -![Figure 1: Choosing 'Job & CronJob' Chart](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/deployment-template/job-cronjob.jpg) - -## 1. Job - -A Job creates one or more Pods and will continue to retry execution of the Pods until a specified number of them successfully terminate. As pods successfully complete, the Job tracks the successful completions. When a specified number of successful completions is reached, the task (ie, Job) is complete. Deleting a Job will clean up the Pods it created. Suspeding a Job will delete its active Pods until the Job is resumed again. - -## **Example:** - -```yaml -kind: Job -jobConfigs: - activeDeadlineSeconds: 120 - backoffLimit: 6 - completions: 1 - parallelism: 1 - suspend: false - ttlSecondsAfterFinished: 100 -``` - -| Key | Description | -| :--- | :--- | -| `activeDeadlineSeconds` | Another way to terminate a Job is by setting an active deadline. Do this by setting the activeDeadlineSeconds field of the Job to a number of seconds. The activeDeadlineSeconds applies to the duration of the job, no matter how many Pods are created. Once a Job reaches activeDeadlineSeconds, all of its running Pods are terminated and the Job status will become type: Failed with reason: DeadlineExceeded. | -| `backoffLimit` | There are situations where you want to fail a Job after some amount of retries due to a logical error in configuration etc. To do so, set backoffLimit to specify the number of retries before considering a Job as failed. The back-off limit is set by default to 6. Failed Pods associated with the Job are recreated by the Job controller with an exponential back-off delay (10s, 20s, 40s ...) capped at six minutes. The back-off count is reset when a Job's Pod is deleted or successful without any other Pods for the Job failing around that time. | -| `completions` | Jobs with fixed completion count - that is , jobs that have non null completions - can have a completion mode that is specified in completionMode. | -| `parallelism` | The requested parallelism can be set to any non-negative value. If it is unspecified, it defaults to 1. If it is specified as 0, then the Job is effectively paused until it is increased. | -| `suspend` | The suspend field is also optional. If it is set to true, all subsequent executions are suspended. This setting does not apply to already started executions. Defaults to false. | -| `ttlSecondsAfterFinished` | The TTL controller only supports Jobs for now. A cluster operator can use this feature to clean up finished Jobs (either Complete or Failed) automatically by specifying the ttlSecondsAfterFinished field of a Job, as in this example. The TTL controller will assume that a resource is eligible to be cleaned up TTL seconds after the resource has finished, in other words, when the TTL has expired. When the TTL controller cleans up a resource, it will delete it cascadingly, that is to say it will delete its dependent objects together with it. Note that when the resource is deleted, its lifecycle guarantees, such as finalizers, will be honored. | -| `kind` | As with all other Kubernetes config, a Job and cronjob needs apiVersion, kind.cronjob and job also needs a section fields which is optional . these fields specify to deploy which job (conjob or job) should be kept. by default, they are set job. | - - -## 2. CronJob - -A CronJob creates jobs on a repeating schedule. One Cronjob object is like one line of a crontab (cron table) file. It runs a job periodically on a given schedule, written in Cron format. - CronJobs are meant for performing regular scheduled actions such as backups, report generation, and so on. Each task must be configured to recur indefinitely (as an example: once a day / week / month). You can schedule the time within that interval when the job should start. - - ## **Example:** - -```yaml -kind: CronJob -cronjobConfigs: - concurrencyPolicy: Allow - failedJobsHistoryLimit: 1 - restartPolicy: OnFailure - schedule: 32 8 * * * - startingDeadlineSeconds: 100 - successfulJobsHistoryLimit: 3 - suspend: false -``` - -| Key | Descriptions | -| :--- | :--- | -| `concurrencyPolicy` | A CronJob is counted as missed if it has failed to be created at its scheduled time. For example, If concurrencyPolicy is set to Forbid and a CronJob was attempted to be scheduled when there was a previous schedule still running, then it would count as missed,`Acceptable values: Allow / Forbid`. | -| `failedJobsHistoryLimit` | The failedJobsHistoryLimit fields are optional. These fields specify how many completed and failed jobs should be kept. By default, they are set to 3 and 1 respectively. Setting a limit to 0 corresponds to keeping none of the corresponding kind of jobs after they finish. | -| `restartPolicy` | The spec of a Pod has a restartPolicy field with possible values Always, OnFailure, and Never. The default value is Always.The restartPolicy applies to all containers in the Pod. restartPolicy only refers to restarts of the containers by the kubelet on the same node. After containers in a Pod exit, the kubelet restarts them with an exponential back-off delay (10s, 20s, 40s, …), that is capped at five minutes. Once a container has executed for 10 minutes without any problems, the kubelet resets the restart backoff timer for that container, `Acceptable values: Always / OnFailure / Never`. | -| `schedule` | To generate Cronjob schedule expressions, you can also use web tools like https://crontab.guru/. | -| `startingDeadlineSeconds` | If startingDeadlineSeconds is set to a large value or left unset (the default) and if concurrencyPolicy is set to Allow, the jobs will always run at least once. | -| `successfulJobsHistoryLimit` | The successfulJobsHistoryLimit fields are optional. These fields specify how many completed and failed jobs should be kept. By default, they are set to 3 and 1 respectively. Setting a limit to 0 corresponds to keeping none of the corresponding kind of jobs after they finish. | -| `suspend` | The suspend field is also optional. If it is set to true, all subsequent executions are suspended. This setting does not apply to already started executions. Defaults to false. | -| `kind` | As with all other Kubernetes config, a Job and cronjob needs apiVersion, kind.cronjob and job also needs a section fields which is optional . these fields specify to deploy which job (conjob or job) should be kept. by default, they are set cronjob. | - -{% hint style="warning" %} -### Note -Super-admins can lock keys in Job & CronJob deployment template to prevent non-super-admins from modifying those locked keys. Refer [Lock Deployment Configuration](../../../global-configurations/lock-deployment-config.md) to know more. -{% endhint %} \ No newline at end of file diff --git a/docs/user-guide/creating-application/base-config/deployment-template/rollout-deployment.md b/docs/user-guide/creating-application/base-config/deployment-template/rollout-deployment.md deleted file mode 100644 index 7d7431f694..0000000000 --- a/docs/user-guide/creating-application/base-config/deployment-template/rollout-deployment.md +++ /dev/null @@ -1,1206 +0,0 @@ - -# Rollout Deployment - -The `Rollout Deployment` chart deploys an advanced version of deployment that supports Blue/Green and Canary deployments. For functioning, it requires a rollout controller to run inside the cluster. - -![Figure 1: Choosing 'Rollout' Chart](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/deployment-template/dt-type-2.jpg) - -You can define application behavior by providing information in the following sections: - -| Key | Descriptions | -| :--- | :--- | -| `Chart version` | Select the Chart Version using which you want to deploy the application.
Refer [Chart Version](../../../creating-application/base-config/deployment-template.md#choose-a-chart-version) section for more detail.
| -| `GUI` | You can perform a basic deployment configuration for your application in the **GUI** section instead of configuring the YAML file.
Refer [Basic Configuration](../../../creating-application/base-config/deployment-template.md#using-gui) section for more detail.
| -| `YAML` | If you want to do additional configurations, then click **YAML** for modifications.
Refer [YAML](#yaml) section for more detail.
| -| `Show application metrics` | You can enable `Show application metrics` to see your application's metrics-CPU Service Monitor usage, Memory Usage, Status, Throughput and Latency.
Refer [Application Metrics](../../../creating-application/app-metrics.md) for more detail.
| - -{% hint style="warning" %} -### Note -Super-admins can lock keys in rollout deployment template to prevent non-super-admins from modifying those locked keys. Refer [Lock Deployment Configuration](../../../global-configurations/lock-deployment-config.md) to know more. -{% endhint %} - ---- - -## YAML - -### Container Ports - -This defines the ports on which application services will be exposed to other services. - -```yaml -ContainerPort: - - envoyPort: 8799 - envoyTimeout: 15s - idleTimeout: - name: app - port: 8080 - servicePort: 80 - supportStreaming: true - useHTTP2: true -``` - -| Key | Description | -| :--- | :--- | -| `envoyPort` | envoy port for the container. | -| `envoyTimeout` | envoy Timeout for the container,envoy supports a wide range of timeouts that may need to be configured depending on the deployment.By default the envoytimeout is 15s. | -| `idleTimeout` | the duration of time that a connection is idle before the connection is terminated. | -| `name` | name of the port. | -| `port` | port for the container. | -| `servicePort` | port of the corresponding kubernetes service. | -| `supportStreaming` | Used for high performance protocols like grpc where timeout needs to be disabled. | -| `useHTTP2` | Envoy container can accept HTTP2 requests. | - -### EnvVariables -```yaml -EnvVariables: [] -``` -`EnvVariables` provide run-time information to containers and allow to customize how the application works and the behavior of the applications on the system. - -Here we can pass the list of env variables , every record is an object which contain the `name` of variable along with `value`. - -To set environment variables for the containers that run in the Pod. - -### Example of EnvVariables - -`IMP` Docker image should have env variables, whatever we want to set. -```yaml -EnvVariables: - - name: HOSTNAME - value: www.xyz.com - - name: DB_NAME - value: mydb - - name: USER_NAME - value: xyz -``` - -But `ConfigMap` and `Secret` are the preferred way to inject env variables. You can create this in **Configurations** page of your app. - -### ConfigMap - -It is a centralized storage, specific to k8s namespace where key-value pairs are stored in plain text. - -![Figure 2: ConfigMap](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/config-maps/configure-configmap.jpg) - -### Secret - -It is a centralized storage, specific to k8s namespace where we can store the key-value pairs in plain text as well as in encrypted(`Base64`) form. - -![Figure 3: Secret](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/created-secret.jpg) - -`IMP` All key-values of `Secret` and `CofigMap` will reflect to your application. - -### Liveness Probe - -If this check fails, kubernetes restarts the pod. This should return error code in case of non-recoverable error. - -```yaml -LivenessProbe: - Path: "" - port: 8080 - initialDelaySeconds: 20 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 5 - failureThreshold: 3 - command: - - python - - /etc/app/healthcheck.py - httpHeaders: - - name: Custom-Header - value: abc - scheme: "" - tcp: true -``` - -| Key | Description | -| :--- | :--- | -| `Path` | It define the path where the liveness needs to be checked. | -| `initialDelaySeconds` | It defines the time to wait before a given container is checked for liveliness. | -| `periodSeconds` | It defines how often (in seconds) to perform the liveness probe. | -| `successThreshold` | It defines the number of successes required before a given container is said to fulfil the liveness probe. | -| `timeoutSeconds` | The maximum time (in seconds) for the probe to complete. | -| `failureThreshold` | The number of consecutive failures required to consider the probe as failed. | -| `command` | The mentioned command is executed to perform the livenessProbe. If the command returns a non-zero value, it's equivalent to a failed probe. | -| `httpHeaders` | Custom headers to set in the request. HTTP allows repeated headers,You can override the default headers by defining .httpHeaders for the probe. | -| `scheme` | Scheme to use for connecting to the host (HTTP or HTTPS). Defaults to HTTP. | -| `tcp` | The kubelet will attempt to open a socket to your container on the specified port. If it can establish a connection, the container is considered healthy. | - - -### MaxUnavailable - -```yaml - MaxUnavailable: 0 -``` -The maximum number of pods that can be unavailable during the update process. The value of "MaxUnavailable: " can be an absolute number or percentage of the replicas count. The default value of "MaxUnavailable: " is 25%. - -### MaxSurge - -```yaml -MaxSurge: 1 -``` -The maximum number of pods that can be created over the desired number of pods. For "MaxSurge: " also, the value can be an absolute number or percentage of the replicas count. -The default value of "MaxSurge: " is 25%. - -### Min Ready Seconds - -```yaml -MinReadySeconds: 60 -``` -This specifies the minimum number of seconds for which a newly created Pod should be ready without any of its containers crashing, for it to be considered available. This defaults to 0 (the Pod will be considered available as soon as it is ready). - -### Readiness Probe - -If this check fails, kubernetes stops sending traffic to the application. This should return error code in case of errors which can be recovered from if traffic is stopped. - -```yaml -ReadinessProbe: - Path: "" - port: 8080 - initialDelaySeconds: 20 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 5 - failureThreshold: 3 - command: - - python - - /etc/app/healthcheck.py - httpHeaders: - - name: Custom-Header - value: abc - scheme: "" - tcp: true -``` - -| Key | Description | -| :--- | :--- | -| `Path` | It define the path where the readiness needs to be checked. | -| `initialDelaySeconds` | It defines the time to wait before a given container is checked for readiness. | -| `periodSeconds` | It defines how often (in seconds) to perform the readiness probe. | -| `successThreshold` | It defines the number of successes required before a given container is said to fulfill the readiness probe. | -| `timeoutSeconds` | The maximum time (in seconds) for the probe to complete. | -| `failureThreshold` | The number of consecutive failures required to consider the probe as failed. | -| `command` | The mentioned command is executed to perform the readinessProbe. If the command returns a non-zero value, it's equivalent to a failed probe. | -| `httpHeaders` | Custom headers to set in the request. HTTP allows repeated headers,You can override the default headers by defining .httpHeaders for the probe. | -| `scheme` | Scheme to use for connecting to the host (HTTP or HTTPS). Defaults to HTTP. | -| `tcp` | The kubelet will attempt to open a socket to your container on the specified port. If it can establish a connection, the container is considered healthy. | - - -### Startup Probe - -Startup Probe in Kubernetes is a type of probe used to determine when a container within a pod is ready to start accepting traffic. It is specifically designed for applications that have a longer startup time. - -```yaml -StartupProbe: - Path: "" - port: 8080 - initialDelaySeconds: 20 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 5 - failureThreshold: 3 - httpHeaders: - - name: Custom-Header - value: abc - command: - - python - - /etc/app/healthcheck.py - tcp: false -``` - -| Key | Description | -| :--- | :--- | -| `Path` | It define the path where the startup needs to be checked. | -| `initialDelaySeconds` | It defines the time to wait before a given container is checked for startup. | -| `periodSeconds` | It defines how often (in seconds) to perform the startup probe. | -| `successThreshold` | The number of consecutive successful probe results required to mark the container as ready. | -| `timeoutSeconds` | The maximum time (in seconds) for the probe to complete. | -| `failureThreshold` | The number of consecutive failures required to consider the probe as failed. | -| `command` | The mentioned command is executed to perform the startup probe. If the command returns a non-zero value, it's equivalent to a failed probe. | -| `httpHeaders` | Custom headers to set in the request. HTTP allows repeated headers,You can override the default headers by defining .httpHeaders for the probe. | -| `tcp` | The kubelet will attempt to open a socket to your container on the specified port. If it can establish a connection, the container is considered healthy. | - -### Autoscaling - -This is connected to HPA and controls scaling up and down in response to request load. - -```yaml -autoscaling: - enabled: false - MinReplicas: 1 - MaxReplicas: 2 - TargetCPUUtilizationPercentage: 90 - TargetMemoryUtilizationPercentage: 80 - extraMetrics: [] -``` - -| Key | Description | -| :--- | :--- | -| `enabled` | Set true to enable autoscaling else set false.| -| `MinReplicas` | Minimum number of replicas allowed for scaling. | -| `MaxReplicas` | Maximum number of replicas allowed for scaling. | -| `TargetCPUUtilizationPercentage` | The target CPU utilization that is expected for a container. | -| `TargetMemoryUtilizationPercentage` | The target memory utilization that is expected for a container. | -| `extraMetrics` | Used to give external metrics for autoscaling. | - -### Fullname Override - -```yaml -fullnameOverride: app-name -``` -`fullnameOverride` replaces the release fullname created by default by devtron, which is used to construct Kubernetes object names. By default, devtron uses {app-name}-{environment-name} as release fullname. - -### Image - -```yaml -image: - pullPolicy: IfNotPresent -``` - -Image is used to access images in kubernetes, pullpolicy is used to define the instances calling the image, here the image is pulled when the image is not present,it can also be set as "Always". - -### serviceAccount - -```yaml -serviceAccount: - create: false - name: "" - annotations: {} -``` - -| Key | Description | -| :--- | :--- | -| `enabled` | Determines whether to create a ServiceAccount for pods or not. If set to `true`, a ServiceAccount will be created. | -| `name` | Specifies the name of the ServiceAccount to use. | -| `annotations` | Specify annotations for the ServiceAccount. | - - -### imagePullSecrets - -`imagePullSecrets` contains the docker credentials that are used for accessing a registry. - -```yaml -imagePullSecrets: - - regcred -``` -regcred is the secret that contains the docker credentials that are used for accessing a registry. Devtron will not create this secret automatically, you'll have to create this secret using dt-secrets helm chart in the App store or create one using kubectl. You can follow this documentation Pull an Image from a Private Registry [https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/](https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/) . - -### HostAliases - - the hostAliases field is used in a Pod specification to associate additional hostnames with the Pod's IP address. This can be helpful in scenarios where you need to resolve specific hostnames to the Pod's IP within the Pod itself. - -```yaml - hostAliases: - - ip: "192.168.1.10" - hostnames: - - "hostname1.example.com" - - "hostname2.example.com" - - ip: "192.168.1.11" - hostnames: - - "hostname3.example.com" -``` - -### Ingress - -This allows public access to the url. Please ensure you are using the right nginx annotation for nginx class. -The default value is `nginx`. - -```yaml -ingress: - enabled: false - # For K8s 1.19 and above use ingressClassName instead of annotation kubernetes.io/ingress.class: - className: nginx - annotations: {} - hosts: - - host: example1.com - pathType: "ImplementationSpecific" - paths: - - /example - - host: example2.com - pathType: "ImplementationSpecific" - paths: - - /example2 - - /example2/healthz - tls: [] -``` -Legacy deployment-template ingress format - -```yaml -ingress: - enabled: false - # For K8s 1.19 and above use ingressClassName instead of annotation kubernetes.io/ingress.class: - ingressClassName: nginx-internal - annotations: {} - path: "" - host: "" - tls: [] -``` - -| Key | Description | -| :--- | :--- | -| `enabled` | Enable or disable ingress | -| `annotations` | To configure some options depending on the Ingress controller | -| `host` | Host name | -| `pathType` | Path in an Ingress is required to have a corresponding path type. Supported path types are `ImplementationSpecific`, `Exact` and `Prefix`. | -| `path` | Path name | -| `tls` | It contains security details | - -### Ingress Internal - -This allows private access to the url, please ensure you are using right nginx annotation for nginx class, its default value is nginx - -```yaml -ingressInternal: - enabled: false - # For K8s 1.19 and above use ingressClassName instead of annotation kubernetes.io/ingress.class: - ingressClassName: nginx-internal - annotations: {} - hosts: - - host: example1.com - pathType: "ImplementationSpecific" - paths: - - /example - - host: example2.com - pathType: "ImplementationSpecific" - paths: - - /example2 - - /example2/healthz - tls: [] -``` - -| Key | Description | -| :--- | :--- | -| `enabled` | Enable or disable ingress | -| `annotations` | To configure some options depending on the Ingress controller | -| `host` | Host name | -| `pathType` | Path in an Ingress is required to have a corresponding path type. Supported path types are `ImplementationSpecific`, `Exact` and `Prefix`. | -| `path` | Path name | -| `pathType` | Supported path types are `ImplementationSpecific`, `Exact` and `Prefix`.| -| `tls` | It contains security details | - -### Init Containers -```yaml -initContainers: - - reuseContainerImage: true - securityContext: - runAsUser: 1000 - runAsGroup: 3000 - fsGroup: 2000 - volumeMounts: - - mountPath: /etc/ls-oms - name: ls-oms-cm-vol - command: - - flyway - - -configFiles=/etc/ls-oms/flyway.conf - - migrate - - - name: nginx - image: nginx:1.14.2 - securityContext: - privileged: true - ports: - - containerPort: 80 - command: ["/usr/local/bin/nginx"] - args: ["-g", "daemon off;"] -``` -Specialized containers that run before app containers in a Pod. Init containers can contain utilities or setup scripts not present in an app image. One can use base image inside initContainer by setting the reuseContainerImage flag to `true`. - -### Pause For Seconds Before Switch Active -```yaml -pauseForSecondsBeforeSwitchActive: 30 -``` -To wait for given period of time before switch active the container. - -### Resources - -These define minimum and maximum RAM and CPU available to the application. - -```yaml -resources: - limits: - cpu: "1" - memory: "200Mi" - requests: - cpu: "0.10" - memory: "100Mi" -``` - -Resources are required to set CPU and memory usage. - -#### Limits - -Limits make sure a container never goes above a certain value. The container is only allowed to go up to the limit, and then it is restricted. - -#### Requests - -Requests are what the container is guaranteed to get. - -### Service - -This defines annotations and the type of service, optionally can define name also. - -```yaml - service: - type: ClusterIP - annotations: {} -``` -| Key | Description | -| :--- | :--- | -| `type` | Select the type of service, default `ClusterIP` | -| `annotations` | Annotations are widely used to attach metadata and configs in Kubernetes. | -| `name` | Optional field to assign name to service | -| `loadBalancerSourceRanges` | If service type is `LoadBalancer`, Provide a list of whitelisted IPs CIDR that will be allowed to use the Load Balancer. | - -Note - If `loadBalancerSourceRanges` is not set, Kubernetes allows traffic from 0.0.0.0/0 to the LoadBalancer / Node Security Group(s). - - -### Volumes - -```yaml -volumes: - - name: log-volume - emptyDir: {} - - name: logpv - persistentVolumeClaim: - claimName: logpvc -``` - -It is required when some values need to be read from or written to an external disk. - -### Volume Mounts - -```yaml -volumeMounts: - - mountPath: /var/log/nginx/ - name: log-volume - - mountPath: /mnt/logs - name: logpvc - subPath: employee -``` - -It is used to provide mounts to the volume. - -### Affinity and anti-affinity - -```yaml -Spec: - Affinity: - Key: - Values: -``` - -Spec is used to define the desire state of the given container. - -Node Affinity allows you to constrain which nodes your pod is eligible to schedule on, based on labels of the node. - -Inter-pod affinity allow you to constrain which nodes your pod is eligible to be scheduled based on labels on pods. - -#### Key - -Key part of the label for node selection, this should be same as that on node. Please confirm with devops team. - -#### Values - -Value part of the label for node selection, this should be same as that on node. Please confirm with devops team. - -### Tolerations - -```yaml -tolerations: - - key: "key" - operator: "Equal" - value: "value" - effect: "NoSchedule|PreferNoSchedule|NoExecute(1.6 only)" -``` - -Taints are the opposite, they allow a node to repel a set of pods. - -A given pod can access the given node and avoid the given taint only if the given pod satisfies a given taint. - -Taints and tolerations are a mechanism which work together that allows you to ensure that pods are not placed on inappropriate nodes. Taints are added to nodes, while tolerations are defined in the pod specification. When you taint a node, it will repel all the pods except those that have a toleration for that taint. A node can have one or many taints associated with it. - -### Arguments - -```yaml -args: - enabled: false - value: [] -``` - -This is used to give arguments to command. - -### Command - -```yaml -command: - enabled: false - value: [] - workingDir: {} -``` - -It contains the commands to run inside the container. - -| Key | Description | -| :--- | :--- | -| `enabled` | To enable or disable the command. | -| `value` | It contains the commands. | -| `workingDir` | It is used to specify the working directory where commands will be executed. | - -### Containers -Containers section can be used to run side-car containers along with your main container within same pod. Containers running within same pod can share volumes and IP Address and can address each other @localhost. We can use base image inside container by setting the reuseContainerImage flag to `true`. - -```yaml - containers: - - name: nginx - image: nginx:1.14.2 - ports: - - containerPort: 80 - command: ["/usr/local/bin/nginx"] - args: ["-g", "daemon off;"] - - reuseContainerImage: true - securityContext: - runAsUser: 1000 - runAsGroup: 3000 - fsGroup: 2000 - volumeMounts: - - mountPath: /etc/ls-oms - name: ls-oms-cm-vol - command: - - flyway - - -configFiles=/etc/ls-oms/flyway.conf - - migrate - -``` - -### Prometheus - -```yaml - prometheus: - release: monitoring -``` - -It is a kubernetes monitoring tool and the name of the file to be monitored as monitoring in the given case.It describes the state of the prometheus. - -### rawYaml - -```yaml -rawYaml: - - apiVersion: v1 - kind: Service - metadata: - name: my-service - spec: - selector: - app: MyApp - ports: - - protocol: TCP - port: 80 - targetPort: 9376 - type: ClusterIP -``` -Accepts an array of Kubernetes objects. You can specify any kubernetes yaml here and it will be applied when your app gets deployed. - -### Grace Period - -```yaml -GracePeriod: 30 -``` -Kubernetes waits for the specified time called the termination grace period before terminating the pods. By default, this is 30 seconds. If your pod usually takes longer than 30 seconds to shut down gracefully, make sure you increase the `GracePeriod`. - -A Graceful termination in practice means that your application needs to handle the SIGTERM message and begin shutting down when it receives it. This means saving all data that needs to be saved, closing down network connections, finishing any work that is left, and other similar tasks. - -There are many reasons why Kubernetes might terminate a perfectly healthy container. If you update your deployment with a rolling update, Kubernetes slowly terminates old pods while spinning up new ones. If you drain a node, Kubernetes terminates all pods on that node. If a node runs out of resources, Kubernetes terminates pods to free those resources. It’s important that your application handle termination gracefully so that there is minimal impact on the end user and the time-to-recovery is as fast as possible. - - -### Server - -```yaml -server: - deployment: - image_tag: 1-95a53 - image: "" -``` - -It is used for providing server configurations. - -#### Deployment - -It gives the details for deployment. - -| Key | Description | -| :--- | :--- | -| `image_tag` | It is the image tag | -| `image` | It is the URL of the image | - -### Service Monitor - -```yaml -servicemonitor: - enabled: true - path: /abc - scheme: 'http' - interval: 30s - scrapeTimeout: 20s - metricRelabelings: - - sourceLabels: [namespace] - regex: '(.*)' - replacement: myapp - targetLabel: target_namespace -``` - -It gives the set of targets to be monitored. - -### Db Migration Config - -```yaml -dbMigrationConfig: - enabled: false -``` - -It is used to configure database migration. - -### Istio - -These Istio configurations collectively provide a comprehensive set of tools for controlling access, authenticating requests, enforcing security policies, and configuring traffic behavior within a microservices architecture. The specific settings you choose would depend on your security and traffic management requirements. - - -### Istio - -These Istio configurations collectively provide a comprehensive set of tools for controlling access, authenticating requests, enforcing security policies, and configuring traffic behavior within a microservices architecture. The specific settings you choose would depend on your security and traffic management requirements. - -```yaml -istio: - enable: true - - gateway: - enabled: true - labels: - app: my-gateway - annotations: - description: "Istio Gateway for external traffic" - host: "example.com" - tls: - enabled: true - secretName: my-tls-secret - - virtualService: - enabled: true - labels: - app: my-service - annotations: - description: "Istio VirtualService for routing" - gateways: - - my-gateway - hosts: - - "example.com" - http: - - match: - - uri: - prefix: /v1 - route: - - destination: - host: my-service-v1 - subset: version-1 - - match: - - uri: - prefix: /v2 - route: - - destination: - host: my-service-v2 - subset: version-2 - - destinationRule: - enabled: true - labels: - app: my-service - annotations: - description: "Istio DestinationRule for traffic policies" - subsets: - - name: version-1 - labels: - version: "v1" - - name: version-2 - labels: - version: "v2" - trafficPolicy: - connectionPool: - tcp: - maxConnections: 100 - outlierDetection: - consecutiveErrors: 5 - interval: 30s - baseEjectionTime: 60s - - peerAuthentication: - enabled: true - labels: - app: my-service - annotations: - description: "Istio PeerAuthentication for mutual TLS" - selector: - matchLabels: - version: "v1" - mtls: - mode: STRICT - portLevelMtls: - 8080: - mode: DISABLE - - requestAuthentication: - enabled: true - labels: - app: my-service - annotations: - description: "Istio RequestAuthentication for JWT validation" - selector: - matchLabels: - version: "v1" - jwtRules: - - issuer: "issuer-1" - jwksUri: "https://issuer-1/.well-known/jwks.json" - - authorizationPolicy: - enabled: true - labels: - app: my-service - annotations: - description: "Istio AuthorizationPolicy for access control" - action: ALLOW - provider: - name: jwt - kind: Authorization - rules: - - from: - - source: - requestPrincipals: ["*"] - to: - - operation: - methods: ["GET"] -``` - -| Key | Description | -| :--- | :--- | -| `istio` | Istio enablement. When `istio.enable` set to true, Istio would be enabled for the specified configurations | -| `authorizationPolicy` | It allows you to define access control policies for service-to-service communication. | -| `action` | Determines whether to ALLOW or DENY the request based on the defined rules. | -| `provider` | Authorization providers are external systems or mechanisms used to make access control decisions. | -| `rules` | List of rules defining the authorization policy. Each rule can specify conditions and requirements for allowing or denying access. | -| `destinationRule` | It allows for the fine-tuning of traffic policies and load balancing for specific services. You can define subsets of a service and apply different traffic policies to each subset. | -| `subsets` | Specifies subsets within the service for routing and load balancing. | -| `trafficPolicy` | Policies related to connection pool size, outlier detection, and load balancing. | -| `gateway` | Allowing external traffic to enter the service mesh through the specified configurations. | -| `host` | The external domain through which traffic will be routed into the service mesh. | -| `tls` | Traffic to and from the gateway should be encrypted using TLS. | -| `secretName` | Specifies the name of the Kubernetes secret that contains the TLS certificate and private key. The TLS certificate is used for securing the communication between clients and the Istio gateway. | -| `peerAuthentication` | It allows you to enforce mutual TLS and control the authentication between services. | -| `mtls` | Mutual TLS. Mutual TLS is a security protocol that requires both client and server, to authenticate each other using digital certificates for secure communication. | -| `mode` | Mutual TLS mode, specifying how mutual TLS should be applied. Modes include STRICT, PERMISSIVE, and DISABLE. | -| `portLevelMtls` | Configures port-specific mTLS settings. Allows for fine-grained control over the application of mutual TLS on specific ports. | -| `selector` | Configuration for selecting workloads to apply PeerAuthentication. | -| `requestAuthentication` | Defines rules for authenticating incoming requests. | -| `jwtRules` | Rules for validating JWTs (JSON Web Tokens). It defines how incoming JWTs should be validated for authentication purposes. | -| `selector` | Specifies the conditions under which the RequestAuthentication rules should be applied. | -| `virtualService` | Enables the definition of rules for how traffic should be routed to different services within the service mesh. | -| `gateways` | Specifies the gateways to which the rules defined in the VirtualService apply. | -| `hosts` | List of hosts (domains) to which this VirtualService is applied. | -| `http` | Configuration for HTTP routes within the VirtualService. It define routing rules based on HTTP attributes such as URI prefixes, headers, timeouts, and retry policies. | - -### Application Metrics - -Application metrics can be enabled to see your application's metrics-CPU Service Monitor usage, Memory Usage, Status, Throughput and Latency. - -### Deployment Metrics - -It gives the realtime metrics of the deployed applications - -| Key | Description | -| :--- | :--- | -| `Deployment Frequency` | It shows how often this app is deployed to production | -| `Change Failure Rate` | It shows how often the respective pipeline fails. | -| `Mean Lead Time` | It shows the average time taken to deliver a change to production. | -| `Mean Time to Recovery` | It shows the average time taken to fix a failed pipeline. | - - -## Addon features in Deployment Template Chart version 3.9.0 - -### Service Account - -```yaml -serviceAccountName: orchestrator -``` - -A service account provides an identity for the processes that run in a Pod. - -When you access the cluster, you are authenticated by the API server as a particular User Account. Processes in containers inside pod can also contact the API server. When you are authenticated as a particular Service Account. - -When you create a pod, if you do not create a service account, it is automatically assigned the default service account in the namespace. - -### Pod Disruption Budget - -You can create `PodDisruptionBudget` for each application. A PDB limits the number of pods of a replicated application that are down simultaneously from voluntary disruptions. For example, an application would like to ensure the number of replicas running is never brought below the certain number. - -```yaml -podDisruptionBudget: - minAvailable: 1 -``` - -or - -```yaml -podDisruptionBudget: - maxUnavailable: 50% -``` - -You can specify either `maxUnavailable` or `minAvailable` in a PodDisruptionBudget and it can be expressed as integers or as a percentage. - -| Key | Description | -| :--- | :--- | -| `minAvailable` | Evictions are allowed as long as they leave behind 1 or more healthy pods of the total number of desired replicas. | -| `maxUnavailable` | Evictions are allowed as long as at most 1 unhealthy replica among the total number of desired replicas. | - -### Application metrics Envoy Configurations - -```yaml -envoyproxy: - image: envoyproxy/envoy:v1.14.1 - configMapName: "" - resources: - limits: - cpu: "50m" - memory: "50Mi" - requests: - cpu: "50m" - memory: "50Mi" -``` - -Envoy is attached as a sidecar to the application container to collect metrics like 4XX, 5XX, Throughput and latency. You can now configure the envoy settings such as idleTimeout, resources etc. - -### Prometheus Rule - -```yaml -prometheusRule: - enabled: true - additionalLabels: {} - namespace: "" - rules: - - alert: TooMany500s - expr: 100 * ( sum( nginx_ingress_controller_requests{status=~"5.+"} ) / sum(nginx_ingress_controller_requests) ) > 5 - for: 1m - labels: - severity: critical - annotations: - description: Too many 5XXs - summary: More than 5% of the all requests did return 5XX, this require your attention -``` - -Alerting rules allow you to define alert conditions based on Prometheus expressions and to send notifications about firing alerts to an external service. - -In this case, Prometheus will check that the alert continues to be active during each evaluation for 1 minute before firing the alert. Elements that are active, but not firing yet, are in the pending state. - -### Pod Labels -Labels are key/value pairs that are attached to pods. Labels are intended to be used to specify identifying attributes of objects that are meaningful and relevant to users, but do not directly imply semantics to the core system. Labels can be used to organize and to select subsets of objects. -```yaml -podLabels: - severity: critical -``` - -### Pod Annotations -Pod Annotations are widely used to attach metadata and configs in Kubernetes. - -```yaml -podAnnotations: - fluentbit.io/exclude: "true" -``` - -### Custom Metrics in HPA - -```yaml -autoscaling: - enabled: true - MinReplicas: 1 - MaxReplicas: 2 - TargetCPUUtilizationPercentage: 90 - TargetMemoryUtilizationPercentage: 80 - behavior: - scaleDown: - stabilizationWindowSeconds: 300 - policies: - - type: Percent - value: 100 - periodSeconds: 15 - scaleUp: - stabilizationWindowSeconds: 0 - policies: - - type: Percent - value: 100 - periodSeconds: 15 - - type: Pods - value: 4 - periodSeconds: 15 - selectPolicy: Max -``` - -HPA, by default is configured to work with CPU and Memory metrics. These metrics are useful for internal cluster sizing, but you might want to configure wider set of metrics like service latency, I/O load etc. The custom metrics in HPA can help you to achieve this. - -### Wait For Seconds Before Scaling Down -```yaml -waitForSecondsBeforeScalingDown: 30 -``` -Wait for given period of time before scaling down the container. - - - -## 4. Show Application Metrics - -If you want to see application metrics like different HTTP status codes metrics, application throughput, latency, response time. Enable the Application metrics from below the deployment template Save button. After enabling it, you should be able to see all metrics on App detail page. By default it remains disabled. - -![Figure 4: Application Metrics](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/deployment-template/application-metrics.jpg) - -Once all the Deployment template configurations are done, click on `Save` to save your deployment configuration. Now you are ready to create [Workflow](../../workflow/README.md) to do CI/CD. - -### Helm Chart Json Schema Table - -Helm Chart json schema is used to validate the deployment template values. - -| Chart Version | Link | -| :--- | :--- | -| `reference-chart_3-12-0` | [Json Schema](https://github.com/devtron-labs/devtron/blob/main/scripts/devtron-reference-helm-charts/reference-chart_3-12-0/schema.json) | -| `reference-chart_3-11-0` | [Json Schema](https://github.com/devtron-labs/devtron/blob/main/scripts/devtron-reference-helm-charts/reference-chart_3-11-0/schema.json) | -| `reference-chart_3-10-0` | [Json Schema](https://github.com/devtron-labs/devtron/blob/main/scripts/devtron-reference-helm-charts/reference-chart_3-10-0/schema.json) | -| `reference-chart_3-9-0` | [Json Schema](https://github.com/devtron-labs/devtron/blob/main/scripts/devtron-reference-helm-charts/reference-chart_3-9-0/schema.json) | - - -### Other Validations in Json Schema - -The values of CPU and Memory in limits must be greater than or equal to in requests respectively. Similarly, In case of envoyproxy, the values of limits are greater than or equal to requests as mentioned below. -``` -resources.limits.cpu >= resources.requests.cpu -resources.limits.memory >= resources.requests.memory -envoyproxy.resources.limits.cpu >= envoyproxy.resources.requests.cpu -envoyproxy.resources.limits.memory >= envoyproxy.resources.requests.memory -``` - -## Addon features in Deployment Template Chart version 4.11.0 - -### KEDA Autoscaling - -**Prerequisite:** KEDA controller should be installed in the cluster. To install KEDA controller using Helm, navigate to chart store and search for `keda` chart and deploy it. You can follow this [documentation](../../../deploy-chart/deployment-of-charts.md) for deploying a Helm chart on Devtron. - -KEDA Helm repo : https://kedacore.github.io/charts - - -[KEDA](https://keda.sh) is a Kubernetes-based Event Driven Autoscaler. With KEDA, you can drive the scaling of any container in Kubernetes based on the number of events needing to be processed. KEDA can be installed into any Kubernetes cluster and can work alongside standard Kubernetes components like the Horizontal Pod Autoscaler(HPA). - - -Example for autoscaling with KEDA using Prometheus metrics is given below: -```yaml -kedaAutoscaling: - enabled: true - minReplicaCount: 1 - maxReplicaCount: 2 - idleReplicaCount: 0 - pollingInterval: 30 - advanced: - restoreToOriginalReplicaCount: true - horizontalPodAutoscalerConfig: - behavior: - scaleDown: - stabilizationWindowSeconds: 300 - policies: - - type: Percent - value: 100 - periodSeconds: 15 - triggers: - - type: prometheus - metadata: - serverAddress: http://:9090 - metricName: http_request_total - query: envoy_cluster_upstream_rq{appId="300", cluster_name="300-0", container="envoy",} - threshold: "50" - triggerAuthentication: - enabled: false - name: - spec: {} - authenticationRef: {} -``` - -Example for autosccaling with KEDA based on kafka is given below : - -```yaml -kedaAutoscaling: - enabled: true - minReplicaCount: 1 - maxReplicaCount: 2 - idleReplicaCount: 0 - pollingInterval: 30 - advanced: {} - triggers: - - type: kafka - metadata: - bootstrapServers: b-2.kafka-msk-dev.example.c2.kafka.ap-southeast-1.amazonaws.com:9092,b-3.kafka-msk-dev.example.c2.kafka.ap-southeast-1.amazonaws.com:9092,b-1.kafka-msk-dev.example.c2.kafka.ap-southeast-1.amazonaws.com:9092 - topic: Orders-Service-ESP.info - lagThreshold: "100" - consumerGroup: oders-remove-delivered-packages - allowIdleConsumers: "true" - triggerAuthentication: - enabled: true - name: keda-trigger-auth-kafka-credential - spec: - secretTargetRef: - - parameter: sasl - name: keda-kafka-secrets - key: sasl - - parameter: username - name: keda-kafka-secrets - key: username - authenticationRef: - name: keda-trigger-auth-kafka-credential -``` - -### NetworkPolicy - -Kubernetes NetworkPolicies control pod communication by defining rules for incoming and outgoing traffic. - -```yaml -networkPolicy: - enabled: false - annotations: {} - labels: {} - podSelector: - matchLabels: - role: db - policyTypes: - - Ingress - - Egress - ingress: - - from: - - ipBlock: - cidr: 172.17.0.0/16 - except: - - 172.17.1.0/24 - - namespaceSelector: - matchLabels: - project: myproject - - podSelector: - matchLabels: - role: frontend - ports: - - protocol: TCP - port: 6379 - egress: - - to: - - ipBlock: - cidr: 10.0.0.0/24 - ports: - - protocol: TCP - port: 5978 -``` - -| Key | Description | -| :--- | :--- | -| `enabled` | Enable or disable NetworkPolicy. | -| `annotations` | Additional metadata or information associated with the NetworkPolicy. | -| `labels` | Labels to apply to the NetworkPolicy. -| `podSelector` | Each NetworkPolicy includes a podSelector which selects the grouping of pods to which the policy applies. The example policy selects pods with the label "role=db". An empty podSelector selects all pods in the namespace.| -| `policyTypes` | Each NetworkPolicy includes a policyTypes list which may include either Ingress, Egress, or both. | -| `Ingress` | Controls incoming traffic to pods. | -| `Egress` | Controls outgoing traffic from pods. | - - -### Winter-Soldier -Winter Soldier can be used to -- cleans up (delete) Kubernetes resources -- reduce workload pods to 0 - -**_NOTE:_** After deploying this we can create the Hibernator object and provide the custom configuration by which workloads going to delete, sleep and many more. for more information check [the main repo](https://github.com/devtron-labs/winter-soldier) - -Given below is template values you can give in winter-soldier: -```yaml -winterSoldier: - enabled: false - apiVersion: pincher.devtron.ai/v1alpha1 - action: sleep - timeRangesWithZone: - timeZone: "Asia/Kolkata" - timeRanges: [] - targetReplicas: [] - fieldSelector: [] -``` - -| Key | values | Description | -| :--- | :--- | :--- | -| `enabled` | `false`,`true` | decide the enabling factor | -| `apiVersion` | `pincher.devtron.ai/v1beta1`, `pincher.devtron.ai/v1alpha1` | specific api version | -| `action` | `sleep`,`delete`, `scale` | This specify the action need to perform. | -| `timeRangesWithZone`:`timeZone` | eg:- `"Asia/Kolkata"`,`"US/Pacific"` | It use to specify the timeZone used. (It uses standard format. please refer [this](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)) | -| `timeRangesWithZone`:`timeRanges` | array of [ `timeFrom`, `timeTo`, `weekdayFrom`, `weekdayTo`] | It use to define time period/range on which the user need to perform the specified action. you can have multiple timeRanges.
These settings will take `action` on Sat and Sun from 00:00 to 23:59:59, | -| `targetReplicas` | `[n]` : n - number of replicas to scale. | These is mandatory field when the `action` is `scale`
Default value is `[]`. | -| `fieldSelector` | `- AfterTime(AddTime( ParseTime({{metadata.creationTimestamp}}, '2006-01-02T15:04:05Z'), '5m'), Now()) ` | These value will take a list of methods to select the resources on which we perform specified `action` . | - - -here is an example, -```yaml -winterSoldier: - apiVersion: pincher.devtron.ai/v1alpha1 - enabled: true - annotations: {} - labels: {} - timeRangesWithZone: - timeZone: "Asia/Kolkata" - timeRanges: - - timeFrom: 00:00 - timeTo: 23:59:59 - weekdayFrom: Sat - weekdayTo: Sun - - timeFrom: 00:00 - timeTo: 08:00 - weekdayFrom: Mon - weekdayTo: Fri - - timeFrom: 20:00 - timeTo: 23:59:59 - weekdayFrom: Mon - weekdayTo: Fri - action: scale - targetReplicas: [1,1,1] - fieldSelector: - - AfterTime(AddTime( ParseTime({{metadata.creationTimestamp}}, '2006-01-02T15:04:05Z'), '10h'), Now()) -``` - -Above settings will take action on `Sat` and `Sun` from 00:00 to 23:59:59, and on `Mon`-`Fri` from 00:00 to 08:00 and 20:00 to 23:59:59. If `action:sleep` then runs hibernate at timeFrom and unhibernate at `timeTo`. If `action: delete` then it will delete workloads at `timeFrom` and `timeTo`. Here the `action:scale` thus it scale the number of resource replicas to `targetReplicas: [1,1,1]`. Here each element of `targetReplicas` array is mapped with the corresponding elements of array `timeRangesWithZone/timeRanges`. Thus make sure the length of both array is equal, otherwise the cnages cannot be observed. - -The above example will select the application objects which have been created 10 hours ago across all namespaces excluding application's namespace. Winter soldier exposes following functions to handle time, cpu and memory. - -- ParseTime - This function can be used to parse time. For eg to parse creationTimestamp use ParseTime({{metadata.creationTimestamp}}, '2006-01-02T15:04:05Z') -- AddTime - This can be used to add time. For eg AddTime(ParseTime({{metadata.creationTimestamp}}, '2006-01-02T15:04:05Z'), '-10h') ll add 10h to the time. Use d for day, h for hour, m for minutes and s for seconds. Use negative number to get earlier time. -- Now - This can be used to get current time. -- CpuToNumber - This can be used to compare CPU. For eg any({{spec.containers.#.resources.requests}}, { MemoryToNumber(.memory) < MemoryToNumber('60Mi')}) will check if any resource.requests is less than 60Mi. - - - -### Security Context -A security context defines privilege and access control settings for a Pod or Container. - -To add a security context for main container: -```yaml -containerSecurityContext: - allowPrivilegeEscalation: false -``` - -To add a security context on pod level: -```yaml -podSecurityContext: - runAsUser: 1000 - runAsGroup: 3000 - fsGroup: 2000 -``` - -### Topology Spread Constraints -You can use topology spread constraints to control how Pods are spread across your cluster among failure-domains such as regions, zones, nodes, and other user-defined topology domains. This can help to achieve high availability as well as efficient resource utilization. - -```yaml -topologySpreadConstraints: - - maxSkew: 1 - topologyKey: zone - whenUnsatisfiable: DoNotSchedule - autoLabelSelector: true - customLabelSelector: {} -``` diff --git a/docs/user-guide/creating-application/base-config/deployment-template/statefulset.md b/docs/user-guide/creating-application/base-config/deployment-template/statefulset.md deleted file mode 100644 index a628890375..0000000000 --- a/docs/user-guide/creating-application/base-config/deployment-template/statefulset.md +++ /dev/null @@ -1,991 +0,0 @@ -# StatefulSet - -The StatefulSet chart in Devtron allows you to deploy and manage stateful applications. StatefulSet is a Kubernetes resource that provides guarantees about the ordering and uniqueness of Pods during deployment and scaling. - -![Figure 1: Choosing 'StatefulSet' Chart](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/deployment-template/sts-chart.jpg) - -It supports only `ONDELETE` and `ROLLINGUPDATE` deployment strategy. - -![Figure 2: Selecting Deployment Strategy](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/deployment-template/sts-strategy.jpg) - - -You can select `StatefulSet` chart when you want to use only basic use cases which contain the following: - -* **Managing Stateful Applications:** StatefulSets are ideal for managing stateful applications, such as databases or distributed systems, that require stable network identities and persistent storage for each Pod. - -* **Ordered Pod Management:** StatefulSets ensure ordered and predictable management of Pods by providing each Pod with a unique and stable hostname based on a defined naming convention and ordinal index. - -* **Updating and Scaling Stateful Applications:** StatefulSets support updating and scaling stateful applications by creating new versions of the StatefulSet and performing rolling updates or scaling operations in a controlled manner, ensuring minimal disruption to the application. - -* **Persistent Storage:** StatefulSets have built-in mechanisms for handling persistent volumes, allowing each Pod to have its own unique volume claim and storage. This ensures data persistence even when Pods are rescheduled or restarted. - -* **Maintaining Pod Identity:** StatefulSets guarantee consistent identity for each Pod throughout its lifecycle. This stability is maintained even if the Pods are rescheduled, allowing applications to rely on stable network identities. - -* **Rollback Capability:** StatefulSets provide the ability to rollback to a previous version in case the current state of the application is unstable or encounters issues, ensuring a known working state for the application. - -* **Status Monitoring:** StatefulSets offer status information that can be used to monitor the deployment, including the current version, number of replicas, and the readiness of each Pod. This helps in tracking the health and progress of the StatefulSet deployment. - -* **Resource Cleanup:** StatefulSets allow for easy cleanup of older versions by deleting StatefulSets and their associated Pods and persistent volumes that are no longer needed, ensuring efficient resource utilization. - -{% hint style="warning" %} -### Note -Super-admins can lock keys in StatefulSet deployment template to prevent non-super-admins from modifying those locked keys. Refer [Lock Deployment Configuration](../../../global-configurations/lock-deployment-config.md) to know more. -{% endhint %} - - -## 1. Yaml File - -### Container Ports - -This defines ports on which application services will be exposed to other services - -```yaml -ContainerPort: - - envoyPort: 8799 - idleTimeout: - name: app - port: 8080 - servicePort: 80 - nodePort: 32056 - supportStreaming: true - useHTTP2: true -``` - -| Key | Description | -| :--- | :--- | -| `envoyPort` | envoy port for the container. | -| `idleTimeout` | the duration of time that a connection is idle before the connection is terminated. | -| `name` | name of the port. | -| `port` | port for the container. | -| `servicePort` | port of the corresponding kubernetes service. | -| `nodePort` | nodeport of the corresponding kubernetes service. | -| `supportStreaming` | Used for high performance protocols like grpc where timeout needs to be disabled. | -| `useHTTP2` | Envoy container can accept HTTP2 requests. | - -### EnvVariables -```yaml -EnvVariables: [] -``` - -### EnvVariablesFromSecretKeys -```yaml -EnvVariablesFromSecretKeys: - - name: ENV_NAME - secretName: SECRET_NAME - keyName: SECRET_KEY - -``` - It is used to get the name of Environment Variable name, Secret name and the Key name from which we are using the value in that corresponding Environment Variable. - - ### EnvVariablesFromConfigMapKeys -```yaml -EnvVariablesFromConfigMapKeys: - - name: ENV_NAME - configMapName: CONFIG_MAP_NAME - keyName: CONFIG_MAP_KEY - -``` - It is used to get the name of Environment Variable name, Config Map name and the Key name from which we are using the value in that corresponding Environment Variable. - -To set environment variables for the containers that run in the Pod. -### StatefulSetConfig -These are all the configuration settings for the StatefulSet. -```yaml -statefulSetConfig: - labels: - app: my-statefulset - environment: production - annotations: - example.com/version: "1.0" - serviceName: "my-statefulset-service" - podManagementPolicy: "Parallel" - revisionHistoryLimit: 5 - mountPath: "/data" - volumeClaimTemplates: - - apiVersion: v1 - kind: PersistentVolumeClaim - metadata: - labels: - app: my-statefulset - spec: - accessModes: - - ReadWriteOnce - dataSource: - kind: Snapshot - apiGroup: snapshot.storage.k8s.io - name: my-snapshot - resources: - requests: - storage: 5Gi - limits: - storage: 10Gi - storageClassName: my-storage-class - selector: - matchLabels: - app: my-statefulset - volumeMode: Filesystem - volumeName: my-pv - - apiVersion: v1 - kind: PersistentVolumeClaim - metadata: - name: pvc-logs - labels: - app: myapp - spec: - accessModes: - - ReadWriteMany - dataSourceRef: - kind: Secret - apiGroup: v1 - name: my-secret - resources: - requests: - storage: 5Gi - storageClassName: my-storage-class - selector: - matchExpressions: - - {key: environment, operator: In, values: [production]} - volumeMode: Block - volumeName: my-pv - -``` -Mandatoryfields in statefulSetConfig is -``` -statefulSetConfig: - mountPath: /tmp - volumeClaimTemplates: - - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 2Gi -``` -Here is an explanation of each field in the statefulSetConfig : - - -| Key | Description | -| :--- | :--- | -| `labels` | set of key-value pairs used to identify the StatefulSet . | -| `annotations` | A map of key-value pairs that are attached to the stateful set as metadata. | -| `serviceName` | The name of the Kubernetes Service that the StatefulSet should create. | -| `podManagementPolicy` | A policy that determines how Pods are created and deleted by the StatefulSet. In this case, the policy is set to "Parallel", which means that all Pods are created at once. | -| `revisionHistoryLimit` | The number of revisions that should be stored for each replica of the StatefulSet. | -| `updateStrategy` | The update strategy used by the StatefulSet when rolling out changes. | -| `mountPath` | The path where the volume should be mounted in the container. | - -volumeClaimTemplates: An array of volume claim templates that are used to create persistent volumes for the StatefulSet. Each volume claim template specifies the storage class, access mode, storage size, and other details of the persistent volume. - - -| Key | Description | -| :--- | :--- | -| `apiVersion` | The API version of the PVC . | -| `kind` | The type of object that the PVC is. | -| `metadata` | Metadata that is attached to the resource being created. | -| `labels` | A set of key-value pairs used to label the object for identification and selection. | -| `spec` | The specification of the object, which defines its desired state and behavior.| -| `accessModes` | A list of access modes for the PersistentVolumeClaim, such as "ReadWriteOnce" or "ReadWriteMany". | -| `dataSource` | A data source used to populate the PersistentVolumeClaim, such as a Snapshot or a StorageClass. | -| `kind`| specifies the kind of the snapshot, in this case Snapshot.| -| `apiGroup`| specifies the API group of the snapshot API, in this case snapshot.storage.k8s.io.| -| `name`| specifies the name of the snapshot, in this case my-snapshot.| -| `dataSourceRef` | A reference to a data source used to create the persistent volume. In this case, it's a secret. | -| `updateStrategy` | The update strategy used by the StatefulSet when rolling out changes. | -| `resources` | The resource requests and limits for the PersistentVolumeClaim, which define the minimum and maximum amount of storage it can use. | -| `requests` | The amount of storage requested by the PersistentVolumeClaim. | -| `limits` | The maximum amount of storage that the PersistentVolumeClaim can use. | -| `storageClassName` | The name of the storage class to use for the persistent volume. | -| `selector` | The selector used to match a persistent volume to a persistent volume claim. | -| `matchLabels` | a map of key-value pairs to match the labels of the corresponding PersistentVolume.| -| `matchExpressions` |A set of requirements that the selected object must meet to be considered a match. | -| `key` | The key of the label or annotation to match.| -| `operator` | The operator used to compare the key-value pairs (in this case, "In" specifies a set membership test).| -| `values` | A list of values that the selected object's label or annotation must match.| -| `volumeMode` | The mode of the volume, either "Filesystem" or "Block". | -| `volumeName` | The name of the PersistentVolume that is created for the PersistentVolumeClaim. | - - -### Liveness Probe - -If this check fails, kubernetes restarts the pod. This should return error code in case of non-recoverable error. - -```yaml -LivenessProbe: - Path: "" - port: 8080 - initialDelaySeconds: 20 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 5 - failureThreshold: 3 - httpHeaders: - - name: Custom-Header - value: abc - scheme: "" - tcp: true -``` - -| Key | Description | -| :--- | :--- | -| `Path` | It define the path where the liveness needs to be checked. | -| `initialDelaySeconds` | It defines the time to wait before a given container is checked for liveliness. | -| `periodSeconds` | It defines the time to check a given container for liveness. | -| `successThreshold` | It defines the number of successes required before a given container is said to fulfil the liveness probe. | -| `timeoutSeconds` | It defines the time for checking timeout. | -| `failureThreshold` | It defines the maximum number of failures that are acceptable before a given container is not considered as live. | -| `httpHeaders` | Custom headers to set in the request. HTTP allows repeated headers,You can override the default headers by defining .httpHeaders for the probe. | -| `scheme` | Scheme to use for connecting to the host (HTTP or HTTPS). Defaults to HTTP. -| `tcp` | The kubelet will attempt to open a socket to your container on the specified port. If it can establish a connection, the container is considered healthy. | - - -### MaxUnavailable - -```yaml - MaxUnavailable: 0 -``` -The maximum number of pods that can be unavailable during the update process. The value of "MaxUnavailable: " can be an absolute number or percentage of the replicas count. The default value of "MaxUnavailable: " is 25%. - -### MaxSurge - -```yaml -MaxSurge: 1 -``` -The maximum number of pods that can be created over the desired number of pods. For "MaxSurge: " also, the value can be an absolute number or percentage of the replicas count. -The default value of "MaxSurge: " is 25%. - -### Min Ready Seconds - -```yaml -MinReadySeconds: 60 -``` -This specifies the minimum number of seconds for which a newly created Pod should be ready without any of its containers crashing, for it to be considered available. This defaults to 0 (the Pod will be considered available as soon as it is ready). - -### Readiness Probe - -If this check fails, kubernetes stops sending traffic to the application. This should return error code in case of errors which can be recovered from if traffic is stopped. - -```yaml -ReadinessProbe: - Path: "" - port: 8080 - initialDelaySeconds: 20 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 5 - failureThreshold: 3 - httpHeaders: - - name: Custom-Header - value: abc - scheme: "" - tcp: true -``` - -| Key | Description | -| :--- | :--- | -| `Path` | It define the path where the readiness needs to be checked. | -| `initialDelaySeconds` | It defines the time to wait before a given container is checked for readiness. | -| `periodSeconds` | It defines the time to check a given container for readiness. | -| `successThreshold` | It defines the number of successes required before a given container is said to fulfill the readiness probe. | -| `timeoutSeconds` | It defines the time for checking timeout. | -| `failureThreshold` | It defines the maximum number of failures that are acceptable before a given container is not considered as ready. | -| `httpHeaders` | Custom headers to set in the request. HTTP allows repeated headers,You can override the default headers by defining .httpHeaders for the probe. | -| `scheme` | Scheme to use for connecting to the host (HTTP or HTTPS). Defaults to HTTP. -| `tcp` | The kubelet will attempt to open a socket to your container on the specified port. If it can establish a connection, the container is considered healthy. | - -### Ambassador Mappings - -You can create ambassador mappings to access your applications from outside the cluster. At its core a Mapping resource maps a resource to a service. - -```yaml -ambassadorMapping: - ambassadorId: "prod-emissary" - cors: {} - enabled: true - hostname: devtron.example.com - labels: {} - prefix: / - retryPolicy: {} - rewrite: "" - tls: - context: "devtron-tls-context" - create: false - hosts: [] - secretName: "" -``` - -| Key | Description | -| :--- | :--- | -| `enabled` | Set true to enable ambassador mapping else set false.| -| `ambassadorId` | used to specify id for specific ambassador mappings controller. | -| `cors` | used to specify cors policy to access host for this mapping. | -| `weight` | used to specify weight for canary ambassador mappings. | -| `hostname` | used to specify hostname for ambassador mapping. | -| `prefix` | used to specify path for ambassador mapping. | -| `labels` | used to provide custom labels for ambassador mapping. | -| `retryPolicy` | used to specify retry policy for ambassador mapping. | -| `corsPolicy` | Provide cors headers on flagger resource. | -| `rewrite` | used to specify whether to redirect the path of this mapping and where. | -| `tls` | used to create or define ambassador TLSContext resource. | -| `extraSpec` | used to provide extra spec values which not present in deployment template for ambassador resource. | - -### Autoscaling - -This is connected to HPA and controls scaling up and down in response to request load. - -```yaml -autoscaling: - enabled: false - MinReplicas: 1 - MaxReplicas: 2 - TargetCPUUtilizationPercentage: 90 - TargetMemoryUtilizationPercentage: 80 - extraMetrics: [] -``` - -| Key | Description | -| :--- | :--- | -| `enabled` | Set true to enable autoscaling else set false.| -| `MinReplicas` | Minimum number of replicas allowed for scaling. | -| `MaxReplicas` | Maximum number of replicas allowed for scaling. | -| `TargetCPUUtilizationPercentage` | The target CPU utilization that is expected for a container. | -| `TargetMemoryUtilizationPercentage` | The target memory utilization that is expected for a container. | -| `extraMetrics` | Used to give external metrics for autoscaling. | - -### Fullname Override - -```yaml -fullnameOverride: app-name -``` -`fullnameOverride` replaces the release fullname created by default by devtron, which is used to construct Kubernetes object names. By default, devtron uses {app-name}-{environment-name} as release fullname. - -### Image - -```yaml -image: - pullPolicy: IfNotPresent -``` - -Image is used to access images in kubernetes, pullpolicy is used to define the instances calling the image, here the image is pulled when the image is not present,it can also be set as "Always". - -### imagePullSecrets - -`imagePullSecrets` contains the docker credentials that are used for accessing a registry. - -```yaml -imagePullSecrets: - - regcred -``` -regcred is the secret that contains the docker credentials that are used for accessing a registry. Devtron will not create this secret automatically, you'll have to create this secret using dt-secrets helm chart in the App store or create one using kubectl. You can follow this documentation Pull an Image from a Private Registry [https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/](https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/) . - -### Ingress - -This allows public access to the url, please ensure you are using right nginx annotation for nginx class, its default value is nginx - -```yaml -ingress: - enabled: false - # For K8s 1.19 and above use ingressClassName instead of annotation kubernetes.io/ingress.class: - className: nginx - annotations: {} - hosts: - - host: example1.com - paths: - - /example - - host: example2.com - paths: - - /example2 - - /example2/healthz - tls: [] -``` -Legacy deployment-template ingress format - -```yaml -ingress: - enabled: false - # For K8s 1.19 and above use ingressClassName instead of annotation kubernetes.io/ingress.class: - ingressClassName: nginx-internal - annotations: {} - path: "" - host: "" - tls: [] -``` - -| Key | Description | -| :--- | :--- | -| `enabled` | Enable or disable ingress | -| `annotations` | To configure some options depending on the Ingress controller | -| `path` | Path name | -| `host` | Host name | -| `tls` | It contains security details | - -### Ingress Internal - -This allows private access to the url, please ensure you are using right nginx annotation for nginx class, its default value is nginx - -```yaml -ingressInternal: - enabled: false - # For K8s 1.19 and above use ingressClassName instead of annotation kubernetes.io/ingress.class: - ingressClassName: nginx-internal - annotations: {} - hosts: - - host: example1.com - paths: - - /example - - host: example2.com - paths: - - /example2 - - /example2/healthz - tls: [] -``` - -| Key | Description | -| :--- | :--- | -| `enabled` | Enable or disable ingress | -| `annotations` | To configure some options depending on the Ingress controller | -| `path` | Path name | -| `host` | Host name | -| `tls` | It contains security details | - -### Init Containers -```yaml -initContainers: - - reuseContainerImage: true - securityContext: - runAsUser: 1000 - runAsGroup: 3000 - fsGroup: 2000 - volumeMounts: - - mountPath: /etc/ls-oms - name: ls-oms-cm-vol - command: - - flyway - - -configFiles=/etc/ls-oms/flyway.conf - - migrate - - - name: nginx - image: nginx:1.14.2 - securityContext: - privileged: true - ports: - - containerPort: 80 - command: ["/usr/local/bin/nginx"] - args: ["-g", "daemon off;"] -``` -Specialized containers that run before app containers in a Pod. Init containers can contain utilities or setup scripts not present in an app image. One can use base image inside initContainer by setting the reuseContainerImage flag to `true`. - -### Istio - -Istio is a service mesh which simplifies observability, traffic management, security and much more with it's virtual services and gateways. - -```yaml -istio: - enable: true - gateway: - annotations: {} - enabled: false - host: example.com - labels: {} - tls: - enabled: false - secretName: example-tls-secret - virtualService: - annotations: {} - enabled: false - gateways: [] - hosts: [] - http: - - corsPolicy: - allowCredentials: false - allowHeaders: - - x-some-header - allowMethods: - - GET - allowOrigin: - - example.com - maxAge: 24h - headers: - request: - add: - x-some-header: value - match: - - uri: - prefix: /v1 - - uri: - prefix: /v2 - retries: - attempts: 2 - perTryTimeout: 3s - rewriteUri: / - route: - - destination: - host: service1 - port: 80 - timeout: 12s - - route: - - destination: - host: service2 - labels: {} -``` - -| Key | Description | -| :--- | :--- | -| `istio` | Istio enablement. When `istio.enable` set to true, Istio would be enabled for the specified configurations | -| `gateway` | Allowing external traffic to enter the service mesh through the specified configurations. | -| `host` | The external domain through which traffic will be routed into the service mesh. | -| `tls` | Traffic to and from the gateway should be encrypted using TLS. | -| `secretName` | Specifies the name of the Kubernetes secret that contains the TLS certificate and private key. The TLS certificate is used for securing the communication between clients and the Istio gateway. | -| `virtualService` | Enables the definition of rules for how traffic should be routed to different services within the service mesh. | -| `gateways` | Specifies the gateways to which the rules defined in the VirtualService apply. | -| `hosts` | List of hosts (domains) to which this VirtualService is applied. | -| `http` | Configuration for HTTP routes within the VirtualService. It define routing rules based on HTTP attributes such as URI prefixes, headers, timeouts, and retry policies. | -| `corsPolicy` | Cross-Origin Resource Sharing (CORS) policy configuration. | -| `headers` | Additional headers to be added to the HTTP request. | -| `match` | Conditions that need to be satisfied for this route to be used. | -| `uri` | This specifies a match condition based on the URI of the incoming request. | -| `prefix` | It specifies that the URI should have the specified prefix. | -| `retries` | Retry configuration for failed requests. | -| `attempts` | It specifies the number of retry attempts for failed requests. | -| `perTryTimeout` | sets the timeout for each individual retry attempt. | -| `rewriteUri` | Rewrites the URI of the incoming request. | -| `route` | List of destination rules for routing traffic. | - -### Pause For Seconds Before Switch Active -```yaml -pauseForSecondsBeforeSwitchActive: 30 -``` -To wait for given period of time before switch active the container. - -### Resources - -These define minimum and maximum RAM and CPU available to the application. - -```yaml -resources: - limits: - cpu: "1" - memory: "200Mi" - requests: - cpu: "0.10" - memory: "100Mi" -``` - -Resources are required to set CPU and memory usage. - -#### Limits - -Limits make sure a container never goes above a certain value. The container is only allowed to go up to the limit, and then it is restricted. - -#### Requests - -Requests are what the container is guaranteed to get. - -### Service - -This defines annotations and the type of service, optionally can define name also. - -```yaml - service: - type: ClusterIP - annotations: {} -``` - -### Volumes - -```yaml -volumes: - - name: log-volume - emptyDir: {} - - name: logpv - persistentVolumeClaim: - claimName: logpvc -``` - -It is required when some values need to be read from or written to an external disk. - -### Volume Mounts - -```yaml -volumeMounts: - - mountPath: /var/log/nginx/ - name: log-volume - - mountPath: /mnt/logs - name: logpvc - subPath: employee -``` - -It is used to provide mounts to the volume. - -### Affinity and anti-affinity - -```yaml -Spec: - Affinity: - Key: - Values: -``` - -Spec is used to define the desire state of the given container. - -Node Affinity allows you to constrain which nodes your pod is eligible to schedule on, based on labels of the node. - -Inter-pod affinity allow you to constrain which nodes your pod is eligible to be scheduled based on labels on pods. - -#### Key - -Key part of the label for node selection, this should be same as that on node. Please confirm with devops team. - -#### Values - -Value part of the label for node selection, this should be same as that on node. Please confirm with devops team. - -### Tolerations - -```yaml -tolerations: - - key: "key" - operator: "Equal" - value: "value" - effect: "NoSchedule|PreferNoSchedule|NoExecute(1.6 only)" -``` - -Taints are the opposite, they allow a node to repel a set of pods. - -A given pod can access the given node and avoid the given taint only if the given pod satisfies a given taint. - -Taints and tolerations are a mechanism which work together that allows you to ensure that pods are not placed on inappropriate nodes. Taints are added to nodes, while tolerations are defined in the pod specification. When you taint a node, it will repel all the pods except those that have a toleration for that taint. A node can have one or many taints associated with it. - -### Arguments - -```yaml -args: - enabled: false - value: [] -``` - -This is used to give arguments to command. - -### Command - -```yaml -command: - enabled: false - value: [] -``` - -It contains the commands for the server. - -| Key | Description | -| :--- | :--- | -| `enabled` | To enable or disable the command. | -| `value` | It contains the commands. | - - -### Containers -Containers section can be used to run side-car containers along with your main container within same pod. Containers running within same pod can share volumes and IP Address and can address each other @localhost. We can use base image inside container by setting the reuseContainerImage flag to `true`. - -```yaml - containers: - - name: nginx - image: nginx:1.14.2 - ports: - - containerPort: 80 - command: ["/usr/local/bin/nginx"] - args: ["-g", "daemon off;"] - - reuseContainerImage: true - securityContext: - runAsUser: 1000 - runAsGroup: 3000 - fsGroup: 2000 - volumeMounts: - - mountPath: /etc/ls-oms - name: ls-oms-cm-vol - command: - - flyway - - -configFiles=/etc/ls-oms/flyway.conf - - migrate -``` - -### Prometheus - -```yaml - prometheus: - release: monitoring -``` - -It is a kubernetes monitoring tool and the name of the file to be monitored as monitoring in the given case.It describes the state of the prometheus. - -### rawYaml - -```yaml -rawYaml: - - apiVersion: v1 - kind: Service - metadata: - name: my-service - spec: - selector: - app: MyApp - ports: - - protocol: TCP - port: 80 - targetPort: 9376 - type: ClusterIP -``` -Accepts an array of Kubernetes objects. You can specify any kubernetes yaml here and it will be applied when your app gets deployed. - -### Grace Period - -```yaml -GracePeriod: 30 -``` -Kubernetes waits for the specified time called the termination grace period before terminating the pods. By default, this is 30 seconds. If your pod usually takes longer than 30 seconds to shut down gracefully, make sure you increase the `GracePeriod`. - -A Graceful termination in practice means that your application needs to handle the SIGTERM message and begin shutting down when it receives it. This means saving all data that needs to be saved, closing down network connections, finishing any work that is left, and other similar tasks. - -There are many reasons why Kubernetes might terminate a perfectly healthy container. If you update your deployment with a rolling update, Kubernetes slowly terminates old pods while spinning up new ones. If you drain a node, Kubernetes terminates all pods on that node. If a node runs out of resources, Kubernetes terminates pods to free those resources. It’s important that your application handle termination gracefully so that there is minimal impact on the end user and the time-to-recovery is as fast as possible. - - -### Server - -```yaml -server: - deployment: - image_tag: 1-95a53 - image: "" -``` - -It is used for providing server configurations. - -#### Deployment - -It gives the details for deployment. - -| Key | Description | -| :--- | :--- | -| `image_tag` | It is the image tag | -| `image` | It is the URL of the image | - -### Service Monitor - -```yaml -servicemonitor: - enabled: true - path: /abc - scheme: 'http' - interval: 30s - scrapeTimeout: 20s - metricRelabelings: - - sourceLabels: [namespace] - regex: '(.*)' - replacement: myapp - targetLabel: target_namespace -``` - -It gives the set of targets to be monitored. - -### Db Migration Config - -```yaml -dbMigrationConfig: - enabled: false -``` - -It is used to configure database migration. - - -### KEDA Autoscaling -[KEDA](https://keda.sh) is a Kubernetes-based Event Driven Autoscaler. With KEDA, you can drive the scaling of any container in Kubernetes based on the number of events needing to be processed. KEDA can be installed into any Kubernetes cluster and can work alongside standard Kubernetes components like the Horizontal Pod Autoscaler(HPA). - -Example for autosccaling with KEDA using Prometheus metrics is given below: -```yaml -kedaAutoscaling: - enabled: true - minReplicaCount: 1 - maxReplicaCount: 2 - idleReplicaCount: 0 - pollingInterval: 30 - advanced: - restoreToOriginalReplicaCount: true - horizontalPodAutoscalerConfig: - behavior: - scaleDown: - stabilizationWindowSeconds: 300 - policies: - - type: Percent - value: 100 - periodSeconds: 15 - triggers: - - type: prometheus - metadata: - serverAddress: http://:9090 - metricName: http_request_total - query: envoy_cluster_upstream_rq{appId="300", cluster_name="300-0", container="envoy",} - threshold: "50" - triggerAuthentication: - enabled: false - name: - spec: {} - authenticationRef: {} -``` -Example for autosccaling with KEDA based on kafka is given below : -```yaml -kedaAutoscaling: - enabled: true - minReplicaCount: 1 - maxReplicaCount: 2 - idleReplicaCount: 0 - pollingInterval: 30 - advanced: {} - triggers: - - type: kafka - metadata: - bootstrapServers: b-2.kafka-msk-dev.example.c2.kafka.ap-southeast-1.amazonaws.com:9092,b-3.kafka-msk-dev.example.c2.kafka.ap-southeast-1.amazonaws.com:9092,b-1.kafka-msk-dev.example.c2.kafka.ap-southeast-1.amazonaws.com:9092 - topic: Orders-Service-ESP.info - lagThreshold: "100" - consumerGroup: oders-remove-delivered-packages - allowIdleConsumers: "true" - triggerAuthentication: - enabled: true - name: keda-trigger-auth-kafka-credential - spec: - secretTargetRef: - - parameter: sasl - name: keda-kafka-secrets - key: sasl - - parameter: username - name: keda-kafka-secrets - key: username - authenticationRef: - name: keda-trigger-auth-kafka-credential -``` -### Winter-Soldier -Winter Soldier can be used to -- cleans up (delete) Kubernetes resources -- reduce workload pods to 0 - -**_NOTE:_** After deploying this we can create the Hibernator object and provide the custom configuration by which workloads going to delete, sleep and many more. for more information check [the main repo](https://github.com/devtron-labs/winter-soldier) - -Given below is template values you can give in winter-soldier: -```yaml -winterSoilder: - enable: false - apiVersion: pincher.devtron.ai/v1alpha1 - action: sleep - timeRangesWithZone: - timeZone: "Asia/Kolkata" - timeRanges: [] - targetReplicas: [] - fieldSelector: [] -``` -Here, -| Key | values | Description | -| :--- | :--- | :--- | -| `enable` | `false`,`true` | decide the enabling factor | -| `apiVersion` | `pincher.devtron.ai/v1beta1`, `pincher.devtron.ai/v1alpha1` | specific api version | -| `action` | `sleep`,`delete`, `scale` | This specify the action need to perform. | -| `timeRangesWithZone`:`timeZone` | eg:- `"Asia/Kolkata"`,`"US/Pacific"` | It use to specify the timeZone used. (It uses standard format. please refer [this](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)) | -| `timeRangesWithZone`:`timeRanges` | array of [ `timeFrom`, `timeTo`, `weekdayFrom`, `weekdayTo`] | It use to define time period/range on which the user need to perform the specified action. you can have multiple timeRanges.
These settings will take `action` on Sat and Sun from 00:00 to 23:59:59, | -| `targetReplicas` | `[n]` : n - number of replicas to scale. | These is mandatory field when the `action` is `scale`
Default value is `[]`. | -| `fieldSelector` | `- AfterTime(AddTime( ParseTime({{metadata.creationTimestamp}}, '2006-01-02T15:04:05Z'), '5m'), Now()) ` | These value will take a list of methods to select the resources on which we perform specified `action` . | - - -here is an example, -```yaml -winterSoilder: - apiVersion: pincher.devtron.ai/v1alpha1 - enable: true - annotations: {} - labels: {} - timeRangesWithZone: - timeZone: "Asia/Kolkata" - timeRanges: - - timeFrom: 00:00 - timeTo: 23:59:59 - weekdayFrom: Sat - weekdayTo: Sun - - timeFrom: 00:00 - timeTo: 08:00 - weekdayFrom: Mon - weekdayTo: Fri - - timeFrom: 20:00 - timeTo: 23:59:59 - weekdayFrom: Mon - weekdayTo: Fri - action: scale - targetReplicas: [1,1,1] - fieldSelector: - - AfterTime(AddTime( ParseTime({{metadata.creationTimestamp}}, '2006-01-02T15:04:05Z'), '10h'), Now()) -``` -Above settings will take action on `Sat` and `Sun` from 00:00 to 23:59:59, and on `Mon`-`Fri` from 00:00 to 08:00 and 20:00 to 23:59:59. If `action:sleep` then runs hibernate at timeFrom and unhibernate at `timeTo`. If `action: delete` then it will delete workloads at `timeFrom` and `timeTo`. Here the `action:scale` thus it scale the number of resource replicas to `targetReplicas: [1,1,1]`. Here each element of `targetReplicas` array is mapped with the corresponding elements of array `timeRangesWithZone/timeRanges`. Thus make sure the length of both array is equal, otherwise the cnages cannot be observed. - -The above example will select the application objects which have been created 10 hours ago across all namespaces excluding application's namespace. Winter soldier exposes following functions to handle time, cpu and memory. - -- ParseTime - This function can be used to parse time. For eg to parse creationTimestamp use ParseTime({{metadata.creationTimestamp}}, '2006-01-02T15:04:05Z') -- AddTime - This can be used to add time. For eg AddTime(ParseTime({{metadata.creationTimestamp}}, '2006-01-02T15:04:05Z'), '-10h') ll add 10h to the time. Use d for day, h for hour, m for minutes and s for seconds. Use negative number to get earlier time. -- Now - This can be used to get current time. -- CpuToNumber - This can be used to compare CPU. For eg any({{spec.containers.#.resources.requests}}, { MemoryToNumber(.memory) < MemoryToNumber('60Mi')}) will check if any resource.requests is less than 60Mi. - - - -### Security Context -A security context defines privilege and access control settings for a Pod or Container. - -To add a security context for main container: -```yaml -containerSecurityContext: - allowPrivilegeEscalation: false -``` - -To add a security context on pod level: -```yaml -podSecurityContext: - runAsUser: 1000 - runAsGroup: 3000 - fsGroup: 2000 -``` - -### Topology Spread Constraints -You can use topology spread constraints to control how Pods are spread across your cluster among failure-domains such as regions, zones, nodes, and other user-defined topology domains. This can help to achieve high availability as well as efficient resource utilization. - -```yaml -topologySpreadConstraints: - - maxSkew: 1 - topologyKey: zone - whenUnsatisfiable: DoNotSchedule - autoLabelSelector: true - customLabelSelector: {} -``` - -### Deployment Metrics - -It gives the realtime metrics of the deployed applications - -| Key | Description | -| :--- | :--- | -| `Deployment Frequency` | It shows how often this app is deployed to production | -| `Change Failure Rate` | It shows how often the respective pipeline fails. | -| `Mean Lead Time` | It shows the average time taken to deliver a change to production. | -| `Mean Time to Recovery` | It shows the average time taken to fix a failed pipeline. | - -## 2. Show application metrics - -If you want to see application metrics like different HTTP status codes metrics, application throughput, latency, response time. Enable the Application metrics from below the deployment template Save button. After enabling it, you should be able to see all metrics on App detail page. By default it remains disabled. - -![Figure 3: Application Metrics](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/deployment-template/deployment_application_metrics.jpg) - -Once all the Deployment template configurations are done, click on `Save` to save your deployment configuration. Now you are ready to create [Workflow](../../workflow/README.md) to do CI/CD. - -### Helm Chart Json Schema - -Helm Chart [json schema](https://github.com/devtron-labs/devtron/blob/main/scripts/devtron-reference-helm-charts/reference-chart_5-1-0/schema.json) is used to validate the deployment template values. - -### Other Validations in Json Schema - -The values of CPU and Memory in limits must be greater than or equal to in requests respectively. Similarly, In case of envoyproxy, the values of limits are greater than or equal to requests as mentioned below. -``` -resources.limits.cpu >= resources.requests.cpu -resources.limits.memory >= resources.requests.memory -envoyproxy.resources.limits.cpu >= envoyproxy.resources.requests.cpu -envoyproxy.resources.limits.memory >= envoyproxy.resources.requests.memory -``` diff --git a/docs/user-guide/creating-application/base-config/eso/README.md b/docs/user-guide/creating-application/base-config/eso/README.md old mode 100644 new mode 100755 index c37f70c4af..38a9955144 --- a/docs/user-guide/creating-application/base-config/eso/README.md +++ b/docs/user-guide/creating-application/base-config/eso/README.md @@ -1,3 +1,7 @@ +--- +hide_table_of_contents: true +--- + # Types of External Secrets Apart from the provision to add Secrets, Devtron supports the addition of External Secrets too including: @@ -7,6 +11,7 @@ Apart from the provision to add Secrets, Devtron supports the addition of Extern * [HashiCorp Vault](hashicorp-eso.md) * Azure Secrets Manager -![List of External Secrets](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/external-secrets-list.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/secrets/external-secrets-list.jpg) +
List of External Secrets
However make sure to install [ESO chart](install-eso.md) to your cluster before adding any of the above external secrets. \ No newline at end of file diff --git a/docs/user-guide/creating-application/base-config/eso/aws-eso.md b/docs/user-guide/creating-application/base-config/eso/aws-eso.md old mode 100644 new mode 100755 index 6c7273b9ff..ee6686924d --- a/docs/user-guide/creating-application/base-config/eso/aws-eso.md +++ b/docs/user-guide/creating-application/base-config/eso/aws-eso.md @@ -1,9 +1,8 @@ # AWS Secrets Manager -{% hint style="warning" %} -### Prerequisite +:::caution Prerequisite Install [External Secret Operator (ESO)](install-eso.md). -{% endhint %} +::: To add secrets from **AWS Secrets Manager**, we need to create a generic Kubernetes secret for AWS authentication. @@ -11,17 +10,20 @@ Create a Kubernetes secret in the namespace in which the application is to be de **Note**: You don't have to create the Kubernetes secret every time you create external secret for the respective namespace. -![Figure 1: Create Kubernetes Secret for AWS Authentication](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/aws-secret-generic-chart.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/secrets/aws-secret-generic-chart.jpg) +
Figure 1: Create Kubernetes Secret for AWS Authentication
After creating the generic secret, navigate to `Secrets` section of the application and follow the steps mentioned below : 1. Click `Add Secret` to add a new secret - ![Figure 2: Add a New Secret](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/add-secret.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/secrets/add-secret.jpg) +
Figure 2: Add a New Secret
2. Select `AWS Secret Manager` under `External Secret Operator` (ESO) from the dropdown of `Data type` - ![Figure 3: Select AWS Secrets Manager](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/aws-secret-manager-dropdown.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/secrets/aws-secret.jpg) +
Figure 3: Select AWS Secrets Manager
3. Configure the secret. @@ -36,9 +38,11 @@ After creating the generic secret, navigate to `Secrets` section of the applicat | `key` | AWS Secrets Manager secret name | | `property` | AWS Secrets Manager secret key | - ![Figure 4: Configure AWS Secret Settings](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/aws-eso.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/secrets/aws-eso.jpg) +
Figure 4: Configure AWS Secret Settings
- ![Figure 5: AWS External Secret Configuration](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/aws-external-secret.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/secrets/aws-external-secret.jpg) +
Figure 5: AWS External Secret Configuration
4. Save the secret. @@ -56,19 +60,22 @@ To setup ESO AWS secrets manager with Devtron using ClusterSecretsStore, follow Create a Kubernetes secret in any namespace using base64 encoded AWS access-key and secret-access-key. You can use the devtron generic chart for this. -![Figure 6: Use Generic Chart](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/aws-secret-generic-chart.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/secrets/aws-secret-generic-chart.jpg) +
Figure 6: Use Generic Chart
**2. Create a `ClusterSecretStore`** Create a `ClusterSecretStore` using the secret created for AWS authentication in step 1. -![Figure 7: Create ClusterSecretStore](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/clustersecretstore-yaml.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/secrets/clustersecretstore-yaml.jpg) +
Figure 7: Create ClusterSecretStore
**3. Create a secret in the application using ESO AWS Secrets Manager** Go to the application where you want to create an external secret. Navigate to secrets section under application configuration and create a secret using ESO AWS Secrets Manager. -![Figure 8: Create Secret](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/app-secret-clustersecretstore.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/secrets/app-secret-clustersecretstore.jpg) +
Figure 8: Create Secret
\ No newline at end of file +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/secrets/creating-applications-secrets-10.jpg) +
Figure 11: Application Secrets
--> \ No newline at end of file diff --git a/docs/user-guide/creating-application/base-config/eso/gcp-eso.md b/docs/user-guide/creating-application/base-config/eso/gcp-eso.md old mode 100644 new mode 100755 index 435dabd294..8e550869c7 --- a/docs/user-guide/creating-application/base-config/eso/gcp-eso.md +++ b/docs/user-guide/creating-application/base-config/eso/gcp-eso.md @@ -1,47 +1,59 @@ +--- +hide_table_of_contents: true +--- + # Google Secrets Manager -{% hint style="warning" %} -### Prerequisite +:::caution Prerequisite Install [External Secret Operator (ESO)](install-eso.md). -{% endhint %} +::: To add secrets from **Google Secrets Manager**, follow the steps mentioned below : 1. Go to Google cloud console and create a Service Account. - ![Figure 1: Create Service Account](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/google-sa.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/secrets/google-sa.jpg) +
Figure 1a: Create Service Account
- ![Figure 2: Service Account Creation](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/google-sa-create.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/secrets/google-sa-create.jpg) +
Figure 1b: Service Account Creation
2. Assign roles to the service account. - ![Figure 3: Assign Service Account Roles](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/google-sa-roles.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/secrets/google-sa-roles.jpg) +
Figure 2: Assign Service Account Roles
3. Add and create a new key. - ![Figure 4a: Add Service Account Key](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/google-key.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/secrets/google-key.jpg) +
Figure 3a: Add Service Account Key
- ![Figure 4b: Create Service Account Key](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/google-key-create.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/secrets/google-key-create.jpg) +
Figure 3b: Create Service Account Key
4. Create a Kubernetes secret in the namespace in which the application is to be deployed using base64 encoded service account key. You can use devtron generic chart for this. - ![Figure 5: Create Kubernetes Secret](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/gcp-auth-generic.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/secrets/gcp-auth-generic.jpg) +
Figure 4: Create Kubernetes Secret
5. After creating the generic secret, navigate to `Secrets` section of the application and click `Add Secret` to add a new secret. - ![Figure 6: Add New Secret](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/add-secrets.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/secrets/add-secret.jpg) +
Figure 5: Add New Secret
6. Select `Google Secrets Manager` under `External Secret Operator` (ESO) from the dropdown of `Data type`. - ![Figure 7: Select Google Secrets Manager](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/gcp-secret-manager-dropdown.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/secrets/gcp-secret-manager.jpg) +
Figure 6: Select Google Secrets Manager
7. Configure secret. - ![Figure 8: Configure Secret Settings](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/gcp-es-configure.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/secrets/gcp-es-configure.jpg) +
Figure 7: Configure Secret Settings
| Key | Description | | :--- | :--- | @@ -52,6 +64,7 @@ To add secrets from **Google Secrets Manager**, follow the steps mentioned below | `key` | GCP Secrets Manager secret name. | - ![Figure 9: Google Secret Example](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/gcp-secret.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/secrets/gcp-secret.jpg) +
Figure 8: Google Secret Example
8. Save secret. \ No newline at end of file diff --git a/docs/user-guide/creating-application/base-config/eso/hashicorp-eso.md b/docs/user-guide/creating-application/base-config/eso/hashicorp-eso.md old mode 100644 new mode 100755 index 7b706f2364..8cac4d8585 --- a/docs/user-guide/creating-application/base-config/eso/hashicorp-eso.md +++ b/docs/user-guide/creating-application/base-config/eso/hashicorp-eso.md @@ -1,9 +1,12 @@ +--- +hide_table_of_contents: true +--- + # HashiCorp Vault -{% hint style="warning" %} -### Prerequisite +:::caution Prerequisite Install [External Secret Operator (ESO)](install-eso.md). -{% endhint %} +::: To incorporate secrets from **HashiCorp Vault**, you need to create a generic Kubernetes secret that will be used for vault authentication. This involves creating a Kubernetes secret in the specific namespace where your application will be deployed. The secret should store the base64-encoded password or token obtained from vault. To simplify the process, you can utilize the Devtron generic chart. An example yaml is given below: @@ -27,19 +30,22 @@ Once you have created the generic secret, follow these steps in the application' To add a new secret to the application, go to the **Configurations** page of the application. Then, navigate to the left pane and select the `Secrets` option and click the **Add Secret** button. -![Figure 1: Add a New Secret](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/hc-add-secret.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/secrets/add-secret.jpg) +
Figure 1: Add a New Secret
**2. Select `HashiCorp Vault` as the External Secret Operator** After clicking the **Add Secret** button, select `HashiCorp Vault` from the dropdown menu for the `Data type` option. Provide a name for the secret you are creating, and then proceed to configure the external secret as described in the next step. -![Figure 2: Select HashiCorp Vault as External Secret Operator](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/hc-secret-type.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/secrets/hc-secret-type.jpg) +
Figure 2: Select HashiCorp Vault as External Secret Operator
**3. Configure the secret** To configure the external secret that will be fetched from HashiCorp Vault for your application, you will need to provide specific details using the following key-value pairs: -![Figure 3: Configure HashiCorp Vault Secret Settings](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/hc-secret-configure.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/secrets/hc-secret-configure.jpg) +
Figure 3: Configure HashiCorp Vault Secret Settings
| Key | Description | @@ -52,9 +58,11 @@ To configure the external secret that will be fetched from HashiCorp Vault for y | `key` | Enter the name of the secret in Vault | | `property` | Specify the key within the Vault secret | -![Figure 4: Token Secret Reference Configuration](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/tokenSecretRef.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/secrets/tokenSecretRef.jpg) +
Figure 4: Token Secret Reference Configuration
-![Figure 5: HashiCorp Vault ESO Secret Example](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/hc-eso.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/secrets/hc-eso.jpg) +
Figure 5: HashiCorp Vault ESO Secret Example
**4. Save the secret** diff --git a/docs/user-guide/creating-application/base-config/eso/install-eso.md b/docs/user-guide/creating-application/base-config/eso/install-eso.md old mode 100644 new mode 100755 index e191d2fa3e..1613b5f010 --- a/docs/user-guide/creating-application/base-config/eso/install-eso.md +++ b/docs/user-guide/creating-application/base-config/eso/install-eso.md @@ -1,12 +1,15 @@ # Install ESO -{% hint style="info" %} -### Prerequisites +:::info Prerequisites Chart version should be > 4.14.0 -{% endhint %} +::: + +## Introduction External Secrets Operator is a Kubernetes operator that integrates external secret management systems like AWS Secrets Manager, HashiCorp Vault, Google Secrets Manager, Azure Key Vault and many more. The operator reads information from external APIs and automatically injects the values into a Kubernetes Secret. +--- + ## Install External Secret Operator Before creating any external secrets on Devtron, `External Secret Operator` must be installed on the target cluster. `External Secret Operator` allows you to use external secret management systems (e.g., AWS Secrets Manager, Hashicorp Vault, Azure Secrets Manager, Google Secrets Manager etc.) to securely inject secrets in Kubernetes. @@ -16,7 +19,8 @@ You can install `External Secrets Operator` using charts store: 1. Go to the **Charts Store**. 2. Search the chart named `external-secrets`. -![Figure 1: External Secrets Chart](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/external-secret.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/secrets/external-secret-chart.jpg) +
Figure 1: External Secrets Chart
3. If you don't find any chart with this name i.e `external-secrets`, add chart repository using repository url ` https://charts.external-secrets.io`. Please follow this [documentation](../../../global-configurations/chart-repo.md#add-chart-repository) for adding chart repository. diff --git a/docs/user-guide/creating-application/base-config/eso/secrets.md b/docs/user-guide/creating-application/base-config/eso/secrets.md old mode 100644 new mode 100755 index 2262b83e31..8d273890ca --- a/docs/user-guide/creating-application/base-config/eso/secrets.md +++ b/docs/user-guide/creating-application/base-config/eso/secrets.md @@ -8,11 +8,13 @@ Simply put, if a [ConfigMap](../config-maps.md) is a recipe card in the kitchen, 1. Go to the **Configurations** → **Base Configurations**. - ![Figure 1: Application's 'Configurations' Page](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/config-maps/appconfig-page.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/config-maps/appconfig-page.jpg) +
Figure 1: Application's 'Configurations' Page
2. Click the **+** button next to **Secrets**. - ![Figure 2: Add Button](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/add-secret.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/add-secret.jpg) +
Figure 2: Add Button
3. **Data Type** - Choose between the following data types: * [Kubernetes Secret](#kubernetes-secret) @@ -27,17 +29,18 @@ Simply put, if a [ConfigMap](../config-maps.md) is a recipe card in the kitchen, 2. **Name** - Provide a name to your Secret (cannot be changed later). - ![Figure 3: Naming the Secret](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/creating-applications-secrets-2.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/creating-applications-secrets-2.jpg) +
Figure 3: Naming the Secret
3. **Mount data as** - Select how you want to mount the Secret: * **Environment Variable** – Select this option if you want to inject Environment Variables in pods using Secret. - * **Data Volume** – Select this option, if you want to configure a Data Volume that is accessible to Containers running in a pod and provide a Volume mount path. Go to [Data Volume](#mount-data-as-data-valume) to know more. + * **Data Volume** – Select this option, if you want to configure a Data Volume that is accessible to Containers running in a pod and provide a Volume mount path. Go to [Data Volume](#mount-data-as-data-volume) to know more. 4. Enter data in: - **GUI mode** – User-friendly interface. Click **+Add** button and enter the **Key** and **Value** fields without quotes. - **YAML mode** – Raw YAML for entering key-value pairs in the format **`key: value`**. Boolean and numeric values must be wrapped in double quotes. - {% embed url="https://www.youtube.com/watch?v=x6IIr6pDZig" %} +
5. You may [perform a dry run](#perform-a-dry-run) before clicking **Save**. @@ -49,7 +52,7 @@ Use this option to mount an existing Kubernetes Secret in your application pods. 2. **Name** - Make sure you give the same name as the existing secret. Otherwise, it might result in an error during the build. -3. Mount data as: **Environment Variable** or [Data Volume](#mount-data-as-data-valume) +3. Mount data as: **Environment Variable** or [Data Volume](#mount-data-as-data-volume) 4. Click **Save**. @@ -61,17 +64,20 @@ Use this option to mount an existing Kubernetes Secret in your application pods. In the above example, we have seen how to pass environment variables in your Secret. Additionally, there is an option to mount a Secret by passing its content to a file. The content could be a plain text, json, yaml, bash script, etc. You can do so by selecting the `Data Volume` option in **Mount data as**. -![Figure 4: Naming the Secret](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/secret-data-volume.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/secret-data-volume.jpg) +
Figure 4: Naming the Secret
The key of the Secret should be your filename and the value of the Secret should be your file content. In the below example, you `file.json` is the key, and the json content is the value of that Secret (below the pipe (**|**) symbol). This file will be created on your specified [volume mount path](#volume-mount-path). -![Figure 5: Adding File Content](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/filecontent-secret.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/filecontent-secret.jpg) +
Figure 5: Adding File Content
### Volume Mount Path Enter the folder path where the data volume should be mounted for it to be accessible to the containers running in a pod. Your keys will be mounted as files to that volume. -![Figure 6: Selecting Data Volume Option](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/secret-volume-mount-path.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/secret-volume-mount-path.jpg) +
Figure 6: Selecting Data Volume Option
### Set Sub Path @@ -81,11 +87,10 @@ When mounting multiple files to the same location, you can use the **Set Sub Pat * If **Set Sub Path** is disabled (unchecked), the system will delete any files already present in the [specified path](#volume-mount-path) and then mount the new files. -{% hint style="info" %} -### Note +:::info Note In case of Kubernetes Secrets, all keys will be mounted as files on the specified path. In case of External Secrets, manually specify the keys which should be mounted as files. -{% endhint %} +::: ### Set File Permission @@ -117,7 +122,8 @@ Before saving your configured Secret, you can use the **Dry Run** option (as sho This feature helps you verify your configurations, detect issues, and ensure correctness. -![Figure 7: Performing a Dry Run](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/dry-run-secret.gif) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/dry-run-secret.gif) +
Figure 7: Performing a Dry Run
Your configurations will appear in the left pane, while the right pane will display a section named `Manifest generated from merged` showing the computed Kubernetes manifest. @@ -129,12 +135,12 @@ Your configurations will appear in the left pane, while the right pane will disp 2. Modify its values. 3. Click **Update**. -{% hint style="warning" %} -### Note +:::caution Note You cannot change the name of a Secret. Create a new Secret instead. -{% endhint %} +::: -![Figure 8: Updating Existing Secret](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/update-secret.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/update-secret.jpg) +
Figure 8: Updating Existing Secret
--- @@ -147,24 +153,24 @@ You may delete a Secret if not in use anymore. Once a Secret is deleted, it will 3. Click **Delete**. 4. Confirm the deletion in the dialogbox. -![Figure 9: Deleting Secret](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/delete-secret.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/delete-secret.jpg) +
Figure 9: Deleting Secret
--- -## Edit a Protected Secret [![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/elements/EnterpriseTag.svg)](https://devtron.ai/pricing) +## Edit a Protected Secret Any changes made to the protected base configurations (Deployment Template, ConfigMap, Secret) will require approval if an [approval policy](../../../global-configurations/approval-policy.md) is enforced. -{% embed url="https://www.youtube.com/watch?v=pJPX-rJNb_o" %} +
--- ## External Secret Operator (ESO) -{% hint style="info" %} -### Prerequisite +:::info Prerequisite Chart version should be > 4.14.0 -{% endhint %} +::: ### Purpose @@ -182,16 +188,17 @@ External Secrets Operator (ESO) is a Kubernetes component that integrates with e 2. Search for the `external-secrets` chart. - ![Figure 10: Searching External Secrets Chart](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/external-secret.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/external-secret.jpg) +
Figure 10: Searching External Secrets Chart
-{% hint style="info" %} -### What if external-secrets chart is not found? +:::info What if external-secrets chart is not found? Manually add the following chart repository URL in Devtron: `https://charts.external-secrets.io`. Follow this [guide](../../../global-configurations/chart-repo.md#add-chart-repository) to know the steps. -{% endhint %} +::: 3. Give a name to the helm app that will be created from the chart. Also enter the project and environment where you wish to install the chart. - ![Figure 11: Adding Details](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/ext-secret-fields.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/ext-secret-fields.jpg) +
Figure 11: Adding Details
4. Click **Deploy Chart**. diff --git a/docs/user-guide/creating-application/base-config/secrets.md b/docs/user-guide/creating-application/base-config/secrets.md old mode 100644 new mode 100755 index 0c5395ab0d..3057edb1a4 --- a/docs/user-guide/creating-application/base-config/secrets.md +++ b/docs/user-guide/creating-application/base-config/secrets.md @@ -1,60 +1,59 @@ # Secrets -### Introduction - Secrets and configmaps both are used to store environment variables but there is one major difference between them: Configmap stores key-values in normal text format while secrets store them in base64 encrypted form. Devtron hides the data of secrets for the normal users and it is only visible to the users having edit permission. Secret objects let you store and manage sensitive information, such as passwords, authentication tokens, and ssh keys. Embedding this information in secrets is safer and more flexible than putting it verbatim in a Pod definition or in a container image. ---- +## Add Secret -## Configure Secret +1. Go to **Application Management** → **Devtron Applications** → (Select Your App) -![Figure 1: Configure a Secret](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/add-secret.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/secrets/devtron-apps-nav.jpg) +
Figure 1: Navigating to App Configurations
-Click `Add Secret` to add a new secret. +2. Go to **Configurations** (tab) → **Base Configurations**. -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/creating-applications-secrets-2.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/secrets/appconfig-page.jpg) +
Figure 2: Application's 'Configurations' Page
-| Key | Description | -| :--- | :--- | -| `Name` | Provide a name to your Secret | -| `Data Type` | Provide the Data Type of your secret. To know about different Data Types available click on [Data Types](secrets.md#data-types) | -| `Data Volume` | Specify if there is a need to add a volume that is accessible to the Containers running in a pod. | -| `Use secrets as Environment Variable` | Select this option if you want to inject Environment Variables in your pods using Secrets. | -| `Use secrets as Data Volume` | Select this option if you want to configure a Data Volume that is accessible to Containers running in a pod. Ensure that you provide a Volume mount path for the same. | -| `Key-Value` | Provide a key and the corresponding value of the provided key. | +3. Click the **+** button next to **ConfigMaps**. ---- + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/secrets/add-secret.jpg) +
Figure 3: Adding Secret
+ + | Key | Description | + | :--- | :--- | + | `Name` | Provide a name to your Secret | + | `Data Type` | Provide the Data Type of your secret. To know about different Data Types available click on [Data Types](secrets.md#data-types) | + | `Data Volume` | Specify if there is a need to add a volume that is accessible to the Containers running in a pod. | + | `Use secrets as Environment Variable` | Select this option if you want to inject Environment Variables in your pods using Secrets. | + | `Use secrets as Data Volume` | Select this option if you want to configure a Data Volume that is accessible to Containers running in a pod. Ensure that you provide a Volume mount path for the same. | + | `Key-Value` | Provide a key and the corresponding value of the provided key. | + +4. Enter data in: + * **GUI mode** – User-friendly interface. Click **+Add** button and enter the **Key** and **Value** fields without quotes. + * **YAML mode** – Raw YAML for entering key-value pairs in the format **`key: value`**. Boolean and numeric values must be wrapped in double quotes. + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/secrets/created-secret.gif) +
Figure 4: Entering the Details
+ +5. You may perform a dry run before clicking **Save**. ## Volume Mount Path Specify the volume mount folder path in `Volume Mount Path`, a path where the data volume needs to be mounted. This volume will be accessible to the containers running in a pod. -![Figure 2: Volume Mount Path](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/secret-volume-mount-path.jpg) - ---- +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/secrets/secret-volume-mount-path.jpg) +
Figure 5: Entering Volume Mount Path
## Sub Path For multiple files mount at the same location you need to check sub path `bool` field, it will use the file name (key) as sub path. Sub Path feature is not applicable in case of external configmap except AWS Secret Manager, AWS System Manager and Hashi Corp Vault, for these cases `Name (Secret key)` as sub path will be picked up automatically. ---- - ## File Permission +File permission will be provide at the configmap level not on the each key of the configmap. it will take 3 digit standard permission for the file. -File permission will be provided at the ConfigMap level not on the each key of the ConfigMap. it will take 3 digit standard permission for the file. - -Click `Save Secret` to save the secret. - -![Figure 3: File Permission](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/creating-applications-secrets-4.jpg) - -You can see the Secret is added. - -![Figure 4: Add a Secret](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/creating-applications-secrets-5.gif) - ---- ## Update Secrets @@ -62,99 +61,17 @@ You can update your secrets anytime later, but you cannot change the name of you To update secrets, click the secret you wish to update. -![Figure 5: Update a Secret](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/creating-applications-secrets-6.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/secrets/update-secret.jpg) +
Figure 6: Updating Existing Secret
Click `Update Secret` to update your secret. ---- - ## Delete Secret You can delete your secret. Click your secret and click the `delete sign` to delete your secret. -![Figure 6: Delete a Secret](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/creating-applications-secrets-7.jpg) - ---- - -## Edit a Protected Secret [![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/elements/EnterpriseTag.svg)](https://devtron.ai/pricing) - -Any changes made to the protected base configurations (Deployment Template, ConfigMap, Secret) will require approval if an [approval policy](../../../user-guide/global-configurations/approval-policy.md) is enforced. When you want to edit a protected configuration, you can do it in the following ways: - -* [Normal Edit](#normal-edit) - Where changes to the protected configuration can be proposed or pushed as a draft, but published only after getting approval from the approver(s). - -* [Express Edit](#express-edit) - Where you bypass the approval process and directly make changes to the protected configuration. - -### Normal Edit - -{% hint style="warning" %} - -### Who Can Perform This Action? - -Only a Super-Admin, Manager, or an Admin can edit the configuration values. Refer to [User Permissions](../../global-configurations/authorization/user-access.md) for more information. - -{% endhint %} - -Follow the below steps to edit a protected Secret: - -1. Navigate to the **Applications** page and click on your preferred application. - -2. Go to the **Configurations** → **Base Configurations**. - -3. Click on **Secrets** and select the Secret you'd like to edit. - -4. Modify the values either by using **GUI** or **YAML** editor. - -5. Click **Save Changes**. The Base Configurations pop-up page will be displayed. - - * **Save as draft** - Select this option if you want to continue making your changes later but save your changes as a draft for now. - - * **Propose changes** - Select this option if you want to propose your changes to the approvers. You can then select the approvers to get notified regarding the change from the **Select approvers** to notify drop-down box. - -6. Enter your comments (reason for making the changes) in the **Comment** text box. - -7. Click **Propose Changes**. The corresponding approver will be notified via email regarding your request. - -### Express Edit - -{% hint style="warning" %} - -### Who Can Perform This Action? - -Only a Super-Admin (when the [Super admins toggle](../../global-configurations/approval-policy.md#excluding-super-admins) is enabled in the Exceptions tab) or [specific users / user groups](../../global-configurations/approval-policy.md#excluding-specific-users--user-groups--api-tokens) who are added as exceptions in the Approval Policy can make express edits. Refer to [Approval Policy](../../global-configurations/approval-policy.md) for more information. - -{% endhint %} - -Express edits allow you to bypass the approval process and make direct edits to the configurations. Follow the below steps to make express edits: - -1. Navigate to the **Applications** page and click on your preferred application. - -2. Go to the **Configurations** → **Base Configurations**. - -3. Click on **Secrets** and select the Secret you'd like to edit. - -4. Click on the **Edit** button. - -{% hint style="info" %} - -### Note - -The **Edit** button will only be displayed if: - -* You are a Super-Admin and the Super admins toggle is enabled in the Approval Policy page - -* You are added as an exception in the Approval Policy page. - -Refer to [Approval Policy](../../global-configurations/approval-policy.md) for more information. - -{% endhint %} - -5. Modify the values either by using **GUI** or **YAML** editor. - -6. Click on **Publish Changes** to direcly publish your changes. - -![Figure 7: Express Edit a Protected Secret](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/base-config/express-edit-secret.gif) - ---- +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/secrets/delete-secret.jpg) +
Figure 7: Deleting a Secret
## Data Types @@ -209,14 +126,16 @@ $ helm install my-release external-secrets/kubernetes-external-secrets --set sec To add secrets from AWS secret manager, navigate to `Secrets` of the application and follow the steps mentioned below : -![Figure 8: Create a Secret](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/creating-applications-secrets-8.jpg) - 1. Click `Add Secret` to add a new secret. -![Figure 9: AWS Secrets Manager](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/aws-secret.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/secrets/add-secret.jpg) +
Figure 8: Adding New Secret
2. Select `AWS Secret Manager` from dropdown of `Data type`. + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/secrets/aws-secret.jpg) +
Figure 9: Choosing AWS Secrets Manager
+ 3. Provide a name to your secret. 4. Select how you want to use the secret. You may leave it selected as environment variable and also you may leave `Role ARN` empty. @@ -240,4 +159,5 @@ To add secrets in AWS secret manager, do the following steps : 2. Click `Store a new secret`. 3. Add and save your secret. -![Figure 10: Add Secret in AWS Secret Manager](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/secrets/creating-applications-secrets-10.jpg) \ No newline at end of file + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/secrets/aws-side-secret.jpg) +
Figure 10: Storing Secret in AWS Secrets Manager
\ No newline at end of file diff --git a/docs/user-guide/creating-application/config-approval.md b/docs/user-guide/creating-application/config-approval.md deleted file mode 100644 index 5b880ce399..0000000000 --- a/docs/user-guide/creating-application/config-approval.md +++ /dev/null @@ -1,134 +0,0 @@ -# Protect Configuration - -## Introduction [![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/elements/EnterpriseTag.svg)](https://devtron.ai/pricing) - -Since resources are created according to the configurations you enter, it's essential to restrict such configurations from direct modifications. For critical environments like production, it becomes necessary to introduce an approval flow for any edits made to the configuration files. - -In Devtron, these configurations are present in the **App Configuration** tab of your application. - -Any changes made to the following configurations will require approval if enabled: - -- Deployment Template -- ConfigMaps -- Secrets - -This stands true for both: base configuration and respective environment-level configuration. - -![Figure 1a: Protecting Base Configuration](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/config-approval/base-config.jpg) - -![Figure 1b: Protecting Environment-level Configuration](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/config-approval/env-config.jpg) - ---- - -## Tutorial - -{% embed url="https://www.youtube.com/watch?v=TVLEbY850hI" caption="Protect Configuration and Approval" %} - ---- - -## Changing the Configuration Values - -{% hint style="info" %} -Only a super-admin, manager, and admin can edit the configuration values. -{% endhint %} - -Let's assume you are the application admin and you wish to edit the deployment template of your environment (as an override). - -1. Go to the `App Configuration` tab. - -2. In Environment Overrides → (choose your environment) → Deployment Template - - ![Figure 2: Selecting Values to Change](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/config-approval/edit-deployment-template.jpg) - -3. You can change the value of a key to a desired value as shown below. Once done, click the **Save Changes…** button. - - ![Figure 3: Changed Values](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/config-approval/changed-values.jpg) - -{% hint style="info" %} -If you are not a super-admin, you cannot modify the locked keys in deployment template. Refer [Lock Deployment Configuration](../global-configurations/lock-deployment-config.md) to know more. -{% endhint %} - -4. If the configuration is protected, your changes won't be published right away. You can do either of the following: - - * **Save as draft** : Selecting this option will save your file as a draft. You and other users can view and edit the saved draft and propose it further for approval. - * **Save & Propose Changes** : Selecting this option will propose your changes to a configuration approver for a review. - - Since we are proposing the changes immediately, click **Propose Changes**. - - ![Figure 4: Proposing Changes](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/config-approval/propose-changes.jpg) - -5. You can also view the approver(s) if you wish. - - ![Figure 5: Viewing the Approver(s)](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/config-approval/approver-list-1.jpeg) - -{% hint style="info" %} -The one who performs the edits cannot approve their own changes. A different user has to review and approve. -{% endhint %} - -Only one draft can exist at time and you cannot create multiple drafts. In the top-right corner, you have the option to discard the draft if you don't wish to proceed with the edits you made. - ---- - -## Approving the Configuration - -{% hint style="info" %} -Only a different super-admin user or someone (who is not amongst the editors of the draft), having `Configuration approver` access, can approve the changes made to the configuration files. -{% endhint %} - -Go to the edited configuration file to review and approve the changes as shown below. - -![Figure 6: Approving the Changes](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/config-approval/approval-screen.jpg) - -A super-admin can check whether a user has approval rights by going to **Global Configurations** → **Authorization** (dropdown) → **User Permissions**. - -![Figure 7: Checking Permissions](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/config-approval/config-approver-1.jpg) - - ---- - -## Deploying with New Configuration Values - -Once the approver validates and approves your configuration changes, you can proceed to deploy your application with the updated configuration. - -1. Go to the **Build & Deploy** tab of your application. - -2. Click **Select Image** in the deployment flow. - - ![Figure 8: Build & Deploy Page](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/config-approval/deploy-pipeline.jpg) - -3. You can view an indicator at the bottom `Config Diff from Last Deployed`. Click **Review** to view the changes. - - ![Figure 9: Checking Config Diff](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/config-approval/review-config-diff.jpg) - -{% hint style="info" %} -If the new configuration is not yet approved, the changes made to the config would not be visible during deployment, it would show `No Config Diff from Last Deployed` at the bottom. In that case, check whether your changes are present in the live config or not. If your changes are absent, chances are your draft is either pending for approval or rejected (discarded). -{% endhint %} - -4. Once you have verified the changes, you can click **Deploy**. - - ![Figure 10: Deploying App using New Config](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/config-approval/deploy.jpg) - -{% hint style="info" %} -If you don't wish to deploy with the new changes, you can choose `Last deployed config` from the available drop-down. -{% endhint %} - ---- - -## Enabling/Disabling Config Protection - -{% hint style="info" %} -Only a super-admin can enable or disable the config protection. -{% endhint %} - -1. Go to the `App Configuration` tab. - -2. Click `Protect Configuration`. - -3. Use the toggle button to enable the protection for the configuration of your choice (base/environment level). A protection badge would appear next to the chosen configuration. - -Alternatively, unprotecting the configuration will lead to the discarding of unapproved drafts (if any). - -![Figure 11a: Disabling Protection](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/config-approval/toggle-protection.jpg) - -![Figure 11b: Confirming Action](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/config-approval/unprotect.jpg) - diff --git a/docs/user-guide/creating-application/container-registry-override.md b/docs/user-guide/creating-application/container-registry-override.md old mode 100644 new mode 100755 index bf1bf57286..bb019844c7 --- a/docs/user-guide/creating-application/container-registry-override.md +++ b/docs/user-guide/creating-application/container-registry-override.md @@ -4,8 +4,10 @@ Within the same application, you can override a `container registry`, `container ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/workflow-ci-pipeline/select-build-override.jpg) +
Figure 1: Select Build Override
![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/workflow-ci-pipeline/build-allow-override.jpg) +
Figure 2: Allow Build Override
To override a container registry, container image or target platform: @@ -22,5 +24,6 @@ To override a container registry, container image or target platform: The overridden container registry/container image location/target platform will be reflected on the [Build Configuration](docker-build-configuration.md) page. You can also see the number of build pipelines for which the container registry/container image location/target platform is overridden. ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/workflow-ci-pipeline/build-configuration-overridden.jpg) +
Figure 3: Build Configuration Overridden
diff --git a/docs/user-guide/creating-application/deployment-template.md b/docs/user-guide/creating-application/deployment-template.md deleted file mode 100644 index dcc861fd1d..0000000000 --- a/docs/user-guide/creating-application/deployment-template.md +++ /dev/null @@ -1,241 +0,0 @@ -# Base Deployment Template - - -A deployment configuration is a manifest of the application. It defines the runtime behavior of the application. -You can select one of the default deployment charts or custom deployment charts which are created by super admin. - -To configure a deployment chart for your application, do the following steps: - -* Go to **Applications** and create a new application. -* Go to **App Configuration** page and configure your application. -* On the **Base Deployment Template** page, select the drop-down under **Chart type**. - -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/deployment-template/deployment-chart-v3.jpg) - ---- - -## Selecting a Chart Type - -{% hint style="warning" %} -### Who Can Perform This Action? -Users need to have [Admin role](../global-configurations/authorization/user-access.md#devtron-apps-permissions) or above to select a chart. -{% endhint %} - -{% hint style="warning" %} -### Note -After you select and save a chart type for a given application, you won't be able to change it later. Make sure to choose the correct chart type before saving. You can select a chart from [Devtron Charts](#from-devtron-charts) or other [Deployment Charts](#from-deployment-charts). -{% endhint %} - -### From Devtron Charts - -You can select a default deployment chart from the following options: - -1. [Deployment](../creating-application/base-config/deployment-template/deployment.md) (Recommended) -2. [Rollout Deployment](../creating-application/base-config/deployment-template/rollout-deployment.md) -3. [Job & CronJob](../creating-application/base-config/deployment-template/job-and-cronjob.md) -4. [StatefulSet](../creating-application/base-config/deployment-template/statefulset.md) - -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/deployment-template/select-devtron-chart.gif) - -### From Deployment Charts - -{% hint style="warning" %} -This option will be available only if a custom chart exists. If it doesn't, a user with `super admin` permission may upload one in [Global Configurations → Deployment Charts](../global-configurations/deployment-charts.md). -{% endhint %} - -You can select an available custom chart as shown below. You can also view the description of the custom charts in the list. - -![Selecting Custom Chart](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/deployment-template/select-custom-chart.gif) - ---- - -## Selecting a Chart Version - -{% hint style="warning" %} -### Who Can Perform This Action? -Users need to have [Admin role](../global-configurations/authorization/user-access.md#devtron-apps-permissions) or above to select a chart version. -{% endhint %} - -Once you select a chart type, choose a chart version using which you wish to deploy the application. - -![Selecting Chart Version](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/deployment-template/chart-version.jpg) - -Devtron uses helm charts for deployments and it maintains multiple chart versions based on the features it supports. - -One can see available chart versions in the drop-down. You can select any chart version as per your requirements. By default, the latest version of the helm chart is selected. - -Every chart version has its own YAML file that provides specifications for your application. To make it easy to use, we have created templates for the YAML file and have added some variables inside the YAML. You can provide or change the values of these variables as per your requirement. - ---- - -## Configuring the Chart - -{% hint style="warning" %} -### Who Can Perform This Action? -Users need to have [Admin role](../global-configurations/authorization/user-access.md#devtron-apps-permissions) or above to configure a chart. However, super-admins can lock keys in base deployment template to prevent non-super-admins from modifying them. Refer [Lock Deployment Configuration](../global-configurations/lock-deployment-config.md) to know more. -{% endhint %} - -### Using Basic GUI - -If you are not an advanced user, you may use the **Basic (GUI)** section to configure your chosen chart. - -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/deployment-template/basic-gui.jpg) - -By default, the following fields are available for you to modify in the **Basic (GUI)** section: - -| Fields | Description | -| :--- | :--- | -| **Arguments** | Enable the `Arguments` to pass one or more argument values. By default, it is in the `disabled` state. | -| **Command** | Enable the `Command` to pass one or more command values. By default, it is in the `disabled` state. | -| **HTTP Request Routes** | Enable the `HTTP Request Routes` to define `Host`, and `Path`. By default, it is in the `disabled` state.
  • **Host**: Domain name of the server.
  • **Path**: Path of the specific component in the host that the HTTP wants to access.
You can define multiple paths as required by clicking **Add path**.| -| **Resources** | Here, you can tweak the requests and limits of the CPU resource and RAM resource as per the application. | -| **Autoscaling** | Define the autoscaling parameters to automatically scale your application's deployment based on resource utilization.
  • **Maximum Replicas**: The maximum number of replicas your application can scale up to.
  • **Minimum Replicas**: The minimum number of replicas your application should run at any time.
  • **Target CPU Utilization Percentage**: The average CPU utilization across all pods that will trigger scaling.
  • **Target Memory Utilization Percentage**: The average memory utilization across all pods that will trigger scaling.
| -| **Environment Variables** (**Key/Value**) | Define `key/value` by clicking **Add variable**.
  • **Key**: Define the key of the environment.
  • **Value**: Define the value of the environment.
You can define multiple env variables by clicking **Add EnvironmentVariables**. | -| **Container Port** | The internal port on which the container listens for HTTP requests. Specify the container port and optionally the service port that maps to it. | -| **Service** | Configure the service that exposes your application to the network.
  • **Type**: Specify the type of service (e.g., ClusterIP, NodePort, LoadBalancer).
  • **Annotations**: Add custom annotations to the service for additional configuration.
| -| **Readiness Probe** | Define the readiness probe to determine when a container is ready to start accepting traffic.
  • **Path**: The HTTP path that the readiness probe will access.
  • **Port**: The port on which the readiness probe will access the application.
| -| **Liveness Probe** | Define the liveness probe to check if the container is still running and to restart it if it is not.
  • **Path**: The HTTP path that the liveness probe will access.
  • **Port**: The port on which the liveness probe will access the application.
| -| **Tolerations** | Define tolerations to allow the pods to be scheduled on nodes with matching taints.
  • **Key**: The key of the taint to tolerate.
  • **Operator**: The relationship between the key and the value (e.g., Exists, Equal).
  • **Value**: The value of the taint to match.
  • **Effect**: The effect of the taint to tolerate (e.g., NoSchedule, NoExecute).
| -| **ServiceAccount** | Specify the service account for the deployment to use, allowing it to access Kubernetes API resources.
  • **Create**: Toggle to create a new service account.
  • **Name**: The name of the service account to use.
| - -Click **Save Changes**. If you want to do additional configurations, then click the **Switch to Advanced** button or **Advanced (YAML)** button for modifications. - -{% hint style="warning" %} -### Note -* If you change any values in the 'Basic (GUI)', then the corresponding values will change in 'Advanced (YAML)' too. -* Users who are not super-admins will land on 'Basic (GUI)' section when they visit **Base Deployment Template** page; whereas super-admins will land on 'Advanced (YAML)' section. This is just a default behavior; therefore, they can still navigate to the other section if needed. -{% endhint %} - -#### Customize Basic GUI [![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/elements/EnterpriseTag.svg)](https://devtron.ai/pricing) - -{% hint style="warning" %} -### Who Can Perform This Action? -Superadmin can define and apply custom deployment schema. -{% endhint %} - -By default, the `Basic (GUI)` section comes with multiple predefined fields as seen earlier [in the table](#using-basic-gui). However, if you wish to display a different set of fields to your team, you can modify the whole section as per your requirement. - -This is useful in scenarios where: -* Your team members find it difficult to understand and edit the [Advanced (YAML)](#using-advanced-yaml) section. -* You frequently edit certain fields in Advanced (YAML), which you expect to remain easily accessible in Basic (GUI) section. -* You don't require some fields in Basic (GUI) section. -* You need the autonomy to keep the Basic (GUI) unique for applications/clusters/environments/charts, or display the same Basic (GUI) everywhere. - -{% hint style="info" %} -There are two ways you can customize the Basic GUI, use any one of the following: -1. From [Deployment Charts](../global-configurations/deployment-charts.md#editing-gui-schema-of-deployment-charts) section -2. Using APIs (explained below) -{% endhint %} - -{% embed url="https://www.youtube.com/watch?v=09VP1I-WvUs" caption="JSON-driven Deployment Schema" %} - -You can pass a custom JSON (deployment schema) of your choice through the following API. You may need to run the API with the `POST` method if you are doing it for the first time. - -``` -PUT {{DEVTRON_BASEURL}}/orchestrator/deployment/template/schema -``` - -{% code title="Sample API Request Body" overflow="wrap" lineNumbers="true" %} - -```json -{ - "name": "schema-1", - "type": "JSON", - "schema": "{\"type\":\"object\",\"properties\":{\"args\":{\"type\":\"object\",\"title\":\"Arguments\",\"properties\":{\"value\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"title\":\"Value\"},\"enabled\":{\"type\":\"boolean\",\"title\":\"Enabled\"}}},\"command\":{\"type\":\"object\",\"title\":\"Command\",\"properties\":{\"value\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"title\":\"Value\"},\"enabled\":{\"type\":\"boolean\",\"title\":\"Enabled\"}}},\"resources\":{\"type\":\"object\",\"title\":\"Resources(CPU&RAM)\",\"properties\":{\"limits\":{\"type\":\"object\",\"required\":[\"cpu\",\"memory\"],\"properties\":{\"cpu\":{\"type\":\"string\"},\"memory\":{\"type\":\"string\"}}},\"requests\":{\"type\":\"object\",\"properties\":{\"cpu\":{\"type\":\"string\"},\"memory\":{\"type\":\"string\"}}}}},\"autoscaling\":{\"type\":\"object\",\"title\":\"Autoscaling\",\"properties\":{\"MaxReplicas\":{\"type\":[\"integer\",\"string\"],\"title\":\"MaximumReplicas\",\"pattern\":\"^[a-zA-Z0-9-+\\\\/*%_\\\\\\\\s]+$\"},\"MinReplicas\":{\"type\":[\"integer\",\"string\"],\"title\":\"MinimumReplicas\",\"pattern\":\"^[a-zA-Z0-9-+\\\\/*%_\\\\\\\\s]+$\"},\"TargetCPUUtilizationPercentage\":{\"type\":[\"integer\",\"string\"],\"title\":\"TargetCPUUtilizationPercentage\",\"pattern\":\"^[a-zA-Z0-9-+\\\\/*%_\\\\\\\\s]+$\"},\"TargetMemoryUtilizationPercentage\":{\"type\":[\"integer\",\"string\"],\"title\":\"TargetMemoryUtilizationPercentage\",\"pattern\":\"^[a-zA-Z0-9-+\\\\/*%_\\\\\\\\s]+$\"}}},\"EnvVariables\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"key\":{\"type\":\"string\"},\"value\":{\"type\":\"string\"}}},\"title\":\"EnvironmentVariables\"},\"ContainerPort\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"port\":{\"type\":\"integer\"}}},\"title\":\"ContainerPort\"}}}", - "selectors": [ - { - "attributeSelector": { - "category": "APP", - "appNames": ["my-demo-app"] - } - }, - { - "attributeSelector": { - "category": "ENV", - "envNames": ["env1", "env2", "env3"] - } - }, - { - "attributeSelector": { - "category": "CLUSTER", - "clusterNames": ["cluster1", "cluster2", "cluster3"] - } - }, - { - "attributeSelector": { - "category": "CHART_REF", - "chartVersions": [ - { - "type": "Deployment", - "version": "1.0.0" - } - ] - } - }, - { - "attributeSelector": { - "category": "APP_ENV", - "appEnvNames": [ - { - "appName": "my-demo-app", - "envName": "devtron" - } - ] - } - } - ] -} - -``` -{% endcode %} - -1. In the `name` field, give a name to your schema, e.g., *schema-1* -2. Enter the `type` as JSON. -3. The `schema` field is for entering your custom deployment schema. Perform the following steps: - * To create a custom schema of your choice, you may use [RJSF JSON Schema Tool](https://rjsf-team.github.io/react-jsonschema-form/). - * Copy the final JSON and stringify it using any free online tool. - * Paste the stringified JSON in the `schema` field of the API request body. - * Send the API request. If your schema already exists, use the `PUT` method instead of `POST` in the API call. -4. The `attributeSelector` object helps you choose the scope at which your custom deployment schema will take effect. - | Priority | Category Scope | Description | - |----------|-----------------|----------------------------------------------------------------------------| - | 1 (High) | APP_ENV | Specific to an application and its environment | - | 2 | APP | Applies at the application level if no specific environment is defined | - | 3 | ENV | Applies to specific deployment environment | - | 4 | CHART_REF | Applies to all applications using a specific chart type and version | - | 5 | CLUSTER | Applies across all applications and environments within a specific cluster | - | 6 | GLOBAL | Universally applies if no other more specific schemas are defined | - - -### Using Advanced (YAML) - -If you are an advanced user wishing to perform additional configurations, you may switch to **Advanced (YAML)** for modifications. - -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/deployment-template/advanced-yaml.jpg) - -Refer the respective templates to view the YAML details. -* [Deployment](./base-config/deployment-template/deployment.md) -* [Rollout Deployment](./base-config/deployment-template/rollout-deployment.md) -* [Job & CronJob](./base-config/deployment-template/job-and-cronjob.md) -* [StatefulSet](./base-config/deployment-template/statefulset.md) - ---- - -## Application Metrics - -Depending on the chart type and version you select, application metrics of your application may be viewed.
-This includes: -* Status codes 2xx, 3xx, 5xx -* Throughput -* Latency -...and many more - -Enable **Show application metrics** toggle to view the application metrics on the **App Details** page. - -![Show application metrics](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/deployment-template/show-application-metrics-v2.jpg) - -> **IMPORTANT**: Enabling application metrics introduces a sidecar container to your main container which may require some additional configuration adjustments. We recommend you to do load test after enabling it in a non-production environment before enabling it in production environment. - -Select **Save & Next** to save your configurations. - - diff --git a/docs/user-guide/creating-application/deployment-visibility.md b/docs/user-guide/creating-application/deployment-visibility.md old mode 100644 new mode 100755 index b156e2c1eb..cd49d43ce8 --- a/docs/user-guide/creating-application/deployment-visibility.md +++ b/docs/user-guide/creating-application/deployment-visibility.md @@ -1,17 +1,15 @@ # Deployment Visibility & Actions -{% hint style="info" %} -### Prerequisites +:::info Prerequisites The [Deployment Chart Type](../creating-application/base-config/deployment-template.md#select-a-deployment-chart-type) must be set to Rollout in order to use Blue-Green or Canary strategies. Deployment Visibility and Actions is only available for Canary and Blue-Green Strategies. Refer to the [Deployment Strategies](../creating-application/workflow/cd-pipeline.md#deployment-strategies) to learn more. -{% endhint %} +::: -{% hint style="warning" %} -### Who Can Perform This Action? +:::caution Who Can Perform This Action? Users need to have Build and Deploy or above (along with access to the environment and application). -{% endhint %} +::: Devtron helps you to manage your **Canary** and **Blue-Green** deployments by providing visibility and easy controls to manage how new versions (releases) are shared with users. @@ -39,16 +37,19 @@ You can select the **Manage Traffic** button to view the rollout status and step If you wish you can also trigger the next release steps (for example 25%, 50%, 75%) or you can also trigger the full rollout at once according to your use case. - ![Figure 1a: Selecting Manage Traffic](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/deployment-manage-traffic.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/deployment-manage-traffic.jpg) +
Figure 1a: Selecting Manage Traffic
- ![Figure 1b: Managing Canary Traffic](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/deployment-manage-traffic-2.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/deployment-manage-traffic-2.jpg) +
Figure 1b: Managing Canary Traffic
### For Blue Green deployments Devtron automatically swaps the traffic from the current running release to the new release based on the defined strategy configuration. In case `autoPromotionEnabled` field value is set to `false`, you can manually swap the traffic from the current release to the new release. -![Figure 2: autoPromotionEnabled: false](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/deployment-auto-promotion-enabled-false.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/deployment-auto-promotion-enabled-false.jpg) +
Figure 2: autoPromotionEnabled: false
To do so, follow the steps below: @@ -58,11 +59,13 @@ To do so, follow the steps below: 2. During Blue-Green deployment, click the **Swap Traffic** button to shift the traffic to application's new release. - ![Figure 3: Selecting Swap Traffic](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/deployment-awating-swap.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/deployment-awating-swap.jpg) +
Figure 3: Selecting Swap Traffic
3. Enter the name of the environment and select **Swap Traffic** - ![Figure 4: Swap Traffic Pop Up](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/deployment-swap-live-traffic.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/deployment-swap-live-traffic.jpg) +
Figure 4: Swap Traffic Pop Up
4. This will route the end user traffic from the current running release to the new release on a particular environment. @@ -77,11 +80,13 @@ To do so, follow the below steps: 2. During Blue-Green deployment, click the **Skip & Promote Full** button to shift the traffic to application's new deployment. - ![Figure 5: Selecting 'Skip & Promote Full'](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/deployment-skip-and-promote.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/deployment-skip-and-promote.jpg) +
Figure 5: Selecting 'Skip & Promote Full'
3. Enter the name of the environment and select **Promote to Full**. - ![Figure 6: Promote to Full Pop Up](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/deployment-skip-and-promote-2.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/deployment-skip-and-promote-2.jpg) +
Figure 6: Promote to Full Pop Up
4. This will skip the Blue-Green Strategy and route the end user traffic from the current running release to the new release on a particular environment. @@ -99,18 +104,22 @@ To perform a rollback from App Details follow the below steps: * In case of Canary deployments, select **Rollback** under **Canary Strategy**. - ![Figure 7: Selecting Rollback For Canary Deployment](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/deployment-rollback.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/deployment-rollback.jpg) +
Figure 7: Selecting Rollback For Canary Deployment
* In case of Blue Green deployments, select **Rollback** under **Blue Green Strategy**. - ![Figure 8: Selecting Rollback For Blue Green Deployment](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/deployment-rollback-blue-green.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/deployment-rollback-blue-green.jpg) +
Figure 8: Selecting Rollback For Blue Green Deployment
3. Select the image to which you want your release to be rolled back and click **Deploy** to rollback the release. - ![Figure 9: Selecting the Image](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/deployment-rollback-select-image+.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/deployment-rollback-select-image+.jpg) +
Figure 9: Selecting the Image
4. If you wish, you can select a different deployment strategy other than the default according to the use case. - ![Figure 10: Selecting Deployment Strategy](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/deployment-rollback-deploy-strag.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-details/deployment-rollback-deploy-strag.jpg) +
Figure 10: Selecting Deployment Strategy
5. The application will be rolled back to the previous release (image) using the selected deployment strategy. \ No newline at end of file diff --git a/docs/user-guide/creating-application/docker-build-configuration.md b/docs/user-guide/creating-application/docker-build-configuration.md old mode 100644 new mode 100755 index 94b044cd6d..ccf05e9f9d --- a/docs/user-guide/creating-application/docker-build-configuration.md +++ b/docs/user-guide/creating-application/docker-build-configuration.md @@ -12,22 +12,25 @@ For **build configuration**, you must provide information in the sections as giv * [Build the Container Image](#build-the-container-image) * [Advanced Options](#advanced-options) -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/docker-build-configuration/build-configuration-latest1.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/build-configurations/build-configuration-section.jpg) +
Figure 1: Build Configuration Section
## Store Container Image The following fields are provided on the **Store Container Image** section: -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/docker-build-configuration/store-container-registry.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/build-configurations/store-container-registry.jpg) +
Figure 2: Entering Docker Repo Details
| Field | Description | | --- | --- | | **Container Registry** | Select the container registry from the drop-down list or you can click **Add Container Registry**. This registry will be used to [store docker images](../global-configurations/container-registries.md). | | **Container Repository** | Enter the name of your container repository, preferably in the format `username/repo-name`. The repository that you specify here will store a collection of related docker images. Whenever an image is added here, it will be stored with a new tag version. | -**If you are using docker hub account, you need to enter the repository name along with your username. For example - If my username is *kartik579* and repo name is *devtron-trial*, then enter kartik579/devtron-trial instead of only devtron-trial.** +> If you are using Docker Hub account, you need to enter the repository name along with your username. For example, if your username is *nightdocker* and repo name is *banking-nxt-frontend*, then enter `nightdocker/banking-nxt-frontend` instead of only `banking-nxt-frontend`. -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/docker-build-configuration/docker-configuration-docker-hub.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/build-configurations/docker-repo.jpg) +
Figure 3: Example Docker Repo
## Build the Container Image @@ -43,7 +46,8 @@ You can choose one of the following options to build your container image: A `Dockerfile` is a text document that contains all the commands which you can call on the command line to build an image. -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/docker-build-configuration/i-have-a-dockerfile.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/build-configurations/i-have-a-dockerfile.jpg) +
Figure 4: Marking Dockerfile as Available
| Field | Description | | --- | --- | @@ -54,24 +58,26 @@ A `Dockerfile` is a text document that contains all the commands which you can c With the option **Create Dockerfile**, you can create a `Dockerfile` from the available templates. You can edit any selected Dockerfile template as per your build configuration requirements. -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/docker-build-configuration/create-dockerfile.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/build-configurations/create-dockerfile.jpg) +
Figure 5: Creating a Dockerfile
| Field | Description | | --- | --- | -| **Language** | Select the programming language (e.g., `Java`, `Go`, `Python`, `Node` etc.) from the drop-down list you want to create a dockerfile as per compatibility to your system.
**Note** We will be adding other programming languages in the future releases.
| -| **Framework** | Select the framework (e.g., `Maven`, `Gradle` etc.) of the selected programming language.
**Note** We will be adding other frameworks in the future releases.
| +| **Language** | Select the programming language (e.g., `Java`, `Go`, `Python`, `Node` etc.) from the drop-down list you want to create a dockerfile as per compatibility to your system.
**Note** We will be adding other programming languages in the future releases.| +| **Framework** | Select the framework (e.g., `Maven`, `Gradle` etc.) of the selected programming language.
**Note** We will be adding other frameworks in the future releases.| ### Build Docker Image without Dockerfile With the option **Build without Dockerfile**, you can use Buildpacks to automatically build the image for your preferred language and framework. -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/docker-build-configuration/build-without-dockerfile.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/build-configurations/build-without-dockerfile.jpg) +
Figure 6: Building without Dockerfile
| Field | Description | | --- | --- | | **Select repository containing code** | Select your code repository. This repository is the same which you defined on the [Git Repository](../creating-application/git-material.md) section.| | **Project Path (Relative)** | In case of monorepo, specify the path of the project from your Git repository.| -| **Language** | Select the programming language (e.g., `Java`, `Go`, `Python`, `Node`, `Ruby`, `PHP` etc.) from the drop-down list you want to build your container image as per the compatibility to your system.
**Note**: We will be adding other programming languages in the future releases.
| +| **Language** | Select the programming language (e.g., `Java`, `Go`, `Python`, `Node`, `Ruby`, `PHP` etc.) from the drop-down list you want to build your container image as per the compatibility to your system.
**Note**: We will be adding other programming languages in the future releases.| | **Version** | Select a language version from the drop-down list. If you do not find the version you need, then you can update the language version in `Build Env Arguments`. You can also select **Autodetect** in case if you want `Builder` to detect version by itself or its default version.| | **Select a builder** | A builder is an image that contains a set of buildpacks which provide your app's dependencies, a stack, and the OS layer for your app image. Select a buildpack provider from the following options:
  • **Heroku**: It compiles your deployed code and creates a slug, which is a compressed and pre-packaged copy of your app and also the runtime which is optimized for distribution to the dyno (Linux containers) manager. [Learn more](https://devcenter.heroku.com/articles/buildpacks).
  • **GCR**: GCR builder is a general purpose builder that creates container images designed to run on most platforms (e.g. Kubernetes / Anthos, Knative / Cloud Run, Container OS, etc.). It auto-detects the language of your source code, and can also build functions compatible with the Google Cloud Function Framework. [Learn more](https://github.com/GoogleCloudPlatform/buildpacks).
  • **Paketo**: Paketo buildpacks provide production-ready buildpacks for the most popular languages and frameworks to easily build your apps. Based on your application needs, you can select from `Full`, `Base` and `Tiny`. [Learn more](https://paketo.io/docs/).
| @@ -82,7 +88,7 @@ You can add Key/Value pair by clicking **Add argument**. | Field | Description | | --- | --- | -| **Key** | Define the key parameter as per your selected language and builder. E.g., By default `GOOGLE_RUNTIME_VERSION` for GCR buildpack.
**Note**: If you want to define `env arguments` for `PHP` and `Ruby` languages after selecting `Heroku` builder, please make sure to refer respective [Heroku Ruby Support](https://devcenter.heroku.com/articles/ruby-support) and [Heroku PHP Support](https://devcenter.heroku.com/articles/php-support) documentation for runtime information.
| +| **Key** | Define the key parameter as per your selected language and builder. E.g., By default `GOOGLE_RUNTIME_VERSION` for GCR buildpack.
**Note**: If you want to define `env arguments` for `PHP` and `Ruby` languages after selecting `Heroku` builder, please make sure to refer respective [Heroku Ruby Support](https://devcenter.heroku.com/articles/ruby-support) and [Heroku PHP Support](https://devcenter.heroku.com/articles/php-support) documentation for runtime information.| | **Value** | Define the value for the specified key. E.g. Version no. | @@ -95,9 +101,11 @@ You can add Key/Value pair by clicking **Add argument**. Using this option, you can build images for a specific or multiple **architectures and operating systems (target platforms)**. You can select the target platform from the drop-down list or can type to select a customized target platform. -![Select target platform from drop-down](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/docker-build-configuration/set-target-platform.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/build-configurations/set-target-platform.jpg) +
Figure 7a: Selecting Target Platform from Drop-down
-![Select custom target platform](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/docker-build-configuration/set-target-platform-2.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/build-configurations/set-target-platform-2.jpg) +
Figure 7b: Entering Custom Target Platform
Before selecting a customized target platform, please ensure that the architecture and the operating system are supported by the `registry type` you are using, otherwise build will fail. Devtron uses BuildX to build images for multiple target Platforms, which requires higher CI worker resources. To allocate more resources, you can increase value of the following parameters in the `devtron-cm` configmap in `devtroncd` namespace. @@ -120,9 +128,9 @@ The Target Platform feature might not work in minikube & microk8s clusters as of * Key * Value -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/docker-build-configuration/docker-build-arguments.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/build-configurations/docker-build-arguments.jpg) +
Figure 8: Entering Docker Build Arguments
These fields will contain the key parameter and the value for the specified key for your [docker build](https://docs.docker.com/engine/reference/commandline/build/#options). This field is Optional. If required, this can be overridden at [CI step](../deploying-application/triggering-ci.md). -Click **Save Configuration**. - +Click **Save Configuration**. \ No newline at end of file diff --git a/docs/user-guide/creating-application/environment-overrides.md b/docs/user-guide/creating-application/environment-overrides.md old mode 100644 new mode 100755 index 2e0a60bfaa..d5d412d5de --- a/docs/user-guide/creating-application/environment-overrides.md +++ b/docs/user-guide/creating-application/environment-overrides.md @@ -2,7 +2,8 @@ You can view all environments associated with an application under the **Environment Overrides** section. -![Figure 1: Environment Overrides Section](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/environment-overrides/environment-override-v3.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/environment-override/environment-override.jpg) +
Figure 1: Environment Overrides Section
The Environment Overrides section allows you to customize the **Deployment Template**, **ConfigMaps**, and **Secrets** for different environments such as development, testing, staging, and production. @@ -16,25 +17,27 @@ The Environment Overrides section allows you to customize the **Deployment Templ ## Environment Configurations Page -{% hint style="warning" %} -### Who Can Perform This Action? +:::caution Who Can Perform This Action? Users need to have [Admin role](../global-configurations/authorization/user-access.md#roles-available-for-devtron-apps) or above (along with access to the environment and applications) to perform environment override. -{% endhint %} +::: -1. In your application, go to **Configurations** → **Environment Overrides**. +1. In your Devtron app, go to **Configurations** (tab) → **Environment Overrides**. - ![Figure 2: Accessing Environment Overrides](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/environment-overrides/config-env-override.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/environment-override/config-env-override.jpg) +
Figure 2: Accessing Environment Overrides
2. Select an environment whose configurations you wish to modify. - ![Figure 3: Selecting Environment](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/environment-overrides/environment-override-v3.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/environment-override/environment-override-1.jpg) +
Figure 3: Selecting Environment
3. You will get the following options (similar to the **Base Configurations** page): * [Deployment Template](#override-deployment-template) * [ConfigMaps](#override-configmap--secret) * [Secrets](#override-configmap--secret) - ![Figure 4: Configuration Options](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/environment-overrides/env-config-screen.gif) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/environment-override/env-config-screen.gif) +
Figure 4: Configuration Options
Let's visit each of the configuration files and see how to override their values for the selected environment (say *banking-final*). @@ -50,24 +53,26 @@ As you can see, the Deployment Template for the *banking-final* environment show 1. Go to the **Inherited** tab. This will show the inherited configuration in a read-only YAML editor. You cannot edit any values here. - ![Figure 5: Inherited Deployment Template](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/environment-overrides/inherited-dt.gif) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/environment-override/inherited-dt.gif) +
Figure 5: Inherited Deployment Template
2. Clicking **No override** to override the inherited configuration (if not done already). - ![Figure 6: No Override Tab](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/environment-overrides/no-override-tab.gif) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/environment-override/no-override-tab.gif) +
Figure 6: No Override Tab
3. Click the **Create Override** button. - ![Figure 7: Creat Override Button](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/environment-overrides/create-override.gif) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/environment-override/create-override.gif) +
Figure 7: Creat Override Button
4. In the same tab (now labelled as **Override**), you can choose any one mode for changing the configuration values: - * **YAML** - This mode has a YAML based editor intended for advanced users. [Click here](../creating-application/base-config/deployment-template/deployment.md#yaml) to know more about each key-value pair within the `YAML` section. + * **YAML** - This mode has a YAML based editor intended for advanced users. [Click here](../creating-application/base-config/deployment-template-types/deployment.md#yaml) to know more about each key-value pair within the `YAML` section. * **GUI** - This mode has a user-friendly interface intended for beginner to advanced users. [Click here](../creating-application/base-config/deployment-template.md#using-gui) to know more about each field within the `GUI` section. -{% hint style="info" %} -### Note +:::info Note Users who are not super-admins will land on GUI mode when they override; whereas super-admins will land on YAML mode. This is just the default behavior, users can still toggle the mode if needed. -{% endhint %} +::: Let's choose YAML mode for now and proceed. If you prefer GUI mode, go to [Override Deployment Template using GUI](#override-deployment-template-using-gui) section. @@ -93,16 +98,14 @@ Suppose you want to update only one field (e.g., `"username" = "johndoe"`) in a If you know the fields you wish to change, simply enter the changed key-value fields along with indentation (if any). -{% embed url="https://www.youtube.com/watch?v=phhv1_2eStI" %} +
### Using Replace Strategy -{% embed url="https://youtu.be/xF0Ar4rHqWo" %} - Suppose you update your deployment chart version (e.g., from `4.0.0` to `4.0.1`). Although the new chart version contains new features and key-value pairs, if you prefer to keep a few configurations unchanged regardless of the new key-value pairs added in the new chart version, you can use the replace strategy. * The entire configuration is replaced with your new environment-specific settings. @@ -117,22 +120,32 @@ Suppose you update your deployment chart version (e.g., from `4.0.0` to `4.0.1`) | logLevel | "info" | *(Not specified)* | *(Removed)* | | timeout | (Not specified) | 30s | 30s (Added) | -{% hint style="info" %} -### What if some keys are locked from editing? +:::info What if some keys are locked from editing? You cannot modify locked keys in an environment's deployment template unless you are a super-admin. Refer [Lock Deployment Configuration](../global-configurations/lock-deployment-config.md) to know more. -{% endhint %} +::: ### Override Deployment Template using GUI -{% embed url="https://youtu.be/fkF29-H3plk" %} +Follow the below steps to override your deployment template using GUI: + +1. Navigate to **Application Management** → **Applications** and click your Devtron application. + +2. Go to **Configurations** (tab) → **Base Configurations** → **Environment Overrides** and click on your preferred environment to override deployment template. + +3. Click on the **No Override** option and then click on **Create Override**. + +4. Click on the **GUI** option. The available fields will be displayed on the right side of the page. -{% hint style="info" %} +5. Select your preferred fields and enter the values to override. -### Want to customize the deployment template values displayed on GUI? [![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/elements/EnterpriseTag.svg)](https://devtron.ai/pricing) +6. Select your preferred merge strategy from the **Merge Strategy** drop-down box. -The GUI mode shows limited number of fields as specified by the super-admin in the GUI schema. Refer [Customize GUI](../creating-application/base-config/deployment-template.md#customize-the-gui) to know more. +7. Click on **Save Changes**. -{% endhint %} +:::info Want to customize the deployment template values displayed on GUI? +The GUI mode shows limited number of fields as specified by the super-admin in the GUI schema. Refer [Customize GUI](../creating-application/base-config/deployment-template.md#customize-the-gui-) to know more. + +::: --- @@ -144,23 +157,18 @@ The process to override both ConfigMaps and Secrets is similar to [Override Depl ### Patch Strategy -{% embed url="https://youtu.be/drqF4N3w8IE" %} - -{% hint style="info" %} - -### Impact of Patch strategy on Base Configuration's CM/Secret? - +:::info Impact of Patch strategy on Base Configuration's CM/Secret? You cannot delete a ConfigMap or Secret in **Base Configurations** if you have used 'Patch' strategy for overridding ConfigMap or Secret at your environment-level. This happens because they are still dependent and inheriting their values from Base Configurations. -{% endhint %} +::: ### Replace Strategy -{% embed url="https://www.youtube.com/watch?v=lSoj8wwOej0" %} +
### Override ConfigMaps and Secrets using GUI -{% embed url="https://www.youtube.com/watch?v=UOTKLVuSkDg" %} +
--- @@ -172,86 +180,33 @@ This action will discard the current overrides and the base configuration file ( 2. Click **Delete Override**. 3. Confirm the deletion in the dialogbox. -![Figure 8: Delete Override Option](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/environment-overrides/delete-override.gif) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/environment-override/delete-override.gif) +
Figure 8: Delete Override Option
--- -## Protected Environment Configurations [![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/elements/EnterpriseTag.svg)](https://devtron.ai/pricing) +## Protected Environment Configurations -Any changes made to the protected environment configurations (Deployment Template, ConfigMap, Secret) will require approval if an [approval policy](../global-configurations/approval-policy.md) is enforced. When you want to edit a protected configuration, you can do it in the following ways: +Any changes made to the protected environment configurations (Deployment Template, ConfigMap, Secret) will require approval if an [approval policy](../global-configurations/approval-policy.md) is enforced. -* [Normal Edit](#normal-edit) - Where changes to the protected configuration are made only after getting approval from the approver(s). +Follow the below steps to make changes to a protected environment: -* [Express Edit](#express-edit) - Where you bypass the approval process and directly make changes to the protected configuration. +1. Navigate to **Application Management** → **Applications** and click on your preferred application. -### Normal Edit +2. Go to **Configurations** (tab) → **Base Configurations** → **Environment Overrides** and click on your preferred environment. -{% hint style="warning" %} +3. Click on the **No Override** option and then click on **Create Override**. -### Who Can Perform This Action? +4. Select your preferred merge strategy from the **Merge Strategy** drop-down box. -Only a Super-Admin, Manager, or an Admin can edit the configuration values. Refer to [User Permissions](../global-configurations/authorization/user-access.md) for more information. +5. Make changes to the key-value pairs in the **Patch data** section. -{% endhint %} - -{% embed url="https://youtu.be/eseckdmpdls" %} - -Follow the below steps to edit a protected configuration: - -1. Navigate to the **Applications** page and click on your preferred application. - -2. Go to the **Configurations** → **Base Configurations**. - -3. Click on your preferred configuration (e.g., **ConfigMaps**) and select the ConfigMap you'd like to edit. - -4. Modify the values either by using **GUI** or **YAML** editor. - -5. Click **Save Changes**. The Base Configurations pop-up page will be displayed. +6. Click **Save Changes**. The **Save as draft** pop-up page will be displayed. * **Save as draft** - Select this option if you want to continue making your changes later but save your changes as a draft for now. - * **Propose changes** - Select this option if you want to propose your changes to the approvers. You can then select the approvers to get notified regarding the change from the **Select approvers** to notify drop-down box. - -6. Enter your comments (reason for making the changes) in the **Comment** text box. - -7. Click **Propose Changes**. The corresponding approver will be notified via email regarding your request. - -### Express Edit - -{% hint style="warning" %} - -### Who Can Perform This Action? - -Only a Super-Admin (when the [Super admins toggle](../global-configurations/approval-policy.md#excluding-super-admins) is enabled in the Exceptions tab) or [specific users / user groups](../global-configurations/approval-policy.md#excluding-specific-users--user-groups--api-tokens) who are added as exceptions in the Approval Policy can make express edits. Refer to [Approval Policy](../global-configurations/approval-policy.md) for more information. - -{% endhint %} - -Express edits allow you to bypass the approval process and make direct edits to the configurations. Follow the below steps to make express edits: - -1. Navigate to the **Applications** page and click on your preferred application. - -2. Go to the **Configurations** → **Base Configurations**. - -3. Click on your preferred configuration (e.g., **ConfigMaps**) and select the ConfigMap you'd like to edit. - -4. Click on the **Edit** button. - -{% hint style="info" %} - -### Note - -The **Edit** button will only be displayed if: - -* You are a Super-Admin and the Super admins toggle is enabled in the Approval Policy page - -* You are added as an exception in the Approval Policy page. - -Refer to [Approval Policy](../global-configurations/approval-policy.md) for more information. - -{% endhint %} - -5. Modify the values either by using **GUI** or **YAML** editor. + * **Save & Propose changes** - Select this option if you want to save and propose your changes to the approvers. You can then select the approvers to get notified regarding the change from the **Select approvers to notify** drop-down box. -6. Click on **Publish Changes** to direcly publish your changes. +7. Enter your comments (reason for making the changes) in the **Comment** text box. -![Figure 9: Express Edit](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/base-config/express-edit-env-override.gif) \ No newline at end of file +8. Click **Propose Changes**. The corresponding approver will be notified via email regarding your request. \ No newline at end of file diff --git a/docs/user-guide/creating-application/external-links.md b/docs/user-guide/creating-application/external-links.md old mode 100644 new mode 100755 index 3dbc4037f7..383a3559e0 --- a/docs/user-guide/creating-application/external-links.md +++ b/docs/user-guide/creating-application/external-links.md @@ -1,7 +1,7 @@ # External Links -This is similar to [External Links](../global-configurations/external-links.md) present under Global Configurations. +This is similar to [External Links](../global-configurations/external-links.md) present under **Application Management** → **Configurations**. -The only difference is that in **App Configuration** → **External Links**, only the links editable by application admins and manager are displayed. You can also configure external links separately for your application. +The only difference is that in **External Links**, only the links editable by application admins and manager are displayed. You can also configure external links separately for your application. -Whereas, in **Global Configurations** → **External Links**, you can configure the external links for all applications in a cluster or for specific applications. \ No newline at end of file +Whereas, in **Application Management** → **Configurations** → **External Links**, you can configure the external links for all applications in a cluster or for specific applications. \ No newline at end of file diff --git a/docs/user-guide/creating-application/fluxcd.md b/docs/user-guide/creating-application/fluxcd.md old mode 100644 new mode 100755 index db846b8dbf..f7bb5ea805 --- a/docs/user-guide/creating-application/fluxcd.md +++ b/docs/user-guide/creating-application/fluxcd.md @@ -1,15 +1,12 @@ # Enable GitOps Deployments with FluxCD -{% hint style="info" %} -### Prerequisite - +:::info Prerequisite Make sure to install: 1. [Build and Deploy (CI/CD) integration](../integrations/build-and-deploy-ci-cd.md) 2. [GitOps (ArgoCD) integration](../integrations/argocd.md) - -{% endhint %} +::: Devtron supports FluxCD to enable GitOps-based deployments. With FluxCD, you can: @@ -24,13 +21,12 @@ Your Git repository becomes the single source of truth for your Kubernetes workl ## Installation -{% hint style="warning" %} -### Who Can Perform This Action? +:::caution Who Can Perform This Action? The user must have permissions to: * Edit the ConfigMaps of 'default-cluster' * Restart the pods -{% endhint %} +::: To enable deployments through GitOps via FluxCD, you need to enable a specific feature flag for the `default_cluster` in Devtron. |Feature|Flag|Description| @@ -38,48 +34,51 @@ To enable deployments through GitOps via FluxCD, you need to enable a specific f |**Deployments via FluxCD**|`FEATURE_FLUX_DEPLOYMENTS_ENABLE: "true"`|This flag will enable deployments through GitOps via FluxCD.
  • After enabling this flag, you also need to install FluxCD controller in order to deploy applications successfully. Refer [Installing FluxCD Controller](#installing-fluxcd-controller-only-for-deployments) to know more.
| |**Migrating existing FluxCD applications**|`FEATURE_LINK_EXTERNAL_FLUX_ENABLE: "true"`|This flag will enable migrations for external FluxCD apps into Devtron.| - {% hint style="warning" %} - ### Deployment Strategies for FluxCD Deployments - + :::caution Deployment Strategies for FluxCD Deployments Application deployments through GitOps (via FluxCD) are supported only when using the `Deployment` or `Rollout` deployment strategies with the latest chart versions. Other deployment strategies are currently not supported. - {% endhint %} +::: ### Enabling Feature Flags 1. Navigate to Devtron's **Resource Browser**. - ![Figure 1: Navigating to Resource Browser](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/fluxcd/fluxcd-resource-browser.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/resources/gitops-flux-cd/fluxcd-resource-browser.jpg) +
Figure 1: Navigating to Resource Browser
2. Select the `default_cluster` to enable the feature flags. - ![Figure 2: Selecting 'default_cluster'](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/fluxcd/fluxcd-select-cluster.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/resources/gitops-flux-cd/fluxcd-select-cluster.jpg) +
Figure 2: Selecting 'default_cluster'
3. Go to Config & Storage → ConfigMap, and click `dashboard-cm` ConfigMap - ![Figure 3: Clicking 'dashboard-cm'](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/fluxcd/fluxcd-select-dashboard-cm.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/resources/gitops-flux-cd/fluxcd-select-dashboard-cm.jpg) +
Figure 3: Clicking 'dashboard-cm'
4. Edit the `dashboard-cm` ConfigMap by clicking **Edit live manifest**. - ![Figure 4: Editing Live Manifest](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/fluxcd/fluxcd-edit-live-manifest.jpg) - 1. To enable deployments via FluxCD, check if the below entries are present in the ConfigMap (create one if it doesn't exist) and select **Apply changes**.
+ ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/resources/gitops-flux-cd/fluxcd-edit-live-manifest.jpg) +
Figure 4: Editing Live Manifest
+ 1. To enable deployments via FluxCD, check if the below entries are present in the ConfigMap (create one if it doesn't exist) and select **Apply changes**.
```yaml FEATURE_FLUX_DEPLOYMENTS_ENABLE: "true" ``` - 2. To enable migration for external FluxCD applications, check if the below entries are present in the ConfigMap (create one if it doesn't exist) and select **Apply changes**.
+ 2. To enable migration for external FluxCD applications, check if the below entries are present in the ConfigMap (create one if it doesn't exist) and select **Apply changes**.
```yaml FEATURE_LINK_EXTERNAL_FLUX_ENABLE: "true" ``` -
+
- ![Figure 5: Adding Feature Flags](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/fluxcd/fluxcd-add-flags.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/resources/gitops-flux-cd/fluxcd-add-flags.jpg) +
Figure 5: Adding Feature Flags
5. Restart the deployment: 1. **For OSS Users:** - 1. Navigate to Devtron's Resource Browser. + 1. Navigate to Devtron's [Resource Browser](../resource-browser/). 2. Select the cluster for which you have enabled the feature flags. @@ -91,13 +90,15 @@ To enable deployments through GitOps via FluxCD, you need to enable a specific f kubectl rollout restart deployment dashboard -n devtroncd ``` - ![Figure 6: Restarting Deployment](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/fluxcd/fluxcd-restart-deployment.gif) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/resources/gitops-flux-cd/fluxcd-restart-deployment.gif) +
Figure 6: Restarting Deployment
2. **For Enterprise Users:** - 1. Go to **Resource Browser** → (select the cluster in which you have enabled the feature flags) → **Workloads** → **Deployment** + 1. Go to **Infrastructure Management** → **Resource Browser** → (select the cluster in which you have enabled the feature flags) → **Workloads** → **Deployment** 2. Click the checkbox next to the `dashboard` Deployment workloads and restart them using the `⟳` button. - ![Figure 7: Restart 'dashboard' deployment workloads](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/kubernetes-resource-browser/devtron-intelligence/restart-deployments.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/resources/gitops-flux-cd/restart-deployments.jpg) +
Figure 7: Restart 'dashboard' deployment workloads
6. Perform a hard refresh of the browser to clear the cache: @@ -130,7 +131,8 @@ You can install FluxCD Controller by any of the following ways: kubectl apply -f https://github.com/fluxcd/flux2/releases/download/v0.35.0/install.yaml ``` - ![Figure 8: Installing FluxCD Controller](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/fluxcd/fluxcd-install-controller.gif) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/resources/gitops-flux-cd/fluxcd-install-controller.gif) +
Figure 8: Installing FluxCD Controller
5. After the command is executed successfully, you can deploy or migrate your applications in that cluster through GitOps (via FluxCD). @@ -140,19 +142,23 @@ To install FluxCD controller via Chart Store, follow the below steps. 1. Add FluxCD controller repository, `https://fluxcd-community.github.io/helm-charts` in the chart repositories (if not already added) in Global Configurations. Refer [Chart Repositories](../global-configurations/chart-repo.md#add-chart-repository) to learn more. - ![Figure 9: Adding FluxCD Chart Repository](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/fluxcd/fluxcd-add-chart-repo.gif) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/resources/gitops-flux-cd/fluxcd-add-chart-repo.gif) +
Figure 9: Adding FluxCD Chart Repository
- 2. Add a new environment in the cluster in which you want to deploy the application via FluxCD linked to namespace as `flux-system`. Refer [Clusters and Environments](../global-configurations/cluster-and-environments.md#add-environment-to-a-cluster) to lean more. + 2. Add a new environment in the cluster in which you want to deploy the application via FluxCD linked to namespace as `flux-system`. Refer [Clusters and Environments](../global-configurations/clusters/manage-environments.md#add-environment-to-a-cluster) to lean more. - ![Figure 10: Adding Environment linked to 'flux-system' namespace](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/fluxcd/fluxcd-add-env.gif) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/resources/gitops-flux-cd/fluxcd-add-env.gif) +
Figure 10: Adding Environment linked to 'flux-system' namespace
3. Navigate to **Chart Store** and select the `flux2` chart. - ![Figure 11: Selecting 'flux2' Chart](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/fluxcd/fluxcd-flux2.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/resources/gitops-flux-cd/fluxcd-flux2.jpg) +
Figure 11: Selecting 'flux2' Chart
4. Click **Configure and Deploy**. - ![Figure 12: Deploying 'flux2' Chart](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/fluxcd/fluxcd-deploy-chart.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/resources/gitops-flux-cd/fluxcd-deploy-chart.jpg) +
Figure 12: Deploying 'flux2' Chart
5. Configure the following configurations: @@ -162,7 +168,8 @@ To install FluxCD controller via Chart Store, follow the below steps. |**Project**|Select a project from the dropdown| |**Deploy to Environment**|Select the environment which you have created in your preferred cluster linked to `flux-system` namespace.| - ![Figure 13: Configuring 'flux2' Chart](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/fluxcd/fluxcd-chart-config.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/resources/gitops-flux-cd/fluxcd-chart-config.jpg) +
Figure 13: Configuring 'flux2' Chart
6. Click **Deploy** and the chart will be deployed. diff --git a/docs/user-guide/creating-application/git-material.md b/docs/user-guide/creating-application/git-material.md old mode 100644 new mode 100755 index 92dcb1a818..6fa0b0fd94 --- a/docs/user-guide/creating-application/git-material.md +++ b/docs/user-guide/creating-application/git-material.md @@ -6,7 +6,8 @@ During the [CI process](../deploying-application/triggering-ci.md), the applicat Devtron also supports multiple Git repositories (be it from one Git account or multiple Git accounts) in a single deployment. -![Figure 1: Adding Git Repository](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/git-material/add-git-repo.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/git-repository/add-git-repo.jpg) +
Figure 1: Adding Git Repository
Therefore, this doc is divided into 2 sections, read the one that caters to your application: * [Single Repo Application](#single-repo-application) @@ -18,7 +19,7 @@ Therefore, this doc is divided into 2 sections, read the one that caters to your Follow the below steps if the source code of your application is hosted on a single Git repository. -In your application, go to **App Configuration** → **Git Repository**. You will get the following fields and options: +In your Devtron app, go to **Configuration** (tab) → **Git Repository**. You will get the following fields and options: 1. [Git Account](#git-account) 2. [Git Repo URL](#git-repo-url) @@ -31,11 +32,12 @@ In your application, go to **App Configuration** → **Git Repository**. You wil This is a dropdown that shows the list of Git accounts added to your organization on Devtron. If you haven't done already, we recommend you to first [add your Git account](../global-configurations/git-accounts.md) (especially when the repository is private). -![Figure 2: Selecting Git Account](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/git-material/select-git-account.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/git-repository/select-git-account.jpg) +
Figure 2: Selecting Git Account
-{% hint style="info" %} +:::info If the authentication type of your Git account is anonymous, only public Git repositories in that account will be accessible. Whereas, adding a user auth or SSH key will make both public and private repositories accessible. -{% endhint %} +::: ### Git Repo URL @@ -44,27 +46,30 @@ In this field, you have to provide your code repository’s URL, for e.g., `http You can find this URL by clicking on the **Code** button available on your repository page as shown below: -![Figure 3: Getting Repo URL](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/git-material/repo-url.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/git-repository/repo-url.jpg) +
Figure 3: Getting Repo URL
-{% hint style="info" %} +:::info * Copy the HTTPS/SSH portion of the URL too * Make sure you've added your [Dockerfile](https://docs.docker.com/engine/reference/builder/) in the repo -{% endhint %} +::: ### Exclude specific file/folder in this repo Not all repository changes are worth triggering a new [CI build](../deploying-application/triggering-ci.md). If you enable this checkbox, you can define the file(s) or folder(s) whose commits you wish to use in the CI build. -![Figure 4: Sample Exclusion Rule](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/git-material/sample1.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/git-repository/exclude-files.jpg) +
Figure 4: Sample Exclusion Rule
In other words, if a given commit contains changes only in file(s) present in your exclusion rule, the commit won't show up while selecting the [Git material](../../reference/glossary.md#material), which means it will not be eligible for build. However, if a given commit contains changes in other files too (along with the excluded file), the commit won't be excluded and it will definitely show up in the list of commits. -![Figure 5: Excludes commits made to README.md](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/git-material/excluded-commit.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/git-repository/excluded-commit.jpg) +
Figure 5: Excludes commits made to README.md
Devtron allows you to create either an exclusion rule, an inclusion rule, or a combination of both. In case of multiple files or folders, you can list them in new lines. -To exclude a path, use **!** as the prefix, e.g. `!path/to/file`
+To exclude a path, use **!** as the prefix, e.g. `!path/to/file`
To include a path, don't use any prefix, e.g. `path/to/file` @@ -74,7 +79,7 @@ To include a path, don't use any prefix, e.g. `path/to/file` | Sample Values | Description | |---|---| | `!README.md` | **Exclusion of a single file in root folder:**
Commits containing changes made only in README.md file will not be shown | -| `!README.md`
`!index.js` | **Exclusion of multiple files in root folder:**
Commits containing changes made only in README.md or/and index.js files will not be shown | +| `!README.md`
`!index.js` | **Exclusion of multiple files in root folder:**
Commits containing changes made only in README.md or/and index.js files will not be shown | | `README.md` | **Inclusion of a single file in root folder:**
Commits containing changes made only in README.md file will be shown. Rest all will be excluded. | | `!src/extensions/printer/code2.py` | **Exclusion of a single file in a folder tree:**
Commits containing changes made specifically to code2.py file will not be shown | | `!src/*` | **Exclusion of a single folder and all its files:**
Commits containing changes made specifically to files within src folder will not be shown | @@ -82,13 +87,10 @@ To include a path, don't use any prefix, e.g. `path/to/file` | `!README.md`
`README.md` | **Exclusion and inclusion of conflicting files:**
If conflicting paths are defined in the rule, the one defined later will be considered. In this case, commits containing changes made only in README.md will be shown. | -You may use the **Learn how** link (as shown below) to understand the syntax of defining an exclusion or inclusion rule. - -![Figure 6: 'Learn how' Button](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/git-material/rules.jpg) - Since file paths can be long, Devtron supports regex too for writing the paths. To understand it better, you may click the **How to use** link as shown below. -![Figure 7: Regex Support](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/git-material/regex-help.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/git-repository/regex-help.jpg) +
Figure 6: Regex Support
#### How to view excluded commits? @@ -96,11 +98,14 @@ As we saw earlier in fig. 4 and 5, commits containing the changes of only `READM However, Devtron gives you the option to view the excluded commits too. There's a döner menu at the top-right (beside the `Search by commit hash` search bar). -![Figure 8a: Döner Menu Icon](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/git-material/doner-menu.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/git-repository/doner-menu.jpg) +
Figure 7a: Döner Menu Icon
-![Figure 8b: Show Excluded Commits](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/git-material/show-exclusions.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/git-repository/show-exclusions.jpg) +
Figure 7b: Show Excluded Commits
-![Figure 8c: Commits Unavailable for Build](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/git-material/excluded-commits.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/git-repository/excluded-commits.jpg) +
Figure 7c: Commits Unavailable for Build
The **EXCLUDED** label (in red) indicates that the commits contain changes made only to the excluded file, and hence they are unavailable for build. @@ -111,7 +116,8 @@ After clicking the checkbox, a field titled `clone directory path` appears. It i This field is optional for a single Git repository application and you can leave the path as default. Devtron assigns a directory by itself when the field is left blank. The default value of this field is `./` -![Figure 8: Clone Directory Option](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/git-material/clone-directory.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/git-repository/clone-directory.jpg) +
Figure 8: Clone Directory Option
### Pull submodules recursively @@ -128,9 +134,9 @@ Repeat the process for every new git repository you add. The clone directory pat Whenever a change is pushed to any of the configured repositories, CI will be triggered and a new Docker image file will be built (based on the latest commits of the configured repositories). Next, the image will be pushed to the container registry you configured in Devtron. -{% hint style="info" %} +:::info Even if you add multiple repositories, only one image will be created based on the Dockerfile as shown in the [docker build config](docker-build-configuration.md) -{% endhint %} +::: ### Why do you need Multi-Git support? diff --git a/docs/user-guide/creating-application/gitops-config.md b/docs/user-guide/creating-application/gitops-config.md old mode 100644 new mode 100755 index 211d1c75e4..755ad0f9c2 --- a/docs/user-guide/creating-application/gitops-config.md +++ b/docs/user-guide/creating-application/gitops-config.md @@ -1,12 +1,12 @@ # GitOps Configuration -{% hint style="warning" %} -The 'GitOps Configuration' page appears only if the super-admin has enabled 'Allow changing git repository for application' in [Global Configurations → GitOps](../global-configurations/gitops.md). -{% endhint %} +:::caution +The 'GitOps Configuration' page appears only if the super-admin has opted for **Ask git repository for each application** in [Application Management → Configurations → GitOps](../global-configurations/gitops.md). +::: ## Introduction -This configuration is an extension of the [GitOps](../global-configurations/gitops.md) settings present in [Global Configurations](../global-configurations/README.md) of Devtron. Therefore, make sure you read it before making any changes to your app configuration. +This configuration is an extension of the [GitOps](../global-configurations/gitops.md) settings present in [Application Management → Configurations](../global-configurations/README.md) of Devtron. Therefore, make sure you read it before making any changes to your app configuration. The application-level GitOps configuration offers the flexibility to add a custom Git repo (as opposed to Devtron auto-creating a repo for your application). @@ -14,16 +14,16 @@ The application-level GitOps configuration offers the flexibility to add a custo ## Adding Custom Git Repo for GitOps -{% hint style="warning" %} -### Who Can Perform This Action? +:::caution Who Can Perform This Action? Users need to have [Admin permission](../global-configurations/authorization/user-access.md#devtron-apps-permissions) or above (along with access to the environment and application) to configure user-defined Git repo. -{% endhint %} +::: ### For Devtron Apps -1. Go to **Applications** → **Devtron Apps** (tab) → (choose your app) → **App Configuration** (tab) → **GitOps Configuration**. +1. Go to **Application Management** → **Devtron Apps** → (choose your app) → **Configurations** (tab) → **GitOps Configuration**. - ![Figure 1: App-level GitOps Config](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/gitops/app-config-gitops.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/gitops/app-config-gitops.jpg) +
Figure 1: App-level GitOps Config
2. Assuming a GitOps repo was not added to your application earlier, you get 2 options: @@ -31,20 +31,23 @@ Users need to have [Admin permission](../global-configurations/authorization/use * **Commit manifests to a desired repository** - Select this option if you wish to add a custom repo that is already created with your [Git provider](../global-configurations/gitops.md#supported-git-providers). Enter its link in the `Git Repo URL` field. - ![Figure 2: Repo Creation](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/gitops/gitops-config.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/gitops/gitops-config.jpg) +
Figure 2: Repo Creation
-{% hint style="warning" %} +:::caution GitOps repositories, whether auto-created by Devtron or added manually, are immutable. This means they cannot be modified after creation. The same is true if you have an existing CD pipeline that uses/used GitOps for deployment. -{% endhint %} +::: 3. Click **Save**. - ![Figure 3: Saved GitOps Config](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/gitops/saved-config.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/gitops/saved-config.jpg) +
Figure 3: Saved GitOps Config
-**Note**: In case you skipped the GitOps configuration for your application and proceeded towards the [creation of a new CD pipeline](../creating-application/workflow/cd-pipeline.md#creating-cd-pipeline) (that uses GitOps), you will be prompted to configure GitOps as shown below: +**Note**: In case you skipped the GitOps configuration for your application and proceeded towards the [creation of a new CD pipeline](../creating-application/workflow/cd-pipeline.md) (that uses GitOps), you will be prompted to configure GitOps as shown below: -![Figure 4: Incomplete GitOps Config](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/gitops/gitops-not-configured.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/gitops/gitops-not-configured.jpg) +
Figure 4: Incomplete GitOps Config
### For Helm Apps @@ -53,34 +56,40 @@ You can [deploy a helm chart](../deploy-chart/deployment-of-charts.md#configure- 1. Select the helm chart from the [Chart Store](../deploy-chart/README.md). - ![Figure 5: Choosing a Helm Chart](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/gitops/chart-selection.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/gitops/chart-selection.jpg) +
Figure 5: Choosing a Helm Chart
2. Click **Configure & Deploy**. - ![Figure 6: Configure & Deploy Button](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/gitops/configure-deploy.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/gitops/configure-deploy.jpg) +
Figure 6: Configure & Deploy Button
-3. After you enter the `App Name`, `Project`, and `Environment`; an option to choose the deployment approach (i.e., Helm or GitOps) would appear. Select **GitOps**. +3. After you enter the `App Name`, `Project`, and `Environment`; an option to choose the deployment approach (i.e., Helm or GitOps (Via ArgoCD)) would appear. Select **GitOps (Via ArgoCD)**. -{% hint style="info" %} -The option to choose between 'Helm' or 'GitOps' is only available in -{% endhint %} +:::info +The option to choose between 'Helm' or 'GitOps' is only available in +::: -![Figure 7a: Deployment Approach](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/gitops/deployment-method.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/gitops/deployment-method.jpg) +
Figure 7a: Deployment Approach
-![Figure 7b: Selecting GitOps Method](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/gitops/select-gitops.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/gitops/select-gitops.jpg) +
Figure 7b: Selecting GitOps (Via ArgoCD) Method
4. A modal window will appear for you to enter a Git repository. Just like [Devtron Apps](#for-devtron-apps) (step 2), you get two options: * Auto-create repository * Commit manifests to a desired repository - ![Figure 8: Adding a Repo](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/gitops/git-repository-helm-app.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/gitops/git-repository-helm-app.jpg) +
Figure 8: Adding a Repo
5. Enter your custom Git Repo URL, and click **Save**. - ![Figure 9: Saved GitOps Config for Helm App](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/gitops/custom-git-repo-helm-apps.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/gitops/custom-git-repo-helm-apps.jpg) +
Figure 9: Saved GitOps Config for Helm App
Next, you may proceed to deploy the chart. -{% hint style="warning" %} +:::caution Once you deploy a helm app with GitOps, you cannot change its GitOps repo. -{% endhint %} \ No newline at end of file +::: \ No newline at end of file diff --git a/docs/user-guide/creating-application/overview.md b/docs/user-guide/creating-application/overview.md old mode 100644 new mode 100755 index 3cf97142f9..f51a7250bf --- a/docs/user-guide/creating-application/overview.md +++ b/docs/user-guide/creating-application/overview.md @@ -5,9 +5,12 @@ The Overview page provides a centralized view of an application’s details with The **Overview** page contains three main sections: * [**About**](#about): Contains application metadata such as name, description, project, creator, tags, and connected code source. It also includes options to manage tags and [Configure PVCs](#configure-persistentvolumeclaim-pvc). * [**Environments**](#environments): Displays all environments where the application is deployed, along with their current status and quick access to associated workflows. -* [**Dependencies**](#dependencies): Shows which Devtron applications this application depends on, and which other Devtron applications depend on it, thus helping visualize microservices dependency. +* [**Dependencies**](#dependencies-): Shows which Devtron applications this application depends on, and which other Devtron applications depend on it, thus helping visualize microservices dependency. -![Figure 1: Overview Tab](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/overview/overview-latest-1.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/overview/overview.jpg) +
Figure 1: Overview Tab
+ +--- ## About @@ -20,7 +23,8 @@ The **About** section allows you to: The left side of the **About** section displays essential information about the application. -![Figure 2: About Section](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/overview/left-about.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/overview/left-about.jpg) +
Figure 2: About Section
The table below captures all the key elements presented in this section, along with their descriptions and whether they can be edited by the user. @@ -28,11 +32,11 @@ The left side of the **About** section displays essential information about the | :--------- | :--------------- |:--------- | | **Application Name** | No |Displays the name of the application (e.g., backend-healthcare-app).| | **Short Description**|Yes|A short, optional description to summarize the application's purpose.| -| **Project** |Yes|Indicates the current project under which the application is organized.
You can change the project directly from this section.
  1. Click the **Edit** icon next to the current project.
  2. In the **Change Project** window, select the new project from the dropdown.
  3. Click **Save**.
Changing the project will revoke access for existing users and grant access only to those who have permissions in the newly selected project.| +| **Project** |Yes|Indicates the current project under which the application is organized.
You can change the project directly from this section.
  1. Click the **Edit** icon next to the current project.
  2. In the **Change Project** window, select the new project from the dropdown.
  3. Click **Save**.
Changing the project will revoke access for existing users and grant access only to those who have permissions in the newly selected project.| | **Created on** |No|Shows the exact date and time when the application was created.| | **Created by**|No|Displays the email address of the user who created the application.| | **Code Source** |No|Shows the connected Git repository or template used for the application.| -| **Part of release track** |No|Lists all release track names linked to the app.
  • Clicking a release opens its detailed view in the Software Distribution Hub.
  • This is an enterprise-only feature available as part of Devtron's SDH offering.
| +| **Part of release track** |No|Lists all release track names linked to the app.
  • Clicking a release opens its detailed view in the Software Release Management.
  • This is an enterprise-only feature available as part of Devtron's SDH offering.
| | **Tags** |Yes| Refer [Manage Tags](#manage-tags) | @@ -43,11 +47,13 @@ Tags are key-value pairs used to identify and organize applications effectively. 1. Click the **Edit** icon next to **Tags**. 2. On the **Manage Tags** page, click **+ Add tag** to create a new tag. 3. To delete a tag, click the **X** icon next to it. -4. To propagate a tag as a Kubernetes label, click the **Propagation** icon ![propagation icon](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/donot-propagate.jpg). +4. To propagate a tag as a Kubernetes label, click the **Propagation** icon ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/donot-propagate.jpg) +
propagation icon
. - The icon turns dark grey when propagation is enabled. - Click again if you wish to disable propagation. - ![Snapshot of Manage Tags](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/overview/manage-tags-latest-1.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/overview/manage-tags-latest-1.jpg) +
Figure 3: Snapshot of Manage Tags
5. Click **Save**. The configured tags will appear under the **Tags** in the **About** section immediately. @@ -57,7 +63,8 @@ Tags are key-value pairs used to identify and organize applications effectively. ### Readme The right side of the **About** section contains a **Readme** area where you can maintain application-specific notes or documentation. The **Readme** supports Markdown formatting, making it easy to include formatted text, instructions, or important context related to the application. -![Figure 3: Readme](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/overview/readme-edit.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/overview/readme-edit.jpg) +
Figure 4: Readme
To add or update the **Readme**: 1. Click the **Edit** button in the Readme section. @@ -66,13 +73,14 @@ To add or update the **Readme**: 4. Preview the content using the **Preview** tab. 5. Click **Save** to update the Readme. -![Figure 4: Editing Readme](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/overview/readme.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/overview/readme.jpg) +
Figure 5: Editing Readme
-{% hint style="info" %} - After saving, the system displays the email address of the user who last updated the README, along with the date and time. This information appears in the header of the Readme section, beside the title. -{% endhint %} +:::info +After saving, the system displays the email address of the user who last updated the README, along with the date and time. This information appears in the header of the Readme section, beside the title. +::: -### Deployment Window [![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/elements/EnterpriseTag.svg)](https://devtron.ai/pricing) +### Deployment Window The **Deployment Window** in the **About** section displays all Blackout Windows and Maintenance Windows configured for your application’s environments. @@ -84,21 +92,23 @@ These windows are defined by Super-Admins to control when deployments and relate You can expand each environment row to view detailed information like window name, duration, and frequency. -![Figure 5: Deployment Window](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/overview/deployement-window.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/overview/deployement-window.jpg) +
Figure 6: Deployment Window
-{% hint style=“info” %} +:::info This section is view-only and does not require any configuration at the application level. -{% endhint %} +::: > To learn how to configure deployment windows, refer to the [Deployment Window documentation](../global-configurations/deployment-window.md). -### Catalog [![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/elements/EnterpriseTag.svg)](https://devtron.ai/pricing) +### Catalog -The **Catalog** in the **About** section displays information about your application, such as documentation references, ownership details, and technical specifications. This data is managed using [Devtron’s Catalog Framework](../global-configurations/catalog-framework.md). +The **Catalog** in the **About** section displays information about your application, such as documentation references, ownership details, and technical specifications. You can manage this data using the **Manage Schema** option, which defines the structure of your catalog. Refer the [Manage Schema Documentation](../global-configurations/catalog-framework.md#managing-a-schema) to learn more. -![Figure 6: Catalog](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/overview/catalog.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/overview/catalog-edit.jpg) +
Figure 7: Catalog
-You can use the **Catalog framework** to maintain information about your application, such as Documentation (e.g., API contract, service documentation), ownership details, technical attributes, etc. This makes it easier for others to understand, manage, and use your application. +You can use the **Catalog** to maintain information about your application, such as Documentation (e.g., API contract, service documentation), ownership details, technical attributes, etc. This makes it easier for others to understand, manage, and use your application. Super-Admins define a custom JSON schema that determines what fields are shown in the catalog form. This schema is specific to each resource type, such as Devtron applications. @@ -108,15 +118,17 @@ When you click the **Edit** icon, a form appears based on the defined schema. As * Code owners and on-call responsibilities * Service attributes (e.g., internet-facing flag, communication method, framework, language) -![Figure 7: Catalog Form](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/overview/catalog-expanded.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/overview/catalog-schema-generated-form.jpg) +
Figure 8: Catalog Form
-{% hint style= "info" %} -The structure and labels in the catalog form are entirely configurable by your platform team via JSON schema in **Catalog Framework**. Field names and sections may vary depending on how the schema was defined by your organization. -{% endhint %} +:::info +The structure and labels in the catalog form are entirely configurable by your platform team via JSON schema in **Catalog**. Field names and sections may vary depending on how the schema was defined by your organization. Refer [Manage Schema](../global-configurations/catalog-framework.md#managing-a-schema) documentation to learn more. +::: Once saved, this information is displayed in a readable format within the Catalog subsection and is accessible to all users who have permission to view the application. -![Figure 8: Catalog Final View](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/overview/catalog-final.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/overview/catalog-final-view.jpg) +
Figure 9: Catalog Final View
### Configure PersistentVolumeClaim (PVC) @@ -134,8 +146,7 @@ Before you can configure an Application to use a PVC, you need to make sure the The following is a sample PVC YAML configuration. You can modify it as needed based on your storage class, access mode, and resource requirements: -{% code title="pvc.yaml" overflow="wrap" lineNumbers="true" %} -```bash +```bash title="pvc.yaml" showLineNumbers apiVersion: v1 kind: PersistentVolumeClaim metadata: @@ -149,13 +160,13 @@ spec: requests: storage: 30Gi ``` -{% endcode %} + You can apply this configuration using Devtron’s **Resource Browser** **Apply using Devtron’s Resource Browser** -1. Navigate to [Resource Browser](../resource-browser/README.md) in the Devtron sidebar. +1. Navigate to **Infrastructure Management** → [Resource Browser](../resource-browser/README.md).. 2. Select the Cluster where your CI pipelines run. 3. Click **Create Resource**. 4. Paste the YAML into the editor and click **Create**. @@ -165,7 +176,7 @@ You can apply this configuration using Devtron’s **Resource Browser** Once PVC is created and in the Bound state, the next step is to configure it within your application using tags from the **About** section. -Devtron allows you to define special tags as key-value pairs. These tags act as instructions for Devtron to mount the specified PVC to the Pod where the CI pipeline runs, making the storage available during pipeline execution. +Devtron allows you to define special tag as key-value pair. This tag act as instructions for Devtron to mount the specified PVC to the Pod where the CI pipeline runs, making the storage available during pipeline execution. You can choose to mount the PVC for all pipelines in the application or for a specific pipeline, depending on your use case. The configuration remains the same in both cases, the only difference lies in the tag key used to define the scope of the PVC. @@ -173,7 +184,8 @@ Follow the steps below to apply the PVC to all or specific pipelines 1. Navigate to your application’s **Overview** → **About** section. 2. Click the **Edit** icon next to the Tags section. -![Figure 9: Clicking Edit Icon](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/overview/pvc-edit-tags-1.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/overview/pvc-edit-tags-1.jpg) +
Figure 10: Clicking Edit Icon
3. Add one of the following key-value tags depending on how you want the PVC to be applied * To mount the PVC across all pipelines in the application @@ -182,24 +194,29 @@ Follow the steps below to apply the PVC to all or specific pipelines |:--- |:--- | |devtron.ai/ci-pvc-all | cache-pvc | -![Figure 10: Mounting PVC across all pipelines](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/overview/manage-tags-pvc-1.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/overview/manage-tags-pvc-1.jpg) +
Figure 11: Mounting PVC across all pipelines
* To mount the PVC for a specific pipeline only in the application | Key | Value| |:--- |:--- | -|devtron.ai/ci-pvc-| cache-pvc | +|devtron.ai/ci-pvc-``| cache-pvc | -![Figure 11a: Finding Pipeline name](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/overview/pipeline-name-pvc-1.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/overview/pipeline-name-pvc-1.jpg) +
Figure 12a: Finding Pipeline name
-![Figure 11b: Mounting PVC to a specific pipeline](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/overview/pipeline-level-tag.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/overview/pipeline-level-tag.jpg) +
Figure 12b: Mounting PVC to a specific pipeline
-> Replace with the exact name of the CI pipeline (visible in the Workflow Editor). +> Replace `` with the exact name of the CI pipeline (visible in the Workflow Editor). 4. Click **Save** to apply the tag. After saving, Devtron will automatically mount the PVC into your CI pipeline Pod, allowing it to use the configured persistent storage for caching purposes. No further manual configuration is required. +--- + ## Environments The Environments section provides a detailed view of all environments where the application is configured. For each environment, it displays @@ -212,9 +229,12 @@ The Environments section provides a detailed view of all environments where the | **Commit**|Displays the Git commit hash associated with the last deployment.| | **Deployed At**|Indicates who deployed the application and when, it is shown as the email ID of the user along with a relative timestamp (e.g.,9 days ago).| -![Figure 12: Environments List](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/overview/environments.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/overview/environments.jpg) +
Figure 13: Environments List
+ +--- -## Dependencies [![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/elements/EnterpriseTag.svg)](https://devtron.ai/pricing) +## Dependencies The Dependencies section displays the relationship of the current application with other Devtron-managed applications in the form of upstream and downstream dependencies. @@ -228,24 +248,29 @@ Upstream dependencies are other Devtron applications that your current applicati To add upstream dependencies: 1. Click the **Add Dependency** button in the **Dependencies** section. If dependencies already exist, click the **Edit Dependency** button on the right instead. -![Figure 13: Dependencies Section](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/overview/add-dependencies.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/overview/add-dependencies.jpg) +
Figure 14: Dependencies Section
2. In the right-side panel, under Upstream Dependency, click **+ Add Dependency**. -![Figure 14: Adding Dependency](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/overview/add-dependencies-part-2.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/overview/add-dependencies-part-2.jpg) +
Figure 15: Adding Dependency
3. Use the search bar to find and select one or more applications that your app depends on. -![Figure 15: Selecting dependency](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/overview/add-dependencies-part-3.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/overview/add-dependencies-part-3.jpg) +
Figure 16: Selecting dependency
4. Click **Map Environments** to associate each selected application with a specific environment. * This helps Devtron understand where your dependencies are running. By mapping environments, you can view the correct deployment details (like image, commit, and status) for each dependency. -![Figure 16: Mapping Environments](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/overview/add-dependencies-part-4.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/overview/add-dependencies-part-4.jpg) +
Figure 17: Mapping Environments
5. Once you’ve mapped the environments, click **Save** to confirm and apply the upstream dependencies. -![Figure 17: Selecting environments for each dependency](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/overview/add-dependencies-part-5.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/overview/add-dependencies-part-5.jpg) +
Figure 18: Selecting environments for each dependency
6. After saving: * The selected applications will appear under **Dependent Applications** above your current application as Upstream Dependencies. @@ -253,7 +278,8 @@ To add upstream dependencies: * You can switch the environment of your current application using the dropdown next to its name under **Environment**. This allows you to view the upstream and downstream dependencies specific to that environment. The table will refresh to show deployment details for the selected environment. * Any applications that have added your app as an upstream will automatically be listed below your app as Downstream Dependencies. -![Figure 18: Dependencies List](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/overview/add-dependencies-part-6.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/overview/add-dependencies-part-6.jpg) +
Figure 19: Dependencies List
### Downstream Dependencies @@ -265,4 +291,4 @@ For every downstream application listed, a **Map Environment** link appears besi * Clicking this link redirects you to that application’s Dependencies section, where your app will appear in the upstream list. -* From there, you can assign or update the environment mapping for your app in the context of that downstream application. +* From there, you can assign or update the environment mapping for your app in the context of that downstream application. \ No newline at end of file diff --git a/docs/user-guide/creating-application/workflow/README.md b/docs/user-guide/creating-application/workflow/README.md old mode 100644 new mode 100755 index 636bd165bb..4335c8aeef --- a/docs/user-guide/creating-application/workflow/README.md +++ b/docs/user-guide/creating-application/workflow/README.md @@ -6,7 +6,8 @@ After configuring the **Build Configurations** and **Base Configurations**, the In Devtron, a **Workflow** is a logical sequence of different stages(pipelines) used for continuous integration and continuous deployment of an application. - ![Figure 1: Workflow Editor](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/arora1.gif) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/ci-pipeline/workflow-intro.gif) +
Figure 1: Workflow Editor
--- @@ -18,11 +19,13 @@ To create a quick workflow with both build and deployment pipelines, follow the 1. Click **New Workflow** in the workflow editor. - ![Figure 2: Selecting 'New Workflow'](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/workflow/build-deploy-new-create-workflow.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/workflow/build-deploy-new-create-workflow.jpg) +
Figure 2: Selecting 'New Workflow'
2. Select **Build and Deploy from Source Code**; a window appears. - ![Figure 3: Selecting 'Build and Deploy from Source Code'](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/workflow/build-deploy-new-build-deploy-from-source-code.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/workflow/build-deploy-new-build-deploy-from-source-code.jpg) +
Figure 3: Selecting 'Build and Deploy from Source Code'
3. Enter the required information in the following fields. @@ -33,7 +36,8 @@ To create a quick workflow with both build and deployment pipelines, follow the | `Environment` | Required |Select the environment where you want to deploy your application | | `Namespace`| Required (Auto Filled)| Automatically populated based on the selected environment | - ![Figure 4: Entering Information](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/workflow/build-deploy-new-cred.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/workflow/build-deploy-new-cred.jpg) +
Figure 4: Entering Information
**Source Types** @@ -46,7 +50,8 @@ To create a quick workflow with both build and deployment pipelines, follow the 4. Click **Create Workflow**; a workflow with both build and deployment pipelines will be created. - ![Figure 5: Clicking 'Create Workflow'](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/workflow/build-deploy-new-save-workflow.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/workflow/build-deploy-new-save-workflow.jpg) +
Figure 5: Clicking 'Create Workflow'
5. If you want to configure advanced configurations in the build pipeline, such as Custom image tag pattern, Vulnerability Scanning, etc., refer to the [CI Pipeline](./ci-pipeline.md#configuring-advanced-options) page to learn more. @@ -60,14 +65,15 @@ To create a quick workflow with both build and deployment pipelines, follow the Apart from configuring advanced options, you can create five types of CI pipelines depending on your use case. -* [Build from Source Code](./ci-pipeline.md#id-1.-build-from-source-code): Choose this option if you want Devtron to build the image of the source code. +* [Build from Source Code](./ci-pipeline.md#1-build-from-source-code): Choose this option if you want Devtron to build the image of the source code. -* [Linked Build Pipeline](./ci-pipeline.md#id-2.-linked-build-pipeline): Choose this option if you want to use an image created by an existing CI pipeline in Devtron. +* [Linked Build Pipeline](./ci-pipeline.md#2-linked-build-pipeline): Choose this option if you want to use an image created by an existing CI pipeline in Devtron. -* [Deploy Image from External Service](./ci-pipeline.md#id-3.-deploy-image-from-external-service): Choose this if you want to build your image outside Devtron; it will receive a Docker image from an external source via the incoming webhook. +* [Deploy Image from External Service](./ci-pipeline.md#3-deploy-image-from-external-service): Choose this if you want to build your image outside Devtron; it will receive a Docker image from an external source via the incoming webhook. -* [Sync with Environment](./ci-pipeline.md#id-4.-sync-with-environment) [![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/elements/EnterpriseTag.svg)](https://devtron.ai/pricing) +* [Sync with Environment](./ci-pipeline.md#4-sync-with-environment-) -* [Create a Job](./ci-pipeline.md#id-5.-create-a-job) +* [Create a Job](./ci-pipeline.md#5-create-a-job) -![Figure 6: Selecting an Image Source](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/workflow/workflow-ci.jpg) \ No newline at end of file +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/workflow/workflow-ci.jpg) +
Figure 6: Selecting an Image Source
\ No newline at end of file diff --git a/docs/user-guide/creating-application/workflow/automated-test.md b/docs/user-guide/creating-application/workflow/automated-test.md old mode 100644 new mode 100755 index 6cc7b00ce6..7d08335343 --- a/docs/user-guide/creating-application/workflow/automated-test.md +++ b/docs/user-guide/creating-application/workflow/automated-test.md @@ -5,6 +5,7 @@ Users can run the test case using the Devtron dashboard or by including the test The test cases given in the script will run before the test cases given in the devtron.ci.yaml ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/workflow-ci-pipeline/yaml.jpg) +
Figure 1: Yaml
| Field | Description | | :--- | :--- | diff --git a/docs/user-guide/creating-application/workflow/cd-pipeline.md b/docs/user-guide/creating-application/workflow/cd-pipeline.md old mode 100644 new mode 100755 index 6bf1d8dd2c..daea26c83d --- a/docs/user-guide/creating-application/workflow/cd-pipeline.md +++ b/docs/user-guide/creating-application/workflow/cd-pipeline.md @@ -1,19 +1,20 @@ # CD Pipeline -{% hint style="warning" %} -### Prerequisites +:::caution Prerequisites A [CI pipeline](./ci-pipeline.md) created in your workflow. -{% endhint %} +::: After your CI pipeline is ready, you can start building your CD pipeline. Devtron enables you to design your CD pipeline in a way that fully automates your deployments. Images from Build stage can be deployed to one or more environments through dedicated CD pipelines. Click the '**+**' sign on CI Pipeline to attach a CD Pipeline to it. -![Figure 1: Adding CD Pipeline](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/workflow-cd-pipeline/workflow-cd-v2.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/cd-pipeline/workflow-cd.jpg) +
Figure 1: Adding CD Pipeline
A basic `Create deployment pipeline` window will pop up. -![Figure 2: Creating CD Pipeline](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/workflow-cd-pipeline/new-cd-pipeline.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/cd-pipeline/new-cd-pipeline.jpg) +
Figure 2: Creating CD Pipeline
Here, you get two tabs: * [New Deployment](#new-deployment) - Use this option to create a new Helm/GitOps deployment. @@ -37,40 +38,38 @@ This section expects four inputs from you: | ----------- | ---------------------------------------------------------- | ------------------------- | | Environment | Select the environment where you want to deploy your application | (List of available environments) | | Namespace | Automatically populated based on the selected environment | Not Applicable | -| Trigger | When to execute the deployment pipeline | **Automatic**: Deployment triggers automatically when a new image completes the previous stage (build pipeline or another deployment pipeline)
**Manual**: Deployment is not initiated automatically. You can trigger deployment with a desired image. | -| Deployment Approach [![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/elements/EnterpriseTag.svg)](https://devtron.ai/pricing) | How to deploy the application | **Helm**, [GitOps(ArgoCD)](../../integrations/argocd.md) or [Gitops (FluxCD)](../../creating-application/fluxcd.md)
Refer [GitOps](../../global-configurations/gitops.md) to learn more | +| Trigger | When to execute the deployment pipeline | **Automatic**: Deployment triggers automatically when a new image completes the previous stage (build pipeline or another deployment pipeline)
**Manual**: Deployment is not initiated automatically. You can trigger deployment with a desired image. | +| Deployment Approach | How to deploy the application | **Helm**, [GitOps(ArgoCD)](../../integrations/argocd.md) or [Gitops (FluxCD)](../../creating-application/fluxcd.md)
Refer [GitOps](../../global-configurations/gitops.md) to learn more | -{% hint style="warning" %} - ### FluxCD Deployment Failed +:::caution FluxCD Deployment Failed * Make sure that the FluxCD controller is installed in the cluster in which you want to deploy the application. Refer [Enable GitOps Deployments with FluxCD](../../creating-application/fluxcd.md#installing-fluxcd-controller-only-for-deployments) to learn more. * Application deployments through GitOps (via FluxCD) are supported only when using the `Deployment` or `Rollout` deployment strategies with the latest chart versions. Other deployment strategies are currently not supported. -{% endhint %} +::: -{% hint style="info" %} - -### Deploying to an Isolated Environment? - -In case you are choosing an [isolated environment](../../global-configurations/cluster-and-environments.md#add-isolated-cluster) for deployment, you will get two additional options to choose from in the 'Deploy to Environment' window ([check snapshot](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/use-cases/oci-push/create-cd2.jpg)): +:::info Deploying to an Isolated Environment? +In case you are choosing an [isolated environment](../../global-configurations/clusters/add-clusters.md#add-isolated-cluster-) for deployment, you will get two additional options to choose from in the 'Deploy to Environment' window ([check snapshot](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/use-cases/oci-push/create-cd2.jpg)): * **Do not push** - A link to download the helm package will be available after the deployment. However, it will not push the helm package to the OCI registry. * **Push to registry** - This will generate and [push the helm package to the OCI registry](../../global-configurations/container-registries.md#push-helm-packages). Upon selecting this option, you will get two more fields: * **Registry** - Choose the OCI registry to which the helm chart package must be pushed. Only those registries that have `Push helm packages` enabled will be shown in the dropdown. * **Repository** - Enter the repository name. You can find the username from your registry provider account (e.g., Docker Hub). -{% endhint %} +::: ### Deployment Strategy Devtron supports multiple deployment strategies depending on the [deployment chart type](../../creating-application/base-config/deployment-template.md#select-a-deployment-chart-type). -![Figure 3: Strategies Supported by Chart Type](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/workflow-cd-pipeline/chart-and-strategy.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/cd-pipeline/chart-and-strategy.jpg) +
Figure 3: Strategies Supported by Chart Type
Refer to [Deployment Strategies](#deployment-strategies) to know more about each strategy in depth. The next section is [Advanced Options](#advanced-options) and it comes with additional capabilities. This option is available at the bottom of the `Create deployment pipeline` window. However, if you don't need them, you may proceed with a basic CD pipeline and click **Create Pipeline**. -![Figure 4: Advanced Options](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/workflow-cd-pipeline/advanced-option.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/cd-pipeline/advanced-option.jpg) +
Figure 4: Advanced Options
--- @@ -82,18 +81,19 @@ After selecting **Advanced Options**, the `Create deployment pipeline` window ha * [Deployment stage (tab)](#deployment-stage) * [Post-Deployment stage (tab)](#post-deployment-stage) -![Figure 5: Advanced Options (Expanded View)](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/workflow-cd-pipeline/cd-advanced.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/cd-pipeline/cd-advanced.jpg) +
Figure 5: Advanced Options (Expanded View)
-{% hint style="info" %} -### Note +:::info Note You can create or edit a deployment strategy in Advanced Options. Remember, only the default strategy will be used for deployment, so use the **SET DEFAULT** button to mark your preferred strategy as default after creating it. -{% endhint %} +::: ### Pre-Deployment Stage If your deployment requires prior actions like DB migration, code quality check (QC), etc., you can use the `Pre-Deployment stage` to configure such tasks. Refer [Pre/Post tasks](./pre-post-tasks.md) to configure tasks in `Pre-Deployment stage`. -![Figure 6: Pre-Deployment Stage](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/workflow-cd-pipeline/cd-predeployment-v2.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/devtron-apps/cd-pipeline/cd-predeployment.jpg) +
Figure 6: Pre-Deployment Stage
@@ -170,17 +171,18 @@ Make sure your cluster has [devtron-agent](../../global-configurations/cluster-a The pipeline name will be auto-generated; however, you are free to modify the name as per your requirement. - + +
+ +You can view and analyze costs across multiple scopes such as [Clusters](../../reference/glossary.md#cluster), [Projects](../global-configurations/projects.md), [Environments](../../reference/glossary.md#environment), [Applications](../../reference/glossary.md#devtron-apps), and Infrastructure Resources. Devtron automatically tracks the spend on CPU, Memory, Storage, and GPU, giving you a clear picture of how different resources contribute to your overall cost and where most of your spend is concentrated. + +The dashboard highlights recommended costs and potential savings, helping you identify over-provisioned resources and opportunities for optimization. + +You can choose your preferred currency to view all cost data consistently across different time periods, such as daily, monthly, quarterly, or custom ranges. This helps you move seamlessly from a high-level overview to a granular analysis of costs within a specific category. \ No newline at end of file diff --git a/docs/user-guide/finops/configurations.md b/docs/user-guide/finops/configurations.md new file mode 100755 index 0000000000..c4dd3b4ed9 --- /dev/null +++ b/docs/user-guide/finops/configurations.md @@ -0,0 +1,324 @@ +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +# Configurations + +The **Configurations** page lets you manage configurations for Cost Visibility in Devtron. You can: + + * Set the default currency for all cost-related data. + * Enable or disable cost tracking for your connected clusters. + +--- + +## Currency (Default) + +You can select your preferred currency as default. + +--- + +## Enable Cost Tracking + +To enable cost visibility for a cluster, follow the below steps: + +1. Choose your preferred cluster, and click on **Off/Enabled**. An **Edit Cluster** modal window will open. + +2. Enable the toggle next to **Enable cost tracking**. + +3. Select the cloud provider in which you have created your cluster. + +4. Based on the cloud provider you need to do the following configurations: + + + + + +To enable cost visibility for Google Cloud in Devtron, you need to generate an API key and use it to connect Devtron with your GCP account. + +1. Generate the API key using standard [Google Cloud API key documentation](https://cloud.google.com/docs/authentication/api-keys#gcloud). + +2. Now go back to the **Edit cluster** modal window, and enter the API key in the **Cloud Provider API Key** field. + +:::info +If you face any issues while enabling or configuring the **Cost Visibility** module, reach out to [Devtron Support Team](mailto:enterprise@devtron.ai) for assistance. + +::: + + + + + +To enable cost visibility for your Azure clusters in Devtron, you need to allow Devtron to access your billing data securely. This requires two steps: + 1. Create a custom role in Azure with billing access. + 2. Create a service principal (an identity) that Devtron can use to fetch cost details. + + #### Step 1: Creating Custom Role + + 1. Open a text editor and copy the following JSON: + + ```json +{ + "Name": "OpenCostRole", + "IsCustom": true, + "Description": "Rate Card query role", + "Actions": [ + "Microsoft.Compute/virtualMachines/vmSizes/read", + "Microsoft.Resources/subscriptions/locations/read", + "Microsoft.Resources/providers/read", + "Microsoft.ContainerService/containerServices/read", + "Microsoft.Commerce/RateCard/read" + ], + "AssignableScopes": [ + "/subscriptions/YOUR_SUBSCRIPTION_ID" + ] +} + ``` + +2. Replace `YOUR_SUBSCRIPTION_ID` with your actual subscription ID. + +3. Save the file as `myrole.json`. + +4. Run the following command in your terminal: + +```bash +az role definition create --verbose --role-definition @myrole.json +``` + +This creates a role called `OpenCostRole` with just enough access to read pricing information. + +#### Step 2: Create a Service Principal + +1. Run the command below, again replacing `YOUR_SUBSCRIPTION_ID` with your subscription ID: + +```bash +az ad sp create-for-rbac \ + --name "OpenCostAccess" \ + --role "OpenCostRole" \ + --scope "/subscriptions/YOUR_SUBSCRIPTION_ID" \ + --output json +``` + +2. You’ll get an output like this: + +```json +{ + "appId": "1d9b1532-abe4-4e08-b172-adfa5384da1", + "displayName": "OpenCostAccess", + "password": "3XxxxxxxxxxxxxxxxxxxX3", + "tenant": "aee9b2ed-7ecc-4cb2-bfed-60d71c0e957" +} +``` + +3. Note this information as you need to enter this in Devtron. + +#### Step 3: Enter Details in Devtron + +Now go back to the **Edit cluster** modal window, and fill the following fields: + +* **Subscription ID** - Your Azure subscription ID +* **App ID** - Value of `appId` from the output +* **Display Name** - Value of `displayName` from the output +* **Password** - Value of `password` from the output +* **Tenant** - Value of `tenant` from the output +* **Billing Account** - Optional (fill if available) +* **Offer ID** - Optional (fill if available) + +:::info +If you face any issues while enabling or configuring the **Cost Visibility** module, reach out to [Devtron Support Team](mailto:enterprise@devtron.ai) for assistance. + +::: + + + + + +If you have spot node instances in your AWS cluster, then only you need to do the below additional configurations for your AWS cluster, else you can skip the below configurations + +#### Step 1: Set up a Spot Instance Data Feed + +1. Create an S3 bucket + +2. Assign full access permissions to the AWS Spot Data Feed service + +```json +{ + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": "spot.amazonaws.com" + }, + "Action": "*", + "Resource": "arn:aws:s3:::devtron-spot-feed/*" + }, + { + "Effect": "Allow", + "Principal": { + "Service": "spot.amazonaws.com" + }, + "Action": "*", + "Resource": "arn:aws:s3:::devtron-spot-feed" + } + ] +} +``` + +3. Run the following command to subscribe to the data feed using the AWS CLI + +```bash +aws ec2 create-spot-datafeed-subscription \ + --bucket devtron-spot-feed --prefix cost +``` +:::warning Note +You can subscribe to the Spot Data Feed for only one S3 bucket at a time. Running the command again updates the feed to the latest bucket. +::: + + +#### Step 2: Create an IAM Role or Use Access Keys + +You can connect Devtron to AWS cost data using either of the following methods: + +#### IAM Role (Recommended) + +Create a Web Identity IAM role for your EKS/EC2 cluster with permissions to access the Spot Data Feed bucket. Attach the following policy (replace CHANGE-ME with your bucket name) + +```json +{ + "Version": "2012-10-17", + "Statement": [ + { + "Action": [ + "s3:ListAllMyBuckets", + "s3:ListBucket", + "s3:Get*" + ], + "Resource": [ + "arn:aws:s3:::CHANGE-ME", + "arn:aws:s3:::CHANGE-ME/*" + ], + "Effect": "Allow" + } + ] +} + +``` + +#### Access Keys (Alternative) + +Provide an Access Key and Secret Key with permissions `s3:ListBucket` and `s3:GetObject` for the Spot Data Feed bucket. + +#### Step 3: Configure in Devtron + +Now go back to the **Edit cluster** modal window, and fill the following fields: + +* **Spot Data Bucket** - Name of the S3 bucket storing Spot Instance Data Feed +* **Spot Data Region** - AWS region of the Spot Data Feed +* **Spot Data Prefix** - Prefix (if any) used for the Spot Data Feed +* **Project ID** - Your AWS Account ID +* **Access Key** - (Optional) AWS Access Key with S3 read permissions +* **Secret Access Key** - (Optional) AWS Secret Access Key with S3 read permissions +* **IAM Role** - (Recommended) IAM role ARN assigned to the EKS/EC2 cluster for bucket access + + + + + +5. Enter Prometheus endpoint of your cluster. Refer [Fetching Prometheus Endpoint](#fetching-prometheus-endpoint) to learn more. + +:::warning +Prometheus endpoint should be publicly exposed for the cost visibility to work. + +::: + +6. Click **Save**, cost visibility will be enabled for the cluster. + +:::info Note +After enabling cost visibility, you will see your cluster information after 1 hour in cost visibility module. +::: + +--- + +## Fetching Prometheus Endpoint + +:::warning Note +Ensure [GitOps](../global-configurations/gitops.md) is configured before deploying Prometheus. If not, Prometheus will default to being deployed via Helm. +::: + +### Installing Prometheus + +1. Go to the **Chart Store** and search for `prometheus`. Use the Prometheus community's `kube-prometheus-stack` chart to deploy Prometheus. + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-metrics/app2.jpg) +
Figure 1: Chart Store
+ +2. After selecting the chart, configure these values as needed before deployment. + + ```yaml + kube-state-metrics: + metricLabelsAllowlist: + - pods=[*] + ``` + +
+ + ```yaml + serviceMonitorSelectorNilUsesHelmValues: false + podMonitorSelectorNilUsesHelmValues: false + ``` + +
+ + Search for the above parameters, and update them as shown (or customize as needed). + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-metrics/app3.jpg) +
Figure 2a: Prometheus Chart Configuration
+ + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-metrics/app-metrics-config.jpg) +
Figure 2b: Prometheus Chart Configuration (cont.)
+ +3. Enable `upgradeJob` parameter to install CRDs: + + Since Helm does not automatically apply CRDs, you need to enable the `upgradeJob` parameter in the Helm chart to ensure CRDs are applied before deploying Prometheus. + + In the Prometheus Helm chart settings, locate the `upgradeJob` parameter and set it to `true` if it is `false`. + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-metrics/app-new2.jpg) +
Figure 3: upgradeJob Parameter
+ +4. After enabling the parameter, click **Deploy Chart**. + + While deploying `kube-prometheus-stack` chart, the deployment status may show as **Timed out**, and some CustomResourceDefinitions (CRDs) may appear as **Failed**. This behavior is expected and does not require any action from you. + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-metrics/app-metrics-deployment-timed-out-v2.jpg) +
Figure 4a: Deployment Timed Out
+ + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/creating-application/app-metrics/app-metrics-crds-failed.jpg) +
Figure 4b: CRDs Failed
+ + This occurs because certain Prometheus CRDs are large in size, which can lead to temporary sync issues during deployment, but, this does not impact the functionality of the Prometheus components. + + ArgoCD handles such cases automatically and the `kube-prometheus-stack` will continue to function as expected. + +5. After the chart is deployed successfully, you need to expose the Prometheus endpoint publicly. + +:::info +If you face any issues while enabling or configuring the **Cost Visibility** module, please contact the [Devtron Support Team](mailto:enterprise@devtron.ai) for assistance. +::: + + \ No newline at end of file diff --git a/docs/user-guide/finops/cost-breakdown.md b/docs/user-guide/finops/cost-breakdown.md new file mode 100755 index 0000000000..1ede20126d --- /dev/null +++ b/docs/user-guide/finops/cost-breakdown.md @@ -0,0 +1,216 @@ +import SupademoEmbed from '@site/src/components/SupademoEmbed'; + +# Cost Breakdown + +## Introduction + +While the **Overview** section gives you a quick summary of overall spending, the **Cost Breakdown** page lets you analyze deeper into where those costs come from. It helps you analyze costs within a selected category (**Clusters**, **Applications**, **Environments**, or **Projects**), for a specific time range. + +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/cost-visibility/cost-visibility-cost-breakdown.jpg) +
Figure 1: Cost Breakdown Overview
+ + You can apply filters in the top-right corner to adjust the view. Selecting the right filters helps you to focus on the most relevant cost information for your preferred analysis. + +For example, you might want to analyze your most recent infrastructure spend across production clusters. In that case, you can set the Clusters Scope filter to `Production` and select a Time Range of Last 30 Days. This will give you a focused view of active workloads and recent spending trends, without including cost from other clusters. + +:::success Use Case +Imagine your team is reviewing this month’s cloud spends and wants to focus only on production clusters. You open the Cost Breakdown page, set the **Clusters Scope** to `Production`, choose your preferred Currency, and adjust the Time Range to Last 30 Days. Instantly, the data updates to show just the relevant costs, providing you a clear picture of active environments and helps you spot any unusual spending patterns. With these quick filters, your team can focus on costs within the defined scope, ensuring the analysis stays relevant to your current objective. + + +::: + +| Filter | Description | +|------------------|-----------------------------------------------------------------------------| +| **Cluster Scope** | Choose whether to view costs across all clusters or environments, or limit the view to only production or non-production clusters or environments | +| **Currency** | Displays all cost values in the currency of your choice. | +| **Time Range** | Defines the time range for data displayed | + +--- + +## Inspecting Different Categories + +For the chosen category type (**Clusters**, **Applications**, **Environments**, or **Projects**), it shows the following: + +For example, if you select the Clusters category, you can view the total cost across all clusters, the recommended cost based on actual usage, and the potential savings if resources were optimized. This gives you a quick, high-level view of how efficiently each cluster is utilizing its allocated resources. + +:::success Use Case +Imagine your team is analyzing monthly infrastructure expenses for multiple clusters. You notice that the **Total Cost** for one cluster is significantly higher than the others. When you check the **Recommended Cost**, it’s much lower, showing that this cluster is over-provisioned. The Potential Savings metric confirms this, showing how much of your current spend could be reduced by aligning resource allocation with actual usage. With this insight, your team adjusts resource requests to improve overall cost efficiency without impacting performance. By the next billing cycle, costs come down, while the performance remains stable. + + +::: + +| Field | Description | +|:--------------------------- |:----------------------------------------------------------------------------| +| **Total Cost** | The actual spend for the selected category type (e.g., all clusters). | +| **Recommended Cost** | The estimated cost calculated from actual resource usage instead of allocated capacity| +| **Potential Savings** | The amount which you could have saved, for the selected time period| +| **Estimated cost reduction**| The percentage of your current spend that could be saved, for the selected time period | +| **Top 10 Costly Resources** | A ranked list of 10 highest cost resources of the selected category| + +You will also find a complete list of all the resources for the selected category at the bottom, helping you identify where most of your spending is concentrated. + +For example, if you’re viewing the Cluster category, the list displays each cluster along with its CPU, Memory, Storage, and GPU costs. You can quickly compare clusters and identify which ones have higher spend or greater potential savings. + +:::success Use Case +Suppose you’re reviewing costs within the Clusters category. As you go through the list, you notice one cluster’s **Total Cost** is higher than others. You look across its row and notice that both Memory Cost and Storage (PV) Cost are also on the higher side. The **Potential Savings** column then shows a clear opportunity to optimize usage within that cluster. With this focused view, you get a clear understanding of where your resources are being used most and which clusters might need attention, all from a single, organized view. You can then check the detailed view for those clusters to investigate further. + + +::: + + +Each row in the list shows the following for the specific resource of the selected category: + +| Field | Available For Categories | Description | +|:-----------------------|:--------------------------------|:-------------------------------------------------------------------- | +| **Provider** | Clusters | Shows the cloud provider or infrastructure source for each cluster | +| **Type** | Clusters, Environments | Shows whether each cluster or environment is **Production** or **Non-Production** | +| **Applications Count** | Environments, Projects | Shows the number of applications linked to each environment or project | +| **Environments** | Applications | Shows the number of environments where each application is deployed | +| **Memory Cost** | All categories | Shows the cost of memory usage for each resource in the selected category | +| **CPU Cost** | All categories | Shows the cost of CPU usage for each resource in the selected category | +| **Storage (PV) Cost** | All categories | Shows the cost of persistent volume (storage) usage for each resource in the selected category | +| **GPU Cost** | All categories | Shows the cost of GPU usage for each resource in the selected category | +| **Total Cost** | All categories | Shows the total cost of each resource | +| **Potential Savings** | All categories | Shows the cost and percentage of your current spend that could be saved for each resource | + + +
+ + +### Inspecting Specific Resource + +Clicking on any resource in the Cost Breakdown list opens its detailed cost breakdown view. Based on the category you will see the following: + +For example, after identifying a high cost Cluster in the previous section, you can click on that cluster to open its detailed breakdown. In the detailed breakdown view of the cluster, you can see which Namespaces and Applications contribute most to its total cost, and how resource types (like CPU, Memory, and Storage) are distributed. + +:::tip Use Case + +Continuing from the earlier scenario, you open the detailed cost breakdown for the cluster that showed unusually high costs. In the **Top 10 Costly Namespaces** section, one namespace clearly dominates the cost chart. You then look at the Cost Breakdown by Resource Kind graph, where it becomes evident that most of this cost comes from CPU usage. + +Investigating further, you discover that a few workloads in that namespace are utilizing higher memory than their actual usage. This explains the cost spike you noticed earlier. With this insight, your team can adjust resource requests and limits for those workloads to optimize cluster performance and reduce unnecessary costs. + +::: + +| Field | Description | +|:---|:---| +| **Total Cost** | Shows the overall cost for the selected resource, along with a cost trend graph for the chosen time range | +| **CPU** | Shows the total spend on CPU resources, along with the potential savings | +| **Memory** | Shows the total cost for memory resources, along with the potential savings | +| **Storage**| Shows the total cost for persistent volume (storage), along with potential savings | +| **GPU** | Shows the total cost for GPU resources, along with potential savings | +|**Top 10 costly :
  • Namespaces
  • Applications
  • Deployments
**| A ranked list of 10 highest cost **namespaces**, or **applications**, or **deployments** within a specific cluster| +|**Cost Breakdown by:
  • Namespace
  • Application
  • Resource Kind
  • Deployment
**|Shows the distribution of costs across **Namespaces**, or **Applications**, or **Resource Kinds**, or **Deployments** within the selected cluster.
  • Each bar represents a **Namespace**, or **Application**, or **Resource Kind**, or **Deployment**, segmented by CPU, Memory, GPU, and Storage costs
| + + + + +
+ + +### Custom Views + +**Custom Views** allows you to define your own filtered view of cluster costs. Instead of looking at costs for the entire cluster, you can create a focused view based on propagated tags (for example, filter by team, environment, or application tag). + +:::warning Note +This feature is available only under the Clusters category. + +::: + + +For example, if your production workloads are labeled with `environment=production`, you can create a custom view to track cost of production workloads only. +By creating a custom view with: + +**Key**: `environment` +**Operator** : `:` +**Value** : `production` + +This helps you quickly analyze how much your production workloads are costing without manually filtering every time. As long as your workloads have the right labels, Devtron automatically groups and updates the data in your custom view, giving you a consistent and focused view of your use case. + +:::tip Use Case + +Imagine your organization runs workloads for multiple teams, frontend, backend, and logistics, all within the same cluster. Each team’s workloads have propagated tags (labels) (for example, workloads of logistic team have `team=logistics` propagated tag). + +Your team often needs to check the monthly cloud spend for the logistics workloads, instead of applying filters for workloads every time, you create a custom view once using that label. + +Now, whenever you open Cost Visibility, you simply select the “Logistics Team View” from the sidebar to instantly see total cost, usage patterns, and potential savings specific to that team because the workloads are already labeled, the data stays accurate, and your analysis remains consistent, saving time and effort each time you review costs. + +::: + +:::warning Note +Custom Views are dependent on propagated tags (labels). If tags are not mentioned and propagated in the workloads, some resources may not appear in the view. Ensure that you have added and propagated tags for the workloads you want to include in the custom view. + +::: + +#### Creating a Custom View + +To create a custom view: + +1. Go to **Cost Visibility** → **Cost Breakdown** → **Cluster**. + +2. In the sidebar, click `+` icon next to **Custom Views**. + +3. Enter a **Name** and an optional **Description** for your view. + +4. Enter one or more label-based filters using **Key**, **Operator**, and **Value**. + +5. Click **Apply Changes**. + +Once applied, a Custom View works just like any other category breakdown in Cost Visibility. + +#### Filters + +| **Field** | **Description** | +|--------------|---------------------------------------------------------------------------------| +| **Key** | The label key applied to your Kubernetes resources (for example, `app`, `team`). | +| **Operator** | Defines the comparison logic between the key and value. | +| **Value** | The label value to match against (for example, `logistics`, `prod`). | + +#### Operators + +| **Operator** | **Meaning** | **Example** | +|--------------|--------------------------|--------------------------------------------| +| `:` | Equals to | `app : frontend` → selects resources where `app=frontend`. | +| `!:` | Not Equals To | `team !: dev` → excludes resources with `team=dev`. | +| `~:` | Contains | `name ~: api` → selects resources where label contains `api`. | +| `!~` | Not Contains | `app !~: test` → excludes resources where label contains `test`. | +| `<~` | Contains Prefix | `env <~: prod` → selects resources where label starts with `prod`. | +| `!<~` | Not Contains Prefix | `env !<~: staging` → excludes resources where label starts with `staging`. | + +--- + +## FAQs + +
+1. Why does Cost Visibility show data for some clusters but not others? + +Cost data appears only for clusters where **Cost Visibility** is enabled. +If a cluster doesn’t show cost insights, verify that the **Cost Visibility** module is active for that cluster. + +Refer [Configurations](./configurations.md) to learn more. +
+ +
+2. What does **Connection Failed** mean in Cluster Health Status? + +**Connection Failed** means Devtron could not reach the cluster’s API server or retrieve data from it. +This can happen due to: +* Network or firewall restrictions +* Expired or invalid Kubernetes credentials +* Misconfigured cluster agent + +Try revalidating credentials or redeploying the Devtron agent to restore connectivity. +
+ +
+3. Why does a cluster show **Not Detected** under Autoscaler in Node Counts? + +This means Devtron couldn’t identify any predefined autoscaling configuration, it can be a custom autoscaler. +
+ +
+4. How often is the infrastructure data updated? + +Infrastructure data (including metrics, cost, and health status) is refreshed automatically every hour. +
\ No newline at end of file diff --git a/docs/user-guide/finops/overview-cost-visibility.md b/docs/user-guide/finops/overview-cost-visibility.md new file mode 100755 index 0000000000..5f022e9ec3 --- /dev/null +++ b/docs/user-guide/finops/overview-cost-visibility.md @@ -0,0 +1,217 @@ +import SupademoEmbed from '@site/src/components/SupademoEmbed'; + +# Overview + +:::warning Prerequisites +Make sure that Cost Visibility is enabled for your clusters. +If it is not enabled, no cost data or insights will appear on the overview page. +Refer to [Cost Visibility Configurations](./configurations.md) for setup instructions. +::: + +## Introduction + +The **Overview** page provides a summary of infrastructure costs across your Applications, Clusters, Environments, Projects, and Infra Components in Devtron. It highlights overall spend, resource-level distribution, and opportunities for optimization (Potential Savings). + +At the top, you can choose your preferred currency time and time duration to set the context for your usage costs. This makes sure all costs on the **Overview** page are displayed in the correct currency and time range. + +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/cost-visibility/cost-visibility-overview.jpg) +
Figure 1: Cost Visibility Overview
+ +Cost Overview has the following sections: + +1. [At a Glance](#at-a-glance) +2. [Potential Savings](#potential-savings) +3. [Track Performance](#track-performance) +4. [Actions and Insights](#actions-and-insights) + +### How is the cost calculated? + +* Devtron calculates and updates cost data **every hour** based on the resource usage metrics collected from **Prometheus**. +* Prometheus gathers real-time data for **CPU**, **Memory**, **GPU**, and **Storage (PV)** from your connected clusters. +* Devtron then processes this data every hour to display accurate and up-to-date cost insights across your infrastructure. + +--- + +## At a Glance + +The **At a Glance** displays **Total Cost**, **CPU Cost**, **RAM Cost**, **PV Cost**, and **GPU Cost** cards. Each card shows the cost of its specific component, its percentage contribution to the overall spend, and a cost trend graph for the selected time period. + +
+ + + + + +--- + +## Potential Savings + +The **Potential Savings** section estimates how much cost can be saved by comparing the resources you have provisioned with the resources you have actually used. It also shows the percentage of current spend that could be saved. + +
+ + +| Field | Description | +|:---------------------- |:------------------------------------------------------------------------------------------------ | +| **Recommended Cost** | The estimated cost calculated from actual resource usage instead of allocated capacity | +| **Potential Savings** | The amount which you could have saved, for the selected time period| +| **Estimated cost reduction** | The percentage of your current spend that could be saved, for the selected time period | + + +--- + +## Track Performance + +The **Track Performance** section helps you understand costs in more detail by breaking them down across different views and time ranges. It includes two charts, **Cost Breakdown** and **Cost Trend**. + +### Cost Trend Line Chart + +The **Cost Trend** line chart helps you understand, how your total and individual resource usage costs change over time. It helps you analyze spending patterns and identify which resources contribute most to your overall cost. + +
+ + +Each colored line represents a specific infrastructure component, CPU, Memory, Storage, or GPU, while the Total line combines all costs. Hovering over any point on the graph displays the exact cost breakdown for that day. + +You can change the time range (for example, Last 24 hours, Last 7 Days, Last 30 Days, or Last 90 Days) to view trends for a specific period. + +:::info Color Schema +You can check the color codes for each cost type directly below the chart in the Devtron UI. +Each color label (like CPU Cost, Memory Cost, or GPU Cost) helps you quickly identify which color represents which resource. +::: + +### Cost Breakdown Bar Chart + +The **Cost Breakdown** Bar Chart helps you see how costs are distributed across different infrastructure components for the selected time period. + +
+ + +Each bar represents one [Application](../../reference/glossary.md#devtron-apps), [Cluster](../../reference/glossary.md#cluster), [Environment](../../reference/glossary.md#environment), or [Project](../global-configurations/projects.md), and the colored segments in the bar show the share of different infrastructure components. This makes it easy to compare categories and see which infrastructure components are contributing most to their total cost. + +You can: + + * Change the time range (for example, Last 24 hours, Last 7 Days, Last 30 Days, or Last 90 Days) to view trends for a specific period. + + * Filter the cost data by Application, Cluster, Environment, or Project to see how costs are distributed across each scope. + + * Sort the cost data by cost (high to low or low to high) or name (A to Z or Z to A) to quickly find the highest spenders or locate specific items. + +:::info Color Schema +You can check the color codes for each cost type directly below the chart in the Devtron UI. +Each color label (like CPU Cost, Memory Cost, or GPU Cost) helps you quickly identify which color represents which resource. +::: + +### Most Cost Efficient + +The **Most Cost Efficient** section helps you identify which resources are utilizing costs most effectively across different scopes, such as Cluster, Application, Environment, or Project. + +
+ + +Each row in the list displays + +| **Field** | **Description** | +|------------|-----------------| +| **Name** | The name of the selected category (for example, a project, application, cluster, or environment)| +| **Total Cost** | The total cost incurred by that category within the selected time range | +| **Cost Efficiency (%)** | Indicates how efficiently the resource utilizes its allocated cost compared to others. Higher values represent better cost efficiency | + +You can use the dropdown menus to customize your view: + +| **Filter** | **Description** | +|-------------|-----------------| +| **Scope Selector** | Lets you choose whether to view cost efficiency by **Cluster**, **Application**, **Environment**, or **Project**. | +| **Time Range** | Allows you to select the time range, **Last 24 Hours**, **Last 7 Days**, **Last 30 Days**, or **Last 90 Days**. | + + +### Most Expensive + +The **Most Expensive** section highlights the clusters, applications, environments, or projects that contribute the highest costs over a selected time range. This helps you quickly identify where your infrastructure expenses are concentrated and which components may require optimization. + +
+ + +Each row in the list displays: + +| **Field** | **Description** | +|------------|-----------------| +| **Name** | The name of the selected category, such as a **Cluster**, **Application**, **Environment**, or **Project** | +| **Cost Type** | The selected cost type, such as **CPU**, **Memory**, **Storage**, **GPU**, or **Total Cost** | +| **Total Cost** | The total cost incurred by that category for the chosen cost type within the specified time period | + +You can customize the view using the following filters: + +| **Filter** | **Description** | +|-------------|-----------------| +| **Scope Selector** | Lets you choose for which category (**Cluster**, **Application**, **Environment**, or **Project**), you want to view the most expensive resources | +| **Time Range** | Allows you to choose the time period for cost evaluation, **Last 24 Hours**, **Last 7 Days**, **Last 30 Days**, or **Last 90 Days**. | +| **Cost Type** | Enables you to filter costs by specific categories such as **CPU Cost**, **Memory Cost**, **Storage Cost**, **GPU Cost**, or **Total Cost**. | + +--- + +## Actions and Insights + +The **Actions & Insights** section highlights where you can achieve the highest cost savings. It shows the categories with the largest cost saving opportunities, based on the difference between allocated resources and your actual usage. + +
+ + +It also shows the cost visibility status, which displays the number of clusters where cost visibility is enabled, failed, in progress, or not enabled. This helps you understand for which clusters cost data is currently being tracked and if you want you can enable/disable cost tracking for the cluster by clicking on **Go to configurations** button. Refer [configurations](./configurations.md) to learn more. + +Each category in the **Top saving opportunities** will show + +| Field | Description | +|:-----------------------|:------------| +| **Name** | The name of the category (for example, a cluster, application, or environment) with the largest savings opportunities | +| **Potential Savings (%)** | The percentage of your current spend that could be saved, for the selected time range | +| **Estimated Savings** | The estimated cost you could save in that category, based on the difference between provisioned and used resources, for the selected time range| + +Clicking on any item in this list takes you to its detailed Cost Breakdown page. Refer [Cost Breakdown](./cost-breakdown.md) to learn more. + +--- + +## FAQs + +
+1. Why am I not seeing cost data on the Overview page? + +Cost Visibility is only supported for **Devtron** and **Helm** applications. +If you’re only using **Argo CD** or **Flux** apps, their cost data won’t appear. +Also, ensure that **Cost Visibility** is enabled for your cluster, refer [Configurations](./configurations.md) to learn more. +
+ +
+2. What should I do if the graphs look empty or incomplete? + +This usually happens when cost tracking is not enabled for certain clusters or when there’s no activity in the selected time range. +Try expanding the time range. +
+ +
+3. Can I compare costs across different clusters or applications? + +Yes. The **Cost Breakdown**, let you compare spend across **Clusters**, **Applications**, **Environments**, or **Projects**. +You can also use filters and sorting options to focus on a specific scope or resource type. +
+ +
+4. What does Potential Savings mean in simple terms? + +It shows how much you could save if your resources were right-sized, i.e, it’s the difference between what you’ve **allocated** and what you actually **use**. +
+ +
+5. How often is the cost data updated? + +Cost data is refreshed **automatically every hour**, based on the latest metrics from Prometheus. +
\ No newline at end of file diff --git a/docs/user-guide/global-configurations/README.md b/docs/user-guide/global-configurations/README.md old mode 100644 new mode 100755 index 40ece23ee9..6335b30633 --- a/docs/user-guide/global-configurations/README.md +++ b/docs/user-guide/global-configurations/README.md @@ -1,55 +1,50 @@ -# Global Configurations +--- +id: README +title: Global Configurations +sidebar_label: Global Configurations +description: Manage cluster-level, authorization, and integration settings that apply across all Devtron modules. +--- -A global configuration allows you to easily share common configuration between multiple repositories without copy/pasting it to these repositories. +The **Global Configurations** section defines system-wide settings that govern clusters, environments, container registries, authentication, and integrations across Devtron. -Before you start creating an application, we recommend to provide basic information in different sections of Global Configurations available in `Devtron`. +Before you start creating an application, we recommend to you to complete the Global Configurations. -[Host URL](host-url.md) +These configurations act as the foundation for all application, deployment, and policy operations. -[GitOps](gitops.md) +--- -[Projects](projects.md) +## Table of Contents -[Clusters & Environments](cluster-and-environments.md) +### 1. SSO Login Services +* [Google](./authorization/sso/google.md) +* [GitHub](./authorization/sso/github.md) +* [GitLab](./authorization/sso/gitlab.md) +* [Microsoft](./authorization/sso/microsoft.md) +* [LDAP](./authorization/sso/ldap.md) +* [OIDC](./authorization/sso/oidc.md) +* [Keycloak](./authorization/sso/keycloak.md) +* [Okta](./authorization/sso/okta.md) +* [OpenShift](./authorization/sso/openshift.md) -[Git Accounts](git-accounts.md) +### 2. [Host URL](./host-url.md) +Define the base URL for accessing the Devtron dashboard and related services. -[Container/OCI Registry](container-registries.md) +### 3. [Cluster and Environments](./cluster-and-environments.md) +Register and manage Kubernetes clusters and deployment environments available to applications. -[Chart Repositories](chart-repo.md) +### 4. [Container/OCI Registry](./container-registries.md) +Configure Docker or OCI registries where your build artifacts are stored and fetched from during deployment. -[Deployment Charts](deployment-charts.md) +### 5. [Authorization](./authorization/README.md) +Control user access and authentication mechanisms (RBAC). -[Authorization](authorization/README.md) +* [User Permissions](./authorization/user-access.md) +* [Permission Groups](./authorization/permission-groups.md) +* [API Tokens](./authorization/api-tokens.md) -[Notifications](manage-notification.md) - -[Deployment Window](deployment-window.md) - -[Approval Policy](approval-policy.md) - -[External Links](external-links.md) - -[Catalog Framework](catalog-framework.md) - -[Scoped Variables](scoped-variables.md) - -[Plugin Policy](plugin-policy.md) - -[Pull Image Digest](pull-image-digest.md) - -[Tags Policy](tags-policy.md) - -[Filter Condition](filter-condition.md) - -[Lock Deployment Configuration](lock-deployment-config.md) - -[Image Promotion Policy](image-promotion-policy.md) - -[Build Infra](build-infra.md) +
--> diff --git a/docs/user-guide/global-configurations/application-template.md b/docs/user-guide/global-configurations/application-template.md old mode 100644 new mode 100755 index 4a1561d00e..70b63e5169 --- a/docs/user-guide/global-configurations/application-template.md +++ b/docs/user-guide/global-configurations/application-template.md @@ -1,29 +1,40 @@ +--- +id: application-template +title: Application Templates +sidebar_label: Application Templates +slug: /user-guide/app-management/application-template +--- + # Application Templates -## Introduction [![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/elements/EnterpriseTag.svg)](https://devtron.ai/pricing) +## Introduction Application Templates in Devtron allows you to create Devtron application quickly and consistently. An application template in Devtron is created from an existing application. It captures the configuration (workflows, ConfigMaps, Secrets, Build Configurations, Source Repository, etc.) of that application, so the same setup can be reused to create new applications. Let's assume you have already created a microservice (Devtron Application) with all the required configurations, Git Repository, Build configurations, CI/CD workflows, deployment configurations, etc. Now, instead of repeating the same setup to create a similar Devtron app, you can create an Application Template from your existing Devtron app. This template can then be used to quickly create new microservices (Devtron applications) with the same trusted setup. -{% hint style="warning" %} -### Who Can Perform This Action? +:::caution Who Can Perform This Action? Users need to have super-admin permission to create Application Templates. -{% endhint %} +::: --- ## Creating an Application Template -1. Navigate to **Global Configurations** → **Application Templates**. +1. Navigate to **Application Management** → **Application Templates**. + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/app-templates/application-templates-nav.jpg) +
Figure 1: Navigating to Application Templates
2. Click **+ Create Template**; a modal window will appear. - ![Figure 1: Clicking 'Create Template'](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/application-templates/application-template-create-template.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/app-templates/application-template-create-template.jpg) +
Figure 2: Clicking 'Create Template'
3. Select the Application from which you want to create the Application Template; you can also search for the preferred application from the search bar. - ![Figure 2: Selecting Application](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/application-templates/application-template-select-template.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/app-templates/application-template-select-template.jpg) +
Figure 3: Selecting Application
4. Enter the information required by the following fields. @@ -34,7 +45,8 @@ Users need to have super-admin permission to create Application Templates. | **Description** | Optional | Provide a short description for the application template | - ![Figure 3: Entering required details](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/application-templates/application-template-details.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/app-templates/application-template-details.jpg) +
Figure 4: Entering required details
5. Click **Create Template**; application template will be created. @@ -44,7 +56,7 @@ Users need to have super-admin permission to create Application Templates. After you create an application template, you can view the configurations it inherited (Git, Build, Chart, Pipeline config) from the source application. If you wish, you may modify those configurations according to your use cases. -1. Navigate to **Global Configurations** → **Application Templates**. +1. Navigate to **Application Management** → **Application Templates**. 2. Select your preferred application template. @@ -54,18 +66,20 @@ After you create an application template, you can view the configurations it inh | :------------------------ | :------------------------------------------- | | **Git Repository** | The source code repository linked to the application.| | **Build Configurations** | Build configuration is used to create and push docker images in the container registry of your application; refer [Build Configurations](../creating-application/docker-build-configuration.md) to learn more. | - | **Base Configurations** | Base Configurations let you define the following configurations:
  1. Deployment Template; refer [Base Deployment Template](../creating-application/base-config/deployment-template.md) to learn more.
  2. ConfigMaps; refer [ConfigMaps](../creating-application/base-config/config-maps.md) to learn more.
  3. Secrets; refer [Secrets](../creating-application/base-config/secrets.md) to learn more
| + | **Base Configurations** | Base Configurations let you define the following configurations:
  1. **Deployment Template**; refer [Base Deployment Template](../creating-application/base-config/deployment-template.md) to learn more.
  2. **ConfigMaps**; refer [ConfigMaps](../creating-application/base-config/config-maps.md) to learn more.
  3. **Secrets**; refer [Secrets](../creating-application/base-config/secrets.md) to learn more
| | **CI/CD Workflows**| Define and manage your build and deployment pipelines using Workflow Editor; refer [Workflow Editor](../creating-application/workflow/README.md) to learn more.| | **Environment Overrides** | Environment Overrides lets you define custom configurations for different environments without changing the base configurations; refer [Environment Overrides](../creating-application/environment-overrides.md) to learn more.| - ![Figure 4: Customizing Application Template](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/application-templates/application-template-configurations.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/app-templates/application-template-configurations.jpg) +
Figure 5: Customizing Application Template
4. (Optional) You can also define a README for your Application Template 1. Click the **Edit** button in the **Readme** section. - ![Figure 5: Clicking 'Edit' button](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/application-templates/application-template-overview.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/app-templates/application-template-overview.jpg) +
Figure 6: Clicking 'Edit' button
2. A Markdown editor will appear where you can write or modify content under the Write tab. @@ -75,7 +89,8 @@ After you create an application template, you can view the configurations it inh 5. Click Save to update the **Readme**. - ![Figure 6: Creating Readme](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/application-templates/application-template-readme.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/app-templates/application-template-readme.jpg) +
Figure 7: Creating Readme
--- @@ -87,19 +102,20 @@ You can use an application template to create an application. Refer [Creating Ap ## Deleting an Application Template -1. Navigate to **Global Configurations** → **Application Templates**. +1. Navigate to **Application Management** → **Application Templates**. 2. Select your preferred application template. 3. Click **Delete Template** in the bottom right corner under **Configurations** tab - ![Figure 7: Deleting Application](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/application-templates/application-template-delete-template.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/app-templates/application-template-delete-template.jpg) +
Figure 8: Deleting Application
4. A modal window will appear, click **Delete**; application template will be deleted. - ![Figure 8: Confirming Delete Action](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/application-templates/application-template-confirm-delete.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/app-templates/application-template-confirm-delete.jpg) +
Figure 9: Confirming Delete Action
-{% hint style="success" %} -### Note +:::tip Note Deleting an Application Template does not affect any applications, neither the application used to create that template, nor the applications created using that template. -{% endhint %} +::: diff --git a/docs/user-guide/global-configurations/approval-policy.md b/docs/user-guide/global-configurations/approval-policy.md old mode 100644 new mode 100755 index cb8d77a811..f91ff935a4 --- a/docs/user-guide/global-configurations/approval-policy.md +++ b/docs/user-guide/global-configurations/approval-policy.md @@ -1,6 +1,13 @@ +--- +id: approval-policy +title: Approval Policy +sidebar_label: Approval Policy +slug: /user-guide/app-management/policies/approval-policy +--- + # Approval Policy -## Introduction [![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/elements/EnterpriseTag.svg)](https://devtron.ai/pricing) +## Introduction When it comes to critical environments (let's say, production), you as a super-admin might want to introduce an approval flow for application deployment or changes made to the configuration files. Enforcing such restrictions will prevent unwanted deployments and direct modifications to sensitive configurations. @@ -11,70 +18,73 @@ The **Approval Policy** feature in Devtron lets you introduce an approval mechan - Changes in ConfigMap - Changes in Secret -![Figure 1a: Approval for Deployment](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/approval-policy/deployment-approval.gif) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/policies/approval-policy/deployment-approval.gif) +
Figure 1a: Approval for Deployment
-![Figure 1b: Approval for Configuration Change](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/approval-policy/config-approval.gif) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/policies/approval-policy/config-approval.gif) +
Figure 1b: Approval for Configuration Change
--- ## Create an Approval Policy -{% hint style="warning" %} -### Who Can Perform This Action? +:::caution Who Can Perform This Action? Users need to have super-admin permissions to create an approval policy. -{% endhint %} +::: -1. Go to **Global Configurations** → **Approval Policy**. +1. Go to **Application Management** → **Policies** → **Approval Policy**. - ![Figure 2: Approval Policy](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/approval-policy/gc-approval-policy.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/policies/approval-policy/approval-policy-nav.jpg) +
Figure 2: Approval Policy
2. Click **+ Create Profile**. - ![Figure 3: 'Create Profile' Button](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/approval-policy/create-approval-profile.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/policies/approval-policy/create-approval-profile.jpg) +
Figure 3: 'Create Profile' Button
3. Give a name to the policy, e.g., *`banking-prod-approval`*, and add a description (optional) preferably explaining what it does. - ![Figure 4: Entering Policy Details](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/approval-policy/policy-desc.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/policies/approval-policy/policy-desc.jpg) +
Figure 4: Entering Policy Details
4. Additionally, you can decide who can grant approval from the following 3 options: * **Option 1**: Choose **Any Approver** if you want to allow any user with `Image Approver` permissions and/or `Configuration Approver` permissions to approve 'Deployment' request and 'Configuration Change' respectively. Choose the number of approvals your users must get to proceed with their changes. The permissible limit ranges from one approval (minimum) to six approvals (maximum). - ![Figure 5: Allowing Any Approver](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/approval-policy/approval-count.gif) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/policies/approval-policy/approval-count.gif) +
Figure 5: Allowing Any Approver
* **Option 2**: Choose **Specific Approver** → **User Group** → **Add Criteria** to choose one or more [user groups](./authorization/user-access.md#add-users) who can provide the requisite number of approvals. The permissible limit is [1 to 6] for each user group you add. From the selected group(s), only the users having `Image Approver` and/or `Configuration Approver` permissions can approve. - ![Figure 6: Allowing Approvers from a User Group](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/approval-policy/specific-user-group.gif) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/policies/approval-policy/specific-user-group.gif) +
Figure 6: Allowing Approvers from a User Group
* **Option 3**: Choose **Specific Approver** → **Specific Users (dropdown)** to cherry-pick the names of the user(s) who can provide an approval. Here, there is no upper limit to the approvals (unlike the above options), so the user must obtain approvals from all the specific members you add to the policy. - ![Figure 7: Allowing Specific Users](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/approval-policy/specific-user-approval.gif) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/policies/approval-policy/specific-user-approval.jpg) +
Figure 7: Allowing Specific Users
-{% hint style="warning" %} -### Caution +:::caution Caution * The dropdown lists all users available in Devtron. Some users (except super-admins) may not have the necessary approver permissions, i.e, **Config Approver** or **Deployment approver**. These users cannot approve requests until the required permissions are assigned to them. * Super-admins have approver permissions by default. * Refer [User Permissions](./authorization/user-access.md#roles-available-for-devtron-apps) to learn more. -{% endhint %} +::: -{% hint style="info" %} -### How do approvals of User Groups work? +:::info How do approvals of User Groups work? If a user belongs to multiple groups (see Option 2 above), their approval is considered and counted for each group. For example, if you mandate 2 approvals: 1 from DevOps group and 1 from Compliance group; an approval from a common user (belonging to both groups) will count as 2 approvals. However, once a group's required approvals are met, extra approvals won’t count. For example, if a request needs 2 Security and 3 QA approvals and already has 2 Security and 2 QA approvals, an approval from a user in both teams will count only for QA. The user appears in both lists but doesn’t add to Security’s count. -{% endhint %} +::: -{% hint style="info" %} -### Can super-admins approve the requests? +:::info Can super-admins approve the requests? Yes, apart from the users having approver access, super-admins can also approve the requests (provided the requests are not their own). -{% endhint %} +::: -{% hint style="warning" %} -### What happens if a specific user mentioned in the policy gets deleted from Devtron or has their permissions revoked? +:::caution What happens if a specific user mentioned in the policy gets deleted from Devtron or has their permissions revoked? Even if the user mentioned in the policy no longer exists, the approval conditions will remain unchanged. Therefore, to prevent unfulfilled approval conditions because of an absent user, it's best to remove that specific user from the policy. -{% endhint %} +::: 5. Click **Save Changes**. @@ -82,55 +92,63 @@ Even if the user mentioned in the policy no longer exists, the approval conditio ## Apply an Approval Policy -{% hint style="warning" %} -### Who Can Perform This Action? +:::caution Who Can Perform This Action? Users need to have super-admin permissions to apply an approval policy. -{% endhint %} +::: 1. After you create an approval policy, you can apply it. Click **Apply Profile** on the same screen. - ![Figure 8: Apply Profile Button](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/approval-policy/apply-approval-policy.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/policies/approval-policy/apply-approval-policy.jpg) +
Figure 8: Apply Profile Button
2. From the **Select profiles to apply** dropdown, choose the policy you wish to apply. You also have the option to select more than one policy (if they exist) using the checkbox. - ![Figure 9: Selecting Profiles](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/approval-policy/select-multiple-policies.gif) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/policies/approval-policy/select-multiple-policies.jpg) +
Figure 9: Selecting Profiles
3. Choose the scope from the dropdown given next to **Use selected policy for approval of**. Here you can decide whether your policy is for: * **Approval of Deployment** - Select 'Deployments' from the dropdown. * **Approval of Configuration Change** - Select 'Configuration change' from the dropdown. You can further select: `Deployment template`, `ConfigMaps`, `Secrets`. Select the ones to which your policy should apply so that any change to your chosen configurations will require an approval. - ![Figure 10: Choosing Scope](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/approval-policy/select-approval-scope.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/policies/approval-policy/select-approval-scope.jpg) +
Figure 10: Choosing Scope
4. Under **Apply to**, you get the following options to choose from: - * **Specific Criteria** - Select this option to apply your policy to specific environment(s) of specific applications.
+ * **Specific Criteria** - Select this option to apply your policy to specific environment(s) of specific applications.
**Example**: In case of Deployment - ![Figure 11a: Specific Criteria for 'Deployment' Approval](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/approval-policy/specific-criteria-deployment.gif) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/policies/approval-policy/specific-criteria-deployment.gif) +
Figure 11a: Specific Criteria for 'Deployment' Approval
**Example**: In case of Configuration Change - ![Figure 11b: Specific Criteria for 'Configuration Change' Approval](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/approval-policy/specific-criteria-config.gif) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/policies/approval-policy/specific-criteria-config.gif) +
Figure 11b: Specific Criteria for 'Configuration Change' Approval
- * **By match criteria** - Select this option to use a combination of filters to create criteria. Your policy will only apply to target pipelines/configurations fulfilling your criteria (including existing and future ones). (Optional) You may also write a note for your other team members to understand the intent and context of your policy.
+ * **By match criteria** - Select this option to use a combination of filters to create criteria. Your policy will only apply to target pipelines/configurations fulfilling your criteria (including existing and future ones). (Optional) You may also write a note for your other team members to understand the intent and context of your policy.
**Example**: In case of Deployment - ![Figure 12a: Match Criteria for 'Deployment' Approval](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/approval-policy/match-criteria-approval.gif) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/policies/approval-policy/match-criteria-approval.gif) +
Figure 12a: Match Criteria for 'Deployment' Approval
**Example**: In case of Configuration Change - ![Figure 12b: Match Criteria for 'Configuration Change' Approval](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/approval-policy/match-criteria-config.gif) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/policies/approval-policy/match-criteria-config.gif) +
Figure 12b: Match Criteria for 'Configuration Change' Approval
- * **Global** - Select this option to apply your chosen policies to every deployment pipeline or configurations (existing and future) of all applications in all clusters.
+ * **Global** - Select this option to apply your chosen policies to every deployment pipeline or configurations (existing and future) of all applications in all clusters.
**Example**: In case of Deployment - ![Figure 13a: Global Scope for 'Deployment' Approval](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/approval-policy/global-deployment.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/policies/approval-policy/global-deployment.jpg) +
Figure 13a: Global Scope for 'Deployment' Approval
**Example**: In case of Configuration Change - ![Figure 13b: Global Scope for 'Configuration Change' Approval](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/approval-policy/global-approval-config.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/policies/approval-policy/global-approval-config.jpg) +
Figure 13b: Global Scope for 'Configuration Change' Approval
5. Click **Save Changes**. @@ -139,10 +157,9 @@ Users need to have super-admin permissions to apply an approval policy. ## Apply Multiple Policies -{% hint style="warning" %} -### Who Can Perform This Action? +:::caution Who Can Perform This Action? Users need to have super-admin permissions to apply more policies to a scope. -{% endhint %} +::: As shown in step 2 of [Apply an Approval Policy](#apply-an-approval-policy), you can choose multiple policies and apply them to a scope (e.g., Global, Cluster, Application, Environment, Base Configuration). However, if you have already applied and now you wish to apply more policies to the same scope, you may do so by following either of the below steps: @@ -158,7 +175,8 @@ As shown in step 2 of [Apply an Approval Policy](#apply-an-approval-policy), you 5. Use the **Select profiles to apply** dropdown and tick the policy/policies you wish to apply. 6. Click **Save Changes**. - ![Figure 14: Applying More Policy](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/approval-policy/add-policy-single.gif) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/policies/approval-policy/add-policy-single.gif) +
Figure 14: Applying More Policy
### Apply More Policies in Bulk @@ -168,14 +186,14 @@ As shown in step 2 of [Apply an Approval Policy](#apply-an-approval-policy), you 4. Use the **Select profile to apply** dropdown and tick the policy/policies you wish to apply in bulk. 5. Review the changes if needed, and click **Save Changes**. - ![Figure 15: Applying More Policy in Bulk](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/approval-policy/add-policies-bulk.gif) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/policies/approval-policy/add-policies-bulk.gif) +
Figure 15: Applying More Policy in Bulk
-{% hint style="warning" %} -### How do multiple policies work if applied together? -If you apply multiple policies together, the user has to meet the approval conditions of all the applied policies.
-**Example 1**: if 'Policy A' demands 3 approvals specifically from John, Jane, and Jessy; and if 'Policy B' requires 1 approval from 'Product User Group', the user will have to get 4 approvals.
+:::caution How do multiple policies work if applied together? +If you apply multiple policies together, the user has to meet the approval conditions of all the applied policies.
+**Example 1**: if 'Policy A' demands 3 approvals specifically from John, Jane, and Jessy; and if 'Policy B' requires 1 approval from 'Product User Group', the user will have to get 4 approvals.
**Example 2**: if 'Policy A' demands 3 approvals specifically from John, Jane, and Jessy; and if 'Policy B' requires 2 approvals from anyone, the user will still have to get 3 approvals from John, Jane, and Jessy. In short, the stricter conditions from the policies are enforced first and they have to be fulfilled. -{% endhint %} +::: --- @@ -193,7 +211,7 @@ You can choose to: You can configure whether super-admins are required to follow approval policies or bypass them. -1. Navigate to **Approval Policy** → **Exceptions**. +1. Navigate to **Application Management** → **Policies** → **Approval Policy** → **Exceptions**. 2. Choose the scope, for which you want super admins to not require approval.The available scopes are: @@ -207,18 +225,19 @@ You can configure whether super-admins are required to follow approval policies * When disabled, super-admins follow same approval policies as other users. - ![Figure 16: Enabling Super Admins Exception](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/approval-policy/approval-policy-super-admin-exception.gif) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/policies/approval-policy/approval-policy-super-admin-exception.gif) +
Figure 16: Enabling Super Admins Exception
-{% hint style="info" %} -### Note +:::info Note Super-admins can approve requests even if the toggle is turned off. -{% endhint %} +::: ### Excluding Specific Users / User Groups / API Tokens -1. Navigate to **Approval Policy** → **Exceptions**. +1. Navigate to **Application Management** → **Policies** → **Approval Policy** → **Exceptions**. - ![Figure 17: Exceptions Tab](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/approval-policy/approval-policy-exceptions.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/policies/approval-policy/approval-policy-exceptions.jpg) +
Figure 17: Exceptions Tab
2. Choose the scope for which specific users / user groups / API tokens do not require approval. The available scopes are: @@ -226,9 +245,10 @@ Super-admins can approve requests even if the toggle is turned off. * **Deployment:** Exempts the selected users, user groups, and API tokens to deploy images to an environment without requiring approvals. - ![Figure 18: Selecting Scope](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/approval-policy/approval-policy-scope.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/policies/approval-policy/approval-policy-scope.jpg) +
Figure 18: Selecting Scope
-{% hint style="info"%} +:::info ### Note The list of users is fetched from [User Permissions](../global-configurations/authorization/user-access.md), and the list of [API tokens](../global-configurations/authorization/api-tokens.md) is sourced from API Tokens. @@ -236,46 +256,48 @@ You cannot enter a new email ID or token directly. * Refer [Add Users (User Permissions)](../global-configurations/authorization/user-access.md#add-users) to add a new user. * Refer [API token](../global-configurations/authorization/api-tokens.md#generate-api-token) to create a new API token. -{% endhint %} +::: 3. Click the **Add**/**Edit** button next to **Specific Users / User Groups**. A pop-up modal window will appear. - ![Figure 19: Clicking 'Add/Edit'](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/approval-policy/approval-policy-add-users.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/policies/approval-policy/approval-policy-add-users.jpg) +
Figure 19: Clicking 'Add/Edit'
4. You can do either of the following: 1. You can select specific **Users** or **API Tokens** from **Add Users** dropdown. - ![Figure 20a: Selecting Specific Users](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/approval-policy/approval-policy-add-users-window.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/policies/approval-policy/add-users-window.jpg) +
Figure 20a: Selecting Specific Users
- ![Figure 20b: Selecting Specific API Tokens](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/approval-policy/approval-policy-add-api-token.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/policies/approval-policy/add-api-token.jpg) +
Figure 20b: Selecting Specific API Tokens
2. You can select specific **Users Groups** from **Add user groups** dropdown. - ![Figure 21: Selecting Specific User Groups](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/approval-policy/approval-policy-add-users-group.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/policies/approval-policy/add-users-group.jpg) +
Figure 21: Selecting Specific User Groups
-{% hint style="warning" %} -### Caution +:::caution Caution * The dropdown lists all users and API tokens or user-groups, available in Devtron. Some users or API tokens may have only view permissions or lack build, deploy, or admin permissions. Such users cannot bypass approval policies until the required permissions are assigned. * Refer [User Permissions](./authorization/user-access.md#roles-available-for-devtron-apps) to learn more. -{% endhint %} +::: 5. Click **Save**. The selected users or user groups will no longer require approvals for the selected scope. - ![Figure 22: Clicking 'Save'](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/approval-policy/approval-policy-save.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/policies/approval-policy/approval-policy-save.jpg) +
Figure 22: Clicking 'Save'
-{% hint style="warning" %} -### Caution +:::caution Caution By default, approvers cannot approve their own deployments or base configuration edits, but, if an approver is added as an exception, this restriction does not apply, and that approver can trigger their own deployments or edit base configurations without any approvals. -{% endhint %} +::: After configuring exceptions, super-admins and specific users / user groups can make configuration changes and trigger deployments without requiring any approval. #### Triggering Deployments -{% hint style="warning" %} -### Do exceptions bypass blackout or maintenance windows? +:::caution Do exceptions bypass blackout or maintenance windows? Approval Policy exceptions do not bypass a blackout or a maintenance window: * During a blackout window, exception users cannot trigger deployments, unless you add them to the list of users, who are allowed to take action during the blackout window. @@ -283,41 +305,44 @@ Approval Policy exceptions do not bypass a blackout or a maintenance window: * Outside a maintenance window, exception users cannot trigger deployments, unless you add them to the list of users, who are allowed to take action outside the maintenance window * Refer [Deployment Window](../global-configurations/deployment-window.md#configuring-deployment-window) to learn more. -{% endhint %} +::: -{% hint style="info" %} -### Note +:::info Note An exception user can still follow the normal flow of requesting an image approval and getting it approved, and also has the option to deploy images without approvals. -{% endhint %} +::: -![Figure 23a: Deploying an Image without an Approval](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/approval-policy/approval-policy-deploy-exception.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/policies/approval-policy/approval-policy-deploy-exception.jpg) +
Figure 23a: Deploying an Image without an Approval
-![Figure 23b: Email Notification](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/approval-policy/email-notification-exception.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/policies/approval-policy/email-notification-exception.jpg) +
Figure 23b: Email Notification
-![Figure 23c: Deployment History](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/approval-policy/deployment-history-exception-user.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/policies/approval-policy/deployment-history-exception-user.jpg) +
Figure 23c: Deployment History
#### Editing Base Configurations -{% hint style="info" %} -### Note +:::info Note * An exception user can still follow the normal flow of submitting a configuration change draft for approval, and getting it approved. * Any existing draft is discarded once the exception user updates the configuration using express edit. -{% endhint %} +::: -![Figure 24a: Editing Deployment Template without an Approval](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/approval-policy/approval-policy-base-config-exception.gif) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/policies/approval-policy/base-config-exception.gif) +
Figure 24a: Editing Deployment Template without an Approval
-![Figure 24b: Creating/Editing ConfigMap without an Approval](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/approval-policy/approval-policy-configmap-exception.gif) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/policies/approval-policy/configmap-exception.gif) +
Figure 24b: Creating/Editing ConfigMap without an Approval
-![Figure 24c: Creating/Editing Secret without an Approval](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/approval-policy/approval-policy-secret-exception.gif) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/policies/approval-policy/secret-exception.gif) +
Figure 24c: Creating/Editing Secret without an Approval
--- ## Remove Applied Policies -{% hint style="warning" %} -### Who Can Perform This Action? +:::caution Who Can Perform This Action? Users need to have super-admin permissions to remove an applied approval policy. -{% endhint %} +::: If you have already applied policies and wish to remove some of them from a scope, follow the steps below. The approval conditions of the removed policy will no longer apply to the given scope, and the conditions of other policies (if applied to the same scope) will remain. @@ -333,7 +358,8 @@ If you have already applied policies and wish to remove some of them from a scop 5. In the **Select profiles to apply** dropdown, click '**x**' next to the policy/policies you wish to remove. 6. Click **Save Changes**. - ![Figure 25: Remove Applied Policy from a Scope](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/approval-policy/remove-policy-single.gif) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/policies/approval-policy/remove-policy-single.gif) +
Figure 25: Remove Applied Policy from a Scope
### Remove Applied Policies in Bulk @@ -343,21 +369,20 @@ If you have already applied policies and wish to remove some of them from a scop 4. In the **Remove Approval Policy** dropdown, click '**x**' next to the policy/policies you wish to remove. 5. Review the changes if needed, and click **Save Changes**. - ![Figure 26: Removing Policies in Bulk](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/approval-policy/remove-policies-bulk.gif) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/policies/approval-policy/remove-policies-bulk.gif) +
Figure 26: Removing Policies in Bulk
-{% hint style="warning" %} -### Note +:::caution Note At least one policy must remain applied to a scope, so you cannot remove all the policies from a scope. You may use the [delete procedure](#delete-applied-policies) instead. -{% endhint %} +::: --- ## Delete Applied Policies -{% hint style="warning" %} -### Who Can Perform This Action? +:::caution Who Can Perform This Action? Users need to have super-admin permissions to delete an applied policy. -{% endhint %} +::: If you have already applied policies to a scope (e.g., Global, Cluster, Application) and wish to delete all of them from that given scope, follow the steps below. **Note**: This will not [delete the approval policy](#delete-an-approval-policy) you originally created. Moreover, deployment pipelines may still continue inheriting profiles from higher scopes (e.g., Global, Cluster, Application). @@ -365,23 +390,27 @@ If you have already applied policies to a scope (e.g., Global, Cluster, Applicat 2. Use the filters to find the applied profile(s). 3. Click the **Delete** option in the context menu or use the checkboxes to select multiple scopes for deletion. - ![Figure 27: Deleting Applied Policies (One-by-one or Bulk)](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/approval-policy/remove-policies-bulk.gif) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/policies/approval-policy/delete-profile-single.gif) +
Figure 27a: Deleting Applied Policies (Single)
+ + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/policies/approval-policy/delete-profile-bulk.gif) +
Figure 27b: Deleting Applied Policies (Bulk)
--- ## Delete an Approval Policy -{% hint style="warning" %} -### Who Can Perform This Action? +:::caution Who Can Perform This Action? Users need to have super-admin permissions to delete an approval policy. -{% endhint %} +::: If you no longer require a given approval policy, you may delete it. This action will automatically remove its rules enforced earlier for both, deployments and configuration change. 1. Go to **Profiles** tab. 2. Click the delete icon next to the profile you wish to delete. - ![Figure 28: Deleting Approval Policy](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/approval-policy/delete-approval-policy.gif) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/policies/approval-policy/delete-approval-policy.gif) +
Figure 28: Deleting Approval Policy
--- @@ -391,38 +420,58 @@ If you no longer require a given approval policy, you may delete it. This action Assume you created a policy (shown below) that blocks the deployment of a banking application to an environment unless there are two approvals. No user can trigger the deployment unless the images are approved. -![Figure 29: Example](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/approval-policy/example1.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/policies/approval-policy/example1.jpg) +
Figure 29: Example
1. The user first requests approval of the intended image. Only those with the necessary permissions will show up in the approver list. Moreover, the user can also opt to notify all users apart from the approvers. - ![Figure 30: Request Approval for Deployment](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/approval-policy/request-approval.gif) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/policies/approval-policy/request-approval.gif) +
Figure 30: Request Approval for Deployment
2. Only those with `Image Approver` permissions can then approve the request. - ![Figure 31: User with 'Image Approver' Permissions granting approval](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/approval-policy/grant-approval.gif) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/policies/approval-policy/grant-approval.gif) +
Figure 31: User with 'Image Approver' Permissions granting approval
+ + + A super-admin can check or modify a user permissions with approval rights by going to Global Configurations → Authorization (dropdown) → User Permissions. + + ![](https://cdn.devtron.ai/images/user-permissions-deployment-Approver.jpg) +
Figure 32: Checking Permissions
If [SES/SMTP](../global-configurations/manage-notification.md) is configured in Devtron, the approver gets notified via email. This enables the approver to take an action directly from the mail, such as `View Request` and `Approve Request`. - ![Figure 32: Approval via Email](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/approval-policy/approval-request-notify.gif) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/policies/approval-policy/approval-request-notify.gif) +
Figure 33: Approval via Email
3. The user can then proceed with deploying the approved image. - ![Figure 33: Deployment of Approved Image](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/approval-policy/deploy-approved-image.gif) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/policies/approval-policy/deploy-approved-image.gif) +
Figure 34: Deployment of Approved Image
### Approving Configuration Change Request Assume you created a policy (shown below) that prevents direct changes to the configuration files (Deployment Template, ConfigMaps, Secrets) of a banking application unless there is one approval. -![Figure 34: Example](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/approval-policy/example2.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/policies/approval-policy/example2.jpg) +
Figure 35: Example
1. The user first requests approval for pushing a configuration change in Deployment Template/ConfigMap/Secret. - ![Figure 35: Request Approval for Configuration Change](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/approval-policy/config-change-request.gif) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/policies/approval-policy/config-change-request.gif) +
Figure 36: Request Approval for Configuration Change
2. Only those with `Configuration Approver` permissions can then approve the request. - ![Figure 36: User with 'Configuration Approver' permissions granting approval](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/approval-policy/approve-config-change.gif) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/policies/approval-policy/approve-config-change.gif) +
Figure 37: User with 'Configuration Approver' permissions granting approval
+ + A super-admin can check or modify a user permissions with approval rights by going to Global Configurations → Authorization (dropdown) → User Permissions. + + ![](https://cdn.devtron.ai/images/user-permissions-approver.jpg) +
Figure 38: Checking Permissions
If [SES/SMTP](../global-configurations/manage-notification.md) is configured in Devtron, the approver gets notified via email. Therefore, the approver can take an action directly from the mail as shown below. - ![Figure 37: Config Approval via Email](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/approval-policy/config-change-mail.gif) \ No newline at end of file + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/policies/approval-policy/config-change-mail.gif) +
Figure 39: Config Approval via Email
\ No newline at end of file diff --git a/docs/user-guide/global-configurations/authorization/README.md b/docs/user-guide/global-configurations/authorization/README.md old mode 100644 new mode 100755 index 6962cfe937..097c47a004 --- a/docs/user-guide/global-configurations/authorization/README.md +++ b/docs/user-guide/global-configurations/authorization/README.md @@ -1,8 +1,10 @@ -`Authorization` section describes how to authenticate and authorize access to resources, also managing role-based access levels in Devtron. +--- +hide_table_of_contents: true +--- -Access can be granted to a user via: +**Authorization** section describes how to authenticate and authorize access to resources, also managing role-based access levels in Devtron. -* [SSO Login Services](../sso-login.md) +Access can be granted to a user via: * [User Permissions](user-access.md) diff --git a/docs/user-guide/global-configurations/authorization/api-tokens.md b/docs/user-guide/global-configurations/authorization/api-tokens.md old mode 100644 new mode 100755 index 5b60c39d39..cf9432b2fc --- a/docs/user-guide/global-configurations/authorization/api-tokens.md +++ b/docs/user-guide/global-configurations/authorization/api-tokens.md @@ -6,18 +6,21 @@ API tokens are the access tokens for authentication. Instead of using username a To generate API tokens, go to `Global Configurations -> Authorization -> API tokens` and click `Generate New Token`. -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/api-token/api-token-1.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/api-token/api-token.jpg) +
Figure 1: Generating API Token
* Enter a name for the token. * Add Description. * Select an expiration date for the token (7 days, 30 days, 60 days, 90 days, custom and no expiration). -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/api-token/api-token-2.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/api-token/api-token-expiration.jpg) +
Figure 2: Configuring Token Expiry
* To select a custom expiration date, select `Custom` from the drop-down list. In the adjacent field, you can select your custom expiration date for the API token. -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/api-token/api-token-custom.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/api-token/api-token-custom-expiration.jpg) +
Figure 3: Configuring Custom Expiry
* You can assign permission to the token either with: @@ -27,14 +30,16 @@ To generate API tokens, go to `Global Configurations -> Authorization -> API tok * **Specific permissions**: Selecting `Specific permissions` option allows you to generate a token with a specific role for:
  • `Devtron Apps`
  • `Helm Apps`
  • `Kubernetes Resources`
  • `Chart Groups`
-![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/api-token/api-token-specific-permissions-latest1.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/api-token/api-token-specific-permissions.jpg) +
Figure 4: Configuring Specific Permissions
* Click `Generate Token`. A pop-up window will appear on the screen from where you can copy the API token. -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/api-token/api-token-5.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/api-token/api-token-copy-token.jpg) +
Figure 5: Copying Generated Token
## Use API Token @@ -42,16 +47,19 @@ Once Devtron API token has been generated, you can use this token to request Dev Open Postman. Enter the request URL with `POST` method and under HEADERS, enter the API token as shown in the image below. -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/api-token/api-token-6.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/api-token/api-token-postman-1.jpg) +
Figure 6: Entering 'RequestURL' in Postman
In the `Body` section, provide the API payload as shown below and click `Send`. -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/api-token/api-token-7.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/api-token/api-token-postman-2.jpg) +
Figure 7: Entering API Payload
As soon as you click `Send`, the created application API will be triggered and a new Devtron app will be created as provided in the payload. -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/api-token/api-token-8.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/api-token/api-token-postman-3.jpg) +
Figure 8: Clicking 'Send'
## Update API Token @@ -59,23 +67,27 @@ As soon as you click `Send`, the created application API will be triggered and a To set a new expiration date or to make changes in permissions assigned to the token, we need to update the API token in Devtron. To update the API token, click the token name or click on the edit icon. -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/api-token/api-token-9.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/api-token/api-token-edit.jpg) +
Figure 9: Editing API Token
To set a new expiration date, you can regenerate the API token. Any scripts or applications using this token must be updated. To regenerate a token, click `Regenerate token`. A pop-up window will appear on the screen from where you can select a new expiration date. -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/api-token/api-token-10.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/api-token/api-token-regenerate.jpg) +
Figure 10: Regenerating Token
Select a new expiration date and click `Regenerate token`. -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/api-token/api-token-11.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/api-token/api-token-regenerate-expiration.jpg) +
Figure 11: Configuring Expiry for Regenerating the Token
This will generate a new token with a new expiration date. -To update API token permissions, give the permissions as you want to and click `Update Token`. +To update API token permissions, give the permissions as you want to and click `Update Token`. -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/api-token/api-token-3.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/api-token/api-token-update.jpg) +
Figuring 12: Updating API Token
## Delete API Token diff --git a/docs/user-guide/global-configurations/authorization/permission-groups.md b/docs/user-guide/global-configurations/authorization/permission-groups.md old mode 100644 new mode 100755 index 5c91270cf8..c46b56e034 --- a/docs/user-guide/global-configurations/authorization/permission-groups.md +++ b/docs/user-guide/global-configurations/authorization/permission-groups.md @@ -4,21 +4,23 @@ Using the `Permission groups`, you can assign a user to a particular group and a The advantage of the `Permission groups` is to define a set of privileges like create, edit, or delete for the given set of resources that can be shared among the users within the group. -{% hint style="info" %} +:::info The [User permissions](../../global-configurations/authorization/user-access.md) section for `Specific permissions` contains a drop-down list of all existing groups for which a user has an access. This is an optional field and more than one groups can be selected for a user. -{% endhint %} +::: ## Add Group Go to **Global Configurations** → **Authorization** → **Permissions groups** → **Add group**. -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/permission-group/permission-group-1.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/permission-group/permission-group-create.jpg) +
Figure 1: Navigate to Permission Groups
Enter the `Group Name` and `Description`. -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/permission-group/permission-group-2.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/permission-group/permission-group-name-description.jpg) +
Figure 2: Entering Basic Details
-You can either grant [super-admin](../../global-configurations/authorization/user-access.md#role-based-access-levels) permission to a user group or specific permissions to manage access for: +You can either grant [super-admin](../../global-configurations/authorization/user-access.md#grant-super-admin-permission) permission to a user group or specific permissions to manage access for: * [Devtron Apps](#devtron-apps-permissions) * [Helm Apps](#helm-apps-permissions) @@ -30,21 +32,22 @@ You can either grant [super-admin](../../global-configurations/authorization/use In `Devtron Apps` option, you can provide access to a group to manage permission for custom apps created using Devtron. -{% hint style="info" %} +:::info The `Devtron Apps` option will be available only if you install [CI/CD integration](../../integrations/build-and-deploy-ci-cd.md). -{% endhint %} +::: Provide the information in the following fields: -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/permission-group/permission-group-devtron-apps-v2.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/permission-group/permission-group-devtron-apps.jpg) +
Figure 3: Configuring Permissions for Devtron Apps
| Dropdown | Description | | --- | --- | -| **Project** | Select a project from the drop-down list to which you want to give permission to the group. You can select only one project at a time.
Note: If you want to select more than one project, then click `Add row`.
| -| **Environment** | Select the specific environment or all environments from the drop-down list.
Note: If you select `All environments` option, then a user gets access to all the current environments including any new environment which gets associated with the application later.
| -| **Application** | Select the specific applications or all applications from the drop-down list corresponding to your selected Environments.
Note: If you select `All applications` option, then a user gets access to all the current applications including any new application which gets associated with the project later
. | -| **Role** | Select one of the [roles](#role-based-access-levels) to which you want to give permission to the user:
  • `View only`
  • `Build and Deploy`
  • `Admin`
  • `Manager`
| +| **Project** | Select a project from the drop-down list to which you want to give permission to the group. You can select only one project at a time.
Note: If you want to select more than one project, then click `Add row`. | +| **Environment** | Select the specific environment or all environments from the drop-down list.
Note: If you select `All environments` option, then a user gets access to all the current environments including any new environment which gets associated with the application later. | +| **Application** | Select the specific applications or all applications from the drop-down list corresponding to your selected Environments.
Note: If you select `All applications` option, then a user gets access to all the current applications including any new application which gets associated with the project later. | +| **Role** | Select one of the [roles](#devtron-apps-permissions) to which you want to give permission to the user:
  • `View only`
  • `Build and Deploy`
  • `Admin`
  • `Manager`
| You can add multiple rows for `Devtron Apps` permission. @@ -56,16 +59,17 @@ In `Helm Apps` option, you can provide access to a group to manage permission fo Provide the information in the following fields: -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/permission-group/permission-groups-helm-apps-v2.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/permission-group/permission-group-helm-apps.jpg) +
Figure 4: Configuring Permissions for Helm Apps
| Dropdown | Description | | --- | --- | -| **Project** | Select a project from the drop-down list to which you want to give permission to the group. You can select only one project at a time.
Note: If you want to select more than one project, then click `Add row`.
| -| **Environment or cluster/namespace** | Select the specific environment or `all existing environments in default cluster` from the drop-down list.
Note: If you select `all existing + future environments in default cluster` option, then a user gets access to all the current environments including any new environment which gets associated with the application later.
| -| **Application** | Select the specific application or all applications from the drop-down list corresponding to your selected Environments.
Note: If `All applications` option is selected, then a user gets access to all the current applications including any new application which gets associated with the project later
. | -| **Role** | Select one of the [roles](#role-based-access-levels) to which you want to give permission to the user:
  • `View only`
  • `View & Edit`
  • `Admin`
| +| **Project** | Select a project from the drop-down list to which you want to give permission to the group. You can select only one project at a time.
Note: If you want to select more than one project, then click `Add row`. | +| **Environment or cluster/namespace** | Select the specific environment or `all existing environments in default cluster` from the drop-down list.
Note: If you select `all existing + future environments in default cluster` option, then a user gets access to all the current environments including any new environment which gets associated with the application later. | +| **Application** | Select the specific application or all applications from the drop-down list corresponding to your selected Environments.
Note: If `All applications` option is selected, then a user gets access to all the current applications including any new application which gets associated with the project later. | +| **Role** | Select one of the [roles](#helm-apps-permissions) to which you want to give permission to the user:
  • `View only`
  • `View & Edit`
  • `Admin`
| -You can add multiple rows for Devtron app permission. +You can add multiple rows for Helm app permission. Once you have finished assigning the appropriate permissions for the groups, Click **Save**. @@ -75,15 +79,16 @@ In `Jobs` option, you can provide access to a group to manage permission for job Provide the information in the following fields: -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/permission-group/permission-groups-jobs-v2.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/permission-group/permission-group-jobs.jpg) +
Figure 5: Configuring Permissions for Jobs
| Dropdown | Description | | --- | --- | -| **Project** | Select a project from the drop-down list to which you want to give permission to the group. You can select only one project at a time.
Note: If you want to select more than one project, then click `Add row`.
| -| **Job Name** | Select the specific job name or all jobs from the drop-down list.
Note: If you select `All Jobs` option, then the user gets access to all the current jobs including any new job which gets associated with the project later.
| -| **Workflow** | Select the specific workflow or all workflows from the drop-down list.
Note: If you select `All Workflows` option, then the user gets access to all the current workflows including any new workflow which gets associated with the project later.
| -| **Environment** | Select the specific environment or all environments from the drop-down list.
Note: If you select `All environments` option, then the user gets access to all the current environments including any new environment which gets associated with the project later.
| -| **Role** | Select one of the [roles](#role-based-access-levels) to which you want to give permission to the user:
  • `View only`
  • `Run job`
  • `Admin`
| +| **Project** | Select a project from the drop-down list to which you want to give permission to the group. You can select only one project at a time.
Note: If you want to select more than one project, then click `Add row`. | +| **Job Name** | Select the specific job name or all jobs from the drop-down list.
Note: If you select `All Jobs` option, then the user gets access to all the current jobs including any new job which gets associated with the project later. | +| **Workflow** | Select the specific workflow or all workflows from the drop-down list.
Note: If you select `All Workflows` option, then the user gets access to all the current workflows including any new workflow which gets associated with the project later. | +| **Environment** | Select the specific environment or all environments from the drop-down list.
Note: If you select `All environments` option, then the user gets access to all the current environments including any new environment which gets associated with the project later. | +| **Role** | Select one of the roles to which you want to give permission to the user:
  • `View only`
  • `Run job`
  • `Admin`
| You can add multiple rows for `Jobs` permission. @@ -94,27 +99,29 @@ Once you have finished assigning the appropriate permissions for the groups, Cli In `Kubernetes Resources` option, you can provide permission to view, inspect, manage, and delete resources in your clusters from [Kubernetes Resource Browser](../../../user-guide/resource-browser/README.md) page in Devtron. You can also create resources from the `Kubernetes Resource Browser` page. -{% hint style="info" %} +:::info Only super admin users will be able to see `Kubernetes Resources` tab and provide permission to other users to access `Resource Browser`. -{% endhint %} +::: To provide Kubernetes resource permission, click `Add permission`. -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/permission-group/kubernetes-resources-permission-group-v2.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/permission-group/permission-group-kubernetes-resources.jpg) +
Figure 6: Configuring Permissions for Kubernetes Resources
On the `Kubernetes resource permission`, provide the information in the following fields: -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/user-access/user-permission/kubernetes-resources-permission-page-v2.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/permission-group/permission-group-kubernetes-resources-1.jpg) +
Figure 7: Adding Kubernetes Resource
| Dropdown | Description | | --- | --- | -| **Cluster** | Select a cluster from the drop-down list to which you want to give permission to the user. You can select only one cluster at a time.
Note: To add another cluster, then click `Add another`.
| +| **Cluster** | Select a cluster from the drop-down list to which you want to give permission to the user. You can select only one cluster at a time.
Note: To add another cluster, then click `Add another`. | | **Namespace** | Select the namespace from the drop-down list. | | **API Group** | Select the specific API group or `All API groups` from the drop-down list corresponding to the K8s resource. | **Kind** | Select the kind or `All kind` from the drop-down list corresponding to the K8s resource. | **Resource name** | Select the resource name or `All resources` from the drop-down list to which you want to give permission to the user. | -| **Role** | Select one of the [roles](#role-based-access-levels) to which you want to give permission to the user and click `Done`:
  • `View`
  • `Admin`
| +| **Role** | Select one of the [roles](#kubernetes-resources-permissions) to which you want to give permission to the user and click `Done`:
  • `View`
  • `Admin`
| You can add multiple rows for Kubernetes resource permission. @@ -124,15 +131,16 @@ Once you have finished assigning the appropriate permissions for the groups, Cli In `Chart group permission` option, you can manage the access of groups for Chart Groups in your project. -{% hint style="info" %} +:::info The `Chart group permission` option will be available only if you install [CI/CD integration](../../integrations/build-and-deploy-ci-cd.md). -{% endhint %} +::: -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/permission-group/permission-group-chart-v2.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/permission-group/permission-group-chart.jpg) +
Figure 8: Configuring Permissions for Chart Groups
-{% hint style="info" %} +:::info You can only give users the ability to `create` or `edit`, not both. -{% endhint %} +::: | Action | Permissions | | :--- | :--- | @@ -147,11 +155,13 @@ Click **Save** once you have configured all the required permissions for the gro You can edit the permission groups by clicking the `downward arrow.` -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/permission-group/edit-permission-group.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/permission-group/permission-group-edit.jpg) +
Figure 9: Editing Permissions Groups
Edit the permission group. -![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/permission-group/save-permission-group.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/permission-group/permission-group-save.jpg) +
Figure 10: Saving Permission Group
Once you are done editing the permission group, click **Save**. diff --git a/docs/user-guide/global-configurations/authorization/sso/github.md b/docs/user-guide/global-configurations/authorization/sso/github.md old mode 100644 new mode 100755 index 4f56c2ccd6..aed12ee2a1 --- a/docs/user-guide/global-configurations/authorization/sso/github.md +++ b/docs/user-guide/global-configurations/authorization/sso/github.md @@ -23,15 +23,20 @@ Getting the redirectURI from Devtron is a crucial component of the authenticatio 1. Navigate to **Global Configurations** → **Authorization** → **SSO Login Services**. The SSO Login Service page is displayed. - ![Figure 1: Get the redirectURI](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/github/sso-login-services-2.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/sso-login-services/github/github-sso-select-github.jpg) +
Figure 1: Select Github
2. Select **GitHub** from the list of available SSO login services. -3. Click the URL suggested in green color next to the **Click to use** label to update the **URL** field. Update the **URL** field only if the host URL displayed in the **URL** field is incorrect. +3. Click the URL suggested in green color next to the **Click to use** label to update the **URL** field. -4. Click the **Update** button. + When you populate **URL** field, the redirectURI (or callbackURI) is updated automatically in the purple block displayed at the top of the SSO Login Service screen. This redirectURI is essential, as it is required while setting up the OAuth credentials in GitHub. + +4. Copy the redirectURI from the purple block. + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/sso-login-services/github/github-sso-redirect-uri.jpg) +
Figure 2: Copy Redirect URI
-When you populate the Host URL in the **URL** field, the redirectURI (or callbackURI) is updated automatically in the purple block displayed at the top of the SSO Login Service screen. This redirectURI is essential, as it is required while setting up the OAuth credentials in GitHub. --- @@ -45,7 +50,8 @@ Open Authentication (OAuth) allows you to authorize one application to sign in t 2. Select your preferred OAuth app and click **Edit**. - ![Figure 2: Client ID and Client Secret](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/github/oauth-application.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/sso-login-services/github/github-sso-oauth-application.jpg) +
Figure 3: Client ID and Client Secret
3. Click the **Generate a new client secret** button to create a new client secret. The client secret is created and displayed in the **Client Secrets** section. The Client ID is created by default and can be found in the **Client ID** field. @@ -65,7 +71,8 @@ To configure the GitHub SSO in Devtron, follow the below steps of instructions: 2. Select the **Configuration** section available below the **URL** field. - ![Figure 3: Configuration Section](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/github/configuration-section-2.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/sso-login-services/github/github-sso-config.jpg) +
Figure 4: Configuration Section
3. Update the `clientID` attribute with the Client ID generated in the OAuth application on GitHub. @@ -75,14 +82,19 @@ To configure the GitHub SSO in Devtron, follow the below steps of instructions: 6. Click **Update** to save the configuration. GitHub SSO is now successfully configured. -![Figure 4: Sign in with GitHub](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/github/github-sso-final.gif) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/sso-login-services/github/github-sso-in-action.jpg) +
Figure 5: Sign in with GitHub
---- +:::tip Common error: "Some required field are missing" -{% hint style="warning" %} +If you see this error while saving the GitHub SSO configuration, ensure that you have set the **URL** field above the configuration editor. -### Important: Enable User Access After SSO Setup +Click the **Click to use** link shown below the URL field to auto-populate the correct Devtron URL, or manually enter it before saving. +::: + +--- +:::caution Important: Enable User Access After SSO Setup Although GitHub SSO is now configured, you will not be able to sign in with GitHub unless you add yourself as a user with the necessary permissions and manage other user permissions as well in Devtron. For detailed steps on managing user permissions, refer to the [User Permissions Documentation](../user-access.md). -{% endhint %} \ No newline at end of file +::: \ No newline at end of file diff --git a/docs/user-guide/global-configurations/authorization/sso/gitlab.md b/docs/user-guide/global-configurations/authorization/sso/gitlab.md old mode 100644 new mode 100755 index 85b7153d54..058afe5836 --- a/docs/user-guide/global-configurations/authorization/sso/gitlab.md +++ b/docs/user-guide/global-configurations/authorization/sso/gitlab.md @@ -11,7 +11,7 @@ Setting up GitLab SSO enables you to authenticate using your GitLab account, ens To configure GitLab SSO in Devtron, you need: * Super Admin permissions - * Only a [Super Admin](../../user-access.md) in Devtron can configure SSO. You can use the [Admin credentials](../../../../setup/install/devtron-oss.md#install-devtron-oss) provided during the initial setup, if you’re setting up Devtron for the first time. + * Only a [Super Admin](../user-access.md) in Devtron can configure SSO. You can use the [Admin credentials](../../../../setup/install/devtron-oss.md#step-4-log-in-to-devtron) provided during the initial setup, if you’re setting up Devtron for the first time. * A GitLab account to create and manage OAuth credentials. If you do not have a GitLab account, you must create it first on GitLab. @@ -25,15 +25,19 @@ Getting the redirectURI from Devtron is a crucial component of the authenticatio 1. Navigate to **Global Configurations** → **Authorization** → **SSO Login Services**. The SSO Login Service page is displayed. - ![Figure 1: Global Configurations](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/gitlab/gitlab-sso.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/sso-login-services/gitlab/gitlab-sso-select-gitlab.jpg) +
Figure 1: Select Gitlab
2. Select **GitLab** from the list of available SSO login services. -3. Click the URL suggested in green color next to the **Click to use** label to update the **URL** field. Update the **URL** field only if the host URL displayed in the **URL** field is incorrect. +3. Click the URL suggested in green color next to the **Click to use** label to update the **URL** field. -4. Click the **Save** button. + When you populate **URL** field, the redirectURI (or callbackURI) is updated automatically in the purple block displayed at the top of the SSO Login Service screen. This redirectURI is essential, as it is required while setting up the OAuth credentials in GitHub. -When you populate the Host URL in the **URL** text box, the redirectURI (or callbackURI) is updated automatically in the purple block at the top of the SSO Login Service screen. This redirectURI is essential, as it is required while setting up the OAuth credentials in GitLab. +4. Copy the redirectURI from the purple block. + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/sso-login-services/gitlab/gitlab-sso-redirect-uri.jpg) +
Figure 2: Copy Redirect URI
--- @@ -47,7 +51,8 @@ Open Authentication (OAuth) allows you to authorize one application to sign in t 2. Select your preferred OAuth app and click **Edit**. - ![Figure 2: GitLab OAuth Applications List](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/gitlab/gitlab-oauth-applist.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/sso-login-services/gitlab/gitlab-sso-oauth-applist.jpg) +
Figure 3: GitLab OAuth Applications List
3. Update the **Redirect URI** field with the redirectURI created in Devtron. @@ -55,7 +60,8 @@ Open Authentication (OAuth) allows you to authorize one application to sign in t 5. Click the **Save Application** button. The following page is displayed. - ![Figure 3: GitLab OAuth Application](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/gitlab/gitlab-oauth-edit-page.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/sso-login-services/gitlab/gitlab-sso-edit-page.jpg) +
Figure 4: GitLab OAuth Application
The client ID is displayed in the **Application ID** field. @@ -71,7 +77,8 @@ To configure the GitLab SSO in Devtron, follow the below steps of instructions: 2. Select the **Configuration** section available next to the **URL** field. - ![Figure 4: GitLab SSO Configuraion](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/gitlab/configuration-gitlab.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/sso-login-services/gitlab/gitlab-sso-config.jpg) +
Figure 5: GitLab SSO Configuration
3. Update the `clientID` attribute with the Client ID generated in the OAuth application on GitLab. @@ -81,15 +88,20 @@ To configure the GitLab SSO in Devtron, follow the below steps of instructions: 6. Click **Update** button to save the configuration. GitLab SSO is now successfully configured. -![Figure 5: Login with GitLab](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/gitlab/gitlab-sso-login.gif) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/sso-login-services/gitlab/gitlab-sso-in-action.jpg) +
Figure 6: Login with GitLab
+ +:::tip Common error: "Some required field are missing" -{% hint style="warning" %} +If you see this error while saving the GitLab SSO configuration, ensure that you have set the **URL** field above the configuration editor. -### Important Note +Click the **Click to use** link shown below the URL field to auto-populate the correct Devtron URL, or manually enter it before saving. +::: +:::caution Important Note Although GitLab SSO is now configured, you will not be able to sign in with GitLab unless you add yourself as a user with the necessary permissions and manage other user permissions as well in Devtron. It is highly recommended to create [User Permissions](../user-access.md). -{% endhint %} +::: --- diff --git a/docs/user-guide/global-configurations/authorization/sso/google.md b/docs/user-guide/global-configurations/authorization/sso/google.md old mode 100644 new mode 100755 index c165ad0879..9dbd562f38 --- a/docs/user-guide/global-configurations/authorization/sso/google.md +++ b/docs/user-guide/global-configurations/authorization/sso/google.md @@ -4,10 +4,7 @@ Integrating Google as your Single Sign-On (SSO) provider enables users to authenticate with their Google accounts, ensuring secure and streamlined access to Devtron. This document walks you through setting up Google SSO in Devtron, ensuring users can log in smoothly. -{% hint style="info" %} - -### Prerequisites - +:::info Prerequisites To configure Google SSO in Devtron, you will need: * Super Admin permissions @@ -16,7 +13,7 @@ To configure Google SSO in Devtron, you will need: * A Google Cloud account to create and manage OAuth credentials. If you don’t have one, you must create it at the [Google Cloud Console](https://console.cloud.google.com/). -{%endhint%} +::: ## Get the Redirect URI from Devtron @@ -30,7 +27,7 @@ Before configuring Google as an SSO provider, * Click the URL next to **Click to use** in green color. The URL field will be automatically populated with the URL next to **Click to use**; this is essential to generate the correct **Redirect URI**. * Copy the **Redirect URI** displayed in this section. You will need to enter this in Google Cloud. - {% embed url="https://www.youtube.com/watch?v=QvufIzUSNpg" caption="Getting the Redirect URI" %} +
## Configure OAuth in Google Cloud Console @@ -45,33 +42,36 @@ The next step is to configure OAuth credentials in Google Cloud Console. This in * Paste the Redirect URI (copied from Devtron) under Authorized Redirect URIs. * Click **Create** to generate the Client ID and Client Secret. -{% hint style="warning" %} +:::caution ### Google SSO Requires a Valid Domain with HTTPS Google does not support IP addresses as valid redirect URIs. You must use a valid domain name ([FQDN](https://en.wikipedia.org/wiki/Fully_qualified_domain_name)) accessible over HTTPS. Examples of valid URIs: -✅ https://devtron.example.com/api/dex/callback +✅ `https://devtron.example.com/api/dex/callback` -✅ https://auth.yourcompany.com/callback +✅ `https://auth.yourcompany.com/callback` Examples of invalid URIs: -❌ http://localhost:8080/callback +❌ `http://localhost:8080/callback` -❌ http://192.168.1.10/callback -{% endhint %} +❌ `http://192.168.1.10/callback` +::: -![Figure 1: Creating OAuth Client](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/creating-oauth-client-google-sso.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/sso-login-services/google/google-sso-creating-oauth-client.jpg) +
Figure 1: Creating OAuth Client
You can see a new client ID is created in the **APIs & Services** → **Credentials**, under **OAuth 2.0 Client IDs** section. To obtain Client ID and Client Secret, click on the name (devtron-sso in our case) of the **OAuth 2.0 Client IDs** -![Figure 2: Client ID Created](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/client-id-created-google-sso.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/sso-login-services/google/google-sso-client-id-created.jpg) +
Figure 2: Client ID Created
Copy the Client ID and Client Secret, as they will be required in Devtron’s SSO configuration. -![Figure 3: Get the Client ID and Client Secret](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/client-id-and-secret-google-sso.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/sso-login-services/google/google-sso-client-id-and-secret.jpg) +
Figure 3: Get the Client ID and Client Secret
For a detailed step-by-step guide, refer to Google’s official documentation: [Get Google API Client ID](https://developers.google.com/identity/gsi/web/guides/get-google-api-clientid). @@ -79,9 +79,13 @@ For a detailed step-by-step guide, refer to Google’s official documentation: [ The next step is to configure Devtron to use these credentials for authentication. For this, navigate back to **Global Configurations → SSO Login Services**, here you can already find a configuration template. +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/sso-login-services/google/google-sso-gc.jpg) +
Figure 4: Navigating Back to Devtron
+ ## Configuration -![Figure 4: Configuring SSO in Devtron](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/configuration-devtron-google-sso.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/sso-login-services/google/google-sso-config.jpg) +
Figure 5: Configuring SSO in Devtron
In the configuration, @@ -95,9 +99,16 @@ In the configuration, * Copy the Redirect URI displayed in Devtron and paste the value in the `redirectURI` field. * Click **Update** to save the configuration, once saved, Google SSO is successfully configured -{% hint style="warning" %} +:::tip Common error: "Some required field are missing" + +If you see this error while saving the Google SSO configuration, ensure that you have set the **URL** field above the configuration editor. + +Click the **Click to use** link shown below the URL field to auto-populate the correct Devtron URL, or manually enter it before saving. +::: + +:::caution Although Google SSO is now set up, users will not be able to sign in unless they are explicitly added to Devtron with the necessary permissions. -{% endhint %} +::: ## Important: Enable User Access After SSO Setup @@ -106,13 +117,16 @@ To ensure users can log in: * Go to **Global Configurations** → **Authorization** → **User Permissions**. * Click **Add User**. -![Figure 5: Configuring User Permissions](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/config-user-permissions-google-sso.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/sso-login-services/google/google-sso-add-user.jpg) +
Figure 6: Adding User with required permissions
* Enter their email (matching their Google account). * Assign the required role. * Click **Save** to complete the setup. -![Figure 6: Adding User with required permissions](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/adding-user-google-sso.jpg) + +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/sso-login-services/google/google-sso-config-user.jpg) +
Figure 7: Configuring User Permissions
Once saved, Devtron will use Google OAuth for authentication, allowing users to log in using their Google accounts. diff --git a/docs/user-guide/global-configurations/authorization/sso/keycloak.md b/docs/user-guide/global-configurations/authorization/sso/keycloak.md old mode 100644 new mode 100755 index ba0b491976..48c1d0c2af --- a/docs/user-guide/global-configurations/authorization/sso/keycloak.md +++ b/docs/user-guide/global-configurations/authorization/sso/keycloak.md @@ -7,6 +7,26 @@ --- +## Get the redirectURI from Devtron + +1. Navigate to **Global Configurations** → **Authorization** → **SSO Login Services**. The SSO Login Service page is displayed. + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/sso-login-services/keycloak/select-oidc.jpg) +
Figure 1: Select OIDC
+ +2. Select **OIDC** from the list of available SSO login services. + +3. Click the URL suggested in green color next to the **Click to use** label to update the **URL** field. + + When you populate **URL** field, the redirectURI (or callbackURI) is updated automatically in the purple block displayed at the top of the SSO Login Service screen. This redirectURI is essential, as it is required while setting up the OAuth credentials in GitHub. + +4. Copy the redirectURI from the purple block. + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/sso-login-services/keycloak/copy-redirect-uri.jpg) +
Figure 2: Copy Redirect URI
+ +--- + ## Steps on Keycloak Admin Console ### Creating a Client @@ -15,27 +35,29 @@ Here, we will add Devtron as a client for using Keycloak SSO. 1. In the Admin Console, go to **Clients** and click **Create client**. - ![Figure 1: Creating Client on Keycloak](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/keycloak/create-client.gif) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/sso-login-services/keycloak/create-client.gif) +
Figure 3: Creating Client on Keycloak
2. Within **General Settings**: * Enter `devtron` in the **Client ID** field. We will use this ID while configuring SSO later in Devtron. * Enter `Devtron` in the **Name** field. - ![Figure 2: Client ID and Name](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/keycloak/client-id.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/sso-login-services/keycloak/client-id.jpg) +
Figure 4: Client ID and Name
3. Within **Capability config**, turn on **Client Authentication**. - ![Figure 3: Enabling Client Authentication Toggle](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/keycloak/enable-client-auth.gif) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/sso-login-services/keycloak/enable-client-auth.gif) +
Figure 5: Enabling Client Authentication Toggle
-4. Within **Login settings**, enter `https:///orchestrator/api/dex/callback` in the following fields. +4. Within **Login settings**, enter the `redirectURI` you have copied earlier in the following fields. * **Valid redirect URIs** * **Valid post logout redirect URIs** * **Web origins** - [Click here](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/keycloak/base-url.jpg) to know where to find `DEVTRON_BASE_URL`. - - ![Figure 4: Entering Callback/Redirect URIs](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/keycloak/redirect-url.gif) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/sso-login-services/keycloak/redirect-url.gif) +
Figure 6: Entering Callback/Redirect URIs
5. Click **Save**. @@ -45,7 +67,8 @@ Here, we will obtain the secret we need while configuring SSO in Devtron. 1. Go to the **Credentials** tab of the client you created. - ![Figure 5: Obtaining Client Secret](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/keycloak/client-secret.gif) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/sso-login-services/keycloak/client-secret.gif) +
Figure 7: Obtaining Client Secret
2. Use the copy button next to the **Client Secret** field and paste it somewhere for future reference. @@ -57,13 +80,15 @@ Here, we will create a user that can log in to Devtron via SSO. We will assign a 2. Give a username (e.g., *usertest*) in the **Username** field and enter the user's email address (e.g., *usertest@example.com*) in the **Email** field. - ![Figure 6: Creating User Data](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/keycloak/create-user.gif) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/sso-login-services/keycloak/create-user.gif) +
Figure 8: Creating User Data
3. Click **Create**. Your user creation will be successful. 4. Go to the **Credentials** tab of the user you created. - ![Figure 7: Adding User Password](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/keycloak/set-user-password.gif) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/sso-login-services/keycloak/set-user-password.gif) +
Figure 9: Adding User Password
5. Click **Set password**. @@ -79,11 +104,13 @@ Here, we will obtain the Issuer URL we need while configuring SSO in Devtron. 2. In the **General** tab, scroll down to the **Endpoints** field, and click the **OpenID Endpoint Configuration** link. - ![Figure 8: OpenID Endpoint Configuration Link](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/keycloak/endpoint-config.gif) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/sso-login-services/keycloak/endpoint-config.gif) +
Figure 10: OpenID Endpoint Configuration Link
3. This will open a new page, copy the value of the key named `issuer`, and paste it somewhere for future reference. - ![Figure 9: Locating Issuer URL](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/keycloak/issuer-url.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/sso-login-services/keycloak/issuer-url.jpg) +
Figure 11: Locating Issuer URL
--- @@ -91,37 +118,30 @@ Here, we will obtain the Issuer URL we need while configuring SSO in Devtron. ### Configuring OIDC SSO -{% hint style="warning" %} -### Who Can Perform This Action? +:::caution Who Can Perform This Action? Users need to have super-admin permission to configure SSO. -{% endhint %} +::: Here, we will set up an OIDC SSO and enter the values we obtained in the [previous section](#steps-on-keycloak-admin-console). 1. Go to **Global Configurations** → **SSO Login Services** → **OIDC**. - ![Figure 10: Choosing OIDC SSO](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/keycloak/oidc.jpg) - -2. Below the URL field, take the help of the **Click to use** option to populate the exact URL if the displayed one is incorrect. - - ![Figure 11: Populating Correct Orchestrator URL](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/keycloak/click-to-use.jpg) - -3. In the **Configuration** editor, do the following: +2. In the **Configuration** editor, do the following: * In the `issuer` field, paste the URL you got while [retrieving issuer URL](#retrieving-issuer-url). * In the `clientID` field, paste the ID you entered while [creating the client](#creating-a-client). * In the `clientSecret` field, paste the secret you got under [client credentials tab](#getting-client-secret). * In the `redirectURI` field, make sure to enter the same redirect URI you gave in step 4 of [client creation](#creating-a-client). - ![Figure 12: Sample Keycloak SSO Config](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/keycloak/keycloak-sso-config.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/sso-login-services/keycloak/keycloak-sso-config.jpg) +
Figure 12: Sample Keycloak SSO Config
-4. Click **Save** or **Update** to activate Keycloak SSO login. +3. Click **Save** or **Update** to activate Keycloak SSO login. ### Adding Users -{% hint style="warning" %} -### Who Can Perform This Action? +:::caution Who Can Perform This Action? Users need to have super-admin permission to add users. -{% endhint %} +::: Here, we will add the user we created in the Keycloak Admin Console. If this step is skipped, the user might not be able to log in to Devtron via Keycloak. @@ -129,11 +149,13 @@ Here, we will add the user we created in the Keycloak Admin Console. If this ste 2. Click **+ Add Users**. - ![Figure 13: Adding Users to Devtron](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/keycloak/add-user.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/sso-login-services/keycloak/add-user.jpg) +
Figure 13: Adding Users to Devtron
3. In the **Email addresses** field, enter the email address of the user you created in Keycloak. - ![Figure 14: Entering User Data and Permissions](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/keycloak/add-email.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/sso-login-services/keycloak/add-email.jpg) +
Figure 14: Entering User Data and Permissions
4. Assign necessary permissions to this new user. Refer [user permissions](../user-access.md) to know more. @@ -141,12 +163,13 @@ Here, we will add the user we created in the Keycloak Admin Console. If this ste Now, you may log out and test the Keycloak OIDC login method using the [user credentials](#creating-users). Clicking the **Login with Oidc** button will land you on Keycloak's login page. -![Figure 15a: Login using OIDC method](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/keycloak/login-oidc.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/sso-login-services/keycloak/login-oidc.jpg) +
Figure 15a: Login using OIDC method
-![Figure 15b: Keycloak's Login Page](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/keycloak/keycloak-login.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/sso-login-services/keycloak/keycloak-login.jpg) +
Figure 15b: Keycloak's Login Page
-{% hint style="warning" %} -### Note +:::caution Note Kindly get in touch with us if you encounter any issues while logging out of Keycloak on Devtron as it might be buggy. -{% endhint %} \ No newline at end of file +::: \ No newline at end of file diff --git a/docs/user-guide/global-configurations/authorization/sso/ldap.md b/docs/user-guide/global-configurations/authorization/sso/ldap.md old mode 100644 new mode 100755 index b123711585..502a74cb28 --- a/docs/user-guide/global-configurations/authorization/sso/ldap.md +++ b/docs/user-guide/global-configurations/authorization/sso/ldap.md @@ -3,16 +3,31 @@ ## Sample Configuration ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/ldap.jpg) +
Figure 1: LDAP Configurations
--- + + ## Values to fetch from LDAP Devtron provides a sample configuration out of the box. Here are some values you need to fetch from your LDAP. -* bindDN -* bindPW -* baseDN +| Field | Explanation | Example | +| ------------------------------------ | ----------- | --------------------------------------------- | +| `host` | LDAP server hostname with port | `ad.example.com:636` | | +| `bindDN` | DN of the LDAP service account used by Devtron to query users and groups. This is not the user logging in. | `cn=Administrator,cn=users,dc=example,dc=com` | +| `bindPW` | Password of the bindDN account | `admin0!` | +| `userSearch.baseDN` | Directory path under which Devtron searches for LDAP users | `cn=Users,dc=example,dc=com` | +| `userSearch.username` | LDAP attribute used as the login username | `userPrincipalName` | + +:::tip Common error: "Some required field are missing" + +If you see this error while saving the LDAP configuration, ensure that you have set the **URL** field above the configuration editor. + +Click the **Click to use** link shown below the URL field to auto-populate the correct Devtron URL, or manually enter it before saving. +::: + --- @@ -22,29 +37,21 @@ Devtron provides a sample configuration out of the box. Here are some values you --- -## Auto-assign Permissions [![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/elements/EnterpriseTag.svg)](https://devtron.ai/pricing) +## Auto-assign Permissions Since LDAP supports creation of User Groups, this feature simplifies the onboarding process of organizations having a large headcount of users. It also eliminates repetitive permission assignment by automatically mapping your LDAP User groups to Devtron's [Permission Groups](../permission-groups.md) during single sign-on (SSO) login. -![Enabling Permission Auto-assignment](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/secret/auto-grant-ldap.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/secret/auto-grant-ldap.jpg) +
Figure 2: Enabling Permission Auto-assignment
If you've created user groups in LDAP, you can create corresponding permission groups in Devtron with the same names. When members of those user groups first log in to Devtron, they'll automatically inherit the permissions from their Devtron permission group. This means you can't manually adjust or add [individual permissions for users](../user-access.md) mapped to a permission group. -{% hint style="warning" %} +:::caution SSO login requires exact matching between Devtron permission group names and LDAP user groups. Any discrepancies or missing groups will prevent successful login. Once you save the configuration with this auto-assign feature enabled, existing user permissions will be cleared and the future permissions will be managed through [Permission Groups](../permission-groups.md) linked to LDAP user groups. -{% endhint %} +::: -{% hint style="info" %} +:::info If you're missing some permissions that you know you should have, try logging out and signing back in to Devtron. This will refresh your permissions based on your latest LDAP user group. -{% endhint %} - - - - - - - - - +::: \ No newline at end of file diff --git a/docs/user-guide/global-configurations/authorization/sso/microsoft.md b/docs/user-guide/global-configurations/authorization/sso/microsoft.md old mode 100644 new mode 100755 index b18ce5977d..9bbc6ad5dc --- a/docs/user-guide/global-configurations/authorization/sso/microsoft.md +++ b/docs/user-guide/global-configurations/authorization/sso/microsoft.md @@ -3,6 +3,7 @@ ## Sample Configuration ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/microsoft.jpg) +
Figure 1: Sample Configurations
--- @@ -16,19 +17,23 @@ Devtron provides a sample configuration out of the box. There are some values th * tenantID (required only if you want to use Azure AD for auto-assigning permissions) - ![Fetching Client ID and Tenant ID](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/secret/ms-id-secret1.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/secret/ms-id-secret1.jpg) +
Figure 2: Fetching Client ID and Tenant ID
* clientSecret - ![Fetching Secret](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/secret/ms-id-secret2.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/secret/ms-id-secret2.jpg) +
Figure 3: Fetching Secret
### Values to Provide * redirectURI (provided in SSO Login Services by Devtron) - ![Copying Redirect URI from Devtron](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/redirect/microsoft-redurl.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/redirect/microsoft-redurl.jpg) +
Figure 4: Copying Redirect URI from Devtron
- ![Pasting Redirect URI](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/redirect/ms-redirect.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/redirect/ms-redirect.jpg) +
Figure 5: Pasting Redirect URI
--- @@ -40,31 +45,26 @@ Devtron provides a sample configuration out of the box. There are some values th --- -## Auto-assign Permissions [![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/elements/EnterpriseTag.svg)](https://devtron.ai/pricing) +## Auto-assign Permissions -{% hint style="info" %} +:::info Make sure to add tenantID in the SSO configuration field without fail. -{% endhint %} +::: Since Microsoft supports Active Directory (AD) , this feature further simplifies the onboarding process of organizations having a large headcount of users. It also eliminates repetitive permission assignment by automatically mapping your Azure AD groups to Devtron's [Permission Groups](../permission-groups.md) during single sign-on (SSO) login. -![Enabling Permission Auto-assignment](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/secret/auto-grant.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/secret/auto-grant.jpg) +
Figure 6: Enabling Permission Auto-assignment
If you've defined groups in your Active Directory, you can create corresponding permission groups in Devtron with the same names. When members of those Active Directory groups first log in to Devtron, they'll automatically inherit the permissions from their Devtron permission group. This means you can't manually adjust or add [individual permissions for users](../user-access.md) mapped to a permission group. -{% hint style="warning" %} +:::caution SSO login requires exact matching between Devtron permission group names and AD groups. Any discrepancies or missing groups will prevent successful login. Once you save the configuration with this feature enabled, existing user permissions will be cleared and the future permissions will be managed through [permission groups](../permission-groups.md) linked to Azure Active Directory (Microsoft Entra ID) groups. -{% endhint %} +::: -{% hint style="info" %} +:::info If your AD permissions aren't reflecting in Devtron, a quick sign-out and sign-in can resolve the issue. -{% endhint %} - - - - - - +::: \ No newline at end of file diff --git a/docs/user-guide/global-configurations/authorization/sso/oidc.md b/docs/user-guide/global-configurations/authorization/sso/oidc.md old mode 100644 new mode 100755 index 68c4cec1d4..571ca04f7c --- a/docs/user-guide/global-configurations/authorization/sso/oidc.md +++ b/docs/user-guide/global-configurations/authorization/sso/oidc.md @@ -3,6 +3,7 @@ ## Sample Configuration ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/oidc.jpg) +
Figure 1: Sample Configuration
--- @@ -16,15 +17,18 @@ Devtron provides a sample configuration out of the box. There are some values th * clientSecret - ![Fetching Client ID and Secret](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/secret/oidc-id-secret.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/secret/oidc-id-secret.jpg) +
Figure 2: Fetching Client ID and Secret
### Values to Provide * redirectURI (provided in SSO Login Services by Devtron) - ![Copying Redirect URI from Devtron](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/redirect/oidc-redurl.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/redirect/oidc-redurl.jpg) +
Figure 3: Copying Redirect URI from Devtron
- ![Pasting Redirect URI](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/redirect/oidc-redirect.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/redirect/oidc-redirect.jpg) +
Figure 4: Pasting Redirect URI
--- @@ -36,16 +40,4 @@ Devtron provides a sample configuration out of the box. There are some values th * [Configure Okta SSO](../sso/okta.md) -* [View Dex IdP Documentation](https://dexidp.io/docs/connectors/oidc/) - - - - - - - - - - - - +* [View Dex IdP Documentation](https://dexidp.io/docs/connectors/oidc/) \ No newline at end of file diff --git a/docs/user-guide/global-configurations/authorization/sso/okta.md b/docs/user-guide/global-configurations/authorization/sso/okta.md old mode 100644 new mode 100755 index dd063a8484..340a2e41e4 --- a/docs/user-guide/global-configurations/authorization/sso/okta.md +++ b/docs/user-guide/global-configurations/authorization/sso/okta.md @@ -6,14 +6,13 @@ A verified account on [Okta](https://www.okta.com/). Okta activates your account Here's a reference guide to set up your Okta org and application: [Link](https://developer.okta.com/docs/guides/oie-embedded-common-org-setup/go/main/) -{% hint style="warning" %} -### Who Can Perform This Action? +:::caution Who Can Perform This Action? Only super admin users can set up SSO providers. -{% endhint %} +::: ## Tutorial -{% embed url="https://www.youtube.com/watch?v=i-7IWkg6Ipk" caption="Okta App Setup" %} +
## Steps on Okta Admin Console @@ -31,7 +30,7 @@ Once your Okta org is set up, create an app integration on Okta to get a Client * Give a name to your application. * Select the **Interaction Code** and **Refresh Token** checkbox. * Now go to Devtron's Global Configurations → SSO Login Services → OIDC. - * Copy the redirect URI given in the helper text (might look like: https://xxx.xxx.xxx/xxx/callback). + * Copy the redirect URI given in the helper text (might look like: `https://xxx.xxx.xxx/xxx/callback`). * Return to the Okta screen, and remove the prefilled value in **Sign-in redirect URIs**. * Paste the copied URI in **Sign-in redirect URIs**. * Click **Save**. @@ -57,15 +56,14 @@ Once your Okta org is set up, create an app integration on Okta to get a Client ### Sample Configuration -![Figure 1: Sample Configuration](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/sample-config-okta.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/sso-login-services/okta/okta-oidc.jpg) +
Figure 1: Sample Configuration
Now your users will be able to log in to Devtron using the Okta authentication method. Note that existing signed-in users will be logged out, and they have to log in again using their OIDC account. -## Auto-assign Permissions [![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/elements/EnterpriseTag.svg)](https://devtron.ai/pricing) - -{% hint style="warning" %} -### Prerequisites +## Auto-assign Permissions +:::caution Prerequisites In order to auto-assign feature to work 1. A groups claim is configured in the authorization server, so that group information is included in the token. Refer to [Add a groups claim in Okta](https://developer.okta.com/docs/guides/customize-tokens-groups-claim/main/#add-a-groups-claim-for-the-org-authorization-server) to learn more. @@ -74,7 +72,7 @@ In order to auto-assign feature to work 3. Relevant users are added to these groups. Refer [Add Users to Okta groups](https://support.okta.com/help/s/article/adding-users-to-okta-groups?language=en_US) to learn more. -{% endhint %} +::: Since Okta provides centralized user management through its Universal Directory, this feature further simplifies the onboarding process of organizations with a large number of users. It also eliminates repetitive permission assignment by automatically mapping your Okta groups to Devtron’s Permission Groups during single sign-on (SSO) login. @@ -90,16 +88,15 @@ If you’ve defined groups in your Okta Universal Directory, you can create corr 4. Click **Update**. -![Figure 2: Sample Configuration for Auto -assign Permission](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/okta-sample-config-auto-assign.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/sso-login-services/okta/okta-auto-assign-permissions.jpg) +
Figure 2: Sample Configuration for Auto -assign Permission
-{% hint style="warning" %} -### Note +:::caution Note SSO login requires exact matching between Devtron permission group names and Okta groups. Any discrepancies or missing groups will prevent successful login. Once you save the configuration with this feature enabled, existing user permissions will be cleared and the future permissions will be managed through [permission groups](../permission-groups.md) linked to Okta groups. -{% endhint %} +::: -{% hint style="info" %} -### Tip +:::info Tip If your Okta groups permissions aren't reflecting in Devtron, a quick sign-out and sign-in can resolve the issue. -{% endhint %} +::: diff --git a/docs/user-guide/global-configurations/authorization/sso/openshift.md b/docs/user-guide/global-configurations/authorization/sso/openshift.md old mode 100644 new mode 100755 index 00a598c77e..2cdafe75e5 --- a/docs/user-guide/global-configurations/authorization/sso/openshift.md +++ b/docs/user-guide/global-configurations/authorization/sso/openshift.md @@ -3,6 +3,7 @@ ## Sample Configuration ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/openshift.jpg) +
Figure 1: Sample Configuration
--- @@ -14,19 +15,23 @@ Devtron provides a sample configuration out of the box. There are some values th * clientID - ![Fetching Client ID](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/secret/openshift-id-secret1.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/secret/openshift-id-secret1.jpg) +
Figure 2: Fetching Client ID
* clientSecret - ![Fetching Secret](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/secret/openshift-id-secret2.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/secret/openshift-id-secret2.jpg) +
Figure 3: Fetching Secret
### Values to Provide * redirectURI (already provided in SSO Login Services by Devtron) - ![Copying Redirect URI from Devtron](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/redirect/openshift-redurl.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/redirect/openshift-redurl.jpg) +
Figure 4: Copying Redirect URI from Devtron
- ![Pasting Redirect URI](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/redirect/openshift-redirect.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/sso-login-service/redirect/openshift-redirect.jpg) +
Figure 5: Pasting Redirect URI
--- @@ -34,11 +39,4 @@ Devtron provides a sample configuration out of the box. There are some values th * [View Openshift Documentation](https://docs.openshift.com/container-platform/4.14/authentication/configuring-oauth-clients.html) -* [View Dex IdP Documentation](https://dexidp.io/docs/connectors/openshift/) - - - - - - - +* [View Dex IdP Documentation](https://dexidp.io/docs/connectors/openshift/) \ No newline at end of file diff --git a/docs/user-guide/global-configurations/authorization/user-access.md b/docs/user-guide/global-configurations/authorization/user-access.md old mode 100644 new mode 100755 index db11b239b4..259326e3c6 --- a/docs/user-guide/global-configurations/authorization/user-access.md +++ b/docs/user-guide/global-configurations/authorization/user-access.md @@ -4,43 +4,47 @@ Here you can manage who can access your Devtron instance and what actions they can perform. Use this section to add team members, assign them roles, and control their access by granting fine-grained permissions. Moreover, you can also download all user data in a CSV format. -![Figure 1: User Permissions - Example](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/user-access/add-user.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/user-access/user-permissions.jpg) +
Figure 1: User Permissions - Example
--- ## Add Users -{% hint style="danger" %} -### Mandatory Action +:::danger Mandatory Action This is a mandatory step after configuring SSO in Devtron; otherwise, your users won't be able to log in to Devtron via SSO. -{% endhint %} +::: -{% hint style="warning" %} -### Who Can Perform This Action? +:::caution Who Can Perform This Action? Only managers and super-admins can add users. -{% endhint %} +::: 1. Go to **Global Configurations** → **Authorization** → **User Permissions**. - ![Figure 2: User Permissions in Global Configurations](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/user-access/user-permissions-gc.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/user-access/user-permissions-gc.jpg) +
Figure 2: User Permissions in Global Configurations
2. Click **Add Users**. - ![Figure 3: 'Add Users' Button](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/user-access/user-permissions-add.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/user-access/user-permissions-add.jpg) +
Figure 3: 'Add Users' Button
3. In the **Email addresses** field, type the email address of the user you wish to add. You may add more than one email address. - ![Figure 4: Adding Email Addresses of Users](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/user-access/adding-user.gif) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/user-access/adding-user.gif) +
Figure 4: Adding Email Addresses of Users
4. (Optional) From the **Assign user groups** dropdown, you may assign one or more user groups to the user. This helps in identifying the group/team to which the user belongs (e.g., Security Team, Frontend Team, Department Leads) especially when adding larger teams. - ![Figure 5: Assigning User Group(s)](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/user-access/assigning-user-groups.gif) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/user-access/assigning-user-groups.gif) +
Figure 5: Assigning User Group(s)
5. There are two types of permissions in Devtron (click the links below to learn more): * [Super admin permission](#grant-super-admin-permission) for granting full access. * [Specific permissions](#grant-specific-permissions) for granting cherry-picked access. - ![Figure 6: Granting Specific or Superadmin Access](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/user-access/two-permissions.gif) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/user-access/two-permissions.gif) +
Figure 6: Granting Specific or Superadmin Access
6. Click **Save**. You have successfully added your user(s). @@ -48,7 +52,8 @@ Only managers and super-admins can add users. ## Grant Super Admin Permission -![Figure 7: Granting Superadmin Access](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/user-permissions/superadmin-perm.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/user-access/superadmin-perm.jpg) +
Figure 7: Granting Superadmin Access
Super-Admins have unrestricted access to all Devtron resources. They can create, modify, delete, and manage any resource, including user access, Git repositories, container registries, clusters, and environments. Before assigning this permission, please note: @@ -62,7 +67,8 @@ Super-Admins have unrestricted access to all Devtron resources. They can create, ## Grant Specific Permissions -![Figure 8: Granting Specific Access](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/user-access/specific-permissions-1.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/user-access/specific-permissions.jpg) +
Figure 8: Granting Specific Access
### Permission Groups @@ -70,16 +76,14 @@ Super-Admins have unrestricted access to all Devtron resources. They can create, The **Permission Groups** drop-down box allows you to select from a list of permission groups already created in the [Permission Groups](../authorization/permission-groups.md) page. -![Figure 9: Permission Groups](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/user-access/assigning-permission-groups.gif) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/user-access/assigning-permission-groups.gif) +
Figure 9: Permission Groups
You can select one or more permission groups, and the user will automatically inherit all the permissions to the projects and resources defined for those groups. Once you select permission group(s), assigning direct permissions can be skipped (unless you wish to grant additional permissions). -You can also make users [Active/Inactive](#making-users-activeinactive) at permission group-level. - -{% hint style="info" %} - -### What happens when a user has direct permissions as well as permissions inherited from a group? +You can also make users [Active/Inactive](#making-users-activeinactive-) at permission group-level. +:::info What happens when a user has direct permissions as well as permissions inherited from a group? If you assign a permission group as well as direct permissions, the user will have the combined permissions of both. **For example**: @@ -90,29 +94,27 @@ If you assign a permission group as well as direct permissions, the user will ha * Now, the user will have both **Build & Deploy** and **View only** permissions for those three apps, and just **View only** for the other two. -{% endhint %} +::: ### Devtron Apps permissions -{% hint style="warning" %} - -### Note - +:::caution Note The **Devtron Apps** tab is displayed only when the [Build and Deploy (CI/CD)](../../integrations/build-and-deploy-ci-cd.md) module is installed in your Devtron instance. -{% endhint %} +::: The **Devtron Apps** tab allows you to grant user permissions for Devtron applications. -![Figure 10: Granting Devtron Apps Permissions](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/user-access/devtron-apps.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/user-access/devtron-apps.jpg) +
Figure 10: Granting Devtron Apps Permissions
| Field | Description | | --- | --- | -| **Project** | Select your preferred project from the drop-down box to grant the user access. You can select only one project at a time.
**Note**: If you want to select more than one project, then click **Add Permission**. | -| **Environment** | Select a specific environment or all environments from the drop-down box as per your requirement.
**Note**: If you select `All environments`, the user will have access to all the current environments and any new environment which gets associated with the application in the future. | -| **Application** | Select a specific application or all applications from the drop-down box that is associated with the environment(s) selected in the **Environment** drop-down box, as per your requirement.
**Note**: If you select `All applications`, the user will have access to all the current and future applications associated with the project. Moreover, user with access to all applications, can create new applications too. | -| **Role** | Available Roles:
  • `Base Role`
  • `Additional Roles` [![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/elements/EnterpriseTag.svg)](https://devtron.ai/pricing)
  • `Access Manager` [![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/elements/EnterpriseTag.svg)](https://devtron.ai/pricing)
[Click here](#roles-available-for-devtron-apps) to learn more about the role you wish to assign to the user. | -| **Status** | Read: [Making Users Active/Inactive](#at-direct-permissions-level) [![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/elements/EnterpriseTag.svg)](https://devtron.ai/pricing) | +| **Project** | Select your preferred project from the drop-down box to grant the user access. You can select only one project at a time.
**Note**: If you want to select more than one project, then click **Add Permission**. | +| **Environment** | Select a specific environment or all environments from the drop-down box as per your requirement.
**Note**: If you select `All environments`, the user will have access to all the current environments and any new environment which gets associated with the application in the future. | +| **Application** | Select a specific application or all applications from the drop-down box that is associated with the environment(s) selected in the **Environment** drop-down box, as per your requirement.
**Note**: If you select `All applications`, the user will have access to all the current and future applications associated with the project. Moreover, user with access to all applications, can create new applications too. | +| **Role** | Available Roles:
  • `Base Role`
  • `Additional Roles`
  • `Access Manager`
[Click here](#roles-available-for-devtron-apps) to learn more about the role you wish to assign to the user. | +| **Status** | Read: [Making Users Active/Inactive](#at-direct-permissions-level) | #### Roles available for Devtron Apps @@ -128,7 +130,7 @@ The role-based access for Devtron Apps are as follows: * **Manager**: In addition to **Admin** permission, users can also grant or revoke user access for applications and environments that they manage. The **Manager** role for enterprise users will be deprecated and removed soon. Therefore, we recommend using the **Access Manager** role instead of **Manager** going forward. -* **Additional Roles** [![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/elements/EnterpriseTag.svg)](https://devtron.ai/pricing) +* **Additional Roles** **Additional Roles** allows you to assign specific permissions to a user beyond their **Base Role**. For example, you can grant a user both the **Build and Deploy** (Base Role) and **Config Approver** permissions (Additional Role). This allows the user to build and deploy images, while also being responsible for approving configuration change requests. @@ -140,7 +142,7 @@ The role-based access for Devtron Apps are as follows: * **Deployment Approver**: You can approve the deployment requests for the selected applications and environments. -You also have the provision of granting Access Manager role to a user. Refer [Access Manager](#access-manager) to know more. +You also have the provision of granting Access Manager role to a user. Refer [Access Manager](#access-manager-) to know more. #### Roles and Scopes @@ -160,15 +162,16 @@ You also have the provision of granting Access Manager role to a user. Refer [Ac Here you can grant your user the permissions for Helm apps deployed from Devtron or outside Devtron. -![Figure 11: Granting Helm Apps Permissions](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/user-access/helm-apps.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/user-access/helm-apps.jpg) +
Figure 11: Granting Helm Apps Permissions
| Field | Description | | --- | --- | -| **Project** | Select a project from the dropdown list to grant the user access. You can select only one project at a time.
**Note**: If you want to select more than one project, then click **Add Permission**. | -| **Environment or Cluster/Namespace** | Select a specific environment from the dropdown list.
**Note**: If you select `All existing + future environments in cluster`, then the user will get access to all the current environments including any new environment which gets associated with the application later. | -| **Application** | Select a specific helm application or all helm apps from the dropdown list corresponding to your selected environments.
**Note**: If `All applications` is selected, the user will have access to all current and future applications associated with the project. | +| **Project** | Select a project from the dropdown list to grant the user access. You can select only one project at a time.
**Note**: If you want to select more than one project, then click **Add Permission**. | +| **Environment or Cluster/Namespace** | Select a specific environment from the dropdown list.
**Note**: If you select `All existing + future environments in cluster`, then the user will get access to all the current environments including any new environment which gets associated with the application later. | +| **Application** | Select a specific helm application or all helm apps from the dropdown list corresponding to your selected environments.
**Note**: If `All applications` is selected, the user will have access to all current and future applications associated with the project. | | **Permission** | Available Permissions:
  • `View only`
  • `View & Edit`
  • `Admin`
[Click here](#roles-available-for-helm-apps) to learn more about the permission you wish to assign the user. | -| **Status** | Read: [Making Users Active/Inactive](#at-direct-permissions-level) [![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/elements/EnterpriseTag.svg)](https://devtron.ai/pricing) | +| **Status** | Read: [Making Users Active/Inactive](#at-direct-permissions-level) | #### Roles available for Helm Apps @@ -189,16 +192,17 @@ There are three role-based access levels for Helm Apps: Here you can grant your user the permissions to access the jobs created in Devtron. -![Figure 12: Granting Jobs Permissions](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/user-access/jobs.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/user-access/jobs.jpg) +
Figure 12: Granting Jobs Permissions
| Field | Description | | --- | --- | -| **Project** | Select a project from the dropdown list to grant the user access. You can select only one project at a time.
**Note**: If you want to select more than one project, then click **Add Permission**. | +| **Project** | Select a project from the dropdown list to grant the user access. You can select only one project at a time.
**Note**: If you want to select more than one project, then click **Add Permission**. | | **Job Name** | Select a specific job or choose `All jobs` to grant access to all available jobs within the project. | | **Workflow** | Select a specific workflow or `All workflows` to grant access to the workflows containing the job pipelines. | | **Environment** | Select a specific environment or `All environments` to grant access to the environments associated with the job(s). | | **Role** | Available Roles:
  • `View only`
  • `Run job`
  • `Admin`
[Click here](#roles-available-for-jobs) to learn more about the role you wish to assign the user.| -| **Status** | Read: [Making Users Active/Inactive](#at-direct-permissions-level) [![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/elements/EnterpriseTag.svg)](https://devtron.ai/pricing) | +| **Status** | Read: [Making Users Active/Inactive](#at-direct-permissions-level) | #### Roles available for Jobs @@ -219,29 +223,30 @@ There are three role-based access levels for Jobs: ### Kubernetes Resources permissions -{% hint style="warning" %} -### Note +:::caution Note The 'Kubernetes Resources' tab will be available only if you have super-admin permissions. -{% endhint %} +::: Here you can provide permission to view, inspect, manage, and delete resources in your clusters from [Devtron's Resource Browser](../../resource-browser/README.md). To grant Kubernetes resource permission, click **Add permission**. -![Figure 13a: Adding Permissions for Kubernetes Resources](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/user-access/k8s-resources-1.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/user-access/k8s-resources-1.jpg) +
Figure 13a: Adding Permissions for Kubernetes Resources
-![Figure 13b: Granting Permissions for Kubernetes Resources](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/user-access/k8s-resources-2.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/user-access/k8s-resources-2.jpg) +
Figure 13b: Granting Permissions for Kubernetes Resources
| Field | Description | | --- | --- | -| **Cluster** | Select a cluster from the dropdown list to which you want to give permission to the user. You can select only one cluster at a time.
**Note**: To add another cluster, click **Add another**. | +| **Cluster** | Select a cluster from the dropdown list to which you want to give permission to the user. You can select only one cluster at a time.
**Note**: To add another cluster, click **Add another**. | | **Namespace** | Select a namespace from the dropdown list. | | **API Group** | Select a specific API group or `All API groups` from the dropdown list corresponding to the Kubernetes resource. | | **Kind** | Select a kind or `All kind` from the dropdown list corresponding to the Kubernetes resource. | | **Resource name** | Select a resource name or `All resources` from the dropdown list to which you want to give permission to the user. | | **Role** | Available Roles:
  • `View`
  • `Admin`
[Click here](#roles-available-for-kubernetes-resources) to learn more about the role you wish to assign the user. | -| **Status** | Read: [Making Users Active/Inactive](#at-direct-permissions-level) [![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/elements/EnterpriseTag.svg)](https://devtron.ai/pricing) | +| **Status** | Read: [Making Users Active/Inactive](#at-direct-permissions-level) | #### Roles available for Kubernetes Resources @@ -258,14 +263,14 @@ There are two role-based access levels for Kubernetes Resources: ### Chart Groups permissions -{% hint style="warning" %} -### Note +:::caution Note The 'Chart Groups' tab will be available only if the [CI/CD module](../../integrations/build-and-deploy-ci-cd.md) is installed. -{% endhint %} +::: Here you can grant your user the permissions for accessing Chart Groups. Note that you can only give users the permission to either create chart groups or edit them, but not both. -![Figure 14: Granting Chart Group Permissions](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/user-access/chart-groups.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/user-access/chart-groups.jpg) +
Figure 14: Granting Chart Group Permissions
| Action | Permissions | | :--- | :--- | @@ -288,53 +293,43 @@ Here you can grant your user the permissions for accessing Chart Groups. Note th --- -## Access Manager [![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/elements/EnterpriseTag.svg)](https://devtron.ai/pricing) +## Access Manager ### Can Manage Access For All Roles (Toggle) -{% hint style="warning" %} - -### Who Can Perform This Action? - +:::caution Who Can Perform This Action? Only a [Super Admin](#grant-super-admin-permission) can enable the **Can manage access for all roles** toggle for other users. -{% endhint %} +::: -![Figure 15: 'Can manage access for all roles' Toggle](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/user-access/cmafar-highlighted.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/user-access/cmafar-highlighted.jpg) +
Figure 15: 'Can manage access for all roles' Toggle
By enabling the **Can manage access for all roles** toggle, you can grant a user the permission to manage access for all roles across Devtron apps, Helm Apps, Jobs, Kubernetes Resources, and Chart Groups. However, they cannot create new users. By default, this toggle is disabled. -{% hint style="warning" %} - -### Important Note - +:::caution Important Note If you enable the **Can manage access for all roles** toggle for a user, then that user can modify permissions of all the users including super-admins. -{% endhint %} +::: ### Access Manager (Devtron Apps) -{% hint style="warning" %} - -### Who Can Perform This Action? - +:::caution Who Can Perform This Action? Only [Super-Admins](#grant-super-admin-permission) can grant an **Access Manager** role. -{% endhint %} +::: -![Figure 16: Access Manager](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/user-access/access-manager-highlighted.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/user-access/access-manager-highlighted.jpg) +
Figure 16: Access Manager
Enabling **Access Manager** for a user allows that user to further grant or change permissions of existing users. -{% hint style="warning" %} - -### Important Note - +:::caution Important Note An Access Manager cannot create other Access Managers or add new users. Creation of new users and Access Manager is restricted only to Super-Admins. -{% endhint %} +::: A user who is an Access Manager can grant or change permissions for other existing users only within the permissions assigned to them under the **Access Manager** role in the **Role** drop-down box. For example, refer to the tables below to understand what an Access Manager (User A) is allowed and not allowed to do with the permissions of an existing user (User B). @@ -345,16 +340,13 @@ A user who is an Access Manager can grant or change permissions for other existi | What's Allowed | What's Not Allowed | |:----|:------| -| **For User A:**
Changing User B's **Manager** role to **View Only** role (Manager → View Only) |
  • Reverting to User B's **Manager** role (View Only → Manager)
  • Changing User B's **Manager** role to any other role, except for **View Only**
  • Performing operations beyond the base role (i.e., **Admin**)
  • Modifying Super-Admin permissions
| -| **For User B:**
Perform the operations under the scope of **Manager** role across Devtron |
  • Manage user access for other users
  • Perform operations beyond the base role (i.e., **Manager**)
  • Modifying Super-Admin permissions
| - -{% hint style="info" %} - -### Note +| **For User A:**
Changing User B's **Manager** role to **View Only** role (Manager → View Only) |
  • Reverting to User B's **Manager** role (View Only → Manager)
  • Changing User B's **Manager** role to any other role, except for **View Only**
  • Performing operations beyond the base role (i.e., **Admin**)
  • Modifying Super-Admin permissions
| +| **For User B:**
Perform the operations under the scope of **Manager** role across Devtron |
  • Manage user access for other users
  • Perform operations beyond the base role (i.e., **Manager**)
  • Modifying Super-Admin permissions
| +:::info Note If you need to grant someone global control over modifying the roles of other users, enable the [Can manage access for all roles](#can-manage-access-for-all-roles-toggle) toggle instead. -{% endhint %} +::: When enabling the **Access Manager** toggle, make sure to select at least one permission from the checkboxes displayed beneath the toggle to ensure the role is active. @@ -376,31 +368,28 @@ The following permissions are currently available in the Access Manager role: |-----------------------|:----:|:------:|:----:|:------:|:--------------:|:--------------:|:--------------:|:----------------:|:----------------:| | **Access Manager** | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | -{% hint style="info" %} - -### Note - +:::info Note [Raise a feature request on GitHub](https://github.com/devtron-labs/devtron/issues) if: * You would like to see the **Deployment approver** permission also within the **Access Manager** role. * You would like to have the app-specific **Access Manager** role (currently available only for Devtron Apps) for Helm apps, Jobs, Kubernetes Resources, or Chart Groups as well. -{% endhint %} +::: --- -## Making Users Active/Inactive [![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/elements/EnterpriseTag.svg)](https://devtron.ai/pricing) +## Making Users Active/Inactive -{% hint style="warning" %} -### Who Can Perform This Action? +:::caution Who Can Perform This Action? * Super-admins can activate or deactivate users. * Managers can activate or deactivate users only if the users has the same or fewer permissions than the manager. -{% endhint %} +::: When working with multiple collaborators in Devtron, you may need to deactivate users who no longer require access and reactivate them when needed. This applies to users of Devtron Apps, Helm Apps, Jobs, and Kubernetes Resources. -![Figure 17: Active/Inactive Options](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/user-access/active-inactive.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/user-access/active-inactive.jpg) +
Figure 17: Active/Inactive Options
You can manage a user's active status at three levels: * [User-level](#at-user-level) @@ -410,7 +399,8 @@ You can manage a user's active status at three levels: ### At User level -![Figure 18: Active/Inactive User](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/user-access/user-level.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/user-access/user-level.jpg) +
Figure 18: Active/Inactive User
* **Active/Activate** - Use this option to activate a deactivated user while retaining their previous roles and permissions. * **Inactive/Inactivate** - Use this option to deactivate an existing active user and save the changes. If the user has an ongoing session, they will be logged out permanently on their next action or refresh. @@ -418,7 +408,8 @@ You can manage a user's active status at three levels: ### At Permission Group level -![Figure 19: Active/Inactive User from Permission Group](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/user-access/permission-group-level.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/user-access/permission-group-level.jpg) +
Figure 19: Active/Inactive User from Permission Group
* **Active/Activate** - Use this option to allow permissions from the group to take effect for the user. * **Inactive/Inactivate** - Use this option to prevent permissions from the group from taking effect for the user. However, they can still log in/log out of Devtron if [active at the user-level](#at-user-level). @@ -426,7 +417,8 @@ You can manage a user's active status at three levels: ### At Direct Permissions level -![Figure 20: Active/Inactive User for Project Access](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/user-access/direct-permissions-level.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/user-access/direct-permissions-level.jpg) +
Figure 20: Active/Inactive User for Project Access
* **Active/Activate** - Use this option to grant the project/resource access to the user. * **Inactive/Inactivate** - Use this option to revoke the project/resource access from the user. **Note**: The user will still be able to log in/log out of Devtron if [active at user-level](#at-user-level). @@ -436,20 +428,19 @@ You can manage a user's active status at three levels: ## Edit User Permissions -{% hint style="warning" %} -### Who Can Perform This Action? +:::caution Who Can Perform This Action? * Super-admins can edit user permissions. * Managers can edit user permissions only if the user has the same or fewer permissions than the manager. -{% endhint %} +::: -{% hint style="warning" %} -### Note +:::caution Note Direct user permissions cannot be edited if you're using [LDAP](./sso/ldap.md)/[Microsoft](./sso/microsoft.md) for SSO with 'auto-assign permission' enabled. Permissions can only be [managed via permission groups](./permission-groups.md#edit-permissions-groups) in such a scenario. -{% endhint %} +::: You can edit the user permissions by clicking the edit icon. Click **Save** after editing the permissions. -![Figure 21: Editing User Permissions](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/user-access/editing-permissions.gif) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/user-access/editing-permissions.gif) +
Figure 21: Editing User Permissions
--- @@ -464,20 +455,21 @@ You may download the user data of current users and deleted users in a CSV forma * Role * Timestamps for User Addition, Updation, and Deletion -![Figure 22: Exporting User Data](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/user-permissions/export-users-csv-v2.gif) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/user-permissions/export-users-csv-v2.gif) +
Figure 22: Exporting User Data
--- ## Delete Users -{% hint style="warning" %} -### Who Can Perform This Action? +:::caution Who Can Perform This Action? * Super-admins can delete users. * Managers can delete users only if the user has the same or fewer permissions than the manager. -{% endhint %} +::: If you want to delete a user, click **Delete**. -![Figure 23: Deleting a User](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/user-access/delete-user.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/user-access/delete-user.jpg) +
Figure 23: Deleting a User
This will remove the user from the system along with all the permissions granted earlier. The user will no longer be able to log in to Devtron unless added again. \ No newline at end of file diff --git a/docs/user-guide/global-configurations/build-infra.md b/docs/user-guide/global-configurations/build-infra.md old mode 100644 new mode 100755 index 3ca52b2e32..e5e7e8e45f --- a/docs/user-guide/global-configurations/build-infra.md +++ b/docs/user-guide/global-configurations/build-infra.md @@ -1,3 +1,10 @@ +--- +id: build-infra +title: Build Infra +sidebar_label: Build Infra +slug: /user-guide/app-management/configurations/build-infra +--- + # Build Infra ## Introduction @@ -8,26 +15,27 @@ Therefore, applying a common infra configuration to all applications is not opti With the 'Build Infra' feature, Devtron makes it possible for you to tweak the resources as per the needs of your applications. The build (ci-runner) pod will be scheduled on an available node (considering applied taints and tolerations) in the cluster on which 'Devtron' is installed. -{% hint style="warning" %} -### Who Can Perform This Action? +:::caution Who Can Perform This Action? Users need to have super-admin permission to configure Build Infra. -{% endhint %} +::: --- ## Configure Build Infra -From the left sidebar, go to **Global Configurations** → **Build Infra**. +From the left sidebar, go to **Application Management** → **Configurations** → **Build Infra**. -![Figure 1: Global Configurations - Build Infra](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/build-infra/gc-build-infra.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/configurations/build-infra/build-infra-nav.jpg) +
Figure 1: Global Configurations - Build Infra
-Under **Profiles** tab, you will see the [Global Profile](#global-profile) and a list of [Custom Profiles](#creating-custom-profile) (if they exist). Setting up profiles makes it easier for you to manage the build infra configurations, ensuring its reusability in the long term. +Under **Profiles** tab, you will see the [Global Profile](#global-profile) and a list of [Custom Profiles](#creating-custom-profile-) (if they exist). Setting up profiles makes it easier for you to manage the build infra configurations, ensuring its reusability in the long term. ### Global Profile This contains the default infra configuration applicable to all the applications, be it large or small. -![Figure 2: Global Profile](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/build-infra/default-profile.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/configurations/build-infra/global-profile.jpg) +
Figure 2: Global Profile
You may click it to modify the following: @@ -36,17 +44,17 @@ You may click it to modify the following: |**CPU**|Processor core allocated to the build process. See [CPU units](#cpu-units).| |**Memory**|RAM allocated to the build process. See [memory units](#memory-units).| |**Build Timeout**|Max. time limit allocated to the build process. See [timeout units](#timeout-units).| -|**Node Selector** |Node Selector are key-value pair labels to match Pods with Nodes. To learn more, refer to [nodeSelector](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector) page.| -|**Toleration** |A Toleration allow a pod to be scheduled on a Node that has a matching Taint. To learn more, refer to [Taints and Toleration](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) page.| -|**ConfigMaps** |Key Value pairs to store non-sensitive configurations. Refer to [ConfigMaps](../creating-application/base-config/config-maps.md).| -|**Secrets** |Key Value pairs to store sensitive configurations. Refer to [Secrets](../creating-application/base-config/secrets.md).| +|**Node Selector** Enterprise Feature |Node Selector are key-value pair labels to match Pods with Nodes. To learn more, refer to [nodeSelector](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector) page.| +|**Toleration** Enterprise Feature|A Toleration allow a pod to be scheduled on a Node that has a matching Taint. To learn more, refer to [Taints and Toleration](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) page.| +|**ConfigMaps** Enterprise Feature|Key Value pairs to store non-sensitive configurations. Refer to [ConfigMaps](../creating-application/base-config/config-maps.md).| +|**Secrets** Enterprise Feature|Key Value pairs to store sensitive configurations. Refer to [Secrets](../creating-application/base-config/secrets.md).| -{% hint style="info" %} -### Note +:::info Note ConfigMaps and Secrets defined here will be used at the time of build, not during deployment. -{% endhint %} +::: -![Figure 3: Editing Global Profile](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/build-infra/default-infra-config.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/configurations/build-infra/default-infra-config.jpg) +
Figure 3: Editing Global Profile
Furthermore, CPU and Memory have 2 fields each: @@ -56,29 +64,34 @@ Furthermore, CPU and Memory have 2 fields each: | **Limit** | This field is use to set the maximum amount of CPU/Memory resources the build process can use, even if there is a lot available in the cluster.| -### Creating Custom Profile [![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/elements/EnterpriseTag.svg)](https://devtron.ai/pricing) +### Creating Custom Profile Instead of global profile, you can create custom profiles having different infra configurations. Example: One profile for Python apps, a second profile for large apps, and a third profile for small apps, and many more. 1. Click **Create Profile**. - ![Figure 4: Creating Custom Profile](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/build-infra/create-new-profile.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/configurations/build-infra/create-new-profile.jpg) +
Figure 4: Creating Custom Profile
2. Enter a name for the profile along with a brief description (optional) and click **Create** button. - ![Figure 5: Entering Details](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/build-infra/new-profile-fields.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/configurations/build-infra/new-profile-fields.jpg) +
Figure 5: Entering Details
3. Your custom profile will appear under the list of custom profiles as shown below. - ![Figure 6: Profile Created](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/build-infra/build-infra-profile-created.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/configurations/build-infra/build-infra-profile-created.jpg) +
Figure 6: Profile Created
4. Click on your custom profile; a new page will open displaying the custom runner configuration which is inherited from global profile by default. - ![Figure 7: Editing Profile](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/build-infra/filled-profile-fields.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/configurations/build-infra/filled-profile-fields.jpg) +
Figure 7: Editing Profile
5. To modify a specific configuration, click the **edit** icon next to that configuration, and turn off the **Inherit** toggle; this will stop that configuration from being inherited from global profile. - ![Figure 8: Configuring Profile](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/build-infra/new-profile-listed.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/configurations/build-infra/new-profile-listed.jpg) +
Figure 8: Configuring Profile
6. Modify the resources according to your use case and click **Save**. @@ -86,11 +99,11 @@ Instead of global profile, you can create custom profiles having different infra --- -## Adding Platform Specific Configurations [![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/elements/EnterpriseTag.svg)](https://devtron.ai/pricing) +## Adding Platform Specific Configurations -Modern applications often need to run on different hardware platforms (architectures), such as `amd64` (x86_64) and `arm64` to support cross-platform compatibility. +Modern applications often need to run on different hardware platforms (architectures), such as `amd64` (x86_64) and `arm64`, to support cross-platform compatibility. -[Multi-architecture (multi-arch) builds](https://docs.docker.com/build/building/multi-platform/) enables you to build container images that work seamlessly across multiple platforms. +[Multi-architecture (multi-arch) builds](https://docs.docker.com/build/building/multi-platform/) enable you to build container images that work seamlessly across multiple platforms. Optimizing your CI builds for each platform ensures: @@ -98,36 +111,59 @@ Optimizing your CI builds for each platform ensures: * **Resource efficiency**: Prevents over or under-provisioning, saving costs and improving reliability. -Each platform may have unique requirements for resources like CPU and memory, or they may benefit from different configuration of resources. Thus, Devtron allows defining platform specific configurations within a build infra profile. This ensures each build is executed with the right configurations specific to the target platform. +Each platform may have unique requirements for resources like CPU and memory, or it may benefit from a different configuration of resources. Thus, Devtron allows defining platform specific configurations within a build infra profile. This ensures each build is executed with the right configurations specific to the target platform. + +### How the Configurations Are Applied + +A build infra profile has two levels of configuration: + +* **Runner configuration**: The base CPU, memory, and build timeout for the build (ci-runner) pod. This applies to every build using the profile. + +* **Platform specific configuration**: An optional set of resources (CPU and memory) defined for an individual target platform such as `linux/amd64` or `linux/arm64`. When you build for that platform, Devtron uses these resources instead of the base runner configuration. -{% hint style="info" %} -### K8s Driver v/s Container Driver - **Platform specific configurations** are only supported for builds executed using the k8s driver. - - When you use the K8s driver, each build for a target platform runs as its own pod within your Kubernetes cluster. This allows you to assign different CPU, memory, and other configurations for each target platform like `amd64` or `arm64`. - - If you use the container driver, all builds run inside a single CI runner pod and share the same configuration, regardless of the target platform while K8s driver. +:::info K8s Driver v/s Container Driver +**Platform specific configurations** are only supported for builds executed using the K8s driver. - {% endhint %} +When you use the **K8s driver**, each build for a target platform runs as its own pod within your Kubernetes cluster. This allows you to assign different CPU, memory, and other configurations for each target platform, such as `linux/amd64` or `linux/arm64`. + +When you use the **container driver**, all platform builds run inside a single CI runner pod and share the same configuration, regardless of the target platform. +::: To configure platform specific configurations: -1. From the left sidebar, go to **Global Configurations** → **Build Infra**. +1. From the left sidebar, go to **Application Management** → **Configurations** → **Build Infra**. 2. Select the profile for which you want to configure platform specific configurations. -3. Check the **Use K8s driver for build** and click **+Add Target Platform**; a modal window will open. +3. Enable the **Use K8s driver for build** toggle, then click **+ Add Target Platform**; a modal window will open. + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/configurations/build-infra/figure-1-k8s-driver.png) +
Enabling K8s Driver and Adding a Target Platform
-4. Under **Select a target platform**, select the platform for which you want to define platform specific configurations. +4. Under **Select a target platform**, choose the platform for which you want to define platform specific configurations. 1. You can choose from `linux/amd64` or `linux/arm64`. - 2. You can also type to add a new platform. + 2. You can also type to add a custom platform. + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/configurations/build-infra/figure-2-k8s-driver.png) +
Selecting a Target Platform
5. Configure the resources for the specific platform and click **Save**. -6. The platform specific configuration will be available below the runner configuration. + :::caution + For both CPU and Memory, the **Limit** must be greater than or equal to the **Request**. See [CPU units](#cpu-units) and [memory units](#memory-units). + ::: + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/configurations/build-infra/figure-3-k8s-driver.png) +
Configuring Platform Specific Resources
+ +6. The platform specific configuration will be available below the runner configuration. You can add more target platforms by repeating steps 3–5, and remove a platform using its delete icon. + +:::info Note +If a target platform does not have its own platform specific configuration, the build for that platform falls back to the base runner configuration. +::: -{% embed url="https://www.youtube.com/watch?v=5nFJfai125U" caption="Platform Specific Configurations" %} +
--- @@ -137,27 +173,31 @@ Once you create a profile, attach it to the intended applications, or else the [ 1. Go to the **Applications** tab. - ![Figure 9: Applications Tab](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/build-infra/applications-tab.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/configurations/build-infra/applications-tab.jpg) +
Figure 9: Applications Tab
2. Choose an application and click the dropdown below it. - ![Figure 10: Profile Dropdown](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/build-infra/profile-dropdown.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/configurations/build-infra/profile-dropdown.jpg) +
Figure 10: Profile Dropdown
3. Choose the profile you wish to apply from the dropdown. - ![Figure 11: Selecting a Profile](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/build-infra/profile-selection.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/configurations/build-infra/profile-selection.jpg) +
Figure 11: Selecting a Profile
4. Click **Change** to apply the profile to your application. - ![Figure 12: Confirming Profile Change](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/build-infra/confirm-profile-change.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/configurations/build-infra/confirm-profile-change.jpg) +
Figure 12: Confirming Profile Change
-{% hint style="success" %} -### Tip +:::tip Tip If you missed creating a profile but selected your application(s), you can use the 'Create Profile' button. This will quickly open a new tab for creating a profile. Once done, you can return and click the refresh icon as shown below. -{% endhint %} +::: -![Figure 13: Quick Profile Creation](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/build-infra/quick-profile-creation.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/configurations/build-infra/quick-profile-creation.jpg) +
Figure 13: Quick Profile Creation
### Performing Bulk Action @@ -165,15 +205,18 @@ If you wish to apply a profile to multiple applications at once, you can do that Simply use the checkboxes to select the applications. You can do this even if there are many applications spanning multiple pages. You will see a draggable floating widget as shown below. -![Figure 14: Floating Widget](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/build-infra/floating-widget.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/configurations/build-infra/floating-widget.jpg) +
Figure 14: Floating Widget
Select the profile you wish to apply from the dropdown and confirm the changes. -![Figure 15: Selecting a Profile](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/build-infra/profile-selection-bulk.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/configurations/build-infra/profile-selection-bulk.jpg) +
Figure 15: Selecting a Profile
Once you apply a profile, it will show the count of applications attached to it. -![Figure 16: Count of Applications](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/build-infra/profile-applicable-count.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/configurations/build-infra/profile-applicable-count.jpg) +
Figure 16: Count of Applications
--- @@ -181,11 +224,13 @@ Once you apply a profile, it will show the count of applications attached to it. You can edit or delete a custom profile using the respective icons as shown below. -![Figure 17: Edit and Delete Icons](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/build-infra/edit-delete-icons-v2.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/configurations/build-infra/edit-delete.jpg) +
Figure 17: Edit and Delete Icons
If you delete a profile attached to one or more applications, the [global profile](#global-profile) will apply from the next build. -![Figure 18: Confirm Profile Deletion](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/build-infra/delete-dialog.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/configurations/build-infra/delete-dialog.jpg) +
Figure 18: Confirm Profile Deletion
### Need More Options? diff --git a/docs/user-guide/global-configurations/catalog-framework.md b/docs/user-guide/global-configurations/catalog-framework.md old mode 100644 new mode 100755 index 35a77eea82..f06f939ae2 --- a/docs/user-guide/global-configurations/catalog-framework.md +++ b/docs/user-guide/global-configurations/catalog-framework.md @@ -1,91 +1,107 @@ -# Catalog Framework +# Manage Schema -## Introduction [![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/elements/EnterpriseTag.svg)](https://devtron.ai/pricing) +## Introduction -Ideally, all resources such as microservices, clusters, jobs, pods, etc. should contain detailed information so that its users know what each of those resources do, how to use them, as well as all their technical specs. Access to such data makes it easier for engineers to quickly discover and understand the relevant resources. +Ideally, all resources such as microservices, clusters, jobs, and pods should include detailed information, so users know what each resource does, how to use it, and its technical specifications. -To achieve this, Devtron supports a feature known as **Catalog Framework**. Using this, you as a [super-admin](../global-configurations/authorization/user-access.md#devtron-apps-permissions) can decide the data you expect from the managers of different resource types. In other words, you can create a custom JSON schema that would ultimately render a form for the resource owners to fill. Once the form is filled, a GUI output will appear as shown below. +To achieve this, Devtron provides a feature called **Catalog**, which lets a [super-admin](../global-configurations/authorization/user-access.md#devtron-apps-permissions) define a custom JSON schema that renders a form for resource owners to fill. After defining a schema, it generates a form that users can fill out, and the entered data appears in a clear GUI format. -![Sample Catalog Data for an App](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/catalog-framework/sample-app-catalog.jpg) - -Currently, Devtron supports catalog framework for the following resource types (a.k.a. resource kind): +Currently, Devtron supports catalog for the following resource types (a.k.a. resource kind): * [Devtron applications](../../reference/glossary.md#devtron-apps) * [Helm applications](../../reference/glossary.md#helm-apps) * [Clusters](../../reference/glossary.md#cluster) * [Jobs](../../reference/glossary.md#job) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/catalog/catalog-final-view.jpg) +
Figure 1: Sample Catalog Data
+ There are two parts involved in the creation of a desirable resource catalog: -1. [Defining a Schema](#defining-a-schema) +1. [Managing a Schema](#managing-a-schema) 2. [Filling the Schema-Generated Form](#filling-the-schema-generated-form) --- -## Defining a Schema +## Managing a Schema -{% hint style="warning" %} -### Who Can Perform This Action? +:::caution Who Can Perform This Action? Only a super-admin can create/edit a schema. -{% endhint %} +::: + +:::caution Note +The **Catalog** schema you define applies to all resources of that type. For example, managing the schema for one Devtron application updates the catalog for every Devtron app in your system. +::: +1. Go to the **Overview** tab of your resource (for example, a **Devtron App**, or **Helm App**, or **Job**, or **Cluster**) and locate the **Catalog** section. -1. Go to **Global Configurations** → **Catalog Framework**. +:::caution Note +Here, we’re defining schema for a **Devtron application** as an example. You can define schemas for all other supported resource types (**Helm App**, or **Job**, or **Cluster**) in exactly the same way. +::: -2. Choose a resource type, for which you wish to define a schema, for e.g., Devtron applications. +2. Click **Manage Schema**. A new page will open. - ![Figure 1: Choosing a Schema](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/catalog-framework/catalog-framework.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/catalog/catalog-manage-schema.jpg) +
Figure 2: Clicking 'Manage Schema'
-3. You can edit the schema name and description. +3. Enter a **Name** and **Description** (optional). The **Kind** field is automatically filled with the resource type (such as **Devtron application**, **Helm application**, **cluster**, or **job**) based on where you opened **Manage Schema**. -4. There is a sample schema available for you to create your own customized schema. Using this schema, you can decide the input types that renders within the form, for e.g., a dropdown of enum values, a boolean toggle button, text field, label, and many more. + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/catalog/catalog-enter-details.jpg) +
Figure 3: Entering Details
- ![Figure 2a: Using Sample Schema](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/catalog-framework/schema.jpg) +4. There is a sample schema available for you to create your own customized schema. Using this schema, you can decide the input types that render within the form, for e.g., a dropdown of enum values, a boolean toggle button, text field, label, and many more. - ![Figure 2b: Expected Future Output](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/catalog-framework/rendering.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/catalog/catalog-sample-schema.jpg) +
Figure 4a: Using Sample Schema
+ + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/catalog/catalog-defining-schema.jpg) +
Figure 4b: Expected Future Output
5. After defining your schema, click **Review Changes**. 6. You get a side-by-side comparison (diff) highlighting the changes you made. - ![Figure 3: Change Diff](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/catalog-framework/changed-schema.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/catalog/catalog-review-changes.jpg) +
Figure 5a: Clicking 'Review Changes'
-7. Click **Save**. + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/catalog/catalog-review-changes-view.jpg) +
Figure 5b: Change Diff
-Similarly, you can define schemas for other resource types. +7. Click **Save**. **Note**: If you edit a field (of an existing schema) for which users have already filled the data, that data will be erased. You will receive a prompt (as shown below) to confirm whether you want to proceed with the changes. -![Figure 4: Indication of Existing Data](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/catalog-framework/existing-filled-data.jpg) - +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/catalog/catalog-data-clear.jpg) +
Figure 6: Indication of Existing Data
--- ## Filling the Schema-Generated Form -Once a catalog schema exists for a resource type, its corresponding form would be available in the overview section of that resource type. +Once a schema is defined, the form generated from it appears in the **Overview** section of that resource. -1. Since we defined a schema for Devtron applications in the above example, go to the **Overview** tab of your application (any Devtron application). Click the **Edit** button within the `About` section. +1. Since we defined a schema for **Devtron applications** in the above example, go to the **Overview** tab of your application (any Devtron application). Click the **Edit** button within the `About` section. - ![Figure 5: Unfilled Details](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/catalog-framework/app-overview.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/catalog/catalog-edit.jpg) +
Figure 7: Clicking 'Edit'
2. The schema created for Devtron applications would render into an empty form as shown below. - ![Figure 6: Rendered Empty Form](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/catalog-framework/edit-catalog.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/catalog/catalog-schema-generated-form.jpg) +
Figure 8: Rendered Empty Form
3. Fill as many details as an application owner to the best of your knowledge and click **Save**. - ![Figure 7: Filled Form](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/catalog-framework/filled-catalog.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/catalog/catalog-filling-form.jpg) +
Figure 9: Filled Form
4. Your saved data would be visible in a GUI format (and also in JSON format) as shown below. - ![Figure 8: App Catalog Data](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/catalog-framework/gui-app-catalog.jpg) - -This catalog data would be visible to all the users who have access to the application, but its data can be edited only by the resource owners (in this case, application admin/managers). - - - - + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/catalog/catalog-final-view.jpg) +
Figure 10a: App Catalog Data in GUI Format
+ ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/catalog/catalog-final-view-json.jpg) +
Figure 10b: App Catalog Data in JSON Format
+This catalog data would be visible to all the users who have access to the application, but its data can be edited only by the resource owners (in this case, application admin/managers). \ No newline at end of file diff --git a/docs/user-guide/global-configurations/chart-repo.md b/docs/user-guide/global-configurations/chart-repo.md old mode 100644 new mode 100755 index f80c593341..a095fbe5e6 --- a/docs/user-guide/global-configurations/chart-repo.md +++ b/docs/user-guide/global-configurations/chart-repo.md @@ -1,3 +1,10 @@ +--- +id: chart-repo +title: Chart Repository +sidebar_label: Chart Repository +slug: /user-guide/app-management/configurations/chart-repo +--- + # Chart Repository ## Introduction @@ -8,13 +15,10 @@ You can add one ore more chart repositories to Devtron. Once added, the charts f By default, Devtron automatically includes a set of built-in chart repositories during installation. -{% hint style="warning" %} - -### Who Can Perform This Action? - +:::caution Who Can Perform This Action? Only a [Super-Admin](../global-configurations/authorization/user-access.md#grant-super-admin-permission) can add, update, delete chart repositories. -{% endhint %} +::: --- @@ -22,7 +26,10 @@ Only a [Super-Admin](../global-configurations/authorization/user-access.md#grant To add a chart repository, follow the steps below: -1. Navigate to **Global Configurations** → **Chart Repositories**. +1. Navigate to **Application Management** → **Configurations** → **Chart Repository**. + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/configurations/chart-repo/chart-repo-nav.jpg) +
Figure 1: Adding a Chart Repository
2. Click **Add repository**. @@ -30,7 +37,8 @@ To add a chart repository, follow the steps below: 3. Provide below information in the following fields: - ![Figure 1: Add a Chart Repository](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/chart-repo/add-chart-repo.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/configurations/chart-repo/chart-repo-fields.jpg) +
Figure 2: Entering Repository Details
| Fields | Description | | --- | --- | @@ -45,21 +53,19 @@ To add a chart repository, follow the steps below: To update a chart repository, follow the below steps: -1. Navigate back to **Chart Repositories* page. +1. Navigate back to **Chart Repositories** page. 2. Select the repository you prefer to update. - ![Figure 2: Update a Chart Repository](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/chart-repo/update-chart-repository.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/configurations/chart-repo/update-chart-repository.jpg) +
Figure 3: Updating a Chart Repository
3. Modify the repository as per your requirements. -{% hint style="info" %} - -### Perform Dry Run - +:::info Perform Dry Run If you prefer to perform a dry run to validate the chart repository configurations, click **Validate**. -{% endhint %} +::: 4. Click **Update**. @@ -73,7 +79,8 @@ If you are using an chart repository as your chart source and prefer to delete i 1. Navigate back to **Chart Repositories**. - ![Figure 3: Delete a Chart Repository](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/deploy-chart/delete-chart-repos.gif) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/configurations/chart-repo/delete-chart-repos.gif) +
Figure 4: Deleting a Chart Repository
2. Select your preferred chart repository. diff --git a/docs/user-guide/global-configurations/cluster-and-environments.md b/docs/user-guide/global-configurations/cluster-and-environments.md old mode 100644 new mode 100755 index 8983a2efca..59ea254cc8 --- a/docs/user-guide/global-configurations/cluster-and-environments.md +++ b/docs/user-guide/global-configurations/cluster-and-environments.md @@ -1,608 +1,27 @@ -# Clusters and Environments - -## Introduction - -Devtron allows you to connect and manage your existing Kubernetes clusters by adding them to its platform. Once a cluster is added, you can create different environments within it, making it possible to deploy your applications. - -You can add any of the following cluster types: -* [Kubernetes Cluster](#add-kubernetes-cluster) - If you have access to the cluster, use this option. -* [Isolated Cluster](#add-isolated-cluster) - For air-gapped use-cases, use this option. - --- - -## Add Kubernetes Cluster - -{% hint style="warning" %} -### Who Can Perform This Action? -Users need to have super-admin permission to add a Kubernetes cluster to Devtron. -{% endhint %} - - -1. Go to **Global Configurations** → **Clusters & Environments** → **Connect Cluster** (button); a **New Cluster** modal window will appear. - - ![Figure 1: Adding a Cluster](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/cluster-env-add-clusters-new.jpg) - -2. Select **Connect Cluster**. - - ![Figure 2: Selecting 'Connect Cluster'](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/cluster-env-select-connect-cluster.jpg) - -3. You can choose to add your Kubernetes cluster using either of the following methods: - - | Method | Description | - | :----------------------------------------------------------------------- | :------------------------------------------------ | - | [Server URL & Bearer Token](#add-cluster-using-server-url--bearer-token) | Use Server URL and Bearer Token to add a cluster. | - | [Kubeconfig](#add-cluster-using-kubeconfig) | Use `Kubeconfig` file to add a cluster. | - - ![Figure 3: Choosing a Method](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/cluster-env-choosing-method.jpg) - -4. Click **Save Cluster** and your cluster will be connected to Devtron. - -### Add Cluster Using Server URL & Bearer Token - -{% hint style="info" %} -### Note -Refer to [Get Cluster Credentials](#get-cluster-credentials) to learn the process of getting the Server URL and bearer token. -{% endhint %} - -1. To add a Kubernetes cluster on Devtron using Server URL and Bearer Token, provide the following information: - - | Field | Description | - | :--- | :--- | - | **Name** | Enter the name of your cluster. | - | **Server URL** | Enter the Server URL of your cluster (with https)
**Note**: We recommend using a [self-hosted URL](#benefits-of-self-hosted-url) instead of a cloud-hosted URL. | - | **Bearer Token** | Paste the bearer token of your cluster | - - ![Figure 4: Enter Cluster Credentials](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/cluster-env-add-cluster-cred.jpg) - -2. Complete the remaining steps (optional): - * [Choose Connection Type](#choose-method-of-connection) - * [Use Secure TLS Connection](#use-secure-tls-connection) - * [Configure Prometheus](#configure-prometheus-enable-application-metrics) - * [Assign a Category](#assign-category-to-a-cluster) - -{% hint style="tip" %} -### Tip -If you have a **kubeconfig** file ready, you may skip the above process and refer to [Add Cluster Using Kubeconfig](#add-cluster-using-kubeconfig) instead. -{% endhint %} - -### Add Cluster Using Kubeconfig - -In case you prefer to add clusters using kubeconfig, follow these steps: - -1. Copy and paste your kubeconfig file into the editor. Alternatively, you may browse and select the file as well. - - ![Figure 5: Choosing Kubeconfig Option](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/cluster-env-add-cluster-kubeconfig.jpg) - -2. Click the **Get Cluster** button. This action will display the cluster details alongside the kubeconfig. - - ![Figure 6: Get Cluster List from Kubeconfig](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/cluster-env-get-cluster.jpg) - -3. If your kubeconfig file lists multiple clusters, they will be displayed in the window. Use the checkboxes to select the desired cluster(s) and click **Save**. - - ![Figure 7: Clicking Save](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/cluster-env-kubeconfig-save-cluster.jpg) - -4. Click the saved cluster, and complete the remaining steps (optional): - * [Choose Connection Type](#choose-method-of-connection) - * [Use Secure TLS Connection](#use-secure-tls-connection) - * [Configure Prometheus](#configure-prometheus-enable-application-metrics) - * [Assign a category](#assign-category-to-a-cluster) - -{% hint style="warning" %} -### Note -Ensure that the **kubeconfig** file has admin permissions. It is crucial for Devtron to have the necessary administrative privileges; otherwise, it may encounter failures or disruptions during deployments and other operations. Admin permission is essential to ensure the smooth functioning of Devtron and to prevent any potential issues that may arise due to insufficient privileges. -{% endhint %} - -### Assign Category to a Cluster - -Devtron allows you to assign a category (for e.g. Prod, QA, Dev, or Stage) to your clusters. This enables category-based filtering in the UI, allowing you to determine whether an application is deployed to the Prod, QA, Dev, or Stage environment. - -Before assigning a category, you must first add the category. To add a category, refer to the [Adding a Category](#add-category) section to learn more. - -To assign a category to a cluster, follow the steps below: - -1. Select a category from the dropdown under **Assign Category** and click **Update Cluster**. - - ![Figure 8: Assigning Category](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/cluster-env-assign-category-cluster.jpg) - -2. The selected category will be assigned to the cluster. - - ![Figure 9: Category Assigned](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/cluster-env-assign-category-category-added-cluster.jpg) - - -### Choose Method of Connection [![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/elements/EnterpriseTag.svg)](https://devtron.ai/pricing) - -When adding a new cluster to Devtron, you must choose how Devtron will connect to it. There are three connection options available: - -#### Direct Connection -Clusters with a directly accessible API server endpoint, either publicly or via private peering, can be added as Direct Connection clusters. -* Devtron connects directly without an intermediary. -* Recommended when the cluster is publicly accessible or has a direct network route from Devtron. - -![Figure 10: Choosing Direct Connection](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/cluster-env-direct-connection.jpg) - -#### Via Proxy [![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/elements/EnterpriseTag.svg)](https://devtron.ai/pricing) - -For security reasons, some Kubernetes clusters are deployed behind a proxy. In this setup, Devtron routes all communication through the specified proxy URL. -* Use this option when network restrictions require traffic to go through a proxy server. -* Requires specifying a **Proxy URL** (e.g., `http://proxy.example.org:3128`). -* **Limitation**: Deployments via [GitOps (ArgoCD)](../../reference/glossary.md#gitops) are not recommended for clusters connected via proxy. - -![Figure 11: Choosing 'Via Proxy'](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/cluster-env-via-proxy.jpg) - -#### Via SSH Tunnel [![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/elements/EnterpriseTag.svg)](https://devtron.ai/pricing) - -When a direct connection isn't possible, Devtron can connect to the Kubernetes cluster through an SSH tunnel, ensuring secure and encrypted communication. -* Requires: - * **SSH Server URL** (e.g., `http://proxy.example.org`). - * **Username** for authentication. - * **Authentication Method**: - * Password - * SSH Private Key - * Both Password & SSH Private Key -* **Limitation**: Deployments via [GitOps (ArgoCD)](../../reference/glossary.md#gitops) are **not recommended** for clusters connected via SSH Tunnel. - -![Figure 12: Choosing 'Via SSH Tunnel'](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/cluster-env-via-ssh.jpg) - - -### Use Secure TLS Connection - -For a secure cluster connection, you can opt for TLS connection, where you need to provide Certificate Authority Data, a TLS Key, and a TLS Certificate. - -If your cluster is managed (e.g., [EKS](https://aws.amazon.com/eks/), [AKS](https://learn.microsoft.com/en-us/azure/aks/), [GKE](https://cloud.google.com/kubernetes-engine)), you might need to download these certificates from your cloud provider’s dashboard or API. - -| Field | Description | -|--------|------------| -| **Certificate Authority (CA) Data** | The CA certificate (see: [example](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/kubeconfig-entry.jpg)) used to verify the Kubernetes API server’s identity. | -| **TLS Key** | The private key associated with the client certificate for authentication. | -| **TLS Certificate** | The client certificate used to authenticate with the Kubernetes API server. | - -![Figure 13: Using Secure TLS Connection](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/cluster-env-secure-tls.jpg) - - -### Configure Prometheus (Enable Application Metrics) - -If you want to see application metrics against the applications deployed in the cluster, Prometheus must be deployed in the cluster. Prometheus is a powerful tool to provide graphical insight into your application behavior. - -Enable application metrics to configure Prometheus as shown below. In case it is not available, make sure to install the **Monitoring (Grafana)** integration from [Devtron Stack Manager](../stack-manager.md) to configure Prometheus. - -![Figure 14: Enabling Application Metrics](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/cluster-env-enable-app-metrics.jpg) - -Provide the information in the following fields: - -| Field | Description | -| :--- | :--- | -| **Prometheus endpoint** | Provide the URL of your Prometheus | -| **Authentication Type** | Prometheus supports two authentication types:
  • **Basic**: If you select the `Basic` authentication type, then you must provide the `Username` and `Password` of Prometheus for authentication.
  • **Anonymous**: If you select the `Anonymous` authentication type, then you do not need to provide the `Username` and `Password`.
    **Note**: The fields `Username` and `Password` will not be available by default.
| -| **TLS Key** & **TLS Certificate** | These fields are optional and can be used when you use a customized URL. | - -Click **Save Cluster** to save your cluster on Devtron. - +title: Clusters and Environments +sidebar_label: Clusters and Environments --- -## Create Kubernetes Cluster [![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/elements/EnterpriseTag.svg)](https://devtron.ai/pricing) - -### Prerequisites - -{% hint style="warning" %} - -### Who Can Perform This Action? - -Only a [Super-Admin](../global-configurations/user-access.md#assign-super-admin-permissions) can add an OCI Registry in Devtron. - -{% endhint %} - -To create an EKS cluster, you need: - -* [OpenTofu](#install-opentofu) (`tofu-controller`) chart installed in your Devtron instance. - - Refer to [Getting Started with OpenTofu](https://opentofu.org/docs/intro/) for more information. - -* [FluxCD controller](#install-fluxcd-controller) (`flux2`) chart installed in your Devtron instance - -* [Secret](#create-a-secret) containing AWS credentials - -#### Install OpenTofu - -Follow the steps mentioned below to install OpenTofu: - -1. Navigate to **Global Configurations** → **Container/OCI Registry**. - -2. Refer to the following table and enter the information in the appropriate fields: - - | Field | Value | - | :--- | :--- | - | **Registry provider** | Other | - | **Registry type** | Public Registry | - | **Name** | `tofu` | - | **Registry URL** | `ghcr.io` | - | **List of repositories** | `flux-iac/charts/tofu-controller` | - -
- - ![Figure 16: Container/OCI Registry](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/container-oci-registry.jpg) - -3. Click **Save**. The `tofu-controller` chart will be displayed in the [Chart Store](../../user-guide/deploy-chart/README.md) page. - -4. Navigate to **Chart Store** and search for `tofu-controller` in the search box. - -5. Select the chart and click **Configure & Deploy**. The following page will be displayed. - - ![Figure 17: Tofu Controller Chart](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/tofu-controller-chart.jpg) - -6. Enter the app name (e.g., `tofu-controller`) in the **App Name** field. - -7. Select your project in the **Project** drop-down box. - -8. Select the environment where you want to deploy the chart in the **Deploy to Environment** drop-down box. - -{% hint style="warning" %} - -### Important Note - -The environment/namespace where you install OpenTofu must be the same environment/namespace where the FluxCD controller will be installed (the next step) to create the cluster. - -{% endhint %} - -9. Choose either **Helm** or **GitOps** [if configured](../../user-guide/global-configurations/gitops.md) as the deployment method. - -10. Click **Deploy Chart**. OpenTofu will be installed in your Devtron instance. - -Now that OpenTofu is installed, you can [install the FluxCD controller](#install-fluxcd-controller) in your Devtron instance. - -#### Install FluxCD Controller - -Follow the steps mentioned below to install OpenTofu: - -1. Navigate to [Chart Store](../../user-guide/deploy-chart/README.md) and search for `flux2` in the search box. - - ![Figure 18: "flux2" Chart](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/flux-cd-chart.jpg) - -2. Select the chart and click **Deploy**. - -3. Enter the app name (e.g., `tofu2`) in the **App Name** field. - -4. Select your project in the **Project** drop-down box. - -5. Select the environment where you want to deploy the chart in the **Deploy to Environment** drop-down box. - -{% hint style="warning" %} - -### Important Note - -The environment/namespace where you install the FluxCD controller must be the same environment/namespace where OpenTofu was installed to create the cluster. - -{% endhint %} - -6. Choose either **Helm** or **GitOps** [if configured](../../user-guide/global-configurations/gitops.md) as the deployment method. - -7. Click **Deploy Chart**. FluxCD controller will be installed in your Devtron instance. - -Now that FluxCD controller is installed, the final prerequisite is to [create a secret](#create-a-secret) containing your AWS credentials. - -#### Create a Secret - -{% hint style="warning" %} - -### Who Can Perform This Action? +The **Clusters and Environments** section helps you connect Kubernetes clusters to Devtron and set up the environments where your applications will be deployed. -User needs to be an [Admin](../../user-guide/global-configurations/authorization/user-access.md#kubernetes-resources-permissions) of the Kubernetes resource or a [Super-Admin](../../user-guide/global-configurations/authorization/user-access.md#kubernetes-resources-permissions) to create a Secret. +This section provides a clear guide for onboarding clusters, structuring environments, and keeping them all organized. -{% endhint %} - -Follow the steps mentioned below to create a secret containing your AWS credentials: - -1. Navigate to **Resource Browser**. - -2. Click the **default_cluster**. - -3. Click **Create Resource**. - -4. Copy the YAML snippet given below and paste it in the **Create Kubernetes Resource** page. - - ```yaml - apiVersion: v1 - data: - AWS_ACCESS_KEY_ID: SDKDI382DKD0= - AWS_SECRET_ACCESS_KEY: YVZsSIEOwcFRSMjlvM2xaUjSIE823J3PT0= - kind: Secret - metadata: - name: tf-aws-creds - namespace: your-namespace - type: Opaque - ``` - -{% hint style="warning" %} - -### Important Note - -* It is recommended to keep the `name` attribute to `tf-aws-creds`. Changing this value might make the secret go unrecognized. - -* The secret must be created in the same namespace where OpenTofu and FluxCD controller are installed. - -* When creating a secret, kindly ensure that your `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` are encoded in base64. Go to [Devtron Base64 Encoder](https://strings.devtron.ai/base64-encoder) to encode your AWS credentials. - -{% endhint %} - -5. Enter your AWS access key against the `AWS_ACCESS_KEY_ID` attribute and AWS secret key against the `AWS_SECRET_ACCESS_KEY` attribute. Refer to [Create New Access Keys](https://docs.aws.amazon.com/keyspaces/latest/devguide/create.keypair.html) for more information. - -6. Click **Apply**. The secret will be created. - -Now that all the prerequisites are met, you can proceed to create a cluster from the **Create Kubernetes Cluster** page. - -### Steps - -{% hint style="warning" %} - -### Who Can Perform This Action? - -Only a [Super-Admin](../global-configurations/user-access.md#assign-super-admin-permissions) can create a Kubernetes cluster. - -{% endhint %} - -* Navigate to **Global Configurations** → **Clusters & Environments** → **New Cluster** → **Create Kubernetes Cluster**. - -* Refer the following table (containing **mandatory** fields) and enter the details in the corresponding fields: - - | Field | Description | - | :--- | :--- | - | `Cluster Provider` | Select the type of cluster you'd like to create based on your requirement | - | `Name` | Enter the name of your Kubernetes cluster (e.g., `eks-cluster-nonprod` in the case of EKS and `rancher-cluster-qa` in the case of Rancher) | - | `Region` | Select the region where your cluster is hosted (e.g., `us-east-1` in the case of EKS and `ap-south-3` in the case of Rancher)
Refer to [View cluster details using the AWS Management Console](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-manage-view-clusters.html#emr-view-cluster-console) for more information| - | `VPC CIDR` | Enter the [VPC CIDR](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-cidr-blocks.html) value. This value determines the number of [pods](../../reference/glossary.md#pod), [nodes](../../reference/glossary.md#nodes), or services your cluster can host (e.g., `10.0.1.6/16`)| - | `Authentication Mode` | Select the authentication mode you wish to perform for the cluster
  • **API_AND_CONFIG_MAP** - Select this if you want to use both the API and the ConfigMap to authenticate who can access the cluster. This option is recommended if you are migrating from the old `aws-auth` ConfigMap method (which is deprecated) to the new API method.
    Refer to [Grant IAM users access to Kubernetes with EKS access entries](https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html) for more information.
  • **API** - Select this if you want to manage access using a single API. This option is recommended as this is the best practice for EKS cluster creation.
    Refer to [Manage User Access with API](https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html) for more information.
  • **CONFIG MAP** - Select this if you want to rely on the original (but deprecated) way of authentication using `aws-auth` ConfigMap. This option is not recommended anymore.
    Refer to [Grant IAM users access to Kubernetes. with a ConfigMap.](https://docs.aws.amazon.com/eks/latest/userguide/auth-configmap.html) for more information.
| - | `Enable IRSA` | Turn on this IRSA toggle (IAM Roles for [Service Accounts](https://kubernetes.io/docs/concepts/security/service-accounts/)) if you want your application to securely connect to other AWS services using a service account| - | `Allow public access` | Turn on this toggle if you want to allow your [EKS control plane](https://docs.aws.amazon.com/eks/latest/best-practices/control-plane.html) endpoint to be accessed publicly from anywhere without the VPC. It is recommended to keep this toggle disabled | - | `Cluster Version` | Select your preferred Kubernetes cluster version. If you are running a live application in a production environment, it is recommended that you select a stable version instead of the latest version | - -
- - ![Figure 19: Create Kubernetes Cluster](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/create-k8s-cluster.jpg) - -
- -* Refer the following table (containing **optional** fields) and enter the details in the corresponding fields: - - | Field | Description | - | :--- | :--- | - | `Team` | Select the team whose tag you want to attach to the cluster resources. For example, when you select `qa-team`, it means that the cluster resources (pods, ConfigMaps, etc.) created with this cluster are owned by the QA team | - | `Environment` | Select the environment. For example, when you select `qa`, it means that this cluster is a part of the QA environment | - | `Availability Zones` | Select availability zones (e.g., `us-east-2b` and `ap-west-1a`) if you prefer to distribute your worker nodes across multiple zones to make your cluster highly available.
This means that even if one availability zone goes down (e.g., `us-east-2b`), the other zones (e.g., `ap-west-1a`) keep your cluster up and running | - | `Private access CIDRs` | Enter the private access CIDRs (IP addresses that are allowed to reach the API server). If you had turned off the **Allow public access** toggle, then your EKS control plane endpoint would be private.
It then becomes crucial to enter the private access CIDRs so that the API server recognizes them and allows them to access the endpoint | - -* Click **Create Cluster**. +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/clusterenv/cluster-environment-nav.jpg) +
Figure 1: Navigating to Clusters & Environments
--- -## Add Isolated Cluster [![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/elements/EnterpriseTag.svg)](https://devtron.ai/pricing) - -{% hint style="warning" %} -### Who Can Perform This Action? -Users need to have super-admin permission to add an isolated/air-gapped cluster to Devtron. -{% endhint %} - -For air-gapped Kubernetes clusters with restricted inbound and outbound traffic, Devtron enables seamless management using isolated clusters. While these are not actual clusters with API endpoints, they provide a convenient way to deploy applications in such environments. - -1. On the **New Cluster** modal window, select **Add Isolated Cluster**. - - ![Figure 20: Selecting Isolated Cluster](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/cluster-env-select-isolated-cluster.jpg) - -2. Add a cluster name (e.g. *banking-airgapped-cluster*) and click **Save Cluster**. - - ![Figure 21: Saving Isolated Cluster](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/cluster-env-isolated-cluster-save.jpg) - -You have successfully configured an isolated cluster. - -![Figure 22: New Isolated Cluster](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/cluster-env-new-isolated-cluster.jpg) - -{% hint style="info" %} -### Note -When you deploy to an isolated environment, Devtron automatically packages application manifests and images into a [Helm chart](../../reference/glossary.md#helm-chartspackages). You can then either: -* Download and install manually in a fully air-gapped setup. -* Push it to an [OCI registry](../global-configurations/container-registries.md) (provided pushing of helm package is enabled), allowing manifests to be pulled manually or automatically via Devtron on an air-gapped cluster (if pull access to the OCI registry is available). -{% endhint %} - ---- - -## Add Environment to a Cluster - -{% hint style="warning" %} -### Who Can Perform This Action? -Users need to have super-admin permission to add an environment to a cluster. -{% endhint %} - -After adding a cluster to Devtron ([Kubernetes Cluster](#add-kubernetes-cluster), [Isolated Cluster](#add-isolated-cluster), and a newly created cluster), initially it has no environments. - -1. Select the Cluster to which you want to add an Environment and click **Add Environment**. Alternatively you can also hover over the cluster and click `+` icon (Add Environment icon); an **Add Environment** modal window appears. - - ![Figure 23a: Adding an Environment](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/cluster-env-add-environment-option.jpg) - - ![Figure 23b: Clicking 'Add Environment'](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/cluster-env-click-add-environment.jpg) - -2. Fill the following details within the **Add Environment** modal window. - - | Field | Description | - | :--- | :--- | - | **Environment Name** | Enter a name for your environment. | - | **Enter Namespace** | Enter a namespace corresponding to your environment.
**Note**: If this namespace does not exist in your cluster, Devtron will create it. If it already exists, Devtron will map the environment to it.
| - | **Environment Type** | Select your environment type:
  • `Production`
  • `Non-production`
Note: Devtron shows deployment metrics (DORA metrics) for environments tagged as `Production` only. | - - ![Figure 24: Saving an Environment](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/cluster-env-add-env-fields.jpg) - -3. **Assign a Category to environment** [![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/elements/EnterpriseTag.svg)](https://devtron.ai/pricing) - Devtron allows you to assign a category (for e.g. Prod, QA, Dev, or Stage) to your environments. This enables category-based filtering in the UI, allowing you to determine whether an application is deployed to Prod, QA, Dev, or Stage environment.

- To assign a category to your environment, follow the steps below: - 1. Select a category from the dropdown under **Assign Category** and click **Update**. - - ![Figure 25: Assigning Category](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/cluster-env-assign-category-env.jpg) - - 2. The selected category will be assigned to the environment. - - ![Figure 26: Category Assigned](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/cluster-env-assign-category-category-added-env.jpg) - - **Note:** Before assigning a category, you must first add the category. To add a category, refer to [Adding a Category](#add-category) section to learn more. - -4. **Add/Edit labels to namespace** [![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/elements/EnterpriseTag.svg)](https://devtron.ai/pricing) - You can attach labels to your specified namespace in the Kubernetes cluster. Using labels will help you filter and identify resources via CLI or other Kubernetes tools. [Click here](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/) to know more about labels. - - ![Figure 27: Adding Labels to Namespace](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/labels-namespace.gif) - -5. Click **Save**. Your new environment will be visible in your cluster as shown below. - - ![Figure 28: Newly Created Environment in the Cluster](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/added-env.jpg) - ---- - -## Edit Environment - -{% hint style="warning" %} -### Who Can Perform This Action? -Users need to have super-admin permission to edit an environment in a cluster. -{% endhint %} - -You can also make edits to an existing environment if needed. - -1. Navigate to **Environments** tab. - -2. Hover over the environment you wish to edit, and click the **edit** icon. - -![Figure 29: Editing Environment in the Cluster](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/cluster-env-edit-env.jpg) - -3. Edit the environment fields. - -| Feature | Editable? | -| :----------------------------------- | :-------- | -| **Production/Non-Production Option** | ✅ Yes | -| **Description** | ✅ Yes | -| **Labels for Namespace** | ✅ Yes | -| **Assign a category** | ✅ Yes | -| **Environment Name** | ❌ No | -| **Namespace Name** | ❌ No | - -4. Click **Update** to save your changes. - -![Figure 30: Updating Environment in the Cluster](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/cluster-env-update-env.jpg) - ---- - -## Delete Environment - -{% hint style="warning" %} -### Who Can Perform This Action? -Users need to have super-admin permission to delete an environment from a cluster. -{% endhint %} - -If an environment is no longer needed, you can delete it by following these steps: - -1. Navigate to **Environments** tab. - -2. Hover over the environment you wish to remove, and click the **delete** icon. - - ![Figure 31: Deleting Environment](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/cluster-env-delete-env.jpg) - -{% hint style="warning" %} -### Important -Environment deletion is not allowed if any application has a CD pipeline corresponding to the environment. In such a case, go to [Workflow Editor](../creating-application/workflow/README.md) and delete the deployment pipeline first, and then return to delete the environment. This action is irreversible, so make sure no critical applications or resources depend on the environment before deleting. -{% endhint %} - -2. A confirmation dialog will appear. Click **Delete** to permanently delete the environment. - - ![Figure 32: Confirming Environment Deletion](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/cluster-env-confirm-delete-env.jpg) - ---- - -## Add Category - -Before assigning a category, you must first add the category. To add a category, follow the steps below: - -1. Go to **Global Configurations**. - - ![Figure 33: Navigating to Global Configurations](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/assign-category-global-config.jpg) - -2. Select **Clusters and Environments** and click **Manage Categories**, a modal window will open. - - ![Figure 34: Clicking Manage Categories](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/assign-category-manage-categories.jpg) - -3. Enter the name of the category in the **CATEGORIES** field and provide a description in the **DESCRIPTION** field. - - {% hint style="info" %} - ### Note: - * The category name must be unique and cannot be changed once defined. It should be a minimum of 3 characters. - * It can contain alphanumeric characters, but cannot start with a number. - * The name should be in lowercase only. - {% endhint %} - - ![Figure 35: Adding Category](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/assign-category-add.jpg) - -4. If you wish to add more categories, click **Add Category**, a new row will appear, enter the name and description of the new category. - - ![Figure 36: Adding More Categories](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/assign-category-add-category.jpg) - -5. Click **Update** and your categories will be added. - - ![Figure 37: Categories Added](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/assign-category-update.jpg) - - -## Delete Category - -To delete a category, follow the steps below: - -1. Go to **Global Configurations**. - - ![Figure 38: Navigating to Global Configurations](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/assign-category-global-config.jpg) - -2. Select **Clusters and Environments** and click **Manage Categories**, a modal window will open. - - ![Figure 39: Clicking Manage Categories](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/assign-category-manage-categories.jpg) - -3. Select the `x` icon next to the categories you want to delete. - - **Note**: You cannot delete a category if it is assigned to a cluster or environment. - - ![Figure 40: Clicking 'x' icon](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/assign-category-x-icon.jpg) - -4. Click **Update** to delete the categories. ---- - -## Extras - -### Get Cluster Credentials - -{% hint style="info" %} -### Prerequisite -[kubectl](https://kubernetes.io/docs/tasks/tools/) must be installed on the bastion. -{% endhint %} - -{% hint style="info" %} -### Note -We recommend using a self-hosted URL instead of a cloud-hosted URL. Refer to the benefits of a [self-hosted URL](#benefits-of-self-hosted-url). -{% endhint %} - -You can get the **Server URL** and **Bearer Token** by running the following command, depending on the cluster provider: - -{% tabs %} -{% tab title="k8s Cluster Providers" %} -If you are using EKS, AKS, GKE, Kops, Digital Ocean managed Kubernetes, run the following command to generate the server URL and bearer token: -```bash -curl -O https://raw.githubusercontent.com/devtron-labs/utilities/main/kubeconfig-exporter/kubernetes_export_sa.sh && bash kubernetes_export_sa.sh cd-user devtroncd -``` -{% endtab %} -{% tab title="Microk8s Cluster" %} -If you are using a **`microk8s cluster`**, run the following command to generate the server URL and bearer token: - -```bash -curl -O https://raw.githubusercontent.com/devtron-labs/utilities/main/kubeconfig-exporter/kubernetes_export_sa.sh && sed -i 's/kubectl/microk8s kubectl/g' \ -kubernetes_export_sa.sh && bash kubernetes_export_sa.sh cd-user \ -devtroncd -``` -{% endtab %} -{% endtabs %} - -![Figure 41: Generating Cluster Credentials](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/cluster-and-environments/generate-cluster-credentials.jpg) +## Table of Contents -### Benefits of Self-hosted URL +### 1. [Add Clusters](./clusters/add-clusters.md) +Learn how to connect an existing Kubernetes cluster, create a new managed cluster, or add an isolated air gapped cluster. +Covers all connection methods, TLS configuration, Prometheus setup, and assigning categories. -* **Disaster Recovery**: - * You cannot edit the server URL of a cloud-specific provider. If you're using an EKS URL (e.g.` *****.eu-west-1.elb.amazonaws.com`), it will be a tedious task to add a new cluster and migrate all the services one by one. - * But in case of using a self-hosted URL (e.g. `clear.example.com`), you can just point to the new cluster's server URL in DNS manager and update the new cluster token and sync all the deployments. +### 2. [Manage Environments](./clusters/manage-environments.md) +Create and manage environments inside your clusters. +Assign namespaces, define environment type, add labels, and update or delete environments when needed. -* **Easy Cluster Migrations**: - * In case of managed Kubernetes clusters (like EKS, AKS, GKE etc) which is a cloud provider specific, migrating your cluster from one provider to another will result in waste of time and effort. - * On the other hand, migration for a self-hosted URL is easy, as the URL belongs to a single hosted domain independent of the cloud provider. +### 3. [Manage Categories](./clusters/manage-categories.md) +Create and organize categories like dev, QA, stage, or prod. +Use categories to group clusters and environments for easy filtering in the Devtron UI. diff --git a/docs/user-guide/global-configurations/clusters/add-clusters.md b/docs/user-guide/global-configurations/clusters/add-clusters.md new file mode 100644 index 0000000000..c83f6c51ca --- /dev/null +++ b/docs/user-guide/global-configurations/clusters/add-clusters.md @@ -0,0 +1,443 @@ +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +# Add Clusters + +Connecting your Kubernetes clusters to Devtron is the foundation for deploying, observing, and managing applications across your infrastructure. This page walks you through the different ways to add a cluster, whether you are connecting an existing cluster, using a kubeconfig file, or working with isolated and air-gapped setups. You will also learn how to configure connection types, set up TLS, enable application metrics, and assign categories for better organization. + +## Connect Your Existing Kubernetes Cluster + +:::caution Who Can Perform This Action? +Users need to have super-admin permission to add a Kubernetes cluster to Devtron. +::: + + +1. Go to **Global Configurations** → **Clusters & Environments** → **Add Cluster**. + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/clusterenv/cluster-env-add-clusters-new.jpg) +
Figure 1: Adding a Cluster
+ +2. Select **Connect Kubernetes Cluster**. + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/clusterenv/cluster-env-select-connect-cluster.jpg) +
Figure 2: Selecting 'Connect Cluster'
+ +3. You can choose to add your Kubernetes cluster using either of the following methods: + + | Method | Description | + | :----------------------------------------------------------------------- | :------------------------------------------------ | + | [Server URL & Bearer Token](#method-1-add-cluster-using-server-url--bearer-token) | Use Server URL and Bearer Token to add a cluster. | + | [Kubeconfig](#method-2-add-cluster-using-kubeconfig) | Use `Kubeconfig` file to add a cluster. | + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/clusterenv/cluster-env-choosing-method.jpg) +
Figure 3: Choosing a Method
+ +4. Click **Save Cluster** and your cluster will be connected to Devtron. + +### Method 1: Add Cluster Using Server URL & Bearer Token + +:::info Note +Refer to [Get Cluster Credentials](#get-cluster-credentials) to learn the process of getting the Server URL and bearer token. +::: + +1. To add a Kubernetes cluster on Devtron using Server URL and Bearer Token, provide the following information: + + | Field | Description | + | :--- | :--- | + | **Name** | Enter the name of your cluster. | + | **Server URL** | Enter the Server URL of your cluster (with https)
**Note**: We recommend using a [self-hosted URL](#benefits-of-self-hosted-url) instead of a cloud-hosted URL. | + | **Bearer Token** | Paste the bearer token of your cluster | + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/clusterenv/cluster-env-add-cluster-cred.jpg) +
Figure 4: Enter Cluster Credentials
+ +2. Complete the remaining steps (optional): + * [Choose Connection Type](#choose-method-of-connection-) + * [Use Secure TLS Connection](#use-secure-tls-connection) + * [Configure Prometheus](#configure-prometheus-enable-application-metrics) + * [Assign a Category](#assign-category-to-a-cluster) + +:::tip Tip +If you have a **kubeconfig** file ready, you may skip the above process and refer to [Add Cluster Using Kubeconfig](#method-2-add-cluster-using-kubeconfig) instead. +::: + +### Method 2: Add Cluster Using Kubeconfig + +In case you prefer to add clusters using kubeconfig, follow these steps: + +1. Copy and paste your kubeconfig file into the editor. Alternatively, you may browse and select the file as well. + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/clusterenv/cluster-env-add-cluster-kubeconfig.jpg) +
Figure 5: Choosing Kubeconfig Option
+ +2. Click the **Get Cluster** button. This action will display the cluster details alongside the kubeconfig. + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/clusterenv/cluster-env-get-cluster.jpg) +
Figure 6: Get Cluster List from Kubeconfig
+ +3. If your kubeconfig file lists multiple clusters, they will be displayed in the window. Use the checkboxes to select the desired cluster(s) and click **Save**. + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/clusterenv/cluster-env-kubeconfig-save-cluster.jpg) +
Figure 7: Clicking Save
+ +4. Click the saved cluster, and complete the remaining steps (optional): + * [Choose Connection Type](#choose-method-of-connection-) + * [Use Secure TLS Connection](#use-secure-tls-connection) + * [Configure Prometheus](#configure-prometheus-enable-application-metrics) + * [Assign a Category](#assign-category-to-a-cluster) + +:::caution Note +Ensure that the **kubeconfig** file has admin permissions. It is crucial for Devtron to have the necessary administrative privileges; otherwise, it may encounter failures or disruptions during deployments and other operations. Admin permission is essential to ensure the smooth functioning of Devtron and to prevent any potential issues that may arise due to insufficient privileges. +::: + +--- + +## Create Kubernetes Cluster + +### Prerequisites + +:::caution Who Can Perform This Action? +Only a [Super-Admin](../../global-configurations/authorization/user-access.md#grant-super-admin-permission) can add an OCI Registry in Devtron. +::: + +To create an EKS cluster, you need: + +* [OpenTofu](#install-opentofu) (`tofu-controller`) chart installed in your Devtron instance. Refer to [Getting Started with OpenTofu](https://opentofu.org/docs/intro/) for more information. + +* [FluxCD controller](#install-fluxcd-controller) (`flux2`) chart installed in your Devtron instance + +* [Secret](#create-a-secret) containing AWS credentials + +#### Install OpenTofu + +Follow the steps mentioned below to install OpenTofu: + +1. Navigate to **Global Configurations** → **Container/OCI Registry**. + +2. Refer to the following table and enter the information in the appropriate fields: + + | Field | Value | + | :--- | :--- | + | **Registry provider** | Other | + | **Registry type** | Public Registry | + | **Name** | `tofu` | + | **Registry URL** | `ghcr.io` | + | **List of repositories** | `flux-iac/charts/tofu-controller` | + +
+ + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/clusterenv/container-oci-registry.jpg) +
Figure 8: Container/OCI Registry
+ +3. Click **Save**. The `tofu-controller` chart will be displayed in the [Chart Store](../../../user-guide/deploy-chart/README.md) page. + +4. Navigate to **Chart Store** and search for `tofu-controller` in the search box. + +5. Select the chart and click **Configure & Deploy**. The following page will be displayed. + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/clusterenv/tofu-controller-chart.jpg) +
Figure 9: Tofu Controller Chart
+ +6. Enter the app name (e.g., `tofu-controller`) in the **App Name** field. + +7. Select your project in the **Project** drop-down box. + +8. Select the environment where you want to deploy the chart in the **Deploy to Environment** drop-down box. + +:::caution Important Note +The environment/namespace where you install OpenTofu must be the same environment/namespace where the FluxCD controller will be installed (the next step) to create the cluster. +::: + +9. Choose either **Helm** or **GitOps** [if configured](../../../user-guide/global-configurations/gitops.md) as the deployment method. + +10. Click **Deploy Chart**. OpenTofu will be installed in your Devtron instance. + +Now that OpenTofu is installed, you can [install the FluxCD controller](#install-fluxcd-controller) in your Devtron instance. + +#### Install FluxCD Controller + +Follow the steps mentioned below to install OpenTofu: + +1. Navigate to [Chart Store](../../../user-guide/deploy-chart/README.md) and search for `flux2` in the search box. + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/clusterenv/flux-cd-chart.jpg) +
Figure 10: "flux2" Chart
+ +2. Select the chart and click **Deploy**. + +3. Enter the app name (e.g., `tofu2`) in the **App Name** field. + +4. Select your project in the **Project** drop-down box. + +5. Select the environment where you want to deploy the chart in the **Deploy to Environment** drop-down box. + +:::caution Important Note +The environment/namespace where you install the FluxCD controller must be the same environment/namespace where OpenTofu was installed to create the cluster. +::: + +6. Choose either **Helm** or **GitOps** [if configured](../../../user-guide/global-configurations/gitops.md) as the deployment method. + +7. Click **Deploy Chart**. FluxCD controller will be installed in your Devtron instance. + +Now that FluxCD controller is installed, the final prerequisite is to [create a secret](#create-a-secret) containing your AWS credentials. + +#### Create a Secret + +:::caution Who Can Perform This Action? +User needs to be an [Admin](../../../user-guide/global-configurations/authorization/user-access.md#kubernetes-resources-permissions) of the Kubernetes resource or a [Super-Admin](../../../user-guide/global-configurations/authorization/user-access.md#kubernetes-resources-permissions) to create a Secret. + +::: + +Follow the steps mentioned below to create a secret containing your AWS credentials: + +1. Navigate to **Resource Browser**. + +2. Click the **default_cluster**. + +3. Click **Create Resource**. + +4. Copy the YAML snippet given below and paste it in the **Create Kubernetes Resource** page. + + ```yaml + apiVersion: v1 + data: + AWS_ACCESS_KEY_ID: SDKDI382DKD0= + AWS_SECRET_ACCESS_KEY: YVZsSIEOwcFRSMjlvM2xaUjSIE823J3PT0= + kind: Secret + metadata: + name: tf-aws-creds + namespace: your-namespace + type: Opaque + ``` + +:::caution Important Note +* It is recommended to keep the `name` attribute to `tf-aws-creds`. Changing this value might make the secret go unrecognized. + +* The secret must be created in the same namespace where OpenTofu and FluxCD controller are installed. + +* When creating a secret, kindly ensure that your `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` are encoded in base64. Go to [Devtron Base64 Encoder](https://strings.devtron.ai/base64-encoder) to encode your AWS credentials. + +::: + +5. Enter your AWS access key against the `AWS_ACCESS_KEY_ID` attribute and AWS secret key against the `AWS_SECRET_ACCESS_KEY` attribute. Refer to [Create New Access Keys](https://docs.aws.amazon.com/keyspaces/latest/devguide/create.keypair.html) for more information. + +6. Click **Apply**. The secret will be created. + +Now that all the prerequisites are met, you can proceed to create a cluster from the **Create Kubernetes Cluster** page. + +### Steps + +:::caution Who Can Perform This Action? +Only a [Super-Admin](../../global-configurations/authorization/user-access.md#grant-super-admin-permission) can create a Kubernetes cluster. +::: + +* Navigate to **Global Configurations** → **Clusters & Environments** → **New Cluster** → **Create Kubernetes Cluster**. + +* Refer the following table (containing **mandatory** fields) and enter the details in the corresponding fields: + + | Field | Description | + | :--- | :--- | + | `Cluster Provider` | Select the type of cluster you'd like to create based on your requirement | + | `Name` | Enter the name of your Kubernetes cluster (e.g., `eks-cluster-nonprod` in the case of EKS and `rancher-cluster-qa` in the case of Rancher) | + | `Region` | Select the region where your cluster is hosted (e.g., `us-east-1` in the case of EKS and `ap-south-3` in the case of Rancher)
Refer to [View cluster details using the AWS Management Console](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-manage-view-clusters.html#emr-view-cluster-console) for more information| + | `VPC CIDR` | Enter the [VPC CIDR](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-cidr-blocks.html) value. This value determines the number of [pods](../../../reference/glossary.md#pod), [nodes](../../../reference/glossary.md#nodes), or services your cluster can host (e.g., `10.0.1.6/16`)| + | `Authentication Mode` | Select the authentication mode you wish to perform for the cluster
  • **API_AND_CONFIG_MAP** - Select this if you want to use both the API and the ConfigMap to authenticate who can access the cluster. This option is recommended if you are migrating from the old `aws-auth` ConfigMap method (which is deprecated) to the new API method.
    Refer to [Grant IAM users access to Kubernetes with EKS access entries](https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html) for more information.
  • **API** - Select this if you want to manage access using a single API. This option is recommended as this is the best practice for EKS cluster creation.
    Refer to [Manage User Access with API](https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html) for more information.
  • **CONFIG MAP** - Select this if you want to rely on the original (but deprecated) way of authentication using `aws-auth` ConfigMap. This option is not recommended anymore.
    Refer to [Grant IAM users access to Kubernetes. with a ConfigMap.](https://docs.aws.amazon.com/eks/latest/userguide/auth-configmap.html) for more information.
| + | `Enable IRSA` | Turn on this IRSA toggle (IAM Roles for [Service Accounts](https://kubernetes.io/docs/concepts/security/service-accounts/)) if you want your application to securely connect to other AWS services using a service account| + | `Allow public access` | Turn on this toggle if you want to allow your [EKS control plane](https://docs.aws.amazon.com/eks/latest/best-practices/control-plane.html) endpoint to be accessed publicly from anywhere without the VPC. It is recommended to keep this toggle disabled | + | `Cluster Version` | Select your preferred Kubernetes cluster version. If you are running a live application in a production environment, it is recommended that you select a stable version instead of the latest version | + +
+ + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/clusterenv/create-k8s-cluster.jpg) +
Figure 11: Create Kubernetes Cluster
+ +
+ +* Refer the following table (containing **optional** fields) and enter the details in the corresponding fields: + + | Field | Description | + | :--- | :--- | + | `Team` | Select the team whose tag you want to attach to the cluster resources. For example, when you select `qa-team`, it means that the cluster resources (pods, ConfigMaps, etc.) created with this cluster are owned by the QA team | + | `Environment` | Select the environment. For example, when you select `qa`, it means that this cluster is a part of the QA environment | + | `Availability Zones` | Select availability zones (e.g., `us-east-2b` and `ap-west-1a`) if you prefer to distribute your worker nodes across multiple zones to make your cluster highly available.
This means that even if one availability zone goes down (e.g., `us-east-2b`), the other zones (e.g., `ap-west-1a`) keep your cluster up and running | + | `Private access CIDRs` | Enter the private access CIDRs (IP addresses that are allowed to reach the API server). If you had turned off the **Allow public access** toggle, then your EKS control plane endpoint would be private.
It then becomes crucial to enter the private access CIDRs so that the API server recognizes them and allows them to access the endpoint | + +* Click **Create Cluster**. + +--- + +## Add Isolated Cluster + +:::caution Who Can Perform This Action? +Users need to have super-admin permission to add an isolated/air-gapped cluster to Devtron. +::: + +For air-gapped Kubernetes clusters with restricted inbound and outbound traffic, Devtron enables seamless management using isolated clusters. While these are not actual clusters with API endpoints, they provide a convenient way to deploy applications in such environments. + +1. On the **New Cluster** modal window, select **Add Isolated Cluster**. + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/clusterenv/cluster-env-select-isolated-cluster.jpg) +
Figure 12: Selecting Isolated Cluster
+ +2. Add a cluster name (e.g. *banking-airgapped-cluster*) and click **Save Cluster**. + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/clusterenv/cluster-env-isolated-cluster-save.jpg) +
Figure 13: Saving Isolated Cluster
+ +You have successfully configured an isolated cluster. + +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/clusterenv/cluster-env-new-isolated-cluster.jpg) +
Figure 14: New Isolated Cluster
+ +:::info Note +When you deploy to an isolated environment, Devtron automatically packages application manifests and images into a [Helm chart](../../../reference/glossary.md#helm-chartspackages). You can then either: +* Download and install manually in a fully air-gapped setup. +* Push it to an [OCI registry](../../global-configurations/container-registries.md) (provided pushing of helm package is enabled), allowing manifests to be pulled manually or automatically via Devtron on an air-gapped cluster (if pull access to the OCI registry is available). +::: + +--- + +## Extras + +### Assign Category to a Cluster + +Devtron allows you to assign a category (for e.g. Prod, QA, Dev, or Stage) to your clusters. This enables category-based filtering in the UI, allowing you to determine whether an application is deployed to the Prod, QA, Dev, or Stage environment. + +Before assigning a category, you must first add the category. To add a category, refer to the [Adding a Category](manage-categories.md#add-category) section to learn more. + +To assign a category to a cluster, follow the steps below: + +1. Select a category from the dropdown under **Assign Category** and click **Update Cluster**. + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/clusterenv/cluster-env-assign-category-cluster.jpg) +
Figure 15: Assigning Category
+ +2. The selected category will be assigned to the cluster. + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/clusterenv/cluster-env-assign-category-category-added-cluster.jpg) +
Figure 16: Category Assigned
+ + +### Choose Method of Connection + +When adding a new cluster to Devtron, you must choose how Devtron will connect to it. There are three connection options available: + +#### Direct Connection +Clusters with a directly accessible API server endpoint, either publicly or via private peering, can be added as Direct Connection clusters. +* Devtron connects directly without an intermediary. +* Recommended when the cluster is publicly accessible or has a direct network route from Devtron. + +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/clusterenv/cluster-env-direct-connection-1.jpg) +
Figure 17a: Choosing Direct Connection
+ +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/clusterenv/cluster-env-direct-connection-2.jpg) +
Figure 17b: Choosing Direct Connection
+ +#### Via Proxy + +For security reasons, some Kubernetes clusters are deployed behind a proxy. In this setup, Devtron routes all communication through the specified proxy URL. +* Use this option when network restrictions require traffic to go through a proxy server. +* Requires specifying a **Proxy URL** (e.g., `http://proxy.example.org:3128`). +* **Limitation**: Deployments via [GitOps (ArgoCD)](../../../reference/glossary.md#gitops) are not recommended for clusters connected via proxy. + +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/clusterenv/cluster-env-via-proxy.jpg) +
Figure 18: Choosing 'Via Proxy'
+ +#### Via SSH Tunnel + +When a direct connection isn't possible, Devtron can connect to the Kubernetes cluster through an SSH tunnel, ensuring secure and encrypted communication. +* Requires: + * **SSH Server URL** (e.g., `http://proxy.example.org`). + * **Username** for authentication. + * **Authentication Method**: + * Password + * SSH Private Key + * Both Password & SSH Private Key +* **Limitation**: Deployments via [GitOps (ArgoCD)](../../../reference/glossary.md#gitops) are **not recommended** for clusters connected via SSH Tunnel. + +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/clusterenv/cluster-env-via-ssh.jpg) +
Figure 19: Choosing 'Via SSH Tunnel'
+ + +### Use Secure TLS Connection + +For a secure cluster connection, you can opt for TLS connection, where you need to provide Certificate Authority Data, a TLS Key, and a TLS Certificate. + +If your cluster is managed (e.g., [EKS](https://aws.amazon.com/eks/), [AKS](https://learn.microsoft.com/en-us/azure/aks/), [GKE](https://cloud.google.com/kubernetes-engine)), you might need to download these certificates from your cloud provider’s dashboard or API. + +| Field | Description | +|--------|------------| +| **Certificate Authority (CA) Data** | The CA certificate (see: [example](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/clusterenv/kubeconfig-entry.jpg)) used to verify the Kubernetes API server’s identity. | +| **TLS Key** | The private key associated with the client certificate for authentication. | +| **TLS Certificate** | The client certificate used to authenticate with the Kubernetes API server. | + +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/clusterenv/cluster-env-secure-tls-1.jpg) +
Figure 20a: Using Secure TLS Connection
+ +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/clusterenv/cluster-env-secure-tls-2.jpg) +
Figure 20b: Using Secure TLS Connection
+ +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/clusterenv/cluster-env-secure-tls-3.jpg) +
Figure 20c: Using Secure TLS Connection
+ +### Configure Prometheus (Enable Application Metrics) + +If you want to see application metrics against the applications deployed in the cluster, Prometheus must be deployed in the cluster. Prometheus is a powerful tool to provide graphical insight into your application behavior. + +Enable application metrics to configure Prometheus as shown below. In case it is not available, make sure to install the **Monitoring (Grafana)** integration from [Devtron Stack Manager](../../stack-manager.md) to configure Prometheus. + +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/clusterenv/cluster-env-enable-app-metrics.jpg) +
Figure 21: Enabling Application Metrics
+ +Provide the information in the following fields: + +| Field | Description | +| :--- | :--- | +| **Prometheus endpoint** | Provide the URL of your Prometheus | +| **Authentication Type** | Prometheus supports two authentication types:
  • **Basic**: If you select the `Basic` authentication type, then you must provide the `Username` and `Password` of Prometheus for authentication.
  • **Anonymous**: If you select the `Anonymous` authentication type, then you do not need to provide the `Username` and `Password`.
    **Note**: The fields `Username` and `Password` will not be available by default.
| +| **TLS Key** & **TLS Certificate** | These fields are optional and can be used when you use a customized URL. | + +Click **Save Cluster** to save your cluster on Devtron. + +### Get Cluster Credentials + +:::info Prerequisite +[kubectl](https://kubernetes.io/docs/tasks/tools/) must be installed on the bastion. +::: + +:::info Note +We recommend using a self-hosted URL instead of a cloud-hosted URL. Refer to the benefits of a [self-hosted URL](#benefits-of-self-hosted-url). +::: + +You can get the **Server URL** and **Bearer Token** by running the following command, depending on the cluster provider: + + + +If you are using EKS, AKS, GKE, Kops, Digital Ocean managed Kubernetes, run the following command to generate the server URL and bearer token: +```bash +curl -O https://raw.githubusercontent.com/devtron-labs/utilities/main/kubeconfig-exporter/kubernetes_export_sa.sh && bash kubernetes_export_sa.sh cd-user devtroncd +``` + + +If you are using a **`microk8s cluster`**, run the following command to generate the server URL and bearer token: + +```bash +curl -O https://raw.githubusercontent.com/devtron-labs/utilities/main/kubeconfig-exporter/kubernetes_export_sa.sh && sed -i 's/kubectl/microk8s kubectl/g' \ +kubernetes_export_sa.sh && bash kubernetes_export_sa.sh cd-user \ +devtroncd +``` + + + +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/clusterenv/generate-cluster-credentials.jpg) +
Figure 22: Generating Cluster Credentials
+ +#### Benefits of Self-hosted URL + +* **Disaster Recovery**: + * You cannot edit the server URL of a cloud-specific provider. If you're using an EKS URL (e.g.` *****.eu-west-1.elb.amazonaws.com`), it will be a tedious task to add a new cluster and migrate all the services one by one. + * But in case of using a self-hosted URL (e.g. `clear.example.com`), you can just point to the new cluster's server URL in DNS manager and update the new cluster token and sync all the deployments. + +* **Easy Cluster Migrations**: + * In case of managed Kubernetes clusters (like EKS, AKS, GKE etc) which is a cloud provider specific, migrating your cluster from one provider to another will result in waste of time and effort. + * On the other hand, migration for a self-hosted URL is easy, as the URL belongs to a single hosted domain independent of the cloud provider. diff --git a/docs/user-guide/global-configurations/clusters/manage-categories.md b/docs/user-guide/global-configurations/clusters/manage-categories.md new file mode 100644 index 0000000000..94e19b2146 --- /dev/null +++ b/docs/user-guide/global-configurations/clusters/manage-categories.md @@ -0,0 +1,57 @@ +# Manage Categories + +Categories help you group and classify both clusters and environments based on your organization’s standards. Teams commonly use categories like prod, QA, dev, or stage for quick filtering and visual clarity across the Devtron UI. This page guides you through creating, updating, and deleting categories, along with the rules that govern naming and usage. + +## Add Category + +Before assigning a category, you must first add the category. To add a category, follow the steps below: + +1. Go to **Global Configurations** and click **Clusters and Environments**. + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/clusterenv/assign-category-global-config.jpg) +
Figure 1: Navigating to Global Configurations
+ +2. Click **Manage Categories**, a modal window will open. + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/clusterenv/assign-category-manage-categories.jpg) +
Figure 2: Clicking Manage Categories
+ +3. Click **Add Category**, a new row will appear, enter the name and description of the new category. + +:::info Note: +* The category name must be unique and cannot be changed once defined. It should be a minimum of 3 characters. +* It can contain alphanumeric characters, but cannot start with a number. +* The name should be in lowercase only. +::: + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/clusterenv/assign-category-add-category.jpg) +
Figure 3: Adding More Categories
+ +5. Click **Update** and your categories will be added. + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/clusterenv/assign-category-update.jpg) +
Figure 4: Categories Added
+ + +## Delete Category + +To delete a category, follow the steps below: + +1. Go to **Global Configurations** and click **Clusters and Environments**. + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/clusterenv/assign-category-global-config.jpg) +
Figure 5: Navigating to Global Configurations
+ +2. Click **Manage Categories**, a modal window will open. + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/clusterenv/assign-category-manage-categories.jpg) +
Figure 6: Clicking Manage Categories
+ +3. Select the `x` icon next to the categories you want to delete. + + **Note**: You cannot delete a category if it is assigned to a cluster or environment. + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/clusterenv/assign-category-x-icon.jpg) +
Figure 7: Clicking 'x' icon
+ +4. Click **Update** to delete the categories. diff --git a/docs/user-guide/global-configurations/clusters/manage-environments.md b/docs/user-guide/global-configurations/clusters/manage-environments.md new file mode 100644 index 0000000000..6784540a4b --- /dev/null +++ b/docs/user-guide/global-configurations/clusters/manage-environments.md @@ -0,0 +1,113 @@ +# Manage Environments + +Environments allow you to structure your deployment stages inside Devtron by mapping logical stages like dev, QA, staging, or production to actual namespaces within your clusters. Once a cluster is added, you can create environments, define their type, attach labels, and assign categories for cleaner filtering. This page explains how to add, edit, and delete environments. + +## Add Environment to a Cluster + +:::caution Who Can Perform This Action? +Users need to have super-admin permission to add an environment to a cluster. +::: + +After adding a cluster to Devtron ([existing Kubernetes cluster](./add-clusters.md#connect-your-existing-kubernetes-cluster), [Isolated cluster](./add-clusters.md#add-isolated-cluster-), or a [newly created cluster](./add-clusters.md#create-kubernetes-cluster-)), initially it has no environments. + +1. Select the cluster to which you want to add an Environment and click **Add Environment**. Alternatively you can also hover over the cluster and click `+` icon (Add Environment icon); an **Add Environment** modal window appears. + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/clusterenv/cluster-env-add-environment-option.gif) +
Figure 1a: Method A - Adding an Environment
+ + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/clusterenv/cluster-env-click-add-environment.gif) +
Figure 1b: Method B - Adding an Environment
+ +2. Fill the following details within the **Add Environment** modal window. + + | Field | Description | + | :--- | :--- | + | **Environment Name** | Enter a name for your environment. | + | **Enter Namespace** | Enter a namespace corresponding to your environment.
**Note**: If this namespace does not exist in your cluster, Devtron will create it. If it already exists, Devtron will map the environment to it. | + | **Environment Type** | Select your environment type:
  • `Production`
  • `Non-production`
Note: Devtron shows deployment metrics (DORA metrics) for environments tagged as `Production` only. | + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/clusterenv/cluster-env-add-env-fields.jpg) +
Figure 2: Saving an Environment
+ +3. **Assign a Category to environment** - Devtron allows you to assign a category (for e.g. Prod, QA, Dev, or Stage) to your environments. This enables category-based filtering in the UI, allowing you to determine whether an application is deployed to Prod, QA, Dev, or Stage environment.

+ To assign a category to your environment, follow the steps below: + 1. Select a category from the dropdown under **Assign Category** and click **Update**. + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/clusterenv/cluster-env-assign-category-env.jpg) +
Figure 3: Assigning Category
+ + 2. The selected category will be assigned to the environment. + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/clusterenv/cluster-env-assign-category-category-added-env.jpg) +
Figure 4: Category Assigned
+ + **Note:** Before assigning a category, you must first add the category. To add a category, refer to [Adding a Category](./manage-categories.md#add-category) section to learn more. + +4. **Add/Edit labels to namespace** - You can attach labels to your specified namespace in the Kubernetes cluster. Using labels will help you filter and identify resources via CLI or other Kubernetes tools. [Click here](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/) to know more about labels. + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/clusterenv/labels-namespace.gif) +
Figure 5: Adding Labels to Namespace
+ +5. Click **Save**. Your new environment will be visible in your cluster as shown below. + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/clusterenv/added-env.jpg) +
Figure 6: Newly Created Environment in the Cluster
+ +--- + +## Edit Environment + +:::caution Who Can Perform This Action? +Users need to have super-admin permission to edit an environment in a cluster. +::: + +You can also make edits to an existing environment if needed. + +1. Navigate to **Environments** tab. + +2. Hover over the environment you wish to edit, and click the **edit** icon. + +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/clusterenv/cluster-env-edit-env.jpg) +
Figure 7: Editing Environment in the Cluster
+ +3. Edit the environment fields. + +| Feature | Editable? | +| :----------------------------------- | :-------- | +| **Production/Non-Production Option** | ✅ Yes | +| **Description** | ✅ Yes | +| **Labels for Namespace** | ✅ Yes | +| **Assign a category** | ✅ Yes | +| **Environment Name** | ❌ No | +| **Namespace Name** | ❌ No | + +4. Click **Update** to save your changes. + +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/clusterenv/cluster-env-update-env.jpg) +
Figure 8: Updating Environment in the Cluster
+ +--- + +## Delete Environment + +:::caution Who Can Perform This Action? +Users need to have super-admin permission to delete an environment from a cluster. +::: + +If an environment is no longer needed, you can delete it by following these steps: + +1. Navigate to **Environments** tab. + +2. Hover over the environment you wish to remove, and click the **delete** icon. + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/clusterenv/cluster-env-delete-env.jpg) +
Figure 9: Deleting Environment
+ +:::caution Important +Environment deletion is not allowed if any application has a CD pipeline corresponding to the environment. In such a case, go to [Workflow Editor](../../creating-application/workflow/README.md) and delete the deployment pipeline first, and then return to delete the environment. This action is irreversible, so make sure no critical applications or resources depend on the environment before deleting. +::: + +2. A confirmation dialog will appear. Click **Delete** to permanently delete the environment. + + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/clusterenv/cluster-env-confirm-delete-env.jpg) +
Figure 10: Confirming Environment Deletion
diff --git a/docs/user-guide/global-configurations/container-registries.md b/docs/user-guide/global-configurations/container-registries.md old mode 100644 new mode 100755 index 6ca1076ca3..b52c93cc3f --- a/docs/user-guide/global-configurations/container-registries.md +++ b/docs/user-guide/global-configurations/container-registries.md @@ -2,7 +2,7 @@ ## Introduction -While [container registries](../../reference/glossary.md#container-registry) are typically used for storing [images](../../reference/glossary.md#image) built by the CI Pipeline, an OCI registry can store container images as well as other artifacts such as [helm charts](../../reference/glossary.md#helm-charts-packages). In other words, all container registries are OCI registries, but not all OCI registries are container registries. +While [container registries](../../reference/glossary.md#containeroci-registry) are typically used for storing [images](../../reference/glossary.md#image) built by the CI Pipeline, an OCI registry can store container images as well as other artifacts such as [helm charts](../../reference/glossary.md#helm-chartspackages). In other words, all container registries are OCI registries, but not all OCI registries are container registries. You can configure a container registry using any registry provider of your choice. It allows you to build, deploy, and manage your container images or charts with easy-to-use UI. @@ -14,11 +14,13 @@ You can configure a container registry using any registry provider of your choic 1. From the left sidebar, go to **Global Configurations** → **Container/OCI Registry**. - ![Figure 1: Container/OCI Registry](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/container-registries/add-registry.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/container-registries/add-registry.jpg) +
Figure 1: Container/OCI Registry
2. Click **Add Registry**. - ![Figure 2: Add a Registry](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/container-registries/add-container-registry-1.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/container-registries/add-container-registry.jpg) +
Figure 2: Add a Registry
3. Choose a provider from the **Registry provider** dropdown. View the [Supported Registry Providers](#supported-registry-providers). @@ -35,7 +37,7 @@ You can configure a container registry using any registry provider of your choic | **Authentication Type** | The credential input fields may differ depending on the registry provider, check [Registry Providers](#supported-registry-providers) | | **Push container images** | Tick this checkbox if you wish to use the repository to push container images. This comes selected by default and you may untick it if you don't intend to push container images after a CI build. If you wish to to use the same repository to pull container images too, read [Registry Credential Access](#registry-credential-access). | | **Push helm packages** | Tick this checkbox if you wish to [push helm charts to your OCI registry](#push-helm-packages) | - | **Use as chart repository** | Tick this checkbox if you want Devtron to [pull helm charts from your registry and display them on chart store](#use-as-chart-repository). Also, you will have to provide a list of repositories (present within your registry) for Devtron to successfully pull the helm charts. | + | **Use as chart repository** | Tick this checkbox if you want Devtron to pull helm charts from your registry and display them on chart store. Also, you will have to provide a list of repositories (present within your registry) for Devtron to successfully pull the helm charts. | | **Set as default registry** | Tick this checkbox to set your registry as the default registry hub for your images or artifacts | 6. Click **Save**. @@ -44,25 +46,21 @@ You can configure a container registry using any registry provider of your choic Upon enabling this option, Devtron supports the pushing of helm charts to your OCI registry. -This is possible through [isolated clusters](../global-configurations/cluster-and-environments.md#add-isolated-cluster) that facilitate air-gapped deployments. In other words, it generates a helm package that you can use to deploy your application in air-gapped clusters. +This is possible through [isolated clusters](../global-configurations/clusters/add-clusters#add-isolated-cluster-) that facilitate air-gapped deployments. In other words, it generates a helm package that you can use to deploy your application in air-gapped clusters. -If you have [configured your CD pipeline](../creating-application/workflow/cd-pipeline.md#deploying-to-an-isolated-environment) to push the helm package to your OCI registry, you can view the pushed helm package in your registry as shown below: +If you have [configured your CD pipeline](../creating-application/workflow/cd-pipeline.md) to push the helm package to your OCI registry, you can view the pushed helm package in your registry as shown below: -![Figure 3a: OCI Registry Page](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/use-cases/oci-push/pushed-artifacts.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/container-registries/pushed-artifacts.jpg) +
Figure 3a: OCI Registry Page
-![Figure 3b: Pushed Helm Chart](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/use-cases/oci-push/helm-chart.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/container-registries/helm-chart.jpg) +
Figure 3b: Pushed Helm Chart
-{% hint style="warning" %} - -### Use as Chart Repository - -{% hint style="info" %} - -### Prerequisite +:::info Prerequisite OCI registry with `Use as chart repository` option enabled. -{% endhint %} +::: Unlike Helm repos, OCI registries do not have an index file to discover all the charts. If you have helm packages pushed to your OCI registry, you can that registry as a chart repository. @@ -70,7 +68,7 @@ Upon enabling this option, Devtron can use your OCI registry as the chart source #### Tutorial -{% embed url="https://www.youtube.com/watch?v=9imC5MMz9gs" caption="Pulling Charts from an OCI Registry to Devtron" %} +
#### Steps @@ -94,7 +92,7 @@ Provide the following additional information apart from the common fields: | Fields | Description | | --- | --- | | **Registry URL** | Example of URL format: `xxxxxxxxxxxx.dkr.ecr..amazonaws.com` where `xxxxxxxxxxxx` is your 12-digit AWS account ID | -| **Authentication Type** | Select one of the authentication types:
  • **EC2 IAM Role**: Authenticate with workernode IAM role and attach the ECR policy (AmazonEC2ContainerRegistryFullAccess) to the cluster worker nodes IAM role of your Kubernetes cluster.
  • **User Auth**: It is a key-based authentication, attach the ECR policy (AmazonEC2ContainerRegistryFullAccess) to the [IAM user](https://docs.aws.amazon.com/AmazonECR/latest/userguide/get-set-up-for-amazon-ecr.html).
    • `Access key ID`: Your AWS access key
    • `Secret access key`: Your AWS secret access key ID
    | +| **Authentication Type** | Select one of the authentication types:
    • **EC2 IAM Role**: Authenticate with workernode IAM role and attach the ECR policy (AmazonEC2ContainerRegistryFullAccess) to the cluster worker nodes IAM role of your Kubernetes cluster.
    • `User Auth`: It is a key-based authentication, attach the ECR policy (AmazonEC2ContainerRegistryFullAccess) to the [IAM user](https://docs.aws.amazon.com/AmazonECR/latest/userguide/get-set-up-for-amazon-ecr.html).
    • `Access key ID`: Your AWS access key
    • `Secret access key`: Your AWS secret access key ID
    | ### Docker @@ -124,9 +122,9 @@ Provide the following additional information apart from the common fields: JSON key file authentication method can be used to authenticate with username and service account JSON file. Visit this [link](https://cloud.google.com/artifact-registry/docs/docker/authentication#json-key) to get the username and service account JSON file for this registry. -{% hint style="warning" %} +:::caution Remove all the white spaces from JSON key and wrap it in a single quote before pasting it in `Service Account JSON File` field -{% endhint %} +::: Provide the following additional information apart from the common fields: @@ -140,9 +138,9 @@ Provide the following additional information apart from the common fields: JSON key file authentication method can be used to authenticate with username and service account JSON file. Please follow [link](https://cloud.google.com/container-registry/docs/advanced-authentication#json-key) to get the username and service account JSON file for this registry. -{% hint style="warning" %} +:::caution Remove all the white spaces from JSON key and wrap it in single quote before pasting it in `Service Account JSON File` field -{% endhint %} +::: ### Quay @@ -163,11 +161,11 @@ Provide below information if you select the registry type as `Other`. | **Registry URL** | Enter the URL of your private registry | | **Username** | Provide the username of your account where you have created your registry | | **Password/Token** | Provide the password or token corresponding to the username of your registry | -| **Advanced Registry URL Connection Options** |
    • **Allow Only Secure Connection**: Tick this option for the registry to allow only secure connections
    • **Allow Secure Connection With CA Certificate**: Tick this option for the registry to allow secure connection by providing a private CA certificate (ca.crt)
    • **Allow Insecure Connection**: Tick this option to make an insecure communication with the registry (for e.g., when SSL certificate is expired)
    | +| **Advanced Registry URL Connection Options** |
    • **Allow Only Secure Connection**: Tick this option for the registry to allow only secure connections
    • **Allow Secure Connection With CA Certificate**: Tick this option for the registry to allow secure connection by providing a private CA certificate (ca.crt)
    • **Allow Insecure Connection**: Tick this option to make an insecure communication with the registry (for e.g., when SSL certificate is expired)
    | -{% hint style="info" %} +:::info You can use any registry which can be authenticated using `docker login -u -p `. However these registries might provide a more secured way for authentication, which we will support later. -{% endhint %} +::: ## Registry Credential Access @@ -196,14 +194,16 @@ If you select **Use Registry Credentials**, the clusters will be auto-injected w Click **Save**. -![Figure 4: Using Registry Credentials](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/container-registries/use-registry-credentials-1.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/container-registries/use-registry-credentials-1.jpg) +
    Figure 4: Using Registry Credentials
    ### Specify Image Pull Secret You can create a Secret by providing credentials on the command line. -![Figure 5: Using Image Pull Secret](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/container-registries/specify-image-pull-secret-1.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/global-configurations/container-registries/specify-image-pull-secret-1.jpg) +
    Figure 5: Using Image Pull Secret
    Create this Secret and name it `regcred` (let's say): @@ -214,16 +214,16 @@ kubectl create -n secret docker-registry regcred --docker-server=Figure 6: Delete an OCI Registry 2. Select your preferred OCI registry. 3. Click the **Delete** button. The OCI registry will be deleted. -{% hint style="warning" %} - -### Important Note - +:::caution Important Note If you used an OCI registry as a chart source, deleting the OCI registry will remove all its associated charts from the Chart Store. -{% endhint %} \ No newline at end of file +::: \ No newline at end of file diff --git a/docs/user-guide/global-configurations/deployment-charts.md b/docs/user-guide/global-configurations/deployment-charts.md old mode 100644 new mode 100755 index b8acf0b66f..04665e3ca9 --- a/docs/user-guide/global-configurations/deployment-charts.md +++ b/docs/user-guide/global-configurations/deployment-charts.md @@ -1,3 +1,10 @@ +--- +id: deployment-charts +title: Deployment Charts +sidebar_label: Deployment Charts +slug: /user-guide/app-management/configurations/deployment-charts +--- + # Deployment Charts ## Introduction @@ -6,13 +13,14 @@ Devtron Apps leverage helm charts to carry out deployment of your images and con For any use case not addressed by the default Helm charts, you can upload your own Helm chart and use it as a deployment chart in Devtron. -![Figure 1: Deployment Charts](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/deployment-charts/gc-deployment-charts.jpg) +![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/configurations/deployment-charts/deployment-charts.jpg) +
    Figure 1: Deployment Charts
    ### Tutorial This video contains a quick walkthrough of the steps mentioned in the [Preparing a Deployment Chart](#preparing-a-deployment-chart) section of this page and the subsequent uploading of the deployment chart on Devtron. -{% embed url="https://www.youtube.com/watch?v=jzMZa7bSiyA" caption="How to Upload your Deployment Chart in Devtron" %} +
    --- @@ -38,10 +46,9 @@ helm create my-custom-chart | `Version` | This is the chart version. Update this value for each new version of the chart (Required). | | `Description` | Give a description to your chart (Optional). | -{% hint style="info" %} -### Example of Chart.yaml +:::info Example of Chart.yaml [Click here](https://devtron-public-asset.s3.us-east-2.amazonaws.com/custom-charts/chart-yaml-file.jpg) to view a sample 'Chart.yaml' file. -{% endhint %} +::: ### 2. Create an Image Descriptor Template File @@ -55,7 +62,8 @@ The Image Descriptor Template file is a GO template that produces a valid JSON f * Ensure the above file is created in the directory where the main `Chart.yaml` exists (as shown below): - ![Figure 2: Filepath of Image Descriptor Template](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/global-configurations/deployment-charts/descriptor-filepath.jpg) + ![](https://devtron-public-asset.s3.us-east-2.amazonaws.com/images/devtron-v2/app-management/configurations/deployment-charts/descriptor-filepath.jpg) +
    Figure 2: Filepath of Image Descriptor Template
    * Paste the following content in `.image_descriptor_template.json` file: @@ -87,10 +95,9 @@ The Image Descriptor Template file is a GO template that produces a valid JSON f } ``` -{% hint style="warning" %} -### Got a JSON Error? +:::caution Got a JSON Error? If your code editor highlights a syntax error (property or EOF error) in the above JSON, ignore it. -{% endhint %} +::: + +--- + +## Scanning an Image with AWS Inspector + +Once AWS Inspector is enabled: + +1. Go to your application's **Configurations** → **Workflow Editor** and edit (or create) the **build pipeline**. + +2. In the build pipeline's advanced options, enable **Scan for vulnerabilities**. + + :::info + If image scanning is enforced globally by your administrator, the scan runs on every build and this toggle may be locked on. + ::: + +3. Trigger the build. After the image is built, Devtron generates the SBOM and scans it via Amazon Inspector as described in [How AWS Inspector Scanning Works](#how-aws-inspector-scanning-works). + +--- + +## Viewing Scan Results + +Once an image is scanned, the vulnerabilities detected by Amazon Inspector appear in the **Security** tab of the build/app, alongside the scan tool name and a severity breakdown (Critical/High/Medium/Low). Based on these results, [Security Policies](../../security-features/security-policies.md) can automatically allow or block deployments. + + + +Refer to [Security Features](../../security-features.md) to learn more about viewing scan results and enforcing policies. + +--- + +## Integrating Your Own Scan Tool + +Devtron's scanning is built on a generic scan-tool framework, so AWS Inspector, Trivy, and Clair are all integrated the **same way**. You can register your own scanning tool by supplying two things in a single registration request: **scan tool metadata** and a **scan plugin**. + +:::caution Who Can Perform This Action? +Registering a scan tool is a **global** operation and can only be performed by a **super-admin**. +::: + +### 1. Scan Tool Metadata + +This describes the tool to Devtron and how to interpret its output. + +| Field | Required | Description | +| :--- | :--- | :--- | +| `name` | Yes | Name of the scanning tool, e.g., `AWS INSPECTOR`. The `name` + `version` combination must be unique. | +| `version` | Yes | Version of the tool, e.g., `V1`. | +| `scanTarget` | Yes | What the tool scans. Currently `IMAGE` is supported. | +| `resultDescriptorTemplate` | Yes | A template that maps the tool's raw output into the standard result format Devtron uses to render vulnerabilities. | +| `scanToolUrl` | No | Icon/logo URL shown next to the tool in Devtron's UI. | +| `serverBaseUrl` | No | Base URL of the scanning service, if the tool talks to an external server. | +| `toolMetaData` | No | Any additional tool-specific metadata. | + +### 2. Scan Plugin + +This is the executable logic that actually runs the scan. It is built on Devtron's base plugin `devtron-image-scanning-integrator`, and defines the steps and input variables (such as image reference, credentials, or region) required to run your scanner. The plugin runs during the pipeline, and its output is converted into Devtron's standard scan result using the `resultDescriptorTemplate` from the metadata. + +| Field | Required | Description | +| :--- | :--- | :--- | +| `name` | Yes | Display name of the plugin (3–100 characters). | +| `pluginIdentifier` | Yes | Unique identifier for the plugin (3–100 characters). | +| `pluginVersion` | Yes | Version of the plugin (3–50 characters). | +| `description` | No | Brief description of what the plugin does (max 300 characters). | +| `pluginSteps` | Yes | The ordered steps (and their input variables) the plugin executes to perform the scan. | + +### Registration API + +Scan tools are registered through the following super-admin API: + +``` +POST /orchestrator/scan-tool/register +``` + +Example request body: + +```json +{ + "scanToolMetadata": { + "name": "AWS INSPECTOR", + "version": "V1", + "scanTarget": "IMAGE", + "scanToolUrl": "https://cdn.devtron.ai/images/ic-aws-inspector.webp", + "resultDescriptorTemplate": "