Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .env.sample
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ REAL_HOME=your-actual-directory-outside-of-the-container
# linode token
LINODE_CLI_TOKEN=linode-token-from-dashboard
# if you want to push your custom image to push in your repo
MY_OPERATOR_IMAGE=user/nuvolaris-operator
MY_OPERATOR_IMAGE=user/openserverless-operator
# a slack incoming webhook to write messages
SLACK_WEBOOK=your-slack-webhook
# ip or hostname and ssh user with sudo of a server running ubuntu 22
Expand Down
2 changes: 1 addition & 1 deletion .github/kind.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ nodes:
kind: InitConfiguration
nodeRegistration:
kubeletExtraArgs:
node-labels: "ingress-ready=true,nuvolaris.io/apihost=localhost,nuvolaris.io/apiport=3233,nuvolaris.io/protocol=http,nuvolaris.io/kube=kind,nuvolaris.io/hostpath=data"
node-labels: "ingress-ready=true,openserverless.io/apihost=localhost,openserverless.io/apiport=3233,openserverless.io/protocol=http,openserverless.io/kube=kind,openserverless.io/hostpath=data"
- role: worker
extraMounts:
- hostPath: /tmp
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ jobs:
uses: container-tools/kind-action@v2.0.4
with:
version: v0.22.0
cluster_name: nuvolaris
cluster_name: openserverless
config: .github/kind.yaml
- name: Set up Python 3.12
uses: actions/setup-python@v4
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/image.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ jobs:
uses: container-tools/kind-action@v2.0.4
with:
version: v0.22.0
cluster_name: nuvolaris
cluster_name: openserverless
config: .github/kind.yaml
- name: Install
run: poetry install
Expand Down
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ clusters/worker.yaml
*.kubeconfig
run.pid
*.off
actions/**/nuvolaris/**/*
actions/**/openserverless/**/*
!actions/**/__main__.py
_*.yaml
apihost.txt
Expand Down
6 changes: 3 additions & 3 deletions DESIGN.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ The operator is built with [`kopf`](https://kopf.readthedocs.io/en/stable/). It
events coming from Kubernetes. The main event to react to is the deployment of a Custom Resource Definition that
configures OpenWhisk and all the related components.

All the code is in the package `nuvolaris`. Events are handled in `main.py`.
All the code is in the package `openserverless`. Events are handled in `main.py`.

Each event handlers uses utility functions you can find the various service specific files like `openwhisk` or `couchdb`.

Expand Down Expand Up @@ -53,8 +53,8 @@ Then you can do this (obvious details omitted)
1. You create a customization to create a secret.

2. there is a customization to create a `patch` for it. There are a few utility functions for that in the
`nuvolaris.kustomize` package. Some of them are actually _templatized_ (have Template name) so the actual file is
generated expanding a template. All templates are under `nuvolaris/templates`. A _templatized_ configuration uses
`openserverless.kustomize` package. Some of them are actually _templatized_ (have Template name) so the actual file is
generated expanding a template. All templates are under `openserverless/templates`. A _templatized_ configuration uses
`Jinja2`. When you use templates you also have to provide the `data` dictionary for the templates.

3. Once finished you generate a configuration to be applied. Usually it is better to be a series of configuration,
Expand Down
124 changes: 62 additions & 62 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -19,59 +19,59 @@
# Sources
FROM python:3.12-slim-bullseye AS sources

RUN groupadd --gid 1001 nuvolaris && \
useradd -m nuvolaris -s /bin/bash --uid 1001 --gid 1001 --groups root
RUN groupadd --gid 1001 openserverless && \
useradd -m openserverless -s /bin/bash --uid 1001 --gid 1001 --groups root

USER nuvolaris
WORKDIR /home/nuvolaris
USER openserverless
WORKDIR /home/openserverless
# install the operator
ADD --chown=nuvolaris:nuvolaris nuvolaris/*.py /home/nuvolaris/nuvolaris/
ADD --chown=nuvolaris:nuvolaris nuvolaris/files /home/nuvolaris/nuvolaris/files
ADD --chown=nuvolaris:nuvolaris nuvolaris/templates /home/nuvolaris/nuvolaris/templates
ADD --chown=nuvolaris:nuvolaris nuvolaris/policies /home/nuvolaris/nuvolaris/policies
ADD --chown=nuvolaris:nuvolaris deploy/nuvolaris-operator /home/nuvolaris/deploy/nuvolaris-operator
ADD --chown=nuvolaris:nuvolaris deploy/nuvolaris-permissions /home/nuvolaris/deploy/nuvolaris-permissions
ADD --chown=nuvolaris:nuvolaris deploy/openwhisk-standalone /home/nuvolaris/deploy/openwhisk-standalone
ADD --chown=nuvolaris:nuvolaris deploy/openwhisk-endpoint /home/nuvolaris/deploy/openwhisk-endpoint
ADD --chown=nuvolaris:nuvolaris deploy/couchdb /home/nuvolaris/deploy/couchdb
ADD --chown=nuvolaris:nuvolaris deploy/redis /home/nuvolaris/deploy/redis
ADD --chown=nuvolaris:nuvolaris deploy/scheduler /home/nuvolaris/deploy/scheduler
ADD --chown=nuvolaris:nuvolaris deploy/mongodb-operator /home/nuvolaris/deploy/mongodb-operator
ADD --chown=nuvolaris:nuvolaris deploy/mongodb-operator-deploy /home/nuvolaris/deploy/mongodb-operator-deploy
ADD --chown=nuvolaris:nuvolaris deploy/mongodb-standalone /home/nuvolaris/deploy/mongodb-standalone
ADD --chown=nuvolaris:nuvolaris deploy/cert-manager /home/nuvolaris/deploy/cert-manager
ADD --chown=nuvolaris:nuvolaris deploy/ingress-nginx /home/nuvolaris/deploy/ingress-nginx
ADD --chown=nuvolaris:nuvolaris deploy/issuer /home/nuvolaris/deploy/issuer
ADD --chown=nuvolaris:nuvolaris deploy/minio /home/nuvolaris/deploy/minio
ADD --chown=nuvolaris:nuvolaris deploy/kafka /home/nuvolaris/deploy/kafka
ADD --chown=nuvolaris:nuvolaris deploy/zookeeper /home/nuvolaris/deploy/zookeeper
ADD --chown=nuvolaris:nuvolaris deploy/nginx-static /home/nuvolaris/deploy/nginx-static
ADD --chown=nuvolaris:nuvolaris deploy/content /home/nuvolaris/deploy/content
ADD --chown=nuvolaris:nuvolaris deploy/postgres-operator /home/nuvolaris/deploy/postgres-operator
ADD --chown=nuvolaris:nuvolaris deploy/postgres-operator-deploy /home/nuvolaris/deploy/postgres-operator-deploy
ADD --chown=nuvolaris:nuvolaris deploy/ferretdb /home/nuvolaris/deploy/ferretdb
ADD --chown=nuvolaris:nuvolaris deploy/runtimes /home/nuvolaris/deploy/runtimes
ADD --chown=nuvolaris:nuvolaris deploy/postgres-backup /home/nuvolaris/deploy/postgres-backup
ADD --chown=nuvolaris:nuvolaris run.sh dbinit.sh cron.sh pyproject.toml poetry.lock whisk-system.sh /home/nuvolaris/
ADD --chown=openserverless:openserverless openserverless/*.py /home/openserverless/openserverless/
ADD --chown=openserverless:openserverless openserverless/files /home/openserverless/openserverless/files
ADD --chown=openserverless:openserverless openserverless/templates /home/openserverless/openserverless/templates
ADD --chown=openserverless:openserverless openserverless/policies /home/openserverless/openserverless/policies
ADD --chown=openserverless:openserverless deploy/openserverless-operator /home/openserverless/deploy/openserverless-operator
ADD --chown=openserverless:openserverless deploy/openserverless-permissions /home/openserverless/deploy/openserverless-permissions
ADD --chown=openserverless:openserverless deploy/openwhisk-standalone /home/openserverless/deploy/openwhisk-standalone
ADD --chown=openserverless:openserverless deploy/openwhisk-endpoint /home/openserverless/deploy/openwhisk-endpoint
ADD --chown=openserverless:openserverless deploy/couchdb /home/openserverless/deploy/couchdb
ADD --chown=openserverless:openserverless deploy/redis /home/openserverless/deploy/redis
ADD --chown=openserverless:openserverless deploy/scheduler /home/openserverless/deploy/scheduler
ADD --chown=openserverless:openserverless deploy/mongodb-operator /home/openserverless/deploy/mongodb-operator
ADD --chown=openserverless:openserverless deploy/mongodb-operator-deploy /home/openserverless/deploy/mongodb-operator-deploy
ADD --chown=openserverless:openserverless deploy/mongodb-standalone /home/openserverless/deploy/mongodb-standalone
ADD --chown=openserverless:openserverless deploy/cert-manager /home/openserverless/deploy/cert-manager
ADD --chown=openserverless:openserverless deploy/ingress-nginx /home/openserverless/deploy/ingress-nginx
ADD --chown=openserverless:openserverless deploy/issuer /home/openserverless/deploy/issuer
ADD --chown=openserverless:openserverless deploy/minio /home/openserverless/deploy/minio
ADD --chown=openserverless:openserverless deploy/kafka /home/openserverless/deploy/kafka
ADD --chown=openserverless:openserverless deploy/zookeeper /home/openserverless/deploy/zookeeper
ADD --chown=openserverless:openserverless deploy/nginx-static /home/openserverless/deploy/nginx-static
ADD --chown=openserverless:openserverless deploy/content /home/openserverless/deploy/content
ADD --chown=openserverless:openserverless deploy/postgres-operator /home/openserverless/deploy/postgres-operator
ADD --chown=openserverless:openserverless deploy/postgres-operator-deploy /home/openserverless/deploy/postgres-operator-deploy
ADD --chown=openserverless:openserverless deploy/ferretdb /home/openserverless/deploy/ferretdb
ADD --chown=openserverless:openserverless deploy/runtimes /home/openserverless/deploy/runtimes
ADD --chown=openserverless:openserverless deploy/postgres-backup /home/openserverless/deploy/postgres-backup
ADD --chown=openserverless:openserverless run.sh dbinit.sh cron.sh pyproject.toml poetry.lock whisk-system.sh /home/openserverless/

# prepares the required folders to deploy the whisk-system actions
RUN mkdir /home/nuvolaris/deploy/whisk-system
ADD --chown=nuvolaris:nuvolaris actions /home/nuvolaris/actions
RUN mkdir /home/openserverless/deploy/whisk-system
ADD --chown=openserverless:openserverless actions /home/openserverless/actions

# enterprise specific
ADD --chown=nuvolaris:nuvolaris deploy/openwhisk-enterprise /home/nuvolaris/deploy/openwhisk-enterprise
ADD --chown=nuvolaris:nuvolaris deploy/openwhisk-invoker /home/nuvolaris/deploy/openwhisk-invoker
ADD --chown=nuvolaris:nuvolaris deploy/monitoring /home/nuvolaris/deploy/monitoring
ADD --chown=nuvolaris:nuvolaris deploy/alert-manager /home/nuvolaris/deploy/alert-manager
ADD --chown=nuvolaris:nuvolaris deploy/quota /home/nuvolaris/deploy/quota
ADD --chown=nuvolaris:nuvolaris deploy/kvrocks /home/nuvolaris/deploy/kvrocks
ADD --chown=nuvolaris:nuvolaris deploy/etcd /home/nuvolaris/deploy/etcd
ADD --chown=nuvolaris:nuvolaris deploy/milvus-operator /home/nuvolaris/deploy/milvus-operator
ADD --chown=nuvolaris:nuvolaris deploy/milvus /home/nuvolaris/deploy/milvus
ADD --chown=nuvolaris:nuvolaris deploy/milvus-slim /home/nuvolaris/deploy/milvus-slim
ADD --chown=nuvolaris:nuvolaris deploy/registry /home/nuvolaris/deploy/registry
ADD --chown=nuvolaris:nuvolaris deploy/seaweedfs /home/nuvolaris/deploy/seaweedfs
ADD --chown=nuvolaris:nuvolaris quota.sh /home/nuvolaris/
ADD --chown=openserverless:openserverless deploy/openwhisk-enterprise /home/openserverless/deploy/openwhisk-enterprise
ADD --chown=openserverless:openserverless deploy/openwhisk-invoker /home/openserverless/deploy/openwhisk-invoker
ADD --chown=openserverless:openserverless deploy/monitoring /home/openserverless/deploy/monitoring
ADD --chown=openserverless:openserverless deploy/alert-manager /home/openserverless/deploy/alert-manager
ADD --chown=openserverless:openserverless deploy/quota /home/openserverless/deploy/quota
ADD --chown=openserverless:openserverless deploy/kvrocks /home/openserverless/deploy/kvrocks
ADD --chown=openserverless:openserverless deploy/etcd /home/openserverless/deploy/etcd
ADD --chown=openserverless:openserverless deploy/milvus-operator /home/openserverless/deploy/milvus-operator
ADD --chown=openserverless:openserverless deploy/milvus /home/openserverless/deploy/milvus
ADD --chown=openserverless:openserverless deploy/milvus-slim /home/openserverless/deploy/milvus-slim
ADD --chown=openserverless:openserverless deploy/registry /home/openserverless/deploy/registry
ADD --chown=openserverless:openserverless deploy/seaweedfs /home/openserverless/deploy/seaweedfs
ADD --chown=openserverless:openserverless quota.sh /home/openserverless/

#------------------------------------------------------------------------------
# Python dependencies
Expand All @@ -88,15 +88,15 @@ ENV PYTHONUNBUFFERED=1
ENV POETRY_CACHE_DIR=/opt/.cache
ENV PATH=${POETRY_HOME}/bin:$PATH

WORKDIR /home/nuvolaris
COPY --chown=nuvolaris:nuvolaris pyproject.toml poetry.lock /home/nuvolaris/
WORKDIR /home/openserverless
COPY --chown=openserverless:openserverless pyproject.toml poetry.lock /home/openserverless/
RUN echo "Installing poetry" && \
# Install minimal dependencies
echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections && \
apt-get update && apt-get install -y --no-install-recommends \
curl gnupg zip unzip && \
curl -sSL https://install.python-poetry.org | python - && \
cd /home/nuvolaris && poetry install --no-root --no-interaction --no-ansi && rm -rf $POETRY_CACHE_DIR
cd /home/openserverless && poetry install --no-root --no-interaction --no-ansi && rm -rf $POETRY_CACHE_DIR

#------------------------------------------------------------------------------
# Final stage
Expand All @@ -111,17 +111,17 @@ ENV INVOKER_TAG=3.1.0-mastrogpt.2402101445
ENV OPERATOR_IMAGE=${OPERATOR_IMAGE_DEFAULT}
ENV OPERATOR_TAG=${OPERATOR_TAG_DEFAULT}
ENV TZ=Europe/London
ENV HOME=/home/nuvolaris
ENV VIRTUAL_ENV=/home/nuvolaris/.venv
ENV HOME=/home/openserverless
ENV VIRTUAL_ENV=/home/openserverless/.venv
ENV POETRY_HOME=/opt/poetry
ENV POETRY_CACHE_DIR=/opt/.cache
ENV PATH=$POETRY_HOME/bin:$HOME/.venv/bin:$HOME/.local/bin:/usr/local/bin:/usr/bin:/sbin:/bin:/usr/sbin/
# configure dpkg && timezone
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone && \
# add nuvolaris user
groupadd --gid 1001 nuvolaris && \
useradd -m nuvolaris -s /bin/bash --uid 1001 --gid 1001 --groups root && \
echo "nuvolaris ALL=(ALL:ALL) NOPASSWD: ALL" >>/etc/sudoers && \
# add openserverless user
groupadd --gid 1001 openserverless && \
useradd -m openserverless -s /bin/bash --uid 1001 --gid 1001 --groups root && \
echo "openserverless ALL=(ALL:ALL) NOPASSWD: ALL" >>/etc/sudoers && \
# Install minimal dependencies
echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections && \
apt-get update && apt-get install -y --no-install-recommends \
Expand All @@ -144,17 +144,17 @@ RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone &
# install taskfile
curl -sL https://taskfile.dev/install.sh | sh -s -- -d -b /usr/bin

USER nuvolaris
WORKDIR /home/nuvolaris
USER openserverless
WORKDIR /home/openserverless
# Copy virtualenv
COPY --from=deps --chown=nuvolaris:nuvolaris ${VIRTUAL_ENV} ${VIRTUAL_ENV}
COPY --from=deps --chown=openserverless:openserverless ${VIRTUAL_ENV} ${VIRTUAL_ENV}
# Copy poetry
COPY --from=deps --chown=nuvolaris:nuvolaris ${POETRY_HOME} ${POETRY_HOME}
COPY --from=deps --chown=openserverless:openserverless ${POETRY_HOME} ${POETRY_HOME}
# Copy the home
COPY --from=sources --chown=nuvolaris:nuvolaris ${HOME} ${HOME}
COPY --from=sources --chown=openserverless:openserverless ${HOME} ${HOME}
RUN poetry install --only main --no-interaction --no-ansi && rm -rf ${POETRY_CACHE_DIR}
# prepares the required folders to deploy the whisk-system actions
RUN mkdir -p /home/nuvolaris/deploy/whisk-system && \
RUN mkdir -p /home/openserverless/deploy/whisk-system && \
./whisk-system.sh && \
cd deploy && tar cvf ../deploy.tar *
CMD ["./run.sh"]
28 changes: 14 additions & 14 deletions OPERATOR.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,14 +54,14 @@ OpenServerless operator is normally deployed using a `whisk.yaml` configuration
Typically, the customization file contains something like:

```
apiVersion: nuvolaris.org/v1
apiVersion: openserverless.org/v1
kind: Whisk
metadata:
name: controller
namespace: nuvolaris
namespace: openserverless
spec:
nuvolaris:
apihost: <ip address or hostname to be assigned to nuvolaris controller ingress>
openserverless:
apihost: <ip address or hostname to be assigned to openserverless controller ingress>
components:
# start openwhisk controller
openwhisk: true
Expand All @@ -86,7 +86,7 @@ spec:
openwhisk:
namespaces:
whisk-system: xxxx:yyyyyy
nuvolaris: ccccc:zzzzz
openserverless: ccccc:zzzzz
couchdb:
host: couchdb
port: 5984
Expand All @@ -103,9 +103,9 @@ spec:
admin:
user: <mongodb_db_admin_user>
password: <mongodb_db_admin_pwd>
nuvolaris:
user: <mongodb_db_nuvolaris_user>
password: <mongodb_db_nuvolaris_pwd>
openserverless:
user: <mongodb_db_openserverless_user>
password: <mongodb_db_openserverless_pwd>
useOperator: False
scheduler:
schedule: "* * * * *"
Expand All @@ -114,7 +114,7 @@ spec:
acme-server-url: https://acme-staging-v02.api.letsencrypt.org/directory
minio:
volume-size: 2
nuvolaris:
openserverless:
root-user: <minio_admin_user>
root-password: <minio_admin_pwd>
configs:
Expand Down Expand Up @@ -202,22 +202,22 @@ that can be executed modify for example `controller.javaOpts:"-Xmx8192M"` and re
To apply the new customization execute:

```shell
kubectl -n nuvolaris apply -f whisk.yaml
kubectl -n openserverless apply -f whisk.yaml
```

## Deploying the controller in lean-mode

The enterprise operator supports also the deployment of the sole controller in lean mode, by simply applying a `whisk.yaml` containing

```
apiVersion: nuvolaris.org/v1
apiVersion: openserverless.org/v1
kind: Whisk
metadata:
name: controller
namespace: nuvolaris
namespace: openserverless
spec:
nuvolaris:
apihost: <ip address or hostname to be assigned to nuvolaris controller ingress>
openserverless:
apihost: <ip address or hostname to be assigned to openserverless controller ingress>
components:
# start openwhisk controller
openwhisk: true
Expand Down
Loading