epinio

command module
v0.0.28 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 14, 2021 License: Apache-2.0 Imports: 1 Imported by: 0

README

Epinio

Opinionated platform that runs on Kubernetes, that takes you from App to URL in one step.

godoc CI AKS-CI EKS-CI golangci-lint

Contents

What problem does Epinio solve

Epinio makes it easy for developers to deploy their applications to Kubernetes. Easy means:

  • No previous experience with Kubernetes is required
  • No steep learning curve
  • Quick local setup with zero configuration
  • Deploying to production similar to development

Kubernetes is becoming the de-facto standard for container orchestration. Developers may want to use Kubernetes for all the benefits it provides or may have to do so because that's what their Ops team has chosen. Whatever the case, using Kubernetes is not simple. It has a steep learning curve and doing it right is a full time job. Developers should spend their time working on their applications, not doing operations.

Epinio is adding the needed abstractions and intelligence to allow Developers to use Kubernetes as a PaaS (Platform as a Service).

Features

  • Security
    • mTLS: Epinio uses linkerd to secure all communication between epinio components inside the kubernetes cluster
    • Basic Authentication to access the API.
  • Epinio Clients
    • Web UI
    • Epinio CLI
  • Apps
    • CRUD operations of your app. (An app can be a tarball or in a github repo)
    • Cloud Native Buildpacks provide the runtime environment for your apps
  • Services
    • CRUD operations of your service. A service can be a database, SaaS etc. A service can be an external component or can be created using epinio service
    • Bind services to apps.

Installation

System Requirements
Kubernetes Cluster Requirements

For the Epinio server, and related deployments we recommend to consider the following resources:

  • 2-4 VCPUs
  • 8GB RAM (system memory + 4GB)
  • 10GB Disk space (system disk + 5GB)

In addition, extensive requirements for your workload (apps) would add to that.

A default storage class with annotation (storageclass.kubernetes.io/is-default-class: "true") is needed.

Epinio CLI

The Epinio CLI will typically run on a host, which will need network access to your kubernetes cluster. Usually you will use the same host to run tooling, like e.g. "kubectl" and "helm".

The compiled binary will use about 40-50MB disk space, incl. local configuration files.

Install the Epinio CLI

Refer to Install the Epinio CLI.

Installation Methods (in Cluster)

Beside advanced installation options, there are two ways of installing Epinio:

  1. Installation using a MagicDNS Service
  • For test environments. This should work on nearly any kubernetes distribution. Epinio will try to automatically create a magic DNS domain, e.g. 10.0.0.1.omg.howdoi.website.
  1. Installation using a Custom Domain
  • For test and production environments. You will have to define a system domain, e.g. test.example.com.
Installation on Specific Kubernetes Offerings

Usage

  • QuickStart - tutorial on how to create an org and push an application.

Buildpacks

Buildpacks convert your application source code into container images in which the buildpack provides the framework, dependencies and runtime support for your app based on it's programming language.

Epinio uses Paketo Buildpacks through tekton pipelines to convert your source code into container images.

Tekton Buildpack Pipeline - Epinio uses this tekton pipeline with the Paketo's full Builder Image.

Using Custom Buildpack - Steps to create and use a custom builder image that includes a buildpack for Python (The paketo full Builder Image doesn't support python apps yet).

Example apps

How the documentation is organized

Epinio documentation is organised into these four quadrants in the ./docs/ folder.

Tutorials take you by the hand through a series of steps that are useful for a beginner like how to install epinio in various kubernetes distros, how to push an application and an org.

How-to-guides explain steps to solve specific problems like how to create a redis database using epinio etc.

Explanations discuss components of Epinio at a very high level like about linkerd, traefik etc.

References provides references about Epinio CLI docs and Epinio API docs.

Reach Us

Contributing

Epinio uses Github Project for tracking issues. You can also find the issues currently being worked on in the BackLog section.

If you would like to start contributing to Epinio, then you can pick up any of the cards with label good first issue.

License

Copyright (c) 2020-2021 SUSE, LLC

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software 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.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
acceptance
helpers/catalog
Package catalog contains objects and resources, which are used by multiple tests
Package catalog contains objects and resources, which are used by multiple tests
helpers/machine
Package machine provides a number of utility functions encapsulating often-used sequences.
Package machine provides a number of utility functions encapsulating often-used sequences.
kubernetes/tailer
tailer manages objects which tail the logs of a collection of pods specified by a label selector.
tailer manages objects which tail the logs of a collection of pods specified by a label selector.
randstr
Package randstr provides functions for the generation of random strings.
Package randstr provides functions for the generation of random strings.
routes
Package routes implements registered urls and parameter substitution
Package routes implements registered urls and parameter substitution
tracelog
Package tracelog provides a logger for debugging and tracing This logger will not print anything, unless TRACE_LEVEL is at least 1
Package tracelog provides a logger for debugging and tracing This logger will not print anything, unless TRACE_LEVEL is at least 1
internal
api/v1
Package v1 is the implementation of Epinio's API v1 It has the router and controllers (handler funcs) for the API server.
Package v1 is the implementation of Epinio's API v1 It has the router and controllers (handler funcs) for the API server.
api/v1/models
Package models contains the types (mostly structures) encapsulating the API requests and reponses used by the communication between epinio client and APIserver.
Package models contains the types (mostly structures) encapsulating the API requests and reponses used by the communication between epinio client and APIserver.
application
Package application collects the structures and functions that deal with application workloads on k8s
Package application collects the structures and functions that deal with application workloads on k8s
auth
Package auth collects structures and functions around the generation and processing of credentials.
Package auth collects structures and functions around the generation and processing of credentials.
cli
Package cli contains all definitions pertaining to the user-visible commands of the epinio client
Package cli contains all definitions pertaining to the user-visible commands of the epinio client
cli/clients
Package clients contains all the CLI commands for the client
Package clients contains all the CLI commands for the client
cli/clients/gitea
Package gitea deals with using gitea as a store for pushed applications and their deployment info
Package gitea deals with using gitea as a store for pushed applications and their deployment info
cli/logprinter
Package logprinter is used to print container log lines in color
Package logprinter is used to print container log lines in color
domain
Package auth collects structures and functions around the domains the client works with.
Package auth collects structures and functions around the domains the client works with.
duration
Package duration defines the various durations used throughout Epinio, as timeouts, and other.
Package duration defines the various durations used throughout Epinio, as timeouts, and other.
filesystem
Package filesystem allows enables the use of either embedded assets (with statik) or files from the real filesystem.
Package filesystem allows enables the use of either embedded assets (with statik) or files from the real filesystem.
interfaces
Package interfaces defines various interfaces used in Epinio whose definition in a more specific package would cause import loops.
Package interfaces defines various interfaces used in Epinio whose definition in a more specific package would cause import loops.
names
Package names collects functions encapsulating the rules for constructing a variety of kube resource names
Package names collects functions encapsulating the rules for constructing a variety of kube resource names
organizations
Package organizations encapsulates all the functionality around Epinio-controlled namespaces TODO: Consider moving this + the applications + the services packages under "models".
Package organizations encapsulates all the functionality around Epinio-controlled namespaces TODO: Consider moving this + the applications + the services packages under "models".
services
Package services encapsulates all the functionality around Epinio services, catalog-based and custom
Package services encapsulates all the functionality around Epinio services, catalog-based and custom
version
Package version contains the variable holding the client's version number.
Package version contains the variable holding the client's version number.
web
Package web implements the Epinio dashboard
Package web implements the Epinio dashboard

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL