diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index 573e2f0c..00000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,14 +0,0 @@ -version: 2 -updates: -- package-ecosystem: npm - directory: "/" - schedule: - interval: daily - time: '20:00' - open-pull-requests-limit: 10 -- package-ecosystem: bundler - directory: "/" - schedule: - interval: daily - time: '20:00' - open-pull-requests-limit: 10 diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5568a14e..9b76404c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,10 +1,14 @@ -name: test +name: website on: + pull_request: + types: [closed] + push: branches: - main + env: PUBLISH_DIRECTORY: public @@ -12,29 +16,36 @@ permissions: contents: write jobs: - tests: + 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 Hugo - run: | - sudo apt-get update - sudo apt-get install -y hugo asciidoctor - - name: Prepare - working-directory: ${{ env.PUBLISH_DIRECTORY }} - run: | - rm -rf stylesheets - - name: Build Hugo site - run: | - hugo - - #- name: Deploy to ASF - # run: | - # cp -r public/* $GITHUB_WORKSPACE/public/ \ No newline at end of file + - 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 index f9f4dca8..fabbc3da 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,9 @@ package-lock.json .hugo_build.lock .env .direnv/ +.vscode +.idea +openserverless-cli +openserverless-task + + diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 1f027aaa..00000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "cSpell.words": [ - "Docsy", - "Goldydocs" - ] -} \ No newline at end of file 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 index 35f74071..99e050f7 100644 --- a/Taskfile.yaml +++ b/Taskfile.yaml @@ -2,14 +2,50 @@ version: '3' tasks: - default: task -l + default: task -l - preview: - desc: preview the websites - cmds: - - hugo server + 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 - debug: - desc: debug the websites - cmds: - - hugo server --ignoreCache --debug --disableFastRender \ No newline at end of file + 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 index 2e9a699b..d528fa66 100644 --- a/assets/scss/_styles_project.scss +++ b/assets/scss/_styles_project.scss @@ -1,9 +1,62 @@ +/* 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; +} -.text-black { - color: black; +aside{ + font-size: 1em !important; } +.text-black { color: black; } +.text-default { color: black; } +.text-white { color: white; } + .center-image-container { text-align: center; } @@ -11,4 +64,44 @@ .center-image-container img { display: inline-block; margin: auto; -} \ No newline at end of file +} + +.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 index 27952ce3..418c6e02 100644 --- a/assets/scss/_variables_project.scss +++ b/assets/scss/_variables_project.scss @@ -1,8 +1,4 @@ -/* +$font-family-base: "Quattrocento"; +$td-enable-google-fonts: false; -Add styles or override variables from the theme here. - -*/ -:root { - --bs-heading-color: yellow; - } \ No newline at end of file +$primary: #265d85 !default; \ No newline at end of file diff --git a/content/en/_index.md b/content/en/_index.md index 1e46468f..45302993 100644 --- a/content/en/_index.md +++ b/content/en/_index.md @@ -1,7 +1,73 @@ --- -title: Apache OpenServerless +title: Apache OpenServerless™ --- -# COMING SOON +{{< blocks/cover title="Welcome to Apache OpenServerless™!" height="full" >}} -![background](devenv.png) + + 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/_index_old.md b/content/en/_index_old.md deleted file mode 100644 index 925dca4f..00000000 --- a/content/en/_index_old.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: Apache OpenServerless ---- - -{{< blocks/cover title="Welcome to Apache OpenServerless!" image_anchor="top" height="full" >}} - - - Learn More - - - -

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 Fit "800x600" %}} -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 %}} \ No newline at end of file diff --git a/content/en/about/background.png b/content/en/about/background.png index 3981e576..e9f4952e 100644 Binary files a/content/en/about/background.png and b/content/en/about/background.png differ diff --git a/content/en/about/background.webp b/content/en/about/background.webp new file mode 100644 index 00000000..a1e93ad5 Binary files /dev/null and b/content/en/about/background.webp differ diff --git a/content/en/about/gke_aks_aws_kube.svg b/content/en/about/gke_aks_aws_kube.svg new file mode 100644 index 00000000..8bf1467d --- /dev/null +++ b/content/en/about/gke_aks_aws_kube.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/content/en/about/index.md b/content/en/about/index.md index 118836e5..ce038fbc 100644 --- a/content/en/about/index.md +++ b/content/en/about/index.md @@ -1,10 +1,10 @@ --- title: About Apache OpenServerless linkTitle: About -menu: {main: {weight: 10}} +menu: { main: { weight: 10 } } --- -{{% blocks/cover promo_image="openserverless-diagram.png" title="About Apache OpenServerless" image_anchor="smart" height="auto" %}} +{{% blocks/cover promo_image="background.png" title="Apache OpenServerless" %}} {.mt-5} @@ -12,46 +12,80 @@ menu: {main: {weight: 10}} {{% blocks/lead %}} - -{{% imgproccenter openserverless-diagram Fit "800x600" %}} -
A complete Serverless Development Environment for Any Cloud and Any Kubernetes +{{% imgproccenter openserverless-diagram.webp "Fit" "3456x1728" "rounded-image" %}} {{% /imgproccenter %}} +
A complete Serverless Development Environment for Any Cloud and Any Kubernetes + + {{% /blocks/lead %}} -{{% blocks/section %}} +{{% 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} +
-Managed by a Kubernetes Operator -{.h1 .text-center} +The ops cli is more than a standard cli: infact it is... -{{% /blocks/section %}} -{{% blocks/section %}} +_RICH_ - yes, it includes installation, system administration, debugging, developing tools and much much +more! -A super-powered CLI extensible with plugins -{.h1 .text-center} +_EXTENSIBLE_ - easily extendable by writing simple plugins in shell or javascript. -{.text-center} -{{% /blocks/section %}} +WHISK-READY - it includes all openwhisk tools. -{{% blocks/section %}} -{{% imgproccenter openwhisk Fit "508x512" %}} -
-Built around Apache OpenWhisk, a production-ready and widely deployed serverless engine providing all the patterns and best practices for scalable cloud-native applications. +
+{{% 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/section %}} +{{% /blocks/lead %}} -{{% blocks/section %}} +{{% 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) + -Available everywhere -{.h1 .text-center} -{.text-center} +{{% imgproccenter gke_aks_aws_kube.svg "" "" "rounded-image" %}} +{{% /imgproccenter %}} + +{{% /blocks/lead %}} -{{% /blocks/section %}} diff --git a/content/en/about/openserverless-diagram.png b/content/en/about/openserverless-diagram.png deleted file mode 100644 index c8bbb8df..00000000 Binary files a/content/en/about/openserverless-diagram.png and /dev/null differ diff --git a/content/en/about/openserverless-diagram.webp b/content/en/about/openserverless-diagram.webp new file mode 100644 index 00000000..b387d443 Binary files /dev/null and b/content/en/about/openserverless-diagram.webp differ diff --git a/content/en/about/openwhisk.png b/content/en/about/openwhisk.png deleted file mode 100644 index 979d906b..00000000 Binary files a/content/en/about/openwhisk.png and /dev/null differ diff --git a/content/en/about/openwhisk.svg b/content/en/about/openwhisk.svg new file mode 100644 index 00000000..ff60b827 --- /dev/null +++ b/content/en/about/openwhisk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/content/en/contribution-guidelines.adoc b/content/en/contribution-guidelines.md similarity index 97% rename from content/en/contribution-guidelines.adoc rename to content/en/contribution-guidelines.md index 3fc50b44..3479e9d1 100644 --- a/content/en/contribution-guidelines.adoc +++ b/content/en/contribution-guidelines.md @@ -3,7 +3,7 @@ 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) diff --git a/content/en/docs/_index.md b/content/en/docs/_index.md index c20b4124..da1a8330 100644 --- a/content/en/docs/_index.md +++ b/content/en/docs/_index.md @@ -50,4 +50,3 @@ environment with the following features: 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 index 92ac3d83..38190f36 100644 --- a/content/en/docs/installation/download/_index.md +++ b/content/en/docs/installation/download/_index.md @@ -6,18 +6,37 @@ draft: false --- ## Download and Install `ops` -🚧 PAGE UNDER CONSTRUCTION 🚧 +### 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`. -You can download it for your system. It is available for the following -operating systems, architectures and formats: +{{< blockquote warning >}} +Since we are in a preview phase, this is not an official link approved by the Apache Software Foundation. +{{< /blockquote >}} - PUT HERE THE DOWNLOADS +Quick install in Linux, MacOS and Windows with WSL or GitBash: -Download your version from this page, then install it according to the -procedures of your operating system. +```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 @@ -35,3 +54,7 @@ tasks are continuously evolving and expanding. 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/install/docker/_index.md b/content/en/docs/installation/install/docker/_index.md new file mode 100644 index 00000000..cde331d9 --- /dev/null +++ b/content/en/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/content/en/docs/installation/install/local/_index.md b/content/en/docs/installation/install/local/_index.md deleted file mode 100644 index 0ecbfd6a..00000000 --- a/content/en/docs/installation/install/local/_index.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Local Machine -description: Install OpenServerless on a local machine -weight: 10 ---- -### Local 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/). - -- [configure](/docs/installation/configure/) the services you want - -> 💡 **NOTE** -> -> You cannot have ``https`` and static publishing in a local -installation. If you enable them, the configuration will be ignored. - -### Installation - -Run the command: - - ops setup devcluster - -and wait until the command terminates. - -### Post install - -[Check the tutorial](/docs/tutorial/) to learn how to use it. - -To uninstall, execute the command: - - ops setup devcluster --uninstall diff --git a/content/en/docs/installation/prereq/kubernetes/gke/_index.md b/content/en/docs/installation/prereq/kubernetes/gke/_index.md index aa131e72..c26ab57c 100644 --- a/content/en/docs/installation/prereq/kubernetes/gke/_index.md +++ b/content/en/docs/installation/prereq/kubernetes/gke/_index.md @@ -1,6 +1,7 @@ --- title: Google GKE description: Prerequisites for Google GKE +draft: true --- ## Prerequisites to install OpenServerless in a Google GKE Cluster diff --git a/content/en/docs/installation/prereq/kubernetes/openshift/_index.md b/content/en/docs/installation/prereq/kubernetes/openshift/_index.md index eb59914a..a56ca3cf 100644 --- a/content/en/docs/installation/prereq/kubernetes/openshift/_index.md +++ b/content/en/docs/installation/prereq/kubernetes/openshift/_index.md @@ -1,6 +1,7 @@ --- -title: OpensShift +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 diff --git a/content/en/docs/installation/prereq/server/azure/_index.md b/content/en/docs/installation/prereq/server/azure/_index.md new file mode 100644 index 00000000..b9647fbb --- /dev/null +++ b/content/en/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/content/en/docs/installation/prereq/server/gcp/_index.md b/content/en/docs/installation/prereq/server/gcp/_index.md index 69852331..d5ca417d 100644 --- a/content/en/docs/installation/prereq/server/gcp/_index.md +++ b/content/en/docs/installation/prereq/server/gcp/_index.md @@ -2,6 +2,7 @@ title: Server on GCP description: Prerequisites to install OpenServerless in Google Cloud weight: 30 +draft: true --- ## Provision a Linux Server in Google Cloud diff --git a/content/en/docs/installation/prereq/server/k3s/_index.md b/content/en/docs/installation/prereq/server/k3s/_index.md index 79f9c3cd..c54c2395 100644 --- a/content/en/docs/installation/prereq/server/k3s/_index.md +++ b/content/en/docs/installation/prereq/server/k3s/_index.md @@ -23,7 +23,7 @@ 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) + requirements](https://docs.k3s.io/installation/requirements) 3. you have passwordless access with ssh @@ -33,10 +33,11 @@ prerequisites](#../../../prereq/index.adoc), most notably: Then you can use the following subcommand to install in the server: - ops cloud k3s create SERVER= USERNAME= + ops cloud k3s create [] where `` is the **IP address or DNS name** to access the server, -and `` is the user you use 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. @@ -44,8 +45,8 @@ 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** +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 @@ -55,11 +56,11 @@ can proceed to installing it without any other step involved. In addition to `create` the following subcommands are also available: -- `ops cloud k3s delete SERVER= USERNAME=`: - uninstall K3S from the server +- `ops cloud k3s delete []`: + uninstall K3S from the server -- `ops cloud k3s kubeconfig SERVER= USERNAME=`: - retrieve the kubeconfig from the K3S server +- `ops cloud k3s kubeconfig []`: + retrieve the kubeconfig from the K3S server - `ops cloud k3s info`: some information about the server diff --git a/content/en/docs/installation/quickstart/_index.md b/content/en/docs/installation/quickstart/_index.md index ee0c063e..a6e64304 100644 --- a/content/en/docs/installation/quickstart/_index.md +++ b/content/en/docs/installation/quickstart/_index.md @@ -104,11 +104,10 @@ If you have this name, configure it and enable DNS with: ops config apihost --tls= -> ❗ **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 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. @@ -149,13 +148,13 @@ with this command: ops setup server -> ❗ **IMPORTANT** -> -> Replace in the commands `` with the address of your server, and +{{< 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 +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 diff --git a/content/en/docs/reference/_index.md b/content/en/docs/reference/_index.md index 35fc19e7..5f248cb6 100644 --- a/content/en/docs/reference/_index.md +++ b/content/en/docs/reference/_index.md @@ -20,9 +20,13 @@ languages](#index-runtimes.adoc). The list is expanding over the time. See below for documentation related to: -- [Nuvolaris and OpenWhisk Entities](#index-entities.adoc) +- [OpenWhisk Entities](#index-entities.adoc) -- [Nuvolaris Runtimes](#index-runtimes.adoc) +- [OpenServerless Runtimes](#index-runtimes.adoc) + +- [OpenServerless `ops` Tools](tools) + +- [OpenServerless `ops` Tasks](tasks) - [Advanced Reference Documentation](#index-references) diff --git a/content/en/docs/reference/references/_index.md b/content/en/docs/reference/references/_index.md index c4194d53..912fccee 100644 --- a/content/en/docs/reference/references/_index.md +++ b/content/en/docs/reference/references/_index.md @@ -1,5 +1,5 @@ --- -title: References +title: Advanced --- # Advanced Reference Guides diff --git a/content/en/docs/reference/tasks/_index.md b/content/en/docs/reference/tasks/_index.md new file mode 100644 index 00000000..cadf238e --- /dev/null +++ b/content/en/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/content/en/docs/reference/tasks/config/_index.md b/content/en/docs/reference/tasks/config/_index.md new file mode 100644 index 00000000..5ea67454 --- /dev/null +++ b/content/en/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=