# (virtual-) Remote Management Server

The *nplus RMS* creates a virtual IP Address in your subnet. On this IP, you will find an *nscale Remote Management Service* and a Layer 4 Proxy, forwarding the ports of the components to the
belonging pods.

The result is, that under this VIP, it looks as if there is a real server with a bunch of *nscale* components installed. So you can use the desktop admin client to connect to it and configure it. Including offline configuration.

The offline configuration writes settings to the configuration files of the components. These files are injected into the Pods by *nplus* making the legacy magic work again.

Also, Shotdown, Startup and Restart buttons in the Admin client will work, as that will by translated to Kubernetes commands by *nplus*

Anyways, there are some restrictions:

- In a HA scenario, you need multiple virtual server, as nscale does not allow some components to deploy more than one instance per server (like nstl) and they would then also block the default ports. So better to have more RMS
- Log Files are not written, so the Admin cannot grab them. So no log file viewing in Admin

> Please notice that this is a BETA Feature not released for Production use.

This is a sample of RMS in a HA environment with two virtual servers:

```yaml
components:
  rmsa: true
  rmsb: true

rmsa:
  ingress:
    domain: "server1.{{ .instance.group | default .Release.Name }}.lab.nplus.cloud"
  comps:
    nappl: 
      enabled: true
      restartReplicas: 2
    nstl:
      enabled: true
      name: nstla
      restartReplicas: 1
      host: "{{ .component.prefix }}nstla.{{ .Release.Namespace }}.svc.cluster.local"
    rs: 
      enabled: true
      restartReplicas: 2
    web: 
      enabled: true
      restartReplicas: 2
rmsb:
  ingress:
    domain: "server2.{{ .instance.group | default .Release.Name }}.lab.nplus.cloud"
  comps:
    nappl: 
      enabled: true
      name: nappljobs
      restartReplicas: 1
      replicaSetType: StatefulSet
      host: "{{ .component.prefix }}nappljobs.{{ .Release.Namespace }}.svc.cluster.local"
    nstl: 
      name: nstlb
      enabled: true
      restartReplicas: 1
      host: "{{ .component.prefix }}nstlb.{{ .Release.Namespace }}.svc.cluster.local"
```
