{"id":25916763,"url":"https://github.com/fl64/dvp-demo-app","last_synced_at":"2026-05-27T23:32:01.474Z","repository":{"id":278750227,"uuid":"936572746","full_name":"fl64/dvp-demo-app","owner":"fl64","description":"Three-tier DVP demo app","archived":false,"fork":false,"pushed_at":"2026-04-04T15:31:02.000Z","size":802,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-04-04T18:28:53.405Z","etag":null,"topics":["deckhouse","dvp","k8s"],"latest_commit_sha":null,"homepage":"https://deckhouse.ru/products/virtualization-platform/documentation/","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fl64.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-02-21T10:11:45.000Z","updated_at":"2026-02-15T19:45:42.000Z","dependencies_parsed_at":null,"dependency_job_id":"9c4594fa-4793-451c-ae4b-2d8349eb3c51","html_url":"https://github.com/fl64/dvp-demo-app","commit_stats":null,"previous_names":["fl64/dvp-demo-app"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/fl64/dvp-demo-app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fl64%2Fdvp-demo-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fl64%2Fdvp-demo-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fl64%2Fdvp-demo-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fl64%2Fdvp-demo-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fl64","download_url":"https://codeload.github.com/fl64/dvp-demo-app/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fl64%2Fdvp-demo-app/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33588345,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-27T02:00:06.184Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["deckhouse","dvp","k8s"],"created_at":"2025-03-03T13:18:07.399Z","updated_at":"2026-05-27T23:32:01.468Z","avatar_url":"https://github.com/fl64.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Three-Tier Application Demo\n\n## Overview\n\nA demo application with a three-tier architecture (**Frontend → Backend → Database**) designed to:\n\n1. Show the capabilities of the cloud platform\n2. Demonstrate how Network Policies work\n3. Example of integration with Dex authentication system\n4. Testing the interaction of components in a virtualized environment\n\n![](./demo-app.png)\n\n### Application Structure\n\n- **Project: demo-db**\n  - **Database**\n    - VM: `db` (PostgreSQL)\n- **Project: demo-app**\n  - **Frontend**\n    - VM: `frontend` (Bootstrap app)\n    - Pod: `frontend` (Bootstrap app)\n  - **Backend**\n    - VM: `backend-a` (Flask + Gunicorn)\n    - VM: `backend-b` (Flask + Gunicorn)\n\nComponent interaction is restricted by network policies. Application access requires authentication via Dex.\n\n## Access System\n\n| User                       | Role                             | Access Rights                            |\n| -------------------------- | -------------------------------- | ---------------------------------------- |\n| `demo-user@flant.com`      | Application User                 | Access via web interface                 |\n| `demo-db-admin@flant.com`  | Project Administrator `demo-db`  | Full VM access with PostgreSQL           |\n| `demo-app-admin@flant.com` | Project Administrator `demo-app` | Management of all application components |\n\nTranslated with DeepL.com (free version)\n\n## Repository Structure\n\n- `/apps` - Frontend and backend source code\n- `/k8s` - Kubernetes deployment manifests\n- `/ansible` - Ansible playbooks for VM management\n\n## Requirements\n\n### Required d8 Modules\n\nEnsure the following d8 modules are enabled and configured:\n\n- `admission-policy-engine`\n- `cni-cilium`\n- `console`\n- `multitenancy-manager`\n- `service-with-healthchecks`\n- `user-authn`\n- `virtualization`\n- `operator-argo` (required for ArgoCD installation)\n\n### Installation-Specific Requirements\n\n**For Option 1 (Manual Installation via Task):**\n- [task](https://taskfile.dev)\n- [yq](https://github.com/mikefarah/yq)\n- [ansible](https://docs.ansible.com/ansible/latest/index.html)\n- [d8](https://github.com/deckhouse/deckhouse-cli) (v0.27.0+ for ansible-inventory support)\n\n## Installation\n\n### Option 1: Manual Installation via Task\n\n1. Create a `.env` file with infrastructure settings:\n\n```ini\nPASSWORD=password\nFQDN=demo.example.com\n```\n\n2. Generate SSH keys for VM access:\n\n```bash\ntask ssh-gen\n```\n\n3. Deploy the application:\n\n```bash\ntask deploy\n```\n\n4. Uninstall the application:\n\n```bash\ntask undeploy\n```\n\n### Option 2: ArgoCD Installation\n\n1. Apply the ApplicationSet:\n\n```bash\ntask argocd:apply\n```\n\n2. ArgoCD will automatically create and sync applications for `demo-app` and `demo-db` namespaces.\n\n3. To remove, delete the ApplicationSet:\n\n```bash\ntask argocd:delete\n```\n\n## How to connect to VM\n\n### Via Task (SSH)\n\n```bash\ntask ssh:frontend    # Connect to frontend VM\ntask ssh:backend-a   # Connect to backend-a VM\ntask ssh:backend-b   # Connect to backend-b VM\ntask ssh:db          # Connect to database VM\n```\n\n### Via d8 CLI\n\n**SSH:**\n```bash\nd8 v ssh -n demo-app cloud@\u003cvmname\u003e -i ./tmp/demo --local-ssh\n```\n\n**Console:**\n```bash\nd8 v console -n demo-app \u003cvmname\u003e\n```\n\n## Ansible Management\n\nThe project includes Ansible playbooks for automated VM management. Uses `d8 v ansible-inventory` for dynamic inventory discovery.\n\n**Check VM uptime:**\n```bash\ntask ansible:uptime\n```\n\n**Update packages on all VMs:**\n```bash\ntask ansible:update\n```\n\n**Run security checks:**\n```bash\ntask ansible:security-check\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffl64%2Fdvp-demo-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffl64%2Fdvp-demo-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffl64%2Fdvp-demo-app/lists"}