Skip to content
Open
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
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion content/en/docs/control-center/apps/deployed-apps.md
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ The list shows the following information:

## Apps with License Keys {#apps-license-keys}

The **Apps with License Keys** tab provides an overview of all apps for which license keys have been issued to their respective Technical Contacts. This includes all your apps deployed on Mendix on Kubernetes Standalone, Docker, Cloud Foundry buildpack, and on-premises environments. You can find the latest version of license keys for these app environments here.
The **Apps with License Keys** tab provides an overview of all apps for which license keys have been issued to their respective Technical Contacts. This includes all your apps deployed on Docker, Cloud Foundry buildpack, and on-premises environments. You can find the latest version of license keys for these app environments here.

License keys are aligned with your Mendix contracts and need to be applied by you to each app. Every app environment (such as test, acceptance, and production) requires its own license key.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,18 +95,14 @@ To license an Insights Hub app, you need to provide your **License ID** and **Li

### Mendix on Kubernetes

To license a Mendix app on Mendix on Kubernetes, you need to supply a **Subscription Secret** or license credentials for your app. See below for how it can be added to either a Connected or Standalone cluster.
To license a Mendix app on Mendix on Kubernetes, you need to supply a **Subscription Secret** or license credentials for your app. See below for how it can be added to a cluster.

In addition to the licenses for your apps, you will also need to license the Mendix Operator, which helps deploy your app to a Mendix on Kubernetes environment. For details on the Mendix Operator license, see [Licensing Mendix on Kubernetes](/developerportal/deploy/private-cloud/#licensing).

#### Mendix on Kubernetes Connected
#### Adding the Subscription Secret

You can add the subscription secret when creating an environment on Mendix on Kubernetes. You can also add or change the subscription secret on the **Environment Details** page of the environment you wish to license. For more information, see the [Change Subscription Secret](/developerportal/deploy/private-cloud-deploy/#license-mendix) section of *Deploying a Mendix App to a Mendix on Kubernetes Cluster*.

#### Mendix on Kubernetes Standalone

You will need to add the license credentials and configure the license in the Mendix Custom Resource (CR) for your Mendix on Kubernetes environment. For more information, see the [Editing the CR](/developerportal/deploy/private-cloud-operator/#edit-cr) section of *Using Command Line to Deploy a Mendix App to a Mendix on Kubernetes Cluster*.

### Cloud Foundry{#cloudfoundry}

The following steps describe activating the license for deployments using the Cloud Foundry Buildpack. If you are deploying using Portable App Distribution, follow the steps in the [Portable App Distribution](#portableappdistribution) section below.
Expand Down
52 changes: 19 additions & 33 deletions content/en/docs/deployment/private-cloud/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,6 @@ Mendix on Kubernetes allows you to deploy and manage your Mendix apps in a Kuber

Your organization may have a requirement to use a private cloud, perhaps as part of a multi-cloud strategy. This could be because of legal requirements or a desire to have complete control over your data. Mendix on Kubernetes allows you to do this while keeping the familiar components of Docker and Kubernetes.

You can use Mendix on Kubernetes with the *connected* option to keep the simplicity of one-click deployments from the Mendix Portal, or utilize the *standalone* Mendix Operator to deploy Mendix apps through your own DevOps process, which is particularly useful for private clouds with an *air-gap* isolating them from the internet. See [Connected and Standalone Clusters](#connected-standalone), below, for more information.

Please see [Supported Providers](/developerportal/deploy/private-cloud-supported-environments/) for a list of platforms supported by Mendix on Kubernetes.

There are two steps required to achieve this, listed below.
Expand All @@ -37,41 +35,33 @@ To deploy your app, you have two options:

When you deploy through the Mendix Portal, this can be done by any Mendix user who has been given the appropriate rights to the cluster which has been registered.

## Connected and Standalone Clusters{#connected-standalone}
## Clusters{#clusters}

To allow you to manage the deployment of your apps to Red Hat OpenShift and Kubernetes, you first need to register a cluster in the Mendix Portal. This will provide you with the information you need to deploy the **Mendix Operator** in your cluster.
If you have chosen a *connected* cluster, the **Mendix Gateway Agent** will also be deployed.
Once the Mendix Operator is deployed to your cluster, you can use it to configure the resources which will be used by your apps.

You then have two options, depending on whether you have chosen to create a *connected* cluster or a *standalone* cluster.

### Connected Architecture
### Architecture

If you have chosen to register a connected cluster, the Mendix Gateway Agent will create a link to the **Environments** pages of your Mendix app through the **Interactor**. This is a secure bi-directional communication channel which is initiated from the Mendix Gateway Agent running on the cluster.
The Mendix Gateway Agent will create a link to the **Environments** pages of your Mendix app through the **Interactor**. This is a secure bi-directional communication channel which is initiated from the Mendix Gateway Agent running on the cluster.

Using this channel, any Mendix user who has been given the correct authority can pass instructions to the Mendix Operator and receive status information about the cluster. This includes instructions needed to deploy an app, or to configure the environment.

{{< figure src="/attachments/deployment/private-cloud/mx4pc-architecture.png" class="no-border" >}}

### Standalone Architecture

If you have chosen to register a standalone cluster, then all communication with the Mendix Operator will be through instructions which are made directly through the Kubernetes API. These can be made manually, but are generally performed by your CI/CD pipeline. In this case, you will also have to have local source control of the Mendix app deployment packages to ensure that the deployment process can discover them.

{{< figure src="/attachments/deployment/private-cloud/mx4pc-standalone-architecture.png" class="no-border" >}}

## Product Capability Comparison

The table below shows the differences between the capabilities for apps deployed to Mendix Cloud, Mendix on Kubernetes Connected, and Mendix on Kubernetes Standalone.
The table below shows the differences between the capabilities for apps deployed to Mendix Cloud and Mendix on Kubernetes.

| Capability | Mendix Cloud | Mendix on Kubernetes Connected | Mendix on Kubernetes Standalone |
| --- | --- | --- | --- |
| Environment provisioning | Fully automated | Provisioned with database and blob storage provided by the customer | Provisioned with database and blob storage provided by the customer|
| Environment configuration<br/>*For example, constants and scheduled event* | Mendix Portal | Mendix Portal | Custom Resources via Mendix Operator |
| Mendix app/deployment package deployment | Mendix Portal and Studio Pro | Mendix Portal and Studio Pro | Custom Resources via Mendix Operator<br/>*normally combined in a CI/CD pipeline* |
| Backup and restore | Mendix Portal | Services supplied by the database server and file storage used¹ | Services supplied by the database server and file storage used¹ |
| Monitoring | Mendix Portal | App metrics sent to a Prometheus-compatible monitoring tool | App metrics sent to a Prometheus-compatible monitoring tool |
| App logs | Mendix Portal | Prints app logs to `stdout` | Prints app logs to `stdout` |
| Remote debugging | Mendix Portal + Studio Pro | Mendix Portal + Studio Pro | Not supported |
| Capability | Mendix Cloud | Mendix on Kubernetes |
| --- | --- | --- |
| Environment provisioning | Fully automated | Provisioned with database and blob storage provided by the customer |
| Environment configuration<br/>*For example, constants and scheduled event* | Mendix Portal | Mendix Portal |
| Mendix app/deployment package deployment | Mendix Portal and Studio Pro | Mendix Portal and Studio Pro |
| Backup and restore | Mendix Portal | Services supplied by the database server and file storage used¹ |
| Monitoring | Mendix Portal | App metrics sent to a Prometheus-compatible monitoring tool |
| App logs | Mendix Portal | Prints app logs to `stdout` |
| Remote debugging | Mendix Portal + Studio Pro | Mendix Portal + Studio Pro |

{{% alert color="info" %}}
¹ No backup or restore functionality is installed automatically with Mendix on Kubernetes. You will need to choose and deploy your own solution, dependent on your choice of database, file storage, and cloud platform.
Expand All @@ -90,10 +80,6 @@ All of those containers, including the sidecar containers, have specific resourc
The Mendix container is specified per app in the portal. You can update the resource allocation in the [Mendix App CR](/developerportal/deploy/private-cloud-operator/#edit-cr).
The m2ee-sidecar container's resources are specified in the [OperatorConfiguration CR](/developerportal/deploy/private-cloud-cluster/#resource-definition-ocm).

{{% alert color="info" %}}
If the app is running in Standalone mode and its MendixApp CR does not have any resources assigned in the MendixApp CR specification resources, the Mendix Operator will use the value of *OperatorConfiguration* CR's *spec.runtimeResources* instead.
{{% /alert %}}

If the customer decided to use a [Vertical Pod autoscaler](/developerportal/deploy/private-cloud-cluster/#vertical-pod-autoscaling), the autoscaler can override any pod or container resources.

When a user sets CPU and memory limits, the JVM (JRE 8u191+) will automatically detect the container requests and limits, and automatically set Java memory limits based on the container details.
Expand Down Expand Up @@ -126,7 +112,7 @@ You can request an Operator license by doing the following:

* The name of your company (if requesting on behalf of a client, enter the name of their company).
* License Type: Operator
* The Mendix on Kubernetes architecture type. See [Connected and Standalone Clusters](#connected-standalone), above, for more information — optionally, leave additional information in the **comment** field
* The Mendix on Kubernetes architecture type. See [Clusters](#clusters), above, for more information — optionally, leave additional information in the **comment** field
* The namespace (or namespaces) for which you want to request an Operator license

5. Save the request.
Expand All @@ -151,7 +137,7 @@ You can request a Runtime license by doing the following:

* The name of your company (if requesting on behalf of a client, enter the name of their company).
* License Type: Runtime
* The Mendix on Kubernetes architecture type. See [Connected and Standalone Clusters](#connected-standalone), above, for more information — optionally, leave additional information in the **comment** field
* The Mendix on Kubernetes architecture type. See [Clusters](#clusters), above, for more information — optionally, leave additional information in the **comment** field
* If "Connected" please provide the namespace (or namespaces) for which you are requesting the runtime license (or licenses)

5. Save the request.
Expand All @@ -172,7 +158,7 @@ You can also request for both the Operator and Runtime license within the same r

* The name of your company (if requesting on behalf of a client, enter the name of their company).
* License Type: Operator and Runtime
* The Mendix on Kubernetes architecture type. See [Connected and Standalone Clusters](#connected-standalone), above, for more information — optionally, leave additional information in the **comment** field
* The Mendix on Kubernetes architecture type. See [Clusters](#clusters), above, for more information — optionally, leave additional information in the **comment** field
* The namespace (or namespaces) for which you want to request an Operator license

### Activating Your License (or Licenses)
Expand All @@ -181,11 +167,11 @@ You can also request for both the Operator and Runtime license within the same r

If your app is able to connect to the internet to contact the Mendix license server, you will receive a **Subscription Secret** from Mendix Support.

If your app is **Connected** to the Mendix Portal, you can enter the subscription secret [in the Mendix Portal](/developerportal/deploy/private-cloud-deploy/#license-mendix)
If your app is connected to the Mendix Portal, you can enter the subscription secret [in the Mendix Portal](/developerportal/deploy/private-cloud-deploy/#license-mendix)

#### Standalone & Offline Mendix on Kubernetes Apps{#activate-offline}
#### Offline Mendix on Kubernetes Apps{#activate-offline}

If your app is **Standalone** or unable to contact the Mendix license server, you will receive a **LicenseId** and a **LicenseKey**. You will have to apply these by [editing the CR](/developerportal/deploy/private-cloud-operator/#edit-cr) in the cluster.
If your app is or unable to contact the Mendix license server, you will receive a **LicenseId** and a **LicenseKey**. You will have to apply these by [editing the CR](/developerportal/deploy/private-cloud-operator/#edit-cr) in the cluster.

#### Private Cloud Licensing Manager

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ All services listed in the table below use the HTTPS protocol (port 443).

{{< figure src="/attachments/deployment/private-cloud/private-cloud-cluster/create-cluster.png" class="no-border" >}}

### Adding a Namespace for Connected Cluster {#add-namespace}
### Adding a Namespace {#add-namespace}

You now need to add a namespace to your cluster. Your cluster can contain several namespaces, see [Containerized Mendix App Architecture](#containerized-architecture), below for more information.

Expand All @@ -89,44 +89,14 @@ To add a namespace, do the following:

{{< figure src="/attachments/deployment/private-cloud/private-cloud-cluster/namespace-details.PNG" class="no-border" >}}

3. Enter the following details:
* **Namespace** – this is the namespace in your platform; this must conform to the namespace naming conventions of the cluster: all lower-case with hyphens allowed within the name
* **Installation type** – if you want to create environments and deploy your app from the [Mendix Portal](/developerportal/deploy/private-cloud-deploy/), choose **Connected**, but if you only want to control your deployments through the Mendix Operator using the [CLI](/developerportal/deploy/private-cloud-operator/), choose **Standalone**
3. Specify a **Namespace** in your platform. This must conform to the namespace naming conventions of the cluster: all lower-case with hyphens allowed within the name.

4. Click **Done** to create the namespace.

{{< figure src="/attachments/deployment/private-cloud/private-cloud-cluster/add-namespace.png" class="no-border" >}}

{{% alert color="warning" %}} If you have selected a *Connected Installation Type* please verify that the [Connected Environment Pre-requisites](#prerequisites-connected) are configured. {{% /alert %}}

### Adding a Namespace for Standalone Cluster {#add-standalone-namespace}

If you would like to add a namespace to be added in the Standalone cluster, do the following:

1. Click **Details** ({{% icon name="notes-paper-text" %}}) on the top right of the page:

{{< figure src="/attachments/deployment/private-cloud/private-cloud-cluster/empty-cluster.png" class="no-border" >}}

{{< figure src="/attachments/deployment/private-cloud/private-cloud-cluster/ClusterDetails.png" class="no-border" >}}

2. Click **Add Namespace**.

{{< figure src="/attachments/deployment/private-cloud/private-cloud-cluster/namespace-details-standalone.png" class="no-border" >}}

3. Enter the following details:

* **Namespace** – This is the namespace in your platform; this must conform to the namespace naming conventions of the cluster: all lower-case with hyphens allowed within the name.
* **Installation type** – Choose **Standalone**.

4. Click **Next**.
5. Once you click on **Next**, you will be redirected to the Installation pop up page from where you can download the mxpc-cli and get the command to install the namespace in the cluster.

{{< figure src="/attachments/deployment/private-cloud/private-cloud-cluster/standalone_downloadcli.png" class="no-border" >}}

For existing namespaces, if you would like to download the executables for mxpc-cli, you can go [here](https://privatecloud.mendixcloud.com/rest/internal/v1/mxpc-cli?operatorVersion=latest)

In above page, once you do a JSON format, you will get the links for mxpc-cli for different available versions.

## Installing and Configuring the Mendix Operator {#install-operator}

You can install and run the Mendix Operator in either Global or Standard mode. In Global mode, the Operator is installed once for all available namespaces, whereas in Standard mode, it is installed separately for each namespace where a Mendix app is deployed. For more information, see:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ Mendix highly recommends that you upgrade to the latest available version to ens

When deploying your Mendix app for production use, it needs to be licensed. This removes the restrictions which are placed on unlicensed apps. For more information, see [Licensing Mendix on Kubernetes](/developerportal/deploy/private-cloud/#licensing) in the *Private Cloud* documentation.

Apps which are deployed to Mendix Cloud have access to the internet and have licenses which work on a subscription basis, contacting the Mendix license server to validate the license. This method is not appropriate for apps which are deployed using Mendix on Kubernetes, and may even be in standalone mode and not connected to the internet (air-gapped).
Apps which are deployed to Mendix Cloud have access to the internet and have licenses which work on a subscription basis, contacting the Mendix license server to validate the license. This method is not appropriate for apps which are deployed using Mendix on Kubernetes.

Rather than having to apply and update licenses for each environment individually, the Mendix **Mendix on Kubernetes License Manager** (PCLM) provides a repository of offline Mendix licenses to enable you to manage these centrally. This reduces the possibility of errors, and enables the production of license usage reports.

Expand All @@ -27,7 +27,7 @@ The PCLM runs as a Kubernetes service on your cluster. This means that it can be

To install and use the PCLM, you need the following prerequisites:

* A Mendix on Kubernetes **Standalone** cluster
* A Mendix on Kubernetes cluster
* Mendix Operator in version 2.11.0 or above
* Administrative rights to a Kubernetes namespace to install PCLM server (a dedicated namespace is recommended). This can be within your Mendix on Kubernetes cluster, or in another cluster which is accessible over HTTP
* A Postgres or SQLServer database server and within it:
Expand Down
Loading