|
| 1 | +# Epinio |
| 2 | + |
| 3 | +> Tame your developer workflow to go from Code to URL in one push. |
| 4 | +
|
| 5 | +[epinio.io](https://epinio.io/), [docs](https://docs.epinio.io/), [code](https://github.com/epinio/epinio) |
| 6 | + |
| 7 | +## Getting started |
| 8 | + |
| 9 | +### Introduction |
| 10 | + |
| 11 | +Epinio addresses the wish to hide all the complexity of building and deploying code. This subject was adressed before by Cloud Foundry, which got depecrated with the rise of Kubernetes. |
| 12 | + |
| 13 | +Epinio is Cloud Native, free, open-source, simple solution that runs in a Kubernetes cluster. Its development is lead by SUSE. |
| 14 | + |
| 15 | +### Quick start |
| 16 | + |
| 17 | +!!! tip |
| 18 | + |
| 19 | + Use short name for the application name (less than 22) and do not use `-` to avoid Ingress issue (see [application name restrictions](#application-name-restrictions)). |
| 20 | + |
| 21 | +* Make sure you have a Kubernetes cluster to work on and you are connected (by executing `kubectl config current-context` in a terminal for example) |
| 22 | +* Follow [Epinio official quickstart](https://docs.epinio.io/tutorials/quickstart) |
| 23 | + |
| 24 | +### Presentations |
| 25 | + |
| 26 | +* Youtube videos |
| 27 | + * [SUSECON - Customize your Developer Experience with Epinio](https://www.youtube.com/watch?v=cr4vWO9J7tk) - October 8, 2022 |
| 28 | + * [SUSE Projects - Epinio demo: Wordpress on Digital Ocean](https://www.youtube.com/watch?v=OdPF0qH5Pf8&t=296s) - July 6, 2021 |
| 29 | + * [Kubesimplify - Let's Learn Epinio](https://www.youtube.com/watch?v=ietNQSQXhAc) - June 23, 2021 |
| 30 | + * [SUSECON - Epinio Demo: Building a PaaS on Kubernetes using off-the-shelf components](https://www.youtube.com/watch?v=HKXtAgh3ILw) - November 10, 2021 |
| 31 | + |
| 32 | +## Going further |
| 33 | + |
| 34 | +### Application examples |
| 35 | + |
| 36 | +!!! tip |
| 37 | + |
| 38 | + Delete local files before pushing the application if done from a developer workstation (see [local files restriction](#local-files-restriction)). |
| 39 | + |
| 40 | +Language/Framework | Path | Details |
| 41 | +---------------------|-------------------------------------------------------------------------------------------------|------------------------------------------------------ |
| 42 | +Angular (TypeScript) | [devpro/epinio-samples](https://github.com/devpro/epinio-samples/tree/main/samples/angular) | Angular Web App (Single Page Application) |
| 43 | +.NET (C#) | [devpro/epinio-samples](https://github.com/devpro/epinio-samples/tree/main/samples/dotnet) | ASP.NET 7 Web API (REST), ASP.NET Web App (Razor) |
| 44 | +Go | [epinio/golang-sample-app](https://github.com/epinio/epinio/tree/main/assets/golang-sample-app) | |
| 45 | +Java | [spring-projects/spring-petclinic](https://github.com/spring-projects/spring-petclinic) | Spring |
| 46 | +JavaScript | [ellisonleao/clumsy-bird](https://github.com/ellisonleao/clumsy-bird) | melonJS game engine |
| 47 | +PHP | [epinio/sample-app](https://github.com/epinio/epinio/tree/main/assets/sample-app) | phpinfo |
| 48 | +Python | [mageran/minio-epinio](https://github.com/mageran/minio-epinio/tree/main/samples/photo-album) | Flask and Boto3 for the backend and Svelte for the UI |
| 49 | +React | [devpro/epinio-samples](https://github.com/devpro/epinio-samples/tree/main/samples/react) | React Web App (Single Page Application) |
| 50 | +Ruby on Rails | [epinio/example-rails](https://github.com/epinio/example-rails) | |
| 51 | +Wordpress | [epinio/example-wordpress](https://github.com/epinio/example-wordpress) | CMS written in PHP and using a MySQL database |
| 52 | + |
| 53 | +### CLI |
| 54 | + |
| 55 | +#### CLI cheat sheet |
| 56 | + |
| 57 | +Command | Action |
| 58 | +-----------------------------------------------|---------------------------------------------------- |
| 59 | +`epinio app delete sample` | Delete an application |
| 60 | +`epinio login -u admin 'https://<epinio_url>'` | Log in Epinio server |
| 61 | +`epinio push --name sample --path sample-app` | Create or update an application from a local folder |
| 62 | +`epinio settings show` | Display Epinio server information |
| 63 | + |
| 64 | +#### CLI examples |
| 65 | + |
| 66 | +```bash |
| 67 | +# creates an application from a remote git repository on a branch |
| 68 | +epinio push --name dotnetapisample --git-provider github --git https://github.com/devpro/epinio-samples,feature/init-solution |
| 69 | + |
| 70 | +# creates an application from a remote git repository |
| 71 | +epinio push --name clumsybird --git-provider github --git https://github.com/ellisonleao/clumsy-bird |
| 72 | +``` |
| 73 | + |
| 74 | +### Helm chart |
| 75 | + |
| 76 | +* [devpro/helm-charts](https://github.com/devpro/helm-charts/blob/main/charts/epinio/README.md) encapsulates Epinio Helm chart and provides concrete example of installation and use |
| 77 | + |
| 78 | +### Local cluster with K3D |
| 79 | + |
| 80 | +* [mesquitamv/epinio-deploy](https://github.com/mesquitamv/epinio-deploy) |
| 81 | + |
| 82 | +### Limitations |
| 83 | + |
| 84 | +#### Application name restrictions |
| 85 | + |
| 86 | +* **Max length**: There is an issue with Ingress if the application name is too long |
| 87 | +(reproduced with raspnetwebrazorsample which generated a service name like raspnetwebrazorsample-40251af7269c59d923bfa391bc241c7a320d332c, of 63 characters). |
| 88 | +* **Special characters**: Avoid special character like `-` |
| 89 | + |
| 90 | +### Local files restriction |
| 91 | + |
| 92 | +Currently, there is no way to ignore local folders and files when pushing an application. This is a serious issue while working on a codebase using NPM packages because node_modules can easily be heavy. |
| 93 | + |
| 94 | +This limitation is tracked by [Issue #2589](https://github.com/epinio/epinio/issues/2589). |
0 commit comments