diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..d6df788c --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,47 @@ +name: website + +on: + push: + branches: + - main + +env: + PUBLISH_DIRECTORY: public + +permissions: + contents: write + +jobs: + publish: + if: github.event_name == 'push' || github.event.pull_request.merged == true && github.event.pull_request.base.ref == 'main' + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Checkout Production + if: github.ref_name == 'main' + uses: actions/checkout@v4 + with: + ref: asf-site + path: ${{ env.PUBLISH_DIRECTORY }} + #- name: Install Asciidoctor + # run: | + # sudo apt-get update + # sudo apt-get install -y asciidoctor + - name: Prepare + working-directory: ${{ env.PUBLISH_DIRECTORY }} + run: | + rm -rf stylesheets + - name: Build Hugo site + run: | + npm install + npm run clean + npm run build:production + - name: Deploy to ASF + working-directory: ${{ env.PUBLISH_DIRECTORY }} + run: | + git config --global user.name "github-actions[bot]" + git config --global user.email "ops+github-actions[bot]@users.noreply.github.com" + git add . + git commit -m "Published changes from $GITHUB_SHA" + git push \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..fabbc3da --- /dev/null +++ b/.gitignore @@ -0,0 +1,13 @@ +/public +resources/ +node_modules/ +package-lock.json +.hugo_build.lock +.env +.direnv/ +.vscode +.idea +openserverless-cli +openserverless-task + + diff --git a/DISCLAIMER b/DISCLAIMER new file mode 100644 index 00000000..b505beba --- /dev/null +++ b/DISCLAIMER @@ -0,0 +1,11 @@ +Apache OpenServerless (Incubating) is an effort undergoing incubation at the Apache +Software Foundation (ASF), sponsored by the Apache Incubator PMC. + +Incubation is required of all newly accepted projects until a further review +indicates that the infrastructure, communications, and decision making process +have stabilized in a manner consistent with other successful ASF projects. + +While incubation status is not necessarily a reflection of the completeness +or stability of the code, it does indicate that the project has yet to be +fully endorsed by the ASF. + diff --git a/NOTICE b/NOTICE new file mode 100644 index 00000000..9b094683 --- /dev/null +++ b/NOTICE @@ -0,0 +1,6 @@ +Apache OpenServerless (Incubating) +Copyright 2024 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). + diff --git a/Taskfile.yaml b/Taskfile.yaml new file mode 100644 index 00000000..99e050f7 --- /dev/null +++ b/Taskfile.yaml @@ -0,0 +1,51 @@ +version: '3' + +tasks: + + default: task -l + + import-tools: + desc: import tool documentation + silent: true + cmds: + - test -d "openserverless-cli" && git pull || git clone https://github.com/apache/openserverless-cli + - | + find openserverless-cli/tools -name "*.md" | while read file + do + name=$(basename $file .md) + echo "Working on tool ${name} in file ${file}" + mkdir -p content/en/docs/reference/tools/$name + echo -e "---\ntitle: $name\n---\n" > content/en/docs/reference/tools/$name/_index.md + sed '/^# /d' "$file" >> content/en/docs/reference/tools/$name/_index.md + # cat $file >> content/en/docs/reference/tools/$name/_index.md + done + - cp tools.md content/en/docs/reference/tools/_index.md + #- rm -rf openserverless-cli + + import-task: + desc: import task documentation + silent: true + cmds: + - test -d "openserverless-task" && git pull || git clone https://github.com/apache/openserverless-task + - | + find openserverless-task -name "docopts.md" | while read file + do + tgt=$(echo $file | sed -e 's!openserverless-task/!!' -e 's/docopts/_index/') + echo "> Converting ${file} to ${tgt}" + mkdir -p "content/en/docs/reference/tasks/$(dirname $tgt)" + name="$(basename $(dirname "Tasks"/$tgt))" + echo -e "---\ntitle: ${name}\n---\n" >content/en/docs/reference/tasks/$tgt + sed '/^# /d' "$file" >>content/en/docs/reference/tasks/$tgt + #cat $file >>content/en/docs/reference/tasks/$tgt + done + #- rm -rf openserverless-task + + preview: + desc: preview the websites + cmds: + - hugo server + + debug: + desc: debug the websites + cmds: + - hugo server --ignoreCache --debug --disableFastRender \ No newline at end of file diff --git a/assets/scss/_styles_project.scss b/assets/scss/_styles_project.scss new file mode 100644 index 00000000..d528fa66 --- /dev/null +++ b/assets/scss/_styles_project.scss @@ -0,0 +1,107 @@ +/* baloo-2-regular - latin */ +@font-face { + font-family: 'Baloo 2'; + font-style: normal; + font-weight: 400; + src: url('/fonts/baloo-2-v21-latin-regular.woff2') format('woff2'), /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ + url('/fonts/baloo-2-v21-latin-regular.ttf') format('truetype'); /* Chrome 4+, Firefox 3.5+, IE 9+, Safari 3.1+, iOS 4.2+, Android Browser 2.2+ */ +} + + +/* baloo-2-700 - latin */ +@font-face { + font-family: 'Baloo 2'; + font-style: normal; + font-weight: 700; + src: url('/fonts/baloo-2-v21-latin-700.woff2') format('woff2'), /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ + url('/fonts/baloo-2-v21-latin-700.ttf') format('truetype'); /* Chrome 4+, Firefox 3.5+, IE 9+, Safari 3.1+, iOS 4.2+, Android Browser 2.2+ */ +} + +/* quattrocento-regular - latin */ +@font-face { + font-family: 'Quattrocento'; + font-style: normal; + font-weight: 400; + src: url('/fonts/quattrocento-v23-latin-regular.woff2') format('woff2'), /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ + url('/fonts/quattrocento-v23-latin-regular.ttf') format('truetype'); /* Chrome 4+, Firefox 3.5+, IE 9+, Safari 3.1+, iOS 4.2+, Android Browser 2.2+ */ +} + +p { font-family: "Quattrocento" !important;} + +.navbar, aside, .quote-title { + font-family: "Baloo 2" !important; +} + +h1, h2, h3 ,h4, h5, .lead { + font-family: "Baloo 2" !important; +} + +div.td-content h1, +div.td-content h2, +div.td-content h3, +div.td-content h4, +div.td-content h5, +div.td-content h6 { + color: #265d85 !important; +} + +.td-sidebar-nav-active-item { + color: #ff0000; +} + +aside{ + font-size: 1em !important; +} + +.text-black { color: black; } +.text-default { color: black; } +.text-white { color: white; } + +.center-image-container { + text-align: center; +} + +.center-image-container img { + display: inline-block; + margin: auto; +} + +.rounded-image { + border-radius: 15px; + overflow: hidden; + display: inline-block; +} + +#ops_asc_cast { + width: 100%; + margin:0 auto; +} + +.td-box--6 { + background-color: #245b80; + color: #fff; +} + +.disclaimer p { + font-size: 16px; + font-family: "Baloo 2" !important; +} + +.asf-logo { + background: white; + padding: 20px; + margin: 8px; +} + +.ops-asciinema-ext { + width: 90%; /* Default to 90% of the screen width */ + max-width: 600px; /* Ensure it doesn't exceed 450px */ + margin: 0 auto; /* Center the div horizontally */ +} + +@media only screen and (min-width: 600px) { + .ops-asciinema-ext { + width: 600px; /* For screens wider than 450px, set the width to 450px */ + } +} + diff --git a/assets/scss/_variables_project.scss b/assets/scss/_variables_project.scss new file mode 100644 index 00000000..418c6e02 --- /dev/null +++ b/assets/scss/_variables_project.scss @@ -0,0 +1,4 @@ +$font-family-base: "Quattrocento"; +$td-enable-google-fonts: false; + +$primary: #265d85 !default; \ No newline at end of file diff --git a/content/en/_index.md b/content/en/_index.md new file mode 100644 index 00000000..45302993 --- /dev/null +++ b/content/en/_index.md @@ -0,0 +1,73 @@ +--- +title: Apache OpenServerless™ +--- + +{{< blocks/cover title="Welcome to Apache OpenServerless™!" height="full" >}} + + + Learn More + + + Download + + +

Upgrading Kubernetes to a Serverless powerhouse to build your cloud-native A.I. application!

+{{< blocks/link-down color="info" >}} +{{< /blocks/cover >}} + +{{% blocks/lead color="primary" %}} + +

Apache OpenServerless™ is a distribution, running in any Kubernetes Clusters or even plain Linux Virtual Machine, straightforward to install and easy to use, deploying a Serverless Enviroment ready to use to build A.I. applications.

+ +

Apache OpenServerless™ lets you stop worrying of building, deploying, configuring and orchestrating containers. You can focus on writing your A.I. code and run it anywere, production ready, without any vendor-lockin.

+{{% /blocks/lead %}} + + +{{% blocks/section color="dark" type="row" %}} + +{{% blocks/feature icon="fab fa-reddit" title="Join our subreddit!" url="https://reddit.com/r/openserverless" %}} +A friendly place to discuss Apache OpenServerless™ +{{% /blocks/feature %}} + + +{{% blocks/feature icon="fab fa-github" title="Contributions welcome!" url="https://github.com/apache/openserverless" %}} +We accept [Pull Request](https://github.com/google/docsy-example/pulls) on **GitHub**. New contributors are always welcome! +{{% /blocks/feature %}} + +{{% blocks/feature icon="fab fa-x-twitter" title="Follow us on X.com!" url="https://twitter.com/open_serverless" %}} +For announcement of latest features etc. +{{% /blocks/feature %}} + +{{% /blocks/section %}} + + +{{% blocks/section %}} +Get involved! Subscribe our mailing list
dev-subscribe@openserverless.apache.org +{.h2 .text-center .text-black} +{{% /blocks/section %}} + + +{{% blocks/section %}} +{{% imgproccenter openserverless-diagram.webp Fit "3456x1728" "rounded-image" %}} +Apache OpenServerless™ Architecture Overview +{{% /imgproccenter %}} +{{% /blocks/section %}} + + +{{% blocks/section type="row" %}} + +
+

Public Cloud

+{{% imgproccenter public-cloud Fit "242x76" %}} +We support the major public cloud Kubernetes,
including Amazon EKS, Azure AKS and Gcloud GKE +{{% /imgproccenter %}} +
+ +
+

Private Cloud

+{{% imgproccenter private-cloud Fit "217x95" %}} +We support the major private cloud Kubernetes,
including RedHat OpenShift, Ubuntu MicroK8S and SuSE K3S +{{% /imgproccenter %}} +
+ +{{% /blocks/section %}} diff --git a/content/en/about/background.png b/content/en/about/background.png new file mode 100644 index 00000000..e9f4952e Binary files /dev/null and b/content/en/about/background.png differ diff --git a/content/en/about/index.md b/content/en/about/index.md new file mode 100644 index 00000000..ce038fbc --- /dev/null +++ b/content/en/about/index.md @@ -0,0 +1,91 @@ +--- +title: About Apache OpenServerless +linkTitle: About +menu: { main: { weight: 10 } } +--- + +{{% blocks/cover promo_image="background.png" title="Apache OpenServerless" %}} + +{.mt-5} + +{{% /blocks/cover %}} + +{{% blocks/lead %}} + +{{% imgproccenter openserverless-diagram.webp "Fit" "3456x1728" "rounded-image" %}} +{{% /imgproccenter %}} + +
A complete Serverless Development Environment for Any Cloud and Any Kubernetes + + + +{{% /blocks/lead %}} + +{{% blocks/lead %}} + +# Managed by a Kubernetes Operator {.text-center} + +Here are some of the operator's strong points: + +The first operator capable of configuring a complete OpenWhisk distribution on various versions of Kubernetes, +both on cloud providers and on bare metal. + +The operator takes care of resources setup and maintenance. + +Allows you to configure a set of resources to be used for the development / deployment of cloud native applications +based on the OpenWhisk serverless engine: redis, postgresql, minio and much more! + + +{{% /blocks/lead %}} + +{{% blocks/lead %}} + +# A super-powered CLI extensible with plugins {.text-center} +
+ +The ops cli is more than a standard cli: infact it is... + + +_RICH_ - yes, it includes installation, system administration, debugging, developing tools and much much +more! + +_EXTENSIBLE_ - easily extendable by writing simple plugins in shell or javascript. + + +WHISK-READY - it includes all openwhisk tools. + + +
+{{% asciinema src="ops" cols="80" rows="25" %}} +
+ + + +{{% /blocks/lead %}} + +{{% blocks/lead %}} + +{{% imgproccenter openwhisk %}} +{{% /imgproccenter %}} + +Built around Apache OpenWhisk, a production-ready and widely deployed +serverless engine providing all the patterns and best practices for scalable cloud-native applications. + +{{% /blocks/lead %}} + + +{{% blocks/lead %}} + +# Available everywhere {.text-center} + +You can install OpenServerless everywhere: from your local Windows / Mac / Linux machine for development and testing, +to powerful multi node Kubernetes cluster on premise or on your favorite Cloud Provider (AKS, AWS , GKS are fully +supported) + + + +{{% imgproccenter gke_aks_aws_kube.svg "" "" "rounded-image" %}} +{{% /imgproccenter %}} + +{{% /blocks/lead %}} + diff --git a/content/en/docs/_index.md b/content/en/docs/_index.md new file mode 100644 index 00000000..da1a8330 --- /dev/null +++ b/content/en/docs/_index.md @@ -0,0 +1,52 @@ +--- +title: Docs +weight: 20 +menus: main +--- +## About Apache OpenServerless + +Apache OpenServerless is an Open Source project, released under the +[Apache License +2.0](https://github.com/apache/openserverless/blob/main/LICENSE) +providing a portable and complete +[Serverless](https://martinfowler.com/articles/serverless.html) +environment, allowing to build quickly and easily cloud-native +applications. + +Our goal is to make OpenServerless **ubitiquous**, allowing it to easily +run a complete and portable environment that runs in every +[Kubernetes](https://kubernetes.io/). + +OpenServerless is based on [Apache +OpenWhisk](https://openwhisk.apache.org), 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. + +OpenServerless 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, `ops`, which lets you +deploy OpenServerless 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 +[**roadmap**](https://github.com/nuvolaris/nuvolaris/blob/main/docs/ROADMAP.md) +document. diff --git a/content/en/docs/installation/download/_index.md b/content/en/docs/installation/download/_index.md new file mode 100644 index 00000000..38190f36 --- /dev/null +++ b/content/en/docs/installation/download/_index.md @@ -0,0 +1,60 @@ +--- +title: Download +description: Download OpenServerless with ops CLI +weight: 10 +draft: false +--- +## Download and Install `ops` + +### What is `ops`? + +As you can guess it helps with operations: ops is the OPenServerless CLI. + +It is a task executor on steroids. + +- it embeds task, wsk and a lot of other utility commands (check with ops -help) +- automatically download and update command line tools, prerequisites and tasks +- taskfiles are organized in commands and subcommands, hierarchically and are powered by docopt +- it supports plugins + +The predefined set of tasks are all you need to install and manage an OpenServerless cluster. + +### Download links +You can install OpenServerless using its Command Line Interface, `ops`. + +{{< blockquote warning >}} +Since we are in a preview phase, this is not an official link approved by the Apache Software Foundation. +{{< /blockquote >}} + +Quick install in Linux, MacOS and Windows with WSL or GitBash: + +```bash +curl -sL bit.ly/get-ops | bash +``` + +Quick install in Windows with PowerShell + +```powershell +irm bit.ly/get-ops-exe | iex +``` + +### After the installation + +Once installed, in the first run `ops` will tell to update the tasks +executing: + +`ops -update` + +This command updates the OpenServerless "tasks" (its internal logic) to the +latest version. This command should be also executed frequently, as the +tasks are continuously evolving and expanding. + +`ops` will suggest when to update them (at least once a day). + +You normally just need to update the tasks but sometimes you also need +to update `ops` itself. The system will detect when it is the case and +tell you what to do. + +### Where to find more details: + +For more details, please visit the Github page of [Openserverless Cli](https://github.com/apache/openserverless-cli) \ No newline at end of file diff --git a/content/en/docs/installation/prereq/kubernetes/gke/_index.md b/content/en/docs/installation/prereq/kubernetes/gke/_index.md new file mode 100644 index 00000000..c26ab57c --- /dev/null +++ b/content/en/docs/installation/prereq/kubernetes/gke/_index.md @@ -0,0 +1,108 @@ +--- +title: Google GKE +description: Prerequisites for Google GKE +draft: true +--- +## Prerequisites to install OpenServerless in a Google GKE Cluster + +[Google GKE](https://cloud.google.com/kubernetes-engine) is a pre-built +Kubernetes cluster offered by the cloud provider [Google Cloud Platform +(GCP)](https://cloud.google.com/gcp). + +You can create a GKE Cluster in GCP for installing using OpenServerless using +[ops](#download.adoc) as follows: + +1. install the [GCloud CLI](#install-cli) + +2. [configure GKE](#configure) + +3. [provision GKE](#provision) + +4. optionally, retrieve the [load balancer address](#retrieve-lb) to + configure a DNS name + +Once you have GKE up and running you can proceed +[configuring](#configure.adoc) and [installing +OpenServerless](#install-cluster.adoc). + +### Installing the GCloud CLI{#install-cli} + +Our cli `ops` uses under the hood the [GCloud CLI version +2](https://cloud.google.com/sdk/gcloud), so you need to dowload and +install it [following those +instructions](https://cloud.google.com/sdk/docs/install). + +Once installed, ensure it is available on the terminal executing the +following command: + + gcloud version + +you should receive something like this: + + Google Cloud SDK 443.0.0 beta 2023.08.11 bq 2.0.96 + bundled-python3-unix 3.9.16 core 2023.08.11 gcloud-crc32c 1.0.0 + gke-gcloud-auth-plugin 0.5.5 gsutil 5.25 + +### Configuring GKE{#configure} + +Before starting, you need to create a project in Google Cloud. Then, to +install GKE you need to configure `ops` for GKE with the command +`ops config gke` answering to all the questions, as in the following +example: + + $ ops config gke + *** Please, specify GCloud Project Id and press enter. + nuvolaris + *** Please, specify GCloud Cluster Name and press enter. + The cluster name must be unique. + + Just press enter for default [nuvolaris]: + + *** Please, specify GCloud Cluster Zone and press enter. + To get a list of valid values use: + gcloud compute zones list + + Just press enter for default [us-east1]: + + *** Please, specify GCloud number of worker nodes and press enter. + Just press enter for default [3]: + + *** Please, specify GKE virtual machine type and press enter. + To get a list of valid values, use: + gcloud compute machine-types list + + Just press enter for default [e2-standard-2]: + + *** Please, specify GKE disk size in gigabyte and press enter. + Just press enter for default [50]: + +### Provisioning Google GKE{#provision} + +Once you have configured it, you can create the EKS cluster with the +command: + + ops cloud gke create + +It will take around 10 minutes to be ready. Please be patient. + +At the end of the process, you will have access directly to the created +Kubernetes cluster for installation. + +### Retrieving the Load Balancer DNS name{#retrieve-lb} +Once the cluster is up and running, you need to retrieve the DNS name of +the load balancer. + +You can read this with the command: + + ops cloud gke lb + +Take note of the result as it is required for [configuring a dns +name](#configure-dns.adoc) for your cluster. + +### Additional Commands + +You can delete the created cluster with: `ops cloud gke delete` + +You can extract again the cluster configuration, if you lose it, +reconfiguring the cluster and then using the command +`ops cloud gke kubeconfig`. diff --git a/content/en/docs/installation/prereq/kubernetes/openshift/_index.md b/content/en/docs/installation/prereq/kubernetes/openshift/_index.md new file mode 100644 index 00000000..a56ca3cf --- /dev/null +++ b/content/en/docs/installation/prereq/kubernetes/openshift/_index.md @@ -0,0 +1,43 @@ +--- +title: OpenShift +description: Prerequisites for RedHat™ OpenShift +draft: true +--- +[RedHat™ OpenShift](https://www.redhat.com/en/technologies/cloud-computing/openshift) +is a Kubernetes distribution offered by +[RedHat™](https://www.redhat.com), a division of IBM™. + +OpenShift is available in a variety of cloud environment and provider, +[using its own installer](https://github.com/openshift/installer) + +You can [install OpenServerless in OpenShift](/docs/installation/install/cluster/), provided you +have already installed OpenShift. + +The procedure is the following: + +1. Install OpenShift in any supported environment + [following this guide](https://docs.openshift.com/container-platform/4.13/installing/index.html) + +2. At the end of the installation, the installer will leave a + `kubeconfig` file in a folder. You need to import it with the + command. + +``` +ops cloud osh import +``` + +> 💡 **NOTE** +> +> in the command above, `` is the path to the generated `kubeconfig`. + +--- + +3. Now, setup the required components (currently, `acme-openshift`) with: + +``` +ops cloud config setup +``` + +Once you have OpenShift up and running and you imported its kubeconfig +you can proceed [configuring](/docs/installation/configure/) and [installing +OpenServerless](/docs/installation/install/cluster/). diff --git a/content/en/docs/installation/prereq/server/gcp/_index.md b/content/en/docs/installation/prereq/server/gcp/_index.md new file mode 100644 index 00000000..d5ca417d --- /dev/null +++ b/content/en/docs/installation/prereq/server/gcp/_index.md @@ -0,0 +1,128 @@ +--- +title: Server on GCP +description: Prerequisites to install OpenServerless in Google Cloud +weight: 30 +draft: true +--- + +## Provision a Linux Server in Google Cloud + +You can provision a server suitable to install OpenServerless in cloud +provider [Google Cloud Platform (GCP)](https://cloud.google.com/gcp) as +follows: + +1. install the [GCloud CLI](#install-cli) + +2. Enable [Gcloud services](#enable-services) + +3. [configure GKE](#configure) + +4. [provision a server](#provision) + +5. retrieve the [IP address](#retrieve-ip) to configure a DNS name + +Once you have Linux server up and running you can proceed +[configuring](/docs/installation/configure) and +[installing OpenServerless](/docs/installation/install/cluster/). + +### Installing the GCloud CLI{#install-cli} + +Our cli `ops` uses under the hood the [GCloud CLI version +2](https://cloud.google.com/sdk/gcloud), so you need to dowload and +install it [following those +instructions](https://cloud.google.com/sdk/docs/install). + +Once installed, ensure it is available on the terminal executing the +following command: + + gcloud version + +you should receive something like this: + + Google Cloud SDK 443.0.0 beta 2023.08.11 bq 2.0.96 + bundled-python3-unix 3.9.16 core 2023.08.11 gcloud-crc32c 1.0.0 + gke-gcloud-auth-plugin 0.5.5 gsutil 5.25 + +### Enabling gcloud services{#enable-services} + +You need to enable the following permissions for Google Cloud + + gcloud services enable cloudresourcemanager.googleapis.com + gcloud services enable dns.googleapis.com + gcloud services enable iamcredentials.googleapis.com + gcloud services enable iam.googleapis.com + gcloud services enable servicemanagement.googleapis.com + gcloud services enable serviceusage.googleapis.com + gcloud services enable storage-api.googleapis.com + gcloud services enable storage-component.googleapis.com + gcloud services enable deploymentmanager.googleapis.com + gcloud services enable resourcemanager.projects.delete + +### Configuring GKE to provision a server{#configure} + +Before you can provision a Linux server you have to configure AWS typing +the command: + + ops config gcloud + +The system will then ask the following questions: + + *** Please, specify GCloud Project Id and press enter. + nuvolaris + *** Please, specify GCloud Zone and press enter. + To get a list of valid values use: + gcloud compute zones list + + Just press enter for default [us-east1-d]: + + *** Please, specify GCloud virtual machine type and press enter. + To get a list of valid values, use: + gcloud compute machine-types list + + Just press enter for default [n2-standard-4]: + + *** Please, specify GCloud disk size in gigabyte and press enter. + Just press enter for default [200]: + + *** Please, specify GCloud public SSH key and press enter. + If you already have a public SSH key provide its path here. If you do not have it, generate a key pair with the following command: + ssh-keygen + The public key defaults to ~/.ssh/id_rsa.pub. + + Just press enter for default [/home/ubuntu/.ssh/id_rsa.pub]: + +### Provision a server{#provision} + +You can provision one or more servers using `ops`. The servers will use +the parameters you have just configured. + +You can create a new server with: + + ops cloud gcloud vm-create + +> ❗ **IMPORTANT** +> +> Replace `` with a name you choose, for example + `ops-server` + +The command will create a new server in Google Cloud with the parameters +you specified in configuration. + +You can also: + +1. list servers you created with `ops cloud gcloud vm-list` + +2. delete a server you created and you do not need anymore with + `ops cloud gcloud vm-delete ` + +### Retrieve IP{#retrieve-ip} + +The server will be provisioned with an IP address assigned by Google +Cloud. + +You can read the IP address of your server with + + ops cloud gcloud vm-getip + +You need this IP when [configuring a DNS name](/docs/installation/configure/dns/) for +the server. diff --git a/content/en/docs/installation/prereq/server/k3s/_index.md b/content/en/docs/installation/prereq/server/k3s/_index.md new file mode 100644 index 00000000..c54c2395 --- /dev/null +++ b/content/en/docs/installation/prereq/server/k3s/_index.md @@ -0,0 +1,67 @@ +--- +title: Install K3S +description: Prerequisites to install OpenServerless in K3S +weight: 40 +--- +## Install K3S in a server + +You can install OpenServerless as [described +here](#../../../install/server/index.adoc), and you do not need to +install any Kubernetes in it, as it is installed as part of the +procedure. In this case it installs [K3S](https://k3s.io). + +Or you can [install K3S in advance](#installing-k3s), and then proceed +[configuring](#../../../configure/index.adoc) and then installing +OpenServerless [as in any other Kubernetes +cluster](#../../../install/cluster/index.adoc). + +### Installing K3S in a server{#installing-k3s} + +Before installing ensure you have [satified the +prerequisites](#../../../prereq/index.adoc), most notably: + +1. you know the **IP address or DNS name** + +2. your server operating system satisfies the [K3S + requirements](https://docs.k3s.io/installation/requirements) + +3. you have passwordless access with ssh + +4. you have a user with passwordless sudo rights + +5. you have opened the port 6443 in the firewall + +Then you can use the following subcommand to install in the server: + + ops cloud k3s create [] + +where `` is the **IP address or DNS name** to access the server, +and the optional `` is the user you use to access the server: +if is not specified, the `root` username will be used. + +Those pieces of information should have been provided when provisioning +the server. + +> ❗ **IMPORTANT** +> +> If you installed a Kubernetes cluster in the server this way, you should +proceed installing OpenServerless as in +[a Kubernetes cluster](/docs/installation/install/cluster/), **not** +as a server. + +The installation retrieves also a Kubernetes configuration file, so you +can proceed to installing it without any other step involved. + +### Additional Commands + +In addition to `create` the following subcommands are also available: + +- `ops cloud k3s delete []`: + uninstall K3S from the server + +- `ops cloud k3s kubeconfig []`: + retrieve the kubeconfig from the K3S server + +- `ops cloud k3s info`: some information about the server + +- `ops cloud k3s status`: status of the server diff --git a/content/en/docs/installation/quickstart/_index.md b/content/en/docs/installation/quickstart/_index.md new file mode 100644 index 00000000..a6e64304 --- /dev/null +++ b/content/en/docs/installation/quickstart/_index.md @@ -0,0 +1,264 @@ +--- +title: Quick Start +description: Fast path to install a self-hosted OpenServerless +weight: 5 +--- +## Quick Start + +This is a quick start guide to the installation process, targeting +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: + +- [Download and install](/docs/installation/download/) ops, the + OpenServerless CLI, picking version suitable for your environment. + We support 64-bit versions of recent Windows, MacOS and major Linux + distributions. + +- Check that ops is correctly installed: open the terminal and write: + + ops -info + +- Configure the services you want to enable. By default, + OpenServerless will install only the serverless engine, accessible + in http with no services enabled. + +If you want to enable all the services, use: + + ops config enable --all + +otherwise pick the services you want, among `--redis`, `--mongodb`, +`--minio`, `--cron`, `--postgres`. Note that `--mongodb` is actually +[FerretDB](https://www.ferretdb.com/) and requires Postgres which is +implicitly also enabled. More details [here](/docs/installation/configure). + +Now, choose where to install OpenServerless. + +Your options are: + +- [locally](#locally) in your workstation; + +- in a Linux [server](#server) in your intranet + +- in a Linux [server](#internet-server) available on Internet + +- in a Kubernetes [cluster](#cluster) in your intranet + +- in [cloud](#cloud-cluster), where you can provision a Kubernetes + cluster + +## Local Installation + +If you have a **decent** workstation (with at least 16GB of memory) +running a **recent** **64-bit** operating system, you can install +[Docker Desktop](https://www.docker.com/products/docker-desktop/) and +then install OpenServerless in it. Once you have: + +1. installed the CLI + +2. configured the services + +3. installed Docker Desktop + +Make sure Docker Desktop its running before the next operation. You can +install OpenServerless and its services in Docker with just this +command: + + ops setup devcluster + +Once it is installed, you can proceed to read the +[tutorial](#../../tutorial/index.adoc) 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 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 [using a domain name +provider](https://en.wikipedia.org/wiki/List_of_managed_DNS_providers). +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: + + ops config apihost --tls= + +{{< blockquote important >}} +Replace the `` with the actual DNS name, without using prefixes like `http://` or suffixes like `:443`. Also, +replace ` with your actual email address. +{{< /blockquote >}} + +then proceed with the server installation. + +## Server Installation + +Once you got access to a Linux server with: + +1. An IP address or DNS name, referred to as `` + +2. Passwordless access with `ssh` to a Linux user `` + +3. At least 8GB of memory and 50GB of disk space available + +4. The user `` has passwordless `sudo` rights + +5. The firewall that allows traffic to ports 80, 443 and 6443 + +6. **Without** any Docker or Kubernetes installed + +7. **Without** any Web server or Web application installed + +then you can install OpenServerless 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, +[K3S](https://k3s.io), courtesy of +[K3Sup](https://github.com/alexellis/k3sup). + +To install OpenServerless, first check you have access to the server +with: + + ssh @ 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 OpenServerless +with this command: + + ops setup server + +{{< blockquote important >}} + Replace in the commands `` with the address of your server, and +`` with the actual user to use in your server. The `` can +be the same as `` you have configured in the previous +paragraph, if you did so, or simply the IP address of a server on your +intranet. +{{< /blockquote >}} + +Now wait until the installation completes. Once it is installed, you can +proceed to read the [tutorial](#tutorial:index.adoc) to learn how to +code with it. + +## 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 +[prerequisites](#../prereq/kubernetes/cluster/index.adoc) to be able to +install OpenServerless with no issues. + +We provide the support to easily configure and install a compliant +Kubernetes cluster for the following clouds: + +- [Amazon AWS](#aws) + +- [Microsoft Azure](#azure) + +- [Google Cloud](#gcloud) + +At the end of the installation you will have available and accessible a +Kubernetes Cluster able to install OpenServerless, so proceed with a +[cluster installation](#cluster). + +### Amazon AWS + +Configure and install an Amazon EKS cluster on Amazon AWS with: + + ops config eks + ops cloud eks create + +then [install the cluster](#cluster). + +### Azure AKS + +Configure and install an Azure AKS cluster on Microsoft Azure with: + + ops config aks + ops cloud aks create + +then [install the cluster](#cluster). + +### Google Cloud GKE + +Configure and install a Google Cloud GKE with: + + ops config gke + ops cloud gke create + +then [install the cluster](#cluster). + +## Cluster Install + +In short, if you have access to kubernetes cluster, you can install +OpenServerless with: + + ops 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: + +1. Access to the `cluster-admin` role + +2. Block storage configured as the default storage class + +3. The `nginx-ingress` installed + +4. Knowledge of the IP address of your `nginx-ingress` controller + +you can install OpenServerless in it. You can read [more details +here](#../prereq/kubernetes/cluster/index.adoc). + +You can get this access either by provisioning a Kubernetes cluster in +[cloud](#cloud-cluster) 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 OpenServerless. + +### Performing the installation + +To install, first, verify you have actually access to the Kubernetes +cluster, by running this command: + + ops 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 OpenServerless with the command: + + ops setup cluster + +Wait until the process is complete and if there are no errors, +OpenServerless is installed and ready to go. + +Once it is installed, you can proceed to read the +[Tutorial](#../../tutorial/index.adoc) to learn how to code with it. diff --git a/content/en/docs/reference/_index.md b/content/en/docs/reference/_index.md new file mode 100644 index 00000000..5f248cb6 --- /dev/null +++ b/content/en/docs/reference/_index.md @@ -0,0 +1,35 @@ +--- +title: Reference +description: OpenServerless Developer Guide +weight: 40 +--- +Welcome to Nuvolaris Developer guide. + +Nuvolaris is based on [Apache OpenWhisk](https://openwhisk.apache.org) +and the documentation in this section is derived for the official +OpenWhisk documentation. + +In this sections we mostly document how to write [**actions** +(functions)](#actions.adoc), the building blocks of OpenWhisk and +Nuvolaris applications. There are also a few related entities for +managing actions (packages, parameters etc) you also need to know. + +You can write actions in a number of programming languages. Nuvolaris +supports directly [this list of programming +languages](#index-runtimes.adoc). The list is expanding over the time. + +See below for documentation related to: + +- [OpenWhisk Entities](#index-entities.adoc) + +- [OpenServerless Runtimes](#index-runtimes.adoc) + +- [OpenServerless `ops` Tools](tools) + +- [OpenServerless `ops` Tasks](tasks) + +- [Advanced Reference Documentation](#index-references) + +There is also a [tutorial and a development +kit](#actions-actionloop.adoc) to build your own runtime for your +favorite programming language. diff --git a/content/en/docs/reference/references/_index.md b/content/en/docs/reference/references/_index.md new file mode 100644 index 00000000..912fccee --- /dev/null +++ b/content/en/docs/reference/references/_index.md @@ -0,0 +1,16 @@ +--- +title: Advanced +--- +# Advanced Reference Guides + +You can find advanced reference documentations here: + +- [Naming and Limits](#reference.adoc) + +- [Advanced CLI](#cli.adoc) + +- [Rest API](#rest_api.adoc) + +- [Runtimes under the hood](#actions-new.adoc) + +- [Building your runtime](#actions-actionloop.adoc) diff --git a/content/en/docs/tutorial/getting-started/_index.md b/content/en/docs/tutorial/getting-started/_index.md new file mode 100644 index 00000000..46ca3cbc --- /dev/null +++ b/content/en/docs/tutorial/getting-started/_index.md @@ -0,0 +1,74 @@ +--- +title: Getting started +description: Let's start building a sample application +weight: 10 +draft: false +--- + +## Getting started + +### Build a sample Application + +Imagine we have a static website and need server logic to store contacts +and validate data. This would require a server, a database and some code +to glue it all together. With a serverless approach, we can just +sprinkle little functions (that we call actions) on top of our static +website and let OpenServerless take care of the rest. No more setting up +VMs, backend web servers, databases, etc. + +In this tutorial, we will see how you can take advantage of several +services which are already part of a OpenServerless deployment and +develop a contact form page for users to fill it with their emails and +messages, which are then sent via email to us and stored in a database. + +### Openserverless CLI: Ops + +Serverless development is mostly performed on the CLI, and +OpenServerless has its tool called `ops`. It’s a command line tool that +allows you to deploy (and interact with) the platform seamlessly to the +cloud, locally and in custom environments. + +Ops is cross-platform and can be installed on Windows, Linux and MacOS. +You can find the project and the sources on +[Apache OpenServerless Cli Github page](https://github.com/apache/openserverless-cli) + +### Deploy OpenServerless + +To start using OpenServerless you can refer to the [Installation +Guide](/docs/installation/). You can follow the local +installation to quickly get started with OpenServerless deployed on your +machine, or if you want to follow the tutorial on a deployment on cloud +you can pick one of the many supported cloud provider. Once installed +come back here! + +### Enabling Services + +After installing OpenServerless on a local machine with Docker or on a +supported cloud, you can enable or disable the services offered by the platform. +As we will use Postgres database, the Static content with the Minio S3 compatible +storage and a cron scheduler, let’s run in the terminal: + +```bash +ops config enable --postgres --static --minio --cron +``` + +Since you should already have a deployment running, we have to update it +with the new services so they get deployed. Simply run: + +```bash +ops update apply +``` + +And with just that (when it finishes), we have everything we need ready +to use! + +### Cleaning Up + +Once you are done and want to clean the services configuration, just +run: + +```bash +ops config disable --postgres --static --minio --cron +``` + +--- diff --git a/content/en/openserverless-diagram.png b/content/en/openserverless-diagram.png new file mode 100644 index 00000000..4e39539e Binary files /dev/null and b/content/en/openserverless-diagram.png differ diff --git a/contribution-guidelines.md b/contribution-guidelines.md new file mode 100644 index 00000000..3479e9d1 --- /dev/null +++ b/contribution-guidelines.md @@ -0,0 +1,14 @@ +--- +title: Contribution Guidelines +weight: 10 +description: How to contribute to the Apache OpenServerless Project +--- +## Contribution Guidelines + +1. Subscribe our mailing list sending an email to `dev-subscribe@openserverless.apache.org` +2. Discuss your contribution and get a ticket assigned in our [Issue Tracker](https://github.com/apache/openserverless/issues) +3. setup your virtual machine as described [here](https://github.com/apache/openserverless) . +4. Learn about [git submodules](https://git-scm.com/book/en/v2/Git-Tools-Submodules) (we use them), and use the script `update-tree.sh` to update your source tree to the latest version of all the branches. +5. Fork the subrepo you want to contribute and code your contribution. +6. Download and sign the [ICLA](https://www.apache.org/licenses/icla.pdf) and send to `secretary@apache.org` before submitting any Pull Request +7. Send a pull request to the relevant subrepo. \ No newline at end of file diff --git a/docs/installation/install/docker/_index.md b/docs/installation/install/docker/_index.md new file mode 100644 index 00000000..cde331d9 --- /dev/null +++ b/docs/installation/install/docker/_index.md @@ -0,0 +1,140 @@ +--- +title: Docker +description: Install OpenServerless on a local machine +weight: 10 +--- + +## Local Docker installation + +This page describes how to install OpenServerless on your local machine. The +services are limited and not accessible from the outside so it is an +installation useful only for development purposes. + +### Prerequisites + +Before installing, you need to: + +- install [Docker](/docs/installation/prereq/docker/). + +- install [ops](/docs/installation/download/). + +- perform a minimal configuration. For more details about this, + check [Configure the services](/docs/installation/configure/). + +{{< blockquote info >}} +The static service works perfectly for the default namespace nuvolaris which is linking the http://localhost to the +nuvolaris web bucket. With this setup adding new users will add an ingress with host set to +namespace.localhost, that in theory could also work if the host file of the development machine is configured +to resolve it to the 127.0.0.1 ip address. +{{< /blockquote >}} + + +{{< blockquote warning >}} +You cannot have ``https`` in a local installation. +If you enable it, the configuration will be ignored. +{{< /blockquote >}} + +### Installation + +Run the commands: + +1. Minimal configuration + +```bash +ops config minimal +``` + +Behind the scene, this command will write a cluster configuration file called `~/.ops/config.json` activating these +services: `static`, `redis`, `postgres`, `ferretdb`, `minio`, `cron` constituting the common baseline for development +tasks. + +2. Setup the cluster + +```bash +ops setup devcluster +``` + +and wait until the command terminates. + +{{< details title="Click here to see a log sample of the setup">}} + +```bash +ops setup devcluster +Creating cluster "nuvolaris" ... + ✓ Ensuring node image (kindest/node:v1.25.3) 🖼 + ✓ Preparing nodes 📦 📦 + ✓ Writing configuration 📜 + ✓ Starting control-plane 🕹️ + ✓ Installing CNI 🔌 + ✓ Installing StorageClass 💾 + ✓ Joining worker nodes 🚜 + ✓ Waiting ≤ 1m0s for control-plane = Ready ⏳ + • Ready after 1s 💚 +Set kubectl context to "kind-nuvolaris" +You can now use your cluster with: + +kubectl cluster-info --context kind-nuvolaris --kubeconfig /Users/bruno/.ops/tmp/kubeconfig + +Thanks for using kind! + +[...continue] +``` + +> 💡 **NOTE** +> +> The log will continue because, after kind is up and running, OpenServerless namespace and relative services are +> installed inside. + +It will take some minute to complete, so be patient. + +{{< /details >}} + +### Troubleshooting + +Usually the setup completes without errors. + +However, if `ops` is unable to complete the setup, you may see this message at the end: + +```text +ops: Failed to run task "create": exit status 1 +task execution error: ops: Failed to run task "create": exit status 1 +ops: Failed to run task "devcluster": exit status 1 +task execution error: ops: Failed to run task "devcluster": exit status 1 +``` + +If this is your case, try to perform a uninstall / reinstall: + +```bash +ops setup cluster --uninstall +ops config reset +ops config minimal +ops setup devcluster +``` + +If this will not solve, please contact the community. + +### Post install + +[Check the tutorial](/docs/tutorial/) to learn how to use it. + +### Uninstall + +To uninstall you may: + +#### Uninstall devcluster + +This will actually remove the ops namespace and all the services from kind. +Useful to re-try an installation when something gone wrong. + +```bash +ops setup cluster --uninstall +ops config reset +``` + +#### Remove devcluster + +This will actually remove the nodes from kind: + +```bash +ops setup devcluster --uninstall +``` \ No newline at end of file diff --git a/docs/installation/prereq/server/azure/_index.md b/docs/installation/prereq/server/azure/_index.md new file mode 100644 index 00000000..b9647fbb --- /dev/null +++ b/docs/installation/prereq/server/azure/_index.md @@ -0,0 +1,155 @@ +--- +title: Server on Azure +description: Prerequisites to install OpenServerless in Azure +weight: 20 +--- + +## Provision a Linux server in Azure Cloud Platform + +You can provision a server suitable to install OpenServerless in cloud +provider [Azure](https://azure.microsoft.com/) +[ops](#download.adoc) as follows: + +1. install `az`, the [Azure CLI](#install-cli) + +2. get [Access and Secret Key](#connect-subscription) + +3. [configure Azure](#configure) + +4. [provision a server](#provision) + +5. retrieve the [ip address](#retrieve-ip) to configure a DNS name + +Once you have a Linux server up and running you can proceed +[configuring](/docs/installation/configure/) and +[installing OpenServerless](/docs/installation/install/cluster/). + +### Installing the Azure CLI{#install-cli} + +Our cli `ops` uses under the hood the [az](https://learn.microsoft.com/en-us/cli/azure), +command so you need to dowload and install it [following those +instructions](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli). + +Once installed, ensure it is available on the terminal executing the +following command: + + az version + +you should receive something like this: + + { + "azure-cli": "2.64.0", + "azure-cli-core": "2.64.0", + "azure-cli-telemetry": "1.1.0", + "extensions": { + "ssh": "2.0.5" + } + } + +Ensure the version is at least 2.64.0 + +### Connect a subscription{#connect-subscription} + +Next step is to connect `az` to a valid Azure subscription. Azure +supports [several authentication methods](https://learn.microsoft.com/en-us/cli/azure/authenticate-azure-cli): check +which one you prefer. + +The easiest is the one described in [Sign in interactively](https://learn.microsoft.com/en-us/cli/azure/authenticate-azure-cli-interactively): + + az login + +This will open a browser and you will asked to login to you azure account. Once logged in, the `az` command will be +automatically connected to the choosen subscription. + +To check if the `az` command is properly connected to your subscription, check the output of this command: + +``` + $ az account list --query "[].{subscriptionId: id, name: name, user: user.name}" --output table + + SubscriptionId Name User + ------------------------------------ --------------------------- ------------------------- + xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx Microsoft Azure Sponsorship openserverless@apache.org +``` + +### Configuring Azure to provision a server{#configure} + +Before you can provision a Linux server you have to configure Openserverless for Azure typing +the command: + + ops config azcloud + +The system will then ask the following questions: + +``` + *** Please, specify Azure Project Id and press enter. + Azure Project Id: openserverless-k3s + *** Please, specify Azure Zone and press enter. + To get a list of valid values use: + az account list-locations -o table + + Just press enter for default [eastus]: + Azure Zone: + + *** Please, specify Azure virtual machine type and press enter. + To get a list of valid values, use: + az vm list-sizes --location -o table + where is your current location. + + Just press enter for default [Standard_B4ms]: + Azure virtual machine type: + + *** Please, specify Azure vm disk size in gigabyte and press enter. + Just press enter for default [50]: + Azure vm disk size in gigabyte: + + *** Please, specify Azure Cloud public SSH key and press enter. + If you already have a public SSH key provide its path here. If you do not have it, generate a key pair with the following command: + ssh-keygen + The public key defaults to ~/.ssh/id_rsa.pub. + + Just press enter for default [~/.ssh/id_rsa.pub]: + Azure Cloud public SSH key: + + *** Please, specify Azure Cloud VM image and press enter. + Just press enter for default [Ubuntu2204]: + Azure Cloud VM image: +``` + +### Provision a server{#provision} + +You can provision one or more servers using `ops`. The servers will use +the parameters you have just configured. + +You can create a new server with: + +```bash + ops cloud azcloud vm-create +``` + +{{< blockquote important >}} +Replace `` with a name you choose, for example +`ops-server` +{{< /blockquote >}} + +The command will create a new server in Azure Cloud with the parameters +you specified in configuration. + +You can also: + +1. list servers you created with `ops cloud azcloud vm-list` + +2. delete a server you created and you do not need anymore with + `ops cloud azcloud vm-delete ` + +### Retrieve IP{#retrieve-ip} + +The server will be provisioned with an IP address assigned by Azure +Cloud. + +You can read the IP address of your server with + + ops cloud azcloud vm-getip + +You need this IP when [configuring a DNS name](/docs/installation/configure/dns/) for +the server. + diff --git a/docs/reference/tasks/_index.md b/docs/reference/tasks/_index.md new file mode 100644 index 00000000..cadf238e --- /dev/null +++ b/docs/reference/tasks/_index.md @@ -0,0 +1,29 @@ +--- +title: Tasks +--- + + +Type `ops ` to see usage and subtasks. + +## OpenServerless Tasks: + +``` + config Manage the Apache OpenServerless configuration + setup Setup the Apache OpenServerless platform on multiple environments + debug Debug utilities for the Apache OpenServerless platform + util Utilities +``` + +## OpenWhisk Tasks: + +```text + action Manage actions + invoke Invoke an action (pass parameters with =) + url Get the url of an action + activations Manage activations + logs Show logs of activations + result Show results of activations + package Manage packages + trigger Manage triggers + rule Manage rules for triggers +``` diff --git a/docs/reference/tasks/config/_index.md b/docs/reference/tasks/config/_index.md new file mode 100644 index 00000000..5ea67454 --- /dev/null +++ b/docs/reference/tasks/config/_index.md @@ -0,0 +1,87 @@ +--- +title: config +--- + + + `ops config` + + +```Usage: + config (enable|disable) [--all] [--redis] [--mongodb] [--minio] [--cron] [--static] [--postgres] [--prometheus] [--slack] [--mail] [--affinity] [--tolerations] [--quota] + config apihost (|auto) [--tls=] [--protocol=|auto] + config runtimes [] + config slack [--apiurl=] [--channel=] + config mail [--mailuser=] [--mailpwd=] [--mailfrom=] [--mailto=] + config volumes [--couchdb=] [--kafka=] [--pgvol=] [--storage=] [--alerting=] [--zookeeper=] [--redisvol=] [--mongogb=] + config controller [--javaopts=] [--loglevel=] [--replicas=] + config invoker [--javaopts=] [--poolmemory=] [--timeoutsrun=] [--timeoutslogs=] [--loglevel=] [--replicas=] + config limits [--time=