The Epinio push process in detail
Epinio makes use of well supported, well known projects. There is further discussion about this in the project principles document. While doing so, Epinio makes sure those components are correctly deployed and work together seamlessly. This detailed description of the Epinio push process lets you understand the components and their relationships.
There is a diagram of the Epinio push process later on this page. Refer to it while reading the text to aid understanding. The number labels on the paths in the image indicate process ordering.
Epinio push (step 1)​
Epinio exposes an API server, running inside the Kubernetes cluster. It's used by all clients, including the CLI, to communicate with Epinio.
The epinio push CLI command, creates an archive containing application code.
This archive package is uploaded to the API server (step 1a).
A Kubernetes Ingress controller (for example, Traefik) routes your request to the API server (1b).
Request authentication at the API server uses BasicAuth, a session cookie or, if using WebSockets, a token.
Copying the code to S3 (step 2)​
The Epinio helm-chart can install either SeaweedFS (the default) or s3gw on your cluster. You can also configure external S3. Both SeaweedFS and s3gw are S3-compatible storage solutions which Epinio uses to store application source code. The chosen S3 storage solution is later used by the staging job.
After successful authentication (step 1),
the API server uploads the package to the S3 endpoint and
responds with a blobUID that can be later used to reference the uploaded package.
Staging the app (step 3)​
When the upload request is complete, the CLI sends a request to the stage endpoint of the Epinio API server.
This instructs the server to start the staging of the uploaded code.