# K8s namespace aka *nplus environment*

*nplus instances* are deployed into K8s namespaces. Always. even if you do not specify a namespace, it uses a namespace: `default`.

In order to use this namespace for *nplus instances*, you need to deploy some shared *nplus components* into it, which are used by the instances. This is done by the environment chart:

```
helm install \
  --values demo.yaml \
  demo nplus/nplus-environment
```

After that, the K8s namespace is a valid *nplus environment* that can house multiple *nplus instances*.


## deploying assets into the environment

Most likely, you will need assets to be used by your instances. Fonts for example: The *nscale Rendition Server* and die *nscale Server Application Layer* both require the Microsoft fonts, that are not allowed to be distributed by neither nscale nor nplus. So this example shows how to upload some missing pieces into the environment:

```
kubectl cp ./apps/app-installer-9.0.1202.jar nplus-toolbox-0:/conf/pool
kubectl cp ./fonts nplus-toolbox-0:/conf/pool
kubectl cp ./copy-snippet.sh nplus-toolbox-0:/conf/pool/scripts
kubectl cp ./test.md nplus-toolbox-0:/conf/pool/snippets
kubectl cp ./snc nplus-toolbox-0:/conf/pool
```

Alternatively, you can also use a `prepper` component, that you can activate on the environment chart, to download assets from any web site and deploy them into the environment:

```
components:
  prepper: true
prepper:
  download:
    - "https://git.nplus.cloud/public/nplus/raw/branch/master/assets/sample.tar.gz"
```

Please see the prepper [README.md](../../charts/prepper/README.md) for more information.


## Operator Web UI

The environment comes with the operator, responsible for managing / controlling the [custom resources](../cluster/README.md). It has a Web UI, that can be enabled in the environment chart.

![screenshot operator](assets/operator.png)

## *namespace*-less manifests

Speaking of namespaces: Sometimes you want to drop the namespace from your manifest. This can be done by

```yaml
utils:
  includeNamespace: false
```

when you then call

```bash
helm template myInstance nplus/nplus-instance > myInstance.yaml
```

the manifest in `myInstance.yaml` will **not** have a namespace set, so you can apply it to multiple namespaces later:

```bash
kubectl apply --namespace dev -f myInstance.yaml
kubectl apply --namespace qa -f myInstance.yaml
kubectl apply --namespace prod -f myInstance.yaml
```

