Skip to content

Commit

Permalink
imported documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
sciabarracom committed Jul 9, 2024
1 parent 8a45fe2 commit 2e874b8
Show file tree
Hide file tree
Showing 122 changed files with 9,063 additions and 2,265 deletions.
30 changes: 30 additions & 0 deletions content/en/docs/ROOT/about/_index.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
== About MastroGPT

xref:mastrogpt:index.adoc[MastroGPT] is a hosted service, built on top of Nuvolaris, designed to fulfill the need for a development and deployment enviroment allowing to build quickly LLM-based application and run in production with minimal effort.

It provides all you need to start writing LLM-based apps in minutes and run them in production with no effort. Check xref:whats-new.adoc#mastrogpt[here] for more.

== About Nuvolaris Community

Nuvolaris Community is an Open Source project, released under the https://github.com/nuvolaris/nuvolaris/blob/main/LICENSE[Apache License 2.0] providing a portable and complete https://martinfowler.com/articles/serverless.html[Serverless] environment, allowing to build quickly and easily cloud-native applications.

Our goal is to make Nuvolaris *ubitiquous*, allowing it to easily run a complete and portable environment that runs in every https://kubernetes.io/[Kubernetes].

Nuvolaris is based on https://openwhisk.apache.org[Apache OpenWhisk], which provides a powerful, production-ready serverless engine.

However, the serverless engine is just the beginning, because a serverless environment requires a set of integrated services.

Nuvolaris provides integrated with OpenWhisk several additional services such as databases, object storage, and a cron scheduler.

Furthermore, we test it on many public cloud Kubernetes services and on-premises Kubernetes vendors.

The platform is paired with a powerful CLI tool, `nuv`, which lets you deploy Nuvolaris quickly and easily everywhere, and perform a lot of development tasks.

Our goal is to build a *complete* distribution of a serverless environment with the following features:

* It is easy to install and manage.
* Integrates all the key services to build applications.
* It is as portable as possible to run potentially in every Kubernetes.
* It is however tested regularly against a set of supported Kubernetes environments.

If you want to know more about our goals, check our https://github.com/nuvolaris/nuvolaris/blob/main/docs/ROADMAP.md[**roadmap**] document.
19 changes: 19 additions & 0 deletions content/en/docs/ROOT/index/_index.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
= Nuvolaris Community 3 beta

Welcome to xref:about.adoc[Nuvolaris Community and MastroGPT] version 3.1 (still beta...).

Starting points to consult this documentation:

* xref:mastrogpt:index.adoc[Hosted Service MastroGPT]
* xref:whats-new.adoc[What's New]
* xref:tutorial:index.adoc[Tutorial to build serverless apps]
* xref:development:index.adoc[Development Guide]
* xref:cli:index.adoc[`nuv` the Nuvolaris CLI]
* xref:quickstart.adoc[Quick start to Self-Hosting Nuvolaris]
[IMPORTANT]
====
Documentation is **almost** complete but there are a few parts still work in progress where the documentation may be missing or not up to date.
They are marked with this icon: 🚧 that means **Work in progress**
====
233 changes: 233 additions & 0 deletions content/en/docs/ROOT/quickstart/_index.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,233 @@
= Quick Start to Self Hosted Nuvolaris

If you are looking for an hosted service check xref:mastrogpt:index.adoc[MastroGPT].

If you instead prefer to self host and install Nuvolaris Community go ahead reading this document.

This is a quick start guide to the installation process, targetting experienced users in a hurry.

It provides a high-level overview of the installation process, omitting advanced of details.
The missing pieces are covered in the rest of the documentation.

Of course, if this guide is not enough and things fail, you can always apply the rule: "if everything fails, read the manual".

== Prerequisites

Start ensuring the prerequsites are satisfied:


* xref:installation:download.adoc[Download and install] nuv, the Nuvolaris CLI, picking version suitable for your environment. We support 64-bit versions of recent Windows, MacOS and major Linux distributions.

* Check that nuv is correctly installed: open the terminal and write:

----
nuv -info
----

* Configure the services you want to enable. By default, Nuvolaris will install only the serverless engine, accessible in http with no services enabled.

If you want to enable all the services, use:

----
nuv config enable --all
----


otherwise pick the services you want, among `--redis`, `--mongodb`, `--minio`, `--cron`, `--postgres`. Note that `--mongodb` is actually https://www.ferretdb.com/[FerretDB] and requires Postgres which is implicitly also enabled. More details xref:installation:configure.adoc[here].

Now, choose where to install Nuvolaris.

Your options are:

* <<locally,locally>> in your workstation;
* in a Linux <<server,server>> in your intranet
* in a Linux <<internet-server,server>> available on Internet
* in a Kubernetes <<cluster,cluster>> in your intranet
* in <<cloud-cluster,cloud>>, where you can provision a Kubernetes cluster

[#locally]
== Local Installation

If you have a *decent* workstation (with at least 16GB of memory) running a *recent* **64-bit** operating system, you can install https://www.docker.com/products/docker-desktop/[Docker Desktop] and then install Nuvolaris in it.
Once you have:

. installed the CLI
. configured the services
. installed Docker Desktop

Make sure Docker Desktop its running before the next operation.
You can install Nuvolaris and its services in Docker with just this command:

----
nuv setup devcluster
----

Once it is installed, you can proceed to read the xref:tutorial:index.adoc[tutorial] to learn how to code with it.

NOTE:
At least 16GB of memory is ideal, but if you know what you're doing and can tolerate inefficiency, you can install with less using:

----
export PREFL_NO_MEM_CHECK=1
export PLEFL_NO_CPU_CHECK=1
----

[#internet-server]
== Internet Server Configuration

If you have access to a server on the Internet, you will know its **IP address**.

Many cloud providers also give you a DNS name usually derived by the IP and very hard to remember such as `ec2-12-34-56-78.us-west-2.compute.amazonaws.com`.

Once you got the IP address and the DNS name, you can give to your server a bettername https://en.wikipedia.org/wiki/List_of_managed_DNS_providers[using a domain name provider]. We cannot give here precise instructions as there are many DNS providers and each has different rules to do the setup. Check with your chosen domain name provider.

If you have this name, configure it and enable DNS with:

----
nuv config apihost <dns-name> --tls=<email-address>
----

[IMPORTANT]
====
Replace the `<dns-name>` with the actual DNS name, without using prefixes like `http://` or suffixes like `:443`. Also, replace `<email-address>` with your actual email address.
====

then proceed with the server installation.

[#server]
== Server Installation

Once you got access to a Linux server with:

. An IP address or DNS name, referred to as `<server>`
. Passwordless access with `ssh` to a Linux user `<user>`
. At least 8GB of memory and 50GB of disk space available
. The user `<user>` has passwordless `sudo` rights
. The firewall that allows traffic to ports 80, 443 and 6443
. **Without** any Docker or Kubernetes installed
. **Without** any Web server or Web application installed

then you can install Nuvolaris in it.

The server can be physical or virtual. We need Kubernetes in it but the installer takes care of installing also a flavor of Kubernetes, https://k3s.io[K3S], courtesy of https://github.com/alexellis/k3sup[K3Sup].


To install Nuvolaris, first check you have access to the server with:

----
ssh <user>@<server> sudo hostname
----

You should see no errors and read the internal hostname of your server.

If you do not receive errors, you can proceed to install Nuvolaris with this command:

----
nuv setup server <server> <user>
----

[IMPORTANT]
====
Replace in the commands `<server>` with the address of your server, and `<user>` with the actual user to use in your server. The `<server>` can be the same as `<dns-name>` you have configured in the previous paragraph, if you did so, or simply the IP address of a server on your intranet
====

Now wait until the installation completes. Once it is installed, you can proceed to read the xref:tutorial:index.adoc[tutorial] to learn how to code with it.

[#cloud-cluster]
== Cloud Cluster Provisioning

If you have access to a cloud provider, you can set up a Kubernetes cluster in it. The Kubernetes cluster needs to satisfy certain xref:installation:prereq-cluster[prerequisites] to be able to install Nuvolaris with no issues.

We provide the support to easily configure and install a compliant Kubernetes cluster for the following clouds:

* <<aws, Amazon AWS>>
* <<azure, Microsoft Azure>>
* <<gcloud, Google Cloud>>

At the end of the installation you will have available and accessible a Kubernetes Cluster able to install Nuvolaris, so proceed with a <<cluster, cluster installation>>.

[#aws]
=== Amazon AWS

Configure and install an Amazon EKS cluster on Amazon AWS with:

----
nuv config eks
nuv cloud eks create
----

then <<cluster, install the cluster>>.

[#azure]
=== Azure AKS:

Configure and install an Azure AKS cluster on Microsoft Azure with:

----
nuv config aks
nuv cloud aks create
----

then <<cluster, install the cluster>>.

[#gcloud]
=== Google Cloud

Configure and install a Google Cloud GKE with:

----
nuv config gke
nuv cloud gke create
----

then <<cluster, install the cluster>>.

[#cluster]
== Cluster Install

In short, if you have access to kubernetes cluster, you can install Nuvolaris with:

----
nuv setup cluster
----

For a slightly longer discussion, checking prerequisites before installing, read on.

=== Prerequisites to install

If you have access to a Kubernetes cluster with:

. Access to the `cluster-admin` role
. Block storage configured as the default storage class
. The `nginx-ingress` installed
. Knowledge of the IP address of your `nginx-ingress` controller

you can install Nuvolaris in it. You can read xref:installation:prereq-cluster.adoc[more details here].

You can get this access either by provisioning a Kubernetes cluster in <<cloud, cloud>> or getting access to it from your system administrator.

Whatever the way you get access to your Kubernetes cluster, you will end up with a configuration file which is usually stored in a file named `.kube/config` in your home directory. This file will give access to the Kubernetes cluster to install Nuvolaris.

=== Performing the installation

To install, first, verify you have actually access to the Kubernetes cluster, by running this command:

----
nuv debug kube info
----

You should get information about your cluster, something like this:

=====
Kubernetes control plane is running at https://api.nuvolaris.osh.n9s.cc:6443
=====

Now you can finally install Nuvolaris with the command:

----
nuv setup cluster
----

Wait until the process is complete and if there are no errors, Nuvolaris is installed and ready to go.

Once it is installed, you can proceed to read the xref:tutorial:index.adoc[tutorial] to learn how to code with it.
50 changes: 50 additions & 0 deletions content/en/docs/ROOT/whats-new/_index.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
[#mastrogpt31]
== What's new in MastroGPT (and Nuvolaris 3.1)?

MastroGPT is a hosted service (also available on preises for enteprise customers) providing a number of extra features built on top of Nuvolaris in order to support easy development of LLM-based AI applications.

It provides:

* an administrative interface
* an integrated GPT apps builder
* incremental deployer
* an online IDE to build applications
* a set of starter application
* a set of examples and demo
* access to OpenAI API
There are also tons of improvements in Nuvolaris under the hood to support MastroGPT.

Most of the imporevements are in the development tools, however there are also performance and reliability optimizations, bug fixes and new features to support MastroGPT.

[#nuvolaris3]
== What's new in Nuvolaris Community 3?

Nuvolaris community is a distribution of Apache Openwhisk providing availability on multiple clouds and a set of integrated services

Nuvolaris itself is based on a rich operator, supporting the deployment of several services:

* Publishing of static assets
* https://redis.io[Redis], an in-memory key-value store
* https://min.io[MinIO], an object storage service
* https://www.postgresql.org[Postgres] a relational database
* https://www.ferretdb.io[FerretDB] A MongoDB-compatible adapter
Nuvolaris is coupled with a rich and extendible CLI, `nuv`.

You can use it to install and run Nuvolaris locally on https://www.docker.com[Docker Desktop] using https://kind.sigs.k8s.io[Kind]

You can then install Nuvolaris in the following cloud providers:

* https://aws.amazon.com/eks[Amazon EKS]
* https://azure.microsoft.com/en-us/products/kubernetes-service[Azure AKS]
* https://cloud.google.com/kubernetes-engine[Google GKE]
* https://linode.com/[Akamai] (formerly Linode LKS)
You can also install it in private clouds on servers running:

* https://www.redhat.com/en/technologies/cloud-computing/openshift[RedHat OpenShift]
* https://microk8s.io[Canonical MicroK8S]
* https://k3s.io[Rancher (now SuSE) K3S]
The CLI also supports installation directly on servers accessible with SSH.
Loading

0 comments on commit 2e874b8

Please sign in to comment.