From 915e1d58cd8da715e6ca1d331c25b2479b6efa75 Mon Sep 17 00:00:00 2001 From: Jinah Yun-Mitchell Date: Thu, 19 Dec 2024 15:22:37 -0600 Subject: [PATCH] ENDOC-817 periodic update --- vuepress/docs/next/docs/README.md | 39 +++--- .../next/docs/consume/identity-management.md | 2 +- .../docs/next/docs/getting-started/README.md | 128 +++++++++--------- .../docs/getting-started/concepts-overview.md | 72 +++++----- .../docs/next/docs/getting-started/ent-api.md | 10 +- .../next/docs/getting-started/ent-bundle.md | 71 +++++----- .../next/docs/getting-started/ent-diag.md | 20 +-- .../next/docs/getting-started/ent-profile.md | 18 ++- .../docs/next/docs/getting-started/ent-svc.md | 18 +-- .../next/docs/getting-started/entando-cli.md | 32 +++-- .../img/entando-architecture-v1.5.svg | 4 - .../img/entando-architecture.png | Bin 20466 -> 12806 bytes .../img/entando-cluster-arch.png | Bin 0 -> 100860 bytes .../next/docs/getting-started/landing-page.md | 14 +- .../getting-started/azure-install.md | 2 +- .../tutorials/getting-started/eks-install.md | 2 +- .../tutorials/getting-started/gke-install.md | 2 +- .../getting-started/openshift-install.md | 2 +- vuepress/docs/v7.3/docs/README.md | 39 +++--- .../v7.3/docs/consume/identity-management.md | 2 +- .../docs/v7.3/docs/getting-started/README.md | 128 +++++++++--------- .../docs/getting-started/concepts-overview.md | 72 +++++----- .../docs/v7.3/docs/getting-started/ent-api.md | 10 +- .../v7.3/docs/getting-started/ent-bundle.md | 71 +++++----- .../v7.3/docs/getting-started/ent-diag.md | 20 +-- .../v7.3/docs/getting-started/ent-profile.md | 18 ++- .../docs/v7.3/docs/getting-started/ent-svc.md | 18 +-- .../v7.3/docs/getting-started/entando-cli.md | 32 +++-- .../img/entando-architecture-v1.5.svg | 4 - .../img/entando-architecture.png | Bin 20466 -> 12806 bytes .../img/entando-cluster-arch.png | Bin 0 -> 100860 bytes .../v7.3/docs/getting-started/landing-page.md | 14 +- .../getting-started/azure-install.md | 2 +- .../tutorials/getting-started/eks-install.md | 2 +- .../tutorials/getting-started/gke-install.md | 2 +- .../getting-started/openshift-install.md | 2 +- 36 files changed, 444 insertions(+), 428 deletions(-) delete mode 100644 vuepress/docs/next/docs/getting-started/img/entando-architecture-v1.5.svg create mode 100644 vuepress/docs/next/docs/getting-started/img/entando-cluster-arch.png delete mode 100644 vuepress/docs/v7.3/docs/getting-started/img/entando-architecture-v1.5.svg create mode 100644 vuepress/docs/v7.3/docs/getting-started/img/entando-cluster-arch.png diff --git a/vuepress/docs/next/docs/README.md b/vuepress/docs/next/docs/README.md index bb11b8d914..3ef11e3184 100644 --- a/vuepress/docs/next/docs/README.md +++ b/vuepress/docs/next/docs/README.md @@ -10,16 +10,19 @@ only be available by building from source. # Entando Platform -Entando is the leading open source **Application Composition Platform** for Kubernetes. It enables parallel teams to accelerate development and innovation of business capabilities on a modern, cloud-native, and Kubernetes-native stack. +Entando is an open-source application composition platform (ACP) that streamlines the development of composable applications for the web. By implementing a modular architecture, the Platform enables parallel teams to accelerate development and innovation on a modern, cloud-native, and Kubernetes-native stack. + +With Entando’s distributed working environment, you can build applications composed of modular reusable components and manage them all from one platform. The system includes development and runtime tools, a component catalog, and a component orchestrator to support all aspects of the development lifecycle. -It is a distributed and composable environment in which components can be built, scaled and iterated independently, helping teams build agile applications that can adapt to change. ![Entando Platform Development Process](./getting-started/img/concepts.png) -On the Entando Platform, development of an application is organized into four stages: Create, Curate, Compose, and Consume. In the simplest terms, you create functional building blocks, curate them in a catalog, compose the blocks into an application, which is then consumed by a user. The Enterprise Architect oversees the process, defining business domains and mapping the capabilities for the building blocks. +Development on Entando can be organized into four stages: Create, Curate, Compose, and Consume. In the simplest terms, you create functional building blocks or bundles, curate them in a catalog, compose them into an application, which is then consumed by a user. The Enterprise Architect oversees the process, defining business domains and mapping capabilities for the building blocks. -## Create Components -Building a composable application on Entando involves designing and creating each independent component or building block. Developers can use the [Entando Component Generator](./create/component-gen-overview.md) and [Blueprint](./create/blueprint-features.md) to automate the building and packaging of projects using any technology they choose. The modular architecture of apps built on Entando means new business capabilities can be easily integrated without reworking existing systems. + + +## Create +Building a composable application begins with self-contained bundles, created from scratch or using existing code. With the freedom to choose the technologies and frameworks that meet their needs, developers can use the [Entando Component Generator](./create/component-gen-overview.md) and [Blueprint](./create/blueprint-features.md) to speed up the process. The composable methods of Entando mean innovations can be easily integrated without reworking existing systems. | Documentation | Tutorials | | :------------ | :--------- | @@ -27,31 +30,29 @@ Building a composable application on Entando involves designing and creating eac | [Entando Blueprint Feature](./create/blueprint-features.md) | [Microservices](../tutorials/create/ms/generate-microservices-and-micro-frontends.md) | | [Component Generation Technologies](./create/component-gen-tech.md) | [Build and Publish Project Bundles](../tutorials/create/pb/publish-project-bundle.md) | -## Curate and Share Components -On the Entando Platform, Curate and Share means development teams can bundle and share components within a central catalog. Multiple teams can collaborate on a single component or packaged business capabilities (PBCs) and share them across organizations and applications. They can test and assess components for readiness, manage and publish versions, and share metadata for continuous upgrades. +## Curate +In this stage, curators discover and organize components to share across teams and projects. The components can be sourced internally or from the [Entando Marketplace](https://entando.com/composable-platform/packaged-business-capabilities/) which offers a selection of pre-built solutions. Curators assess, publish, and share component features and metadata in a private or public hub, ensuring that it is discoverable. Centralizing these functions also makes is easier to govern the consistency of the reusable bundles. | Documentation | Tutorials | | :------------ | :-------- | -| [Bundle and Component Descriptors](./curate/bundle-details.md) | [Install Bundles from a Private Image Registry](../tutorials/curate/bundle-private-images.md) | -| [Filtering Bundles](./curate/bundle-filters.md) | [Install Bundle Microservices from a Private Image Registry](../tutorials/curate/ms-private-images.md) | -| [Customize Bundle Info in App Builder](./curate/bundle-presentation-config.md) | | -| [Bundle Version and Updates FAQ](./curate/bundle-versions-faq.md) | | -| [Bundle Uninstall](./curate/uninstall-flow.md) | | +| [Bundle Details](./curate/bundle-details.md) | [Install Bundles from a Private Image Registry](../tutorials/curate/bundle-private-images.md) | +| [Bundle Component Descriptors](./curate/bundle-component-details.md) | [Install Bundle Microservices from a Private Image Registry](../tutorials/curate/ms-private-images.md) | +| [Enterprise Entando Hub](./curate/hub-details.md) | | + -## Compose an Application -The Compose stage is centered around the [Entando App Builder](./compose/app-builder.md), a low-code composition user interface where an application can be assembled using the prebuilt modular templates, widgets, PBCs and others. The [Entando Component Manager](./compose/ecm-overview.md) and [Local Hub](./compose/local-hub-overview.md) are integrated into the App Builder to manage your components, providing speed and flexibility. +## Compose +The Compose stage involves assembling the bundles, packaged business capabilities (PBCs), templates and other resources into an application. Centered around the visual interface, the [Entando App Builder](./compose/app-builder.md), the Platform provides tooling to define the structure, layouts, and interactions between micro frontends within an application. This unified environment, with direct access to the Entando catalogs, leads to the creation of a more cohesive and seamless user experience across a complex application. | Documentation | Tutorials | | :------------ | :-------- | -| [Welcome Wizard](./compose/welcome-wizard.md) | [Page Management](../tutorials/compose/page-management.md) | +| [App Builder Welcome Wizard](./compose/welcome-wizard.md) | [Create and Manage a Page](../tutorials/compose/page-management.md) | | [Local Hub](./compose/local-hub-overview.md) | [Widgets and Fragments](../tutorials/compose/widgets-fragments.md) | -| [Entando App Builder](./compose/app-builder.md) | [Content Creation](../tutorials/compose/content-tutorial.md) | -| [Entando Component Manager](./compose/ecm-overview.md) | [Content Templates](../tutorials/compose/content-templates-tutorial.md) | +| [Entando Component Manager](./compose/ecm-overview.md) | [Content Templates](../tutorials/compose/content-templates-tutorial.md) | | | [Digital Assets](../tutorials/compose/digital-assets-tutorial.md) | -## Consume Applications -In the development lifecycle of an application, Consume is the execution stage where users interact with the app. On Entando, the modular design of components and services means they can be scaled individually, or as a whole, according to those interactions. Likewise, content can be updated, engine rules adapted, and upgrades carried out seamlessly. As a result, the development cycle is a continuous process with minimal disruptions and faster time to market. +## Consume +In the lifecycle of an application, Consume is the execution stage where users interact with the application, using browsers, mobile devices, and conversational interfaces. On Entando, the modular design of components and services means they can be scaled independently, governed consistently, and new features integrated uniformly, as user's needs change. Likewise, content can be updated, interactions improved, and upgrades carried out in a continuous process, with minimal disruptions and faster time to market. | Documentation | Tutorials | | :------------ | :-------- | diff --git a/vuepress/docs/next/docs/consume/identity-management.md b/vuepress/docs/next/docs/consume/identity-management.md index 3417bad140..4018a0f50f 100644 --- a/vuepress/docs/next/docs/consume/identity-management.md +++ b/vuepress/docs/next/docs/consume/identity-management.md @@ -35,7 +35,7 @@ Keycloak authorizes microservices using clients and roles. Authorizations are st Below are the steps to grant a user one or more roles for a specific client. This controls permissions when configuring the microservice. Note, when a microservice is installed in Entando, a corresponding client (and set of roles) is created within its plugin definition. 1. [Log in to Keycloak](#logging-into-your-keycloak-instance) ->For non-external Keycloak instances, it is [the base URL of your running Entando application](../getting-started/README.md#configure-access-to-your-cluster) followed by `/auth/`, e.g. http://YOUR-HOST-NAME/auth. In a standard Entando installation, the base URL can be verified with `kubectl get ingress/default-sso-in-namespace-ingress`. +>For non-external Keycloak instances, it is the base URL of your running Entando application followed by `/auth/`, e.g. http://YOUR-HOST-NAME/auth. In a standard Entando installation, the base URL can be verified with `kubectl get ingress/default-sso-in-namespace-ingress`. 2. Select `Users` from the left menu 3. Use the search box to find the appropriate user, e.g. "admin" 4. Click on the user ID diff --git a/vuepress/docs/next/docs/getting-started/README.md b/vuepress/docs/next/docs/getting-started/README.md index 18054f316a..30ea590484 100644 --- a/vuepress/docs/next/docs/getting-started/README.md +++ b/vuepress/docs/next/docs/getting-started/README.md @@ -9,27 +9,27 @@ You can set up Entando in two simple steps or install it manually to meet your s * [Automatic Install](#automatic-install): The fastest way to locally install and start up Entando in Kubernetes. * [Manual Install](#manual-install): Useful if you want a shared cluster or a custom local instance. ->Installation on ARM: +>Installation on Apple Silicon processors: To install Entando on Mac systems running ARM64 architecture, see this alternate [Getting Started](../../tutorials/getting-started/arm-install.md) guide. ## Automatic Install Automatically install Entando via the Entando command-line interface (CLI) and prepare a local developer environment with default settings. -The following steps launch an Ubuntu VM via Multipass, install Kubernetes, then deploy Entando to it. +The following steps launch an Ubuntu VM via Multipass, install Kubernetes, and then deploy Entando to it. -1. Install [Multipass](https://multipass.run/#install) +1. Install [Multipass](https://multipass.run/#install). -2. Install Entando into Kubernetes on Ubuntu using the [Entando CLI](entando-cli.md) +2. Install Entando into Kubernetes on Ubuntu using the [Entando CLI](entando-cli.md): curl -sL "https://get.entando.org" | ENTANDO_RELEASE="{{ $site.themeConfig.entando.fixpack.v73 }}" bash -3. The progress of the install is displayed on the console. Installation can take up to 10 minutes, depending on how long the Docker images take to download. The sequence of steps performed by the CLI is identical to the manual steps below. To understand what the CLI does, review the manual steps. +3. The progress of the install is displayed on the console. Installation can take up to 10 minutes, depending on how long the Docker images take to download. The sequence of steps performed by the CLI is identical to the manual steps below. To better understand what the CLI does, review the manual steps. 4. The URL to access the Entando App Builder will print to the console once the install completes. -5. Login with username:`admin` and password: `adminadmin`. Refer to [Login to Entando](#login-to-entando) for more information and next steps. +5. Log in with username:`admin` and password: `adminadmin`. Refer to [Log in to Entando](#log-in-to-entando) for more information and next steps. ## Manual Install -Manual installation allows you to configure a shared cluster or customize a local developer environment. The following learn-as-you-go approach provides a working knowledge of Kubernetes as you install Entando in a local environment. After downloading the necessary files, your instance of Kubernetes will be up and running in <60 seconds. +Manual installation allows you to configure a shared cluster or customize a local developer environment. The following learn-as-you-go approach provides additional context about the process in the highlighted text boxes. After downloading the necessary files, your instance of Kubernetes will be up and running in <60 seconds. This is a three stage process: @@ -43,20 +43,20 @@ Kubernetes is a container orchestrator designed to manage a server cluster. It r ### Install Kubernetes -#### Enable Hypervisor -::: tip Why a Hypervisor? -Hypervisors allow you to create and run VMs. Virtualization software that run on top of your operating system as "guests" are Type 2 hypervisors, e.g. VirtualBox or VMWare Workstation. Type 1 hypervisors run directly on your host machine. +#### 1. Enable a Hypervisor +::: tip Why a hypervisor? +Hypervisors allow you to create and run VMs. Virtualization software that runs on top of your operating system as a guest is a Type 2 hypervisor, like VirtualBox or VMWare Workstation. Type 1 hypervisors run directly on your host machine. ::: Install a Type 1 hypervisor for optimal performance. -**Mac:** Install `hyperkit` + - **Mac:** Install `hyperkit`: -``` bash -brew install hyperkit -``` + ``` bash + brew install hyperkit + ``` -**Windows:** [Install Hyper-V](https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v?redirectedfrom=MSDN) + - **Windows:** [Install Hyper-V](https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v?redirectedfrom=MSDN) --- @@ -74,32 +74,32 @@ Install a Type 2 hypervisor that runs on top of your operating system.
-#### Launch an Ubuntu VM +#### 2. Launch an Ubuntu VM ::: tip Why Multipass? Multipass is a cross-platform tool developed by the publishers of Ubuntu to create lightweight Ubuntu VMs in seconds. ::: -1. Install [Multipass](https://multipass.run/#install) + 1. Install [Multipass](https://multipass.run/#install) -2. Launch a VM + 2. Launch a VM: -``` bash -multipass launch --name quickstart --cpus 4 --mem 8G --disk 20G -``` + ``` bash + multipass launch --name quickstart --cpus 4 --mem 8G --disk 20G + ``` -3. Open a VM shell. (Note: on Windows, you may need to use `winpty multipass`) + 3. Open a VM shell (Note on Windows, you may need to use `winpty multipass`): -``` bash -multipass shell quickstart -``` + ``` bash + multipass shell quickstart + ``` ### Run Kubernetes ::: tip Why K3s? -K3s is a certified Kubernetes distribution designed for production workloads in resource-constrained environments. +K3s is a certified light-weight version of Kubernetes designed for production workloads in constrained environments. -It's packaged as a single <50MB binary that minimizes the dependencies and procedure required to install, run and auto-update a production Kubernetes cluster. +It's packaged as a single (<50MB) binary that minimizes dependencies and simplifies the procedures required to install, run, and update a production Kubernetes cluster. ::: 1. Install the version of `K3s` supported by Entando 7.3. Note that this may not be the latest version of Kubernetes. @@ -130,44 +130,43 @@ sudo kubectl get pods -A You now have a local instance of Kubernetes up and running. ::: -Now that Kubernetes is running, you can use kubectl to send commands directly to K3s from the host machine, rather than from within the VM. To set this up with the [ent CLI](entando-cli.md), run `ent attach-vm quickstart` and then use `ent kubectl` for any calls to K8s. Alternatively, see the K3s documentation to [access your cluster with kubectl](https://rancher.com/docs/k3s/latest/en/cluster-access/). +Now that Kubernetes is running, you can use kubectl to send commands directly to K3s from the host machine, rather than from within the VM. To set this up with the [ent CLI](entando-cli.md), run `ent attach-vm quickstart` and then use `ent kubectl` for any calls to Kubernetes. Alternatively, see the K3s documentation to [access your cluster with kubectl](https://rancher.com/docs/k3s/latest/en/cluster-access/). ### Prepare Kubernetes -To install Entando, we'll add `Custom Resources`, create a `Namespace` and configure external access to our cluster. - -#### Create a Namespace +To install Entando, add the `Custom Resources`, create a `Namespace`, and configure external access to your cluster. -::: tip What are Namespaces? -Kubernetes supports multiple virtual clusters backed by the same physical cluster. These virtual clusters are called [namespaces](https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/). You can use namespaces to allocate resources and set CPU/memory limits for individual projects or teams. -::: +#### 1. Create a Namespace ``` bash sudo kubectl create namespace entando ``` +::: tip What are Namespaces? +Kubernetes supports multiple virtual clusters backed by the same physical cluster. These virtual clusters are called [namespaces](https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/). You can use namespaces to allocate resources and set CPU/memory limits for individual projects or teams. +::: -#### Add Custom Resources +#### 2. Add Custom Resources ::: tip Why Custom Resources? -Standard resources in Kubernetes include `Pods`, which are groups of one or more containers, `Services` to call or access Pods, and `Ingresses` to enable external access to Services. +Standard resources in Kubernetes include `Pods` (groups of one or more containers), `Services` to call or access Pods, and `Ingresses` to enable external access to Services. -[Custom resources](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/) let you store and retrieve structured data. Combining a custom resource with a custom controller allows you to define a desired state to automate how your applications or services run in a Kubernetes cluster. +[Custom resources](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/) let you store and retrieve structured data. Combining a custom resource with a custom controller allows you to define a desired state to automate how your applications and services run in a Kubernetes cluster. ::: Examples of custom resources in Entando are the [Entando App Engine](../../docs/getting-started/concepts-overview.md#entando-app-engine) and the [Entando Identity Management System](../../docs/getting-started/concepts-overview.md#entando-identity-management-system). -From your Ubuntu shell +From your Ubuntu shell: -1. Install the cluster-scoped custom resource definitions (CRDs) +1. Install the cluster-scoped custom resource definition (CRD): sudo kubectl apply -f https://raw.githubusercontent.com/entando/entando-releases/{{ $site.themeConfig.entando.fixpack.v73 }}/dist/ge-1-1-6/namespace-scoped-deployment/cluster-resources.yaml -2. Install the namespace-scoped custom resources +2. Install the namespace-scoped custom resource: sudo kubectl apply -n entando -f https://raw.githubusercontent.com/entando/entando-releases/{{ $site.themeConfig.entando.fixpack.v73 }}/dist/ge-1-1-6/namespace-scoped-deployment/namespace-resources.yaml -#### Configure Access to Your Cluster +#### 3. Configure Access to Your Cluster ::: tip What about Networking? Entando sets up [`Ingresses`](https://kubernetes.io/docs/concepts/services-networking/ingress/) in Kubernetes to expose HTTP routes from outside the cluster to services within the cluster. This is used to access Entando from a local browser. @@ -175,29 +174,32 @@ Entando sets up [`Ingresses`](https://kubernetes.io/docs/concepts/services-netwo If you run into network issues during startup, or if you are using Windows for your local development instance, you'll need to [troubleshoot your network](../reference/local-tips-and-tricks.md#network-issues). Indications of network issues can include Entando failing to completely start or a working Entando instance failing to restart later. ::: -To set up external access to your cluster, replace YOUR-HOST-NAME with the fully qualified domain of your Ubuntu VM. +To set up external access to your cluster, determine the fully qualified domain of your Ubuntu VM for the `ingressHostName` value in the EntandoApp CRD. -- On Windows with Hyper-V, YOUR-HOST-NAME is the name of your VM followed by `.mshome.net`, e.g. `quickstart.mshome.net`. +- On Windows with Hyper-V, `ingressHostName` is the name of your VM followed by `.mshome.net`, e.g. `quickstart.mshome.net`. -- On Mac, Linux, or Windows without Hyper-V, you'll use a host name based on your VM's IP address. You can determine the IP address from within the VM with this command: +- On Mac, Linux, or Windows without Hyper-V, `ingressHostName` is your VM name, plus you VM's IP address, plus "nip.io". You can determine the IP address from within the VM with this command: ``` bash hostname -I | awk '{print $1}' ``` -- Your IP-based YOUR-HOST-NAME should follow this pattern: `quickstart.YOUR-IP.nip.io`, e.g. `quickstart.192.168.64.33.nip.io`. The suffix `.nip.io` makes use of the free [nip.io](https://nip.io/) DNS service so that any requests to this host name will resolve to your VM. The prefix `quickstart` is arbitrary so you can choose your own. + E.g.: For VM named `quickstart`, IP=`192.168.64.33` + `ingressHostName` = `quickstart.192.168.64.33.nip.io` + +The suffix `.nip.io` makes use of the free [nip.io](https://nip.io/) DNS service so that any requests to this host name will resolve to your VM. `quickstart` is arbitrary so you can choose your own VM name. -Now that you've determined YOUR-HOST-NAME, use it to configure the Entando Application. +Now that you've determined `ingressHostName`, use it to configure the Entando Application. 1. Download the template `entando-app.yaml`. curl -sLO "https://raw.githubusercontent.com/entando/entando-releases/{{ $site.themeConfig.entando.fixpack.v73 }}/dist/ge-1-1-6/samples/entando-app.yaml" -2. Modify `entando-app.yaml` to set the `ingressHostName` to YOUR-HOST-NAME. Examples: -- `ingressHostName`: quickstart.mshome.net -- `ingressHostName`: quickstart.192.168.63.33.nip.io +2. Modify `entando-app.yaml` with the `ingressHostName` found in the previous step. Examples: +- Windows machine: `ingressHostName`: quickstart.mshome.net +- Mac or Linux: `ingressHostName`: quickstart.192.168.63.33.nip.io ::: tip Embedded Databases To speed up the _Getting Started_ environment, embedded databases are used by default. -See this [Tutorial on Default Databases](../../tutorials/devops/default-database.md) for information on how to change your database connection, or you can modify the `dbms` setting in the `entando-app.yaml`. +See the [Tutorial on Default Databases](../../tutorials/devops/default-database.md) for information on how to change your database connection, or modify the `dbms` setting in the `entando-app.yaml`. ::: ::: tip Entando Operator @@ -209,7 +211,7 @@ To customize the ingress path of a deployment, refer to the [Configure the Entan ::: ### Deploy Entando -Deploy Entando by applying `entando-app.yaml` to your namespace. +1. Deploy Entando by applying `entando-app.yaml` to your namespace. ```sh sudo kubectl apply -f entando-app.yaml -n entando @@ -217,7 +219,7 @@ sudo kubectl apply -f entando-app.yaml -n entando --- -Use the `get pods --watch` command to observe Entando starting up. +2. Use the `get pods --watch` command to observe Entando starting up. ```sh sudo kubectl get pods -n entando --watch @@ -225,16 +227,16 @@ sudo kubectl get pods -n entando --watch
What does a successful startup look like? -- The `entando-operator` and `entando-k8s-service` start when you apply the namespace resources above, so they should already be in the `Running` status by the time you reach this point -- When you apply the `entando-app.yaml`, the `quickstart-deployer` starts and kicks off a series of deployments, beginning with the Keycloak deployment via the `default-sso-in-namespace-deployer` +- The `entando-operator` and `entando-k8s-service` start when you apply the namespace resources above, so they should already be in `Running` status by the time you reach this point. +- When you apply the `entando-app.yaml`, the `quickstart-deployer` starts and kicks off a series of deployments, beginning with the Keycloak deployment via the `default-sso-in-namespace-deployer`. **Jobs / Deployments** -- Some Pods, like `quickstart-deployer`, run to completion and then shutdown; they should eventually show `READY`: `0/1` and `STATUS`: `Completed` +- Some Pods, like `quickstart-deployer`, run to completion and then shutdown; they should eventually show `READY`: `0/1` and `STATUS`: `Completed`. - Other deployments, like `quickstart-ab-deployment` or `quickstart-deployment`, should eventually show `READY`: `1/1` and `STATUS`: `Running` **Lifecycle Events** -- Each line represents an event: `Pending`, `ContainerCreating`, `Running` or `Completed` -- Restarts should ideally be `0`; otherwise, there may be a resource problem (slow network, not enough CPU or memory, etc.) with your cluster, and Kubernetes is trying to self-heal +- Each line represents an event: `Pending`, `ContainerCreating`, `Running` or `Completed`. +- Restarts should ideally be `0`; otherwise, there may be a resource problem (slow network, not enough CPU or memory, etc.) with your cluster, and Kubernetes is trying to self-heal. - This is a partial history for a typical install. ``` shell-session NAME READY STATUS RESTARTS AGE @@ -330,10 +332,10 @@ pn-3c07adf0-fac54a9f-entando-app-builder-menu-bff-deploymep6j87 1/1 Runnin --- -The URL of your running Entando instance is http://YOUR-HOST-NAME/app-builder/. +The URL of your running Entando instance is http://ingressHostName/app-builder/. -- Example URL +- Example URL: ``` bash quickstart.192.168.64.33.nip.io/app-builder/ @@ -341,9 +343,9 @@ quickstart.192.168.64.33.nip.io/app-builder/ --- -## Login to Entando +## Log in to Entando -Now that you've installed Entando, login to the Entando App Builder. +Now that you've installed Entando, log in to the Entando App Builder. ![entando-login.png](./img/entando-login.png) @@ -368,8 +370,8 @@ Check out these resources to continue your journey with Entando! * **Try a Tutorial:** Take advantage of the [Learning Paths](../../tutorials/), which organize a few of the most popular tutorials by user type. -* **Dig Deeper into Entando Concepts:** Review the [Docs](../) sections to more deeply understand the Entando building blocks. +* **Dig Deeper into Entando Concepts:** Review the [Docs](../) sections to get a better understanding of the Entando building blocks. -* **Learn about the Quickstart Environment:** See the [Quickstart Tips](../reference/local-tips-and-tricks.md) for more information on how to manage your Getting Started or quickstart environment. +* **Learn about the Quickstart Environment:** See the [Quickstart Tips](../reference/local-tips-and-tricks.md) for more information on how to manage and troublshoot your quickstart environment. --- diff --git a/vuepress/docs/next/docs/getting-started/concepts-overview.md b/vuepress/docs/next/docs/getting-started/concepts-overview.md index 9a7db53a94..8e2b3d99e4 100644 --- a/vuepress/docs/next/docs/getting-started/concepts-overview.md +++ b/vuepress/docs/next/docs/getting-started/concepts-overview.md @@ -1,89 +1,94 @@ # Entando Architecture Concepts -Entando is an application composition platform that simplifies and accelerates enterprise modernization across on-prem and cloud infrastructures. It offers native support for Javascript app development, a micro frontend and microservice architecture, scalable app deployment, and automated container orchestration via Kubernetes. +Entando is an application composition platform (ACP) that simplifies and accelerates enterprise modernization across on-prem and cloud infrastructures. It offers native support for Javascript app development, a micro frontend and microservice architecture, scalable deployments, and automated container orchestration via Kubernetes. -This document explores the architecture of the Entando Platform and some notable runtime characteristics. +This document explores the conceptual architecture of the Platform and its runtime characteristics. ![entando-architecture](./img/entando-architecture.png) -- [Key Entando Concepts](#key-entando-concepts) +- [Key Concepts](#key-concepts) - [Entando Cluster Elements](#entando-cluster-elements) - [Entando Ingresses](#entando-ingresses) -> Note: A portal, website, web app, or mobile app built with Entando is called an Entando Application. -An Entando Application is an assembly of out-of-the-box and/or custom-built components running on the -Entando Platform. Entando components can be widgets, micro frontends, microservices, page templates, WCMS content or WCMS content types. -## Key Entando Concepts +## Key Concepts + +### Entando Application +A portal, website, web app, or mobile app built with Entando is called an Entando Application. +An Entando Application is an assembly of out-of-the-box and/or custom-built components, called bundles, running on the +Platform. Applications also consist of page templates, WCMS content, content types, and other assets. + +### Entando Bundle +An Entando Bundle is a packaged set of components and resources created for the Platform. They are the building blocks of any application built on Entando, consisting of micro frontends, microservices, services and other resources. The Entando Component Manager identifies and installs the bundles to the Local Hub. + +See also: [Bundle Details](../curate/bundle-details.md) + ### Entando App Builder -The [Entando App Builder](../compose/app-builder.md) is the frontend of the Entando Platform with which an Entando Application is created and customized. It hosts the Entando WCMS and provides a feature-rich, low-code user interface to configure and interact with components, design and create pages, manage content, and build modular applications. +The [Entando App Builder](../compose/app-builder.md) is the application composer of the Platform. It hosts the WCMS and provides a feature-rich, low-code user interface to find and configure components, design and create pages, manage content, and build composable applications. See also: [Widget Tutorial](../../tutorials/compose/widgets-fragments.md) ### Entando App Engine -The Entando App Engine is the core runtime engine responsible for the primary out-of-the-box services required to develop Entando Applications. It exposes the backend APIs used to deliver the page and content management interface of an Entando Application, assembles and coordinates components within the Entando App Builder, and provides the data access layer to persist pages and application design. +The Entando App Engine is the core runtime engine responsible for the primary out-of-the-box services required to develop applications. It exposes the backend APIs used to deliver the page and content management interface of an Entando Application, assembles and coordinates components within the App Builder, and provides the data access layer to persist pages and application design. See also: [APIs tutorial](../consume/entando-apis.md) ### Entando Component Generator -The Entando Component Generator implements a [JHipster](https://www.jhipster.tech/) blueprint to quickly and efficiently generate the skeleton of an Entando project using automation and templating. The generator provides advanced data modeling capabilities, including object relational mapping, and the autogeneration of micro frontends and microservices. The [Entando Blueprint](../../tutorials/create/ms/generate-microservices-and-micro-frontends.md) fast-tracks development by creating the folders, files and infrastructure required by a project. +The Entando Component Generator implements a [JHipster](https://www.jhipster.tech/) blueprint to quickly generate the skeleton of an Entando bundle with automation and templating. The Generator provides advanced data modeling capabilities, including object relational mapping and dynamic creation of micro frontends and microservices. -See also: [Component Generation Technologies](../create/component-gen-tech.md) +See also: [Generate Microservices & Micro Frontends](../../tutorials/create/ms/generate-microservices-and-micro-frontends.md) ### Entando Identity Management System -[Entando Identity Management System](../consume/identity-management.md) is Entando's [Keycloak](https://www.keycloak.org/)-based user management and authentication system. It applies Single Sign On capabilities across multiple domains to connect service providers with identity providers. +[Entando Identity Management System](../consume/identity-management.md) is the Platform's [Keycloak](https://www.keycloak.org/)-based user management and authentication system. It applies Single Sign On capabilities across multiple domains to connect service providers with identity providers. See also: [Entando Authentication](../../tutorials/create/mfe/authentication.md) ### Entando Local Hub -The [Entando Local Hub](../compose/local-hub-overview.md) is the component repository of an Entando App Builder. The Entando Bundles available to the Entando Application are represented and can be deployed, installed, updated or versioned using the App Builder UI. +The [Local Hub](../compose/local-hub-overview.md) is the component repository of the App Builder. Bundles--the basic building block for composing applications on Entando--are catalogued and organized here. The Local Hub also provides direct access to bundles in the Entando Marketplace and the Enterprise Hub, if one exists for the organization, and can be deployed and installed from here. ### Entando WCMS -The Entando Web Content Management System (WCMS) is a lightweight content and digital asset management system. It manages widgets, HTML fragments, and other content types used in an Entando Application. +The Entando Web Content Management System (WCMS) is a lightweight content and digital asset management system. It manages widgets, HTML fragments, and other content types for an Entando Application. See also: [Content Types](../../tutorials/compose/content-types-tutorial), [Content Templates](../../tutorials/compose/content-templates-tutorial) and [Digital Assets](../../tutorials/compose/digital-assets-tutorial.md) ## Entando Cluster Elements -The following is an overview of the elements comprising an Entando Cluster. +The following is an overview of the elements comprising an Entando cluster. ### Architecture - Members of the Cluster -Below is a diagram of an Entando Cluster and depicts how the various elements interact with one another. Entando deploys this infrastructure on Kubernetes using the Entando Operator and controllers. Each element is associated with a custom resource definition (CRD) file, if applicable. +This is a diagram of an Entando cluster, depicting how the various elements interact with one another. Entando deploys this infrastructure on Kubernetes using the Entando Operator and controllers. Each element is associated with a custom resource definition (CRD) where applicable. -![Entando Cluster Architecture Diagram](./img/entando-architecture-v1.5.svg) +![Entando Cluster Architecture Diagram](./img/entando-cluster-arch.png) #### EntandoApp -The EntandoApp is comprised of the Entando App Builder, the Entando App Engine and the Entando Component Manager. Keycloak-based authorization and authentication enable these to interact with each other and other cluster elements. +The EntandoApp is comprised of the App Builder, App Engine and Component Manager. Keycloak-based authorization and authentication enable these to interact with each other and other cluster elements. + + #### Entando Component Manager -The purpose of the [Entando Component Manager](../compose/ecm-overview.md) is to: +The purpose of the [Entando Component Manager](../compose/ecm-overview.md) (ECM) is to: - Provide the functionality to deploy and install micro frontends and widgets - Manage the connections between an application and the installed microservices -It integrates the Local Hub into the App Builder to list the Entando Bundles accessible from the EntandoApp, provisioning bundle management services such as install, uninstall, upgrade, downgrade and versioning. The Entando Kubernetes integration service communicates with the cluster to supply these bundle services and is the only service, other than the Entando Operator, that can interact with the cluster and custom resources. +The ECM integrates the Local Hub into the App Builder, listing the bundles accessible from the EntandoApp, and managing their install, uninstall, upgrade, downgrade and tracking processes. The Entando Kubernetes integration service communicates with the cluster to supply these bundle services and is the only service, other than the Entando Operator, that can interact with the cluster and custom resources. #### Entando Kubernetes Service -The Entando Kubernetes integration service (`entando-k8s-service`) is a function of the Entando Cluster infrastructure custom resource, providing an abstraction layer between Entando microservices and the APIs exposed by Kubernetes. It supplies access points to several custom resources defined by Entando, in particular Entando Applications, Entando Plugins, Entando Bundles and Entando links. +The Entando Kubernetes integration service (`entando-k8s-service`) is a function of the Entando cluster infrastructure custom resource, providing an abstraction layer between Entando microservices and the APIs exposed by Kubernetes. It supplies access points to several custom resources defined by Entando, in particular Entando Applications, plugins, bundles and links. The `entando-k8s-service` is used to: - Provide a list of the available Entando Bundles to the Entando Component Manager - Deploy a microservice, or expose an already available microservice, during the installation of a bundle - Create a link between an EntandoApp and an EntandoPlugin to expose microservice APIs to the EntandoApp and micro frontends -#### Entando Bundle -An Entando Bundle is a packaged set of components and resources created for the Entando Platform. The Entando Component Manager identifies the bundles and can install their components to extend the functionality of an Entando Application. - -See also: [Local Hub Overview](../compose/local-hub-overview.md) - #### Entando Plugin -An Entando Plugin is a microservice that exposes APIs reusable by one or more Entando Applications. Plugin services are commonly accessible from micro frontends and can be quickly generated with the [Entando Blueprint](../../tutorials/create/ms/generate-microservices-and-micro-frontends.md). A blueprint-generated project can be used as-is in an Entando environment and provides Keycloak integration, a set of default micro frontends, and microservices exposed by the bundle. +An Entando Plugin is a microservice that exposes APIs reusable by one or more Entando Applications. Plugin services are commonly accessible from micro frontends and can be quickly generated with the [Entando Blueprint](../../tutorials/create/ms/generate-microservices-and-micro-frontends.md). This blueprint-generated project is customizable and provides Keycloak integration, a set of default micro frontends, and microservices exposing APIs. #### Keycloak -Keycloak is responsible for authorization and authentication on Entando. All members of an Entando Cluster interact with Keycloak to verify user and service authorization. +Keycloak is responsible for authorization and authentication. All members of an Entando cluster interact with Keycloak to verify users and service authorizations. ## Entando Ingresses -An ingress is a Kubernetes resource that exposes HTTP and HTTPS paths from outside an Entando Cluster to services within it. Traffic routing is controlled by rules defined on the ingress resource. +An ingress is a Kubernetes resource that exposes HTTP and HTTPS paths from outside a cluster to services within it. Traffic routing is controlled by rules defined in the ingress resource. When deploying a cluster, ingresses are generated for the resources that must be exposed to external services. The Entando Operator and custom resource controllers create the ingresses and set the correct paths and certificates. Entando implements Keycloak and EntandoApp ingresses. #### Keycloak Ingress @@ -99,8 +104,8 @@ The EntandoApp ingress is also used to link a microservice with an EntandoApp wh The table below lists the default paths exposed for each ingress. --++ @@ -142,5 +147,8 @@ A microservice under the same domain (ingress) as the EntandoApp is exposed usin Once the link between the EntandoApp and the microservice is created, the controller reads the link specification. It then automatically creates HTTP paths in the EntandoApp to expose the microservice in the same domain as the App Builder, App Engine and Component Manager. This allows micro frontend developers to reference the microservice using relative URLs. -See also: [Entando Deployment Structure](../reference/deployment-structure.md) and [Check Ingresses](../reference/check-ingress.md) +See also: +* [Entando Deployment Structure](../reference/deployment-structure.md) +* [Check Ingresses](../reference/check-ingress.md) +* [Entando Glossary](../reference/glossary.md) diff --git a/vuepress/docs/next/docs/getting-started/ent-api.md b/vuepress/docs/next/docs/getting-started/ent-api.md index d6334c5fcf..a4cffc09b5 100644 --- a/vuepress/docs/next/docs/getting-started/ent-api.md +++ b/vuepress/docs/next/docs/getting-started/ent-api.md @@ -5,11 +5,11 @@ sidebarDepth: 1 # API Management -An API claim informs the Entando Platform that a micro frontend (MFE) intends to use the API of a microservice (MS). This request can be sent within a single bundle or across bundles. The abstraction of an API claim eliminates the need to define and manage API endpoints, both in local development and within a running instance. +An API claim informs the Entando Platform that a micro frontend (MFE) intends to use the API of a microservice (MS), standardizing authentication across many services. This request can be sent within a single bundle or across bundles. The abstraction of an API claim eliminates the need to define and manage API endpoints, both in local development and within a running instance. ## Internal vs. External API Claim -An MFE can initiate both internal and external API claims. An internal claim specifies an MS API in the same bundle as the MFE, while an external claim specifies the MS API of another bundle in the same Kubernetes namespace. +An MFE can initiate both internal and external API claims. An internal claim connects an MS API in the same bundle as the MFE, while an external claim specifies the MS API of another bundle in the same Kubernetes namespace. The structure of internal and external API claims are as follows: @@ -33,7 +33,7 @@ The structure of internal and external API claims are as follows: ## API Claim Commands -Common operations associated with API claims are detailed below. To execute `ent bundle api` subcommands, the user must be connected to a running Entando instance (via `ent attach-*`) or the CLI will generate an authentication error. +Common operations associated with API claims are detailed below. To execute `ent bundle api` subcommands, the user must be connected to a running Entando instance (via [ent attach-vm](ent-profile.md)) or the CLI will generate an authentication error. | Command | Description | :- | :- @@ -61,12 +61,12 @@ Common operations associated with API claims are detailed below. To execute `ent ## Microservice URL Retrieval -To retrieve the URL of an MS declared through an API claim, add `systemParams.api[claimName].url` to the MFE JavaScript code so it can access that element of the config object. The `claimName` is chosen by the user when the API claim was defined. +To retrieve the URL of an MS declared through an API claim, add `systemParams.api[claimName].url` to the MFE JavaScript code so it can access that element of the config object. The `claimName` is chosen by the user when the API claim is defined. **Installed Bundles** -The configuration data of installed bundles are provided by the Entando instance. To render an MFE from an installed bundle, Entando injects a JSON object containing configuration details inside the "config" attribute of a custom HTML element, e.g. ``. +The configuration data of installed bundles are provided by the Entando instance. To render an MFE from an installed bundle, Entando injects a JSON object containing configuration details inside the `config` attribute of a custom HTML element, e.g. ``. **Local Bundles** diff --git a/vuepress/docs/next/docs/getting-started/ent-bundle.md b/vuepress/docs/next/docs/getting-started/ent-bundle.md index a962b031f2..a90710a19f 100644 --- a/vuepress/docs/next/docs/getting-started/ent-bundle.md +++ b/vuepress/docs/next/docs/getting-started/ent-bundle.md @@ -4,44 +4,45 @@ sidebarDepth: 2 # Bundle Management -The Entando Bundle CLI extends the functionality of **ent** through a dedicated bundle management system. The `ent bundle` command orchestrates the lifecycle of a project, packaging it into a convenient and recognizable docker-based bundle that can be inserted into any Entando Application. This composable approach takes advantage of a single project descriptor and repository, along with centralized [API management](ent-api.md) and [DB and Keycloak services](ent-svc.md). Common operations and the steps required to create an Entando Bundle are detailed below. +The Entando Bundle commands extend the functionality of **ent** through a dedicated bundle management system. The `ent bundle` set of subcommands orchestrate the lifecycle of a component, packing it into a convenient standardized docker-based bundle that can be used to build composable applications. This approach takes advantage of a single project descriptor, along with centralized [API management](ent-api.md) and [DB and Keycloak services](ent-svc.md). Common operations and the steps required to create an Entando Bundle are detailed below. -In addition, this document describes the series of `ent ecr` commands that manage bundle interactions with the [Entando Component Repository](../../docs/compose/local-hub-overview.md) (ECR). These are applicable to both docker-based bundles and their git-based predecessors (< Entando 7.1). Notable commands applicable to creating and deploying git-based bundles only are also discussed. +In addition, this document describes the series of `ent ecr` commands that manage bundle interactions with the [Entando Component Repository](../../docs/compose/local-hub-overview.md) (ECR). These are applicable to both docker-based bundles and their git-based predecessors (< Entando 7.1). Notable commands applicable to creating and deploying only git-based bundles are also discussed. ## Entando Bundle Development -The `ent bundle` CLI tool provides a streamlined process to govern the files, structure, and management of Entando bundles. The bundle development lifecycle consists of 6 stages, each corresponding to a subcommand: +The bundle development lifecycle consists of 6 stages, each corresponding to a subcommand of ent bundle: -- [Initialization](#initialization): `ent bundle init` initializes a new bundle project, either with the default files and folders or from an existing bundle in an Entando Hub. The bundle format relies on a single JSON descriptor as the project manifest. +- [Initialization](#initialization): `ent bundle init` launches a new bundle project, either with the default starter files and folders, or dynamically, from the catalog of an Entando Hub. The bundle format relies on a single JSON descriptor as the project manifest. -- [Build](#build): With the structure established, `ent bundle build` generates micro frontend (MFE) and microservice (MS) components. These are filtered by type and name and assigned version numbers. +- [Build](#build): With the structure established, `ent bundle build` generates micro frontend (MFE) and microservice (MS) components. These are filtered by type and name, and assigned version numbers. -- [Run](#run): `ent bundle run` and Keycloak integration enable components to be tested locally, external to an Entando cluster. +- [Run](#run): `ent bundle run` and Keycloak integration enable components to be tested locally, independent of an Entando cluster. -- [Package](#package): `ent bundle pack` generates the bundle artifacts, the bundle image and the microservice images. One image is created for each microservice while a single image is created for the bundle and micro frontends. +- [Package](#package): `ent bundle pack` generates the bundle artifacts and images for the bundle and each microservice. -- [Publish](#publish): `ent bundle publish` pushes the Docker images to a Docker repository, after which the bundle can be deployed and installed. +- [Publish](#publish): `ent bundle publish` pushes the images to a Docker repository, after which the bundle can be deployed and installed. -- [Deploy](#deploy): `ent bundle deploy` delivers a published bundle to the ECR of an Entando Application. The bundle custom resource is generated and tags are retrieved from Docker Hub. +- [Deploy](#deploy): `ent bundle deploy` delivers a published bundle to the ECR of the Entando Platform. The bundle custom resource is generated and tags are retrieved from Docker Hub. -- [Install](#install): `ent bundle install` applies the bundle to the Entando instance. It is then available in the App Builder for unlimited reuse within the application. +- [Install](#install): `ent bundle install` applies the bundle to the Entando instance. It is then available in the App Builder for unlimited reuse. -See the [Build and Publish a Simple Bundle](../../tutorials/create/pb/publish-simple-bundle.md) tutorial to see the full process. And for more information on Entando Bundle specifications, go to the [Bundle Details](../curate/bundle-details.md) page. +See the [Build and Publish a Simple Bundle](../../tutorials/create/pb/publish-simple-bundle.md) tutorial to follow the full process. And for more information on Entando Bundle specifications, go to the [Bundle Details](../curate/bundle-details.md) page. ## Docker-based Bundle Commands | Commands | Description | |:- |:- |`ent bundle build`| Build components (MFE, MS) with a selector | -|`ent bundle deploy`|Deploy a bundle to the Local Hub of an Entando Application +|`ent bundle convert --bundle-path [path1]` | Convert a git-based bundle to a Docker-based one | +|`ent bundle deploy`|Deploy a bundle to the Local Hub of an Entando Platform |`ent bundle generate-cr`| Generate the Entando Custom Resource for a bundle project | |`ent bundle help` | Display help for ent bundle | |`ent bundle info`| Show status information for the bundle project | |`ent bundle init`| Initialize the project folder structure and descriptor | -|`ent bundle install`| Install a bundle to the Local Hub of an Entando Application| +|`ent bundle install`| Install a bundle to the Local Hub of an Entando Platform| |`ent bundle list`| List the available bundle components | |`ent bundle mfe add` | Add a micro frontend | -| `ent bundle mfe rm` | Remove a micro frontend | +|`ent bundle mfe rm` | Remove a micro frontend | |`ent bundle ms add` | Add a microservice | |`ent bundle ms rm` | Remove a microservice | |`ent bundle run`| Run bundle components | @@ -54,25 +55,25 @@ See the [Build and Publish a Simple Bundle](../../tutorials/create/pb/publish-si | Command | Description |:--|:-- |`ent bundle init [name]` | Initialize a new empty project with the default structure and files | -|`ent bundle init [name] --from-hub`| Initialize a bundle from the Entando Cloud Hub | +|`ent bundle init [name] --from-hub`| Initialize a bundle from the Entando Marketplace catalog | |`ent bundle init [name] --from-hub --hub-url=[url]` | Initialize a bundle from an enterprise Entando Hub | -|`ent bundle init [name] --from-hub --hub-url=[url] --hub-api-key=[]` | Initialize a bundle from a private Entando Hub with an API key| +|`ent bundle init [name] --from-hub --hub-url=[url] --hub-api-key=[]` | Initialize a bundle from a private enterprise Entando Hub with an API key| #### Init Command Details - Bundle names may only contain lowercase letters, numbers, periods(.) and dashes(-). They cannot start or end with periods or dashes. - `--from-hub`: This option leverages an existing bundle from an Entando Hub to jumpstart your project. The `ent bundle` tool will pull the package and rebuild the structure, which can then be customized locally. -- `--hub-url`: Use this option to specify a custom Entando Hub, else ent defaults to the Entando Cloud Hub +- `--hub-url`: Use this option to specify an enterprise Entando Hub, else ent defaults to the Entando Cloud Hub. -- `--hub-api-key`: This flag supplies the [Hub API key](../../tutorials/solution/entando-hub.md#create-a-private-catalog) to access a bundle from a private enterprise Entando Hub to copy it locally. +- `--hub-api-key`: This flag supplies the [Hub API key](../../tutorials/solution/entando-hub.md#create-a-private-catalog) to access a bundle from a private enterprise Hub. ### Micro Frontend and Microservice | Command| Descriptions |:--|:-- -|`ent bundle mfe add` --stack [stack-type] [name] | Add a React or Angular micro frontend | -|`ent bundle mfe add` --stack custom [name] | Add a custom stack micro frontend | +|`ent bundle mfe add --stack [stack-type] [name]` | Add a React or Angular micro frontend | +|`ent bundle mfe add --stack custom [name]` | Add a custom stack micro frontend | |`ent bundle ms add --stack [stack-type] [name]` | Add a Spring Boot or node microservice | -|`ent bundle ms add` --stack custom [name]` | Add a custom stack microservice | +|`ent bundle ms add --stack custom [name]` | Add a custom stack microservice | #### MFE and MS Command Details - `ent bundle mfe add --stack custom [name]` & `ent bundle ms add --stack custom [name]`: When a custom stack is used for any MFE or microservice, custom commands for the build, run, and pack functions are required under the Command spec in the bundle descriptor `entando.json`. In addition, a version number must be specified for each component. Because Entando can only parse information from a pom.xml or package.json, the custom commands are required to manage the bundle, and the version number is required to track Docker images. For an example, see the [Bundle Details](../curate/bundle-details.md#micro-frontends-sample-code) page. @@ -89,16 +90,16 @@ See the [Build and Publish a Simple Bundle](../../tutorials/create/pb/publish-si #### Build Command Details - `ent bundle build`: - - The `build` command constructs the project files based on the `entando.json` descriptor. + - The `build` sub command constructs the project files based on the `entando.json` descriptor. - Component type and stack determines the build process, e.g. a React MFE executes an npm build. It can be customized in the command section of the `entando.json`. - All the components in the bundle are built in parallel. - A log file for each component is generated inside the .entando/logs directory of the project. - `--fail-fast`: - - Fail the command as soon as any subtask fails + - Fail the command as soon as any subtask fails. - `--max-parallel=`: - Maximum number of subtasks running simultaneously. The default value is 3. Setting `max-parallel=1` results in a sequential process. - `--stdout`: - - Print the subtask logs to the standard output (stdout) instead of individual log files. This is very useful in CI/CD pipelines. + - Print the subtask logs to the standard output (stdout) instead of individual log files. This is useful in CI/CD pipelines. ### Run | Command| Descriptions @@ -111,7 +112,7 @@ See the [Build and Publish a Simple Bundle](../../tutorials/create/pb/publish-si #### Run Command Details - `ent bundle run`: - - The `run` command executes processes in accordance with the component type and stack, e.g `mvn spring-boot:run` for a Spring Boot microservice. It can be customized in the command section of the `entando.json`. + - The `run` subcommand executes processes in accordance with the component type and stack, e.g `mvn spring-boot:run` for a Spring Boot microservice. It can be customized in the command section of the `entando.json`. - All the components in the bundle run in parallel, with the logs printed to the standard output. - The `run` command can be used to run multiple microservices side by side without collision in local development, but in production, they must run on port 8081. @@ -128,13 +129,13 @@ See the [Build and Publish a Simple Bundle](../../tutorials/create/pb/publish-si - `ent bundle pack`: - The artifacts generated for micro frontends and microservices are stored in their respective component folders. File format depends on component type, e.g. a React micro frontend may result in HTML, JavaScript and CSS files. - Once the artifacts are generated, a Docker image for each microservice is built using the Dockerfile located in the microservice's folder. If the Dockerfile is missing, the `pack` command exits with failure. - - The `pack` command executes either `mvn package` or `npm run build`, depending on the stack. These defaults can be overridden in the [custom command section](../curate/bundle-details.md#command-specification) of the bundle descriptor `entando.json`. + - The `pack` subcommand executes either `mvn package` or `npm run build`, depending on the stack. These defaults can be overridden in the [custom command section](../curate/bundle-details.md#command-specification) of the bundle descriptor `entando.json`. - `--fail-fast`: - Fail the command as soon as any subtask fails - `--max-parallel=`: - Maximum number of subtasks running simultaneously. The default value is 3. Setting `max-parallel=1` results in a sequential process. - `--stdout`: - - Print the subtask logs to the standard output (stdout) instead of individual log files. This is very useful in CI/CD pipelines. + - Print the subtask logs to the standard output (stdout) instead of individual log files. This is useful in CI/CD pipelines. - `--skip-docker-build`: - Allow the user to create a custom image build. The YAML descriptors and Dockerfile are created in the `.output` folder but no images are generated for the bundle and microservices. - `ent bundle images`: @@ -150,17 +151,17 @@ See the [Build and Publish a Simple Bundle](../../tutorials/create/pb/publish-si ### Deploy | Command| Description |:--|:-- -|`ent bundle deploy`| Deploy a bundle to the Local Hub of an Entando Application | +|`ent bundle deploy`| Deploy a bundle to the Local Hub of the Entando Platform | ### Install | Command| Description |:--|:-- -|`ent bundle install`| Install a bundle in the Local Hub of an Entando Application | +|`ent bundle install`| Install a bundle in the Local Hub of the Entando Platform | #### Install Command Details -* `ent bundle install --conflict-strategy=OVERRIDE`: If a bundle project has already been installed, the `--conflict-strategy` flag forces a `CREATE`, `SKIP` or `OVERRIDE` strategy for components +* `ent bundle install --conflict-strategy=OVERRIDE`: If a bundle project has already been installed, this flag forces a `CREATE`, `SKIP` or `OVERRIDE` strategy for components. -### Convert v1 to v5 +### Convert v1 to v5 Bundle | Command| Descriptions |:--|:-- @@ -196,14 +197,14 @@ The following commands are applicable to both docker-based and git-based bundles |`ent ecr uninstall`| Uninstall a bundle | #### ECR Command Details -* `ent ecr get-bundle-id`: The unique identifier assigned to each bundle provides a mechanism to customize parameters and add security controls for bundle-specific resources +* `ent ecr get-bundle-id`: The unique identifier assigned to each bundle provides a mechanism to customize parameters and add security controls for bundle-specific resources. -* `ent ecr get-plugin-code`: To retrieve the unique identifier for each microservice +* `ent ecr get-plugin-code`: Retrieve the unique identifier for each microservice. * Docker-based bundles: `ent ecr get-plugin-code YOUR-ORG/YOUR-PLUGIN-NAME --repo=docker://registry.hub.docker.com/YOUR-ORG/YOUR-BUNDLE` * Git-based bundles: `ent ecr get-plugin-code --auto --repo=[repository-url]` -* `ent ecr install --conflict-strategy=OVERRIDE`: If a bundle project has already been installed, the `--conflict-strategy` flag forces a `CREATE`, `SKIP` or `OVERRIDE` strategy for components +* `ent ecr install --conflict-strategy=OVERRIDE`: If a bundle project has already been installed, the `--conflict-strategy` flag forces a `CREATE`, `SKIP` or `OVERRIDE` strategy for components. ## Git-based Bundle Commands @@ -233,7 +234,7 @@ The following ent commands are used to manage git-based (< Entando 7.1) bundles. * `ent prj get-plugin-code`: Uniquely and safely identifies each bundle plugin and derived cloud-native resources -* `ent prj install --conflict-strategy=OVERRIDE`: If a bundle project has already been installed, the `--conflict-strategy` flag forces a `CREATE`, `SKIP` or `OVERRIDE` strategy for components +* `ent prj install --conflict-strategy=OVERRIDE`: If a bundle project has already been installed, this flag forces a `CREATE`, `SKIP` or `OVERRIDE` strategy for components * `ent bundler`: Provides an interactive mode to identify components to export. Point the bundler to existing environments to extract components and static assets into a custom bundle. This bundle can be used to migrate from one Entando environment to another (e.g. Dev to QA) or as a framework for building a new application. diff --git a/vuepress/docs/next/docs/getting-started/ent-diag.md b/vuepress/docs/next/docs/getting-started/ent-diag.md index a50c5839e2..42913cf639 100644 --- a/vuepress/docs/next/docs/getting-started/ent-diag.md +++ b/vuepress/docs/next/docs/getting-started/ent-diag.md @@ -4,24 +4,24 @@ sidebarDepth: 1 # Diagnostics and Troubleshooting -Diagnostic information is critical to analysis and troubleshooting, and the Entando CLI (ent) is a useful tool for debugging issues with an Entando instance. +Diagnostic information is critical for troubleshooting and analysis, and the Entando CLI (ent) provides several methods. | Command | Description -| :- | :- -| `ent app-info` | Display basic information about Kubernetes and Entando resources -| `ent bundle info` |Show status information for the bundle project| -| `ent --debug bundle "command"` |Enable debug mode| -| `ent diag` | Run diagnostics on the pods currently in an Entando namespace and prepare a diagnostic tar.gz -| `ent pod "command"` | Displays information related to a set of pods -| `ent pod grep --all "error\|fail"` | Locate error messages within EntandoApp pods +| :- | :---------------------------- | +|`ent app-info`| Display basic information about Kubernetes and Entando resources +|`ent bundle info`|Show status information for the bundle project| +|`ent --debug bundle "command"`|Enable debug mode| +|`ent diag`| Run diagnostics on the pods in the current Entando namespace and prepare a diagnostic tar.gz +|`ent pod "command"`| Display information related to a set of pods +|`ent pod grep --all "error\|fail"`| Locate error messages within EntandoApp pods ### Command Details -* `ent diag`: Executes operations to analyze, organize and output detailed pod information. It exports custom resources, ingresses, deployments, "previous" pod logs, namespace events, etc. The command also generates diagnostics and returns log paths like the following: +* `ent diag`: Executes operations to analyze, organize and output detailed pod information. It exports custom resources, ingresses, deployments, "previous" pod logs, namespace events, etc. The command generates this diagnostics data and returns log paths like the following: ``` > Collected diagdata available under "~/.entando/reports/entando-diagdata-2020-11-19T02:58:47+0000" for consultation > Collected diagdata available in archive "~/.entando/reports/entando-diagdata-2020-11-19T02:58:47+0000.tgz" ``` -* `ent pod "command"`: Analyzes pods in a cluster with commands like `describe`, `logs`, `shell`, `force-reload`, `port-forward`, and others. +* `ent pod "command"`: Administer pods in a cluster with subcommands like `describe`, `logs`, `shell`, `force-reload`, `port-forward`, and others. ### Log Files Log files for the `ent bundle build` and `pack` commands are generated for each component inside the .entando/logs directory. For single components and other processes, they are printed to the standard outputs. \ No newline at end of file diff --git a/vuepress/docs/next/docs/getting-started/ent-profile.md b/vuepress/docs/next/docs/getting-started/ent-profile.md index 71d6584f16..fbeb98c93b 100644 --- a/vuepress/docs/next/docs/getting-started/ent-profile.md +++ b/vuepress/docs/next/docs/getting-started/ent-profile.md @@ -3,17 +3,15 @@ sidebarDepth: 1 --- -# Profile and Configuration Management +# Profile Management -The [Entando CLI](entando-cli.md) can define a collection of configuration variables to fully describe an Entando instance. One or more profiles can be created to store configuration settings for a particular instance. A profile with this information is automatically generated for a quickstart application. +The [Entando CLI](entando-cli.md) manages one or more profile to store the configuration settings for a particular Entando instance. For a quickstart installation, a profile is automatically generated and can be edited for customization. A set of `ent profile` subcommands are available to manage the configurations and to switch between different Entando instances. -At minimum, a profile configuration must consist of the key-value pairs specifying the application name and namespace. To run the application, the Kubernetes connection must also be provided. Cloud Kubernetes tools typically create a Kube context, which can be linked to an Entando profile. +At a minimum, a profile must consist of the key-value pair specifying the application name and namespace. To run Entando, a Kubernetes context must be established and linked to an Entando profile. ## Profile Management -Common operations associated with profile management are detailed below. - -Note: The `ent profile` command is available to manage and switch between the configurations of different Entando instances. Refer to `ent profile first-use-readme` for additional information. +Refer to `ent profile first-use-readme` for additional information. | Command | Description | :- | :- @@ -31,17 +29,17 @@ Note: The `ent profile` command is available to manage and switch between the co **Command details:** -- `ent pro link`: Provides ent with instructions to connect to the Kubernetes containing the Entando Application. Alias of `ent attach-kubectx`. +- `ent pro link`: Provides ent with instructions to connect to the Kubernetes containing the EntandoApp. Alias of `ent attach-kubectx`. - `ent pro new`: Sets the minimal profile data and outputs next steps. - `ent pro use`: Initializes the global profile ent should use across shells. -- `source ent pro use`: Initializes the local profile ent should use within the current shell. Allows ent instances in different shells to simultaneously use different Kube contexts, kubeconfigs or custom commands. The quickstart script creates a profile named "qs--{vmname}" that is associated with the Entando Application it generates. +- `source ent pro use`: Initializes the local profile ent should use within the current shell. It allows ent instances in different shells to simultaneously use different Kube contexts, kubeconfigs or custom commands. The quickstart script creates a profile named "qs--{vmname}" that is associated with the EntandoApp. ## Configuration Management -The output of `ent config` is a key-value archive of configuration settings related to the current profile. The following commands and definitions are especially useful. +The output of `ent config` is a key-value archive of configurations defining the current profile. The following commands and definitions may be useful. ### Commands @@ -59,7 +57,7 @@ The output of `ent config` is a key-value archive of configuration settings rela | Key | Description |---|--- | ENTANDO_NAMESPACE | Stores the fallback namespace used by explicit or implicit runs of `ent kubectl` -| ENTANDO_APPNAME | Stores the Entando Application name related to the current profile +| ENTANDO_APPNAME | Stores the EntandoApp name related to the current profile | DESIGNATED_JAVA_HOME | Stores the path of the Java version used internally by ent diff --git a/vuepress/docs/next/docs/getting-started/ent-svc.md b/vuepress/docs/next/docs/getting-started/ent-svc.md index 2709e446db..ac51882e27 100644 --- a/vuepress/docs/next/docs/getting-started/ent-svc.md +++ b/vuepress/docs/next/docs/getting-started/ent-svc.md @@ -4,9 +4,9 @@ sidebarDepth: 1 # Auxiliary Services -Auxiliary services add capabilities to a local environment to accelerate application development. This is in contrast to developing on Kubernetes, where the equivalent services are either provisioned by the Entando Platform or are externally managed and pointed to by the application. +Auxiliary services add capabilities to a local environment for application development. This is in contrast to developing on Kubernetes, where the equivalent services are either provisioned by the Entando Platform or are externally managed and pointed to by the application. -To run auxiliary operations, a service must be enabled. When the Entando Bundle CLI enables a service, a default auxiliary configuration is generated and formatted as a Docker Compose YAML file in the bundle's 'svc' folder. Enabled services are listed under the 'svc' attribute in the bundle descriptor, `entando.json`. +To run auxiliary operations, a service must be enabled. When the Entando CLI enables a service for a bundle, a default auxiliary configuration is generated and formatted as a Docker Compose YAML file in the bundle's "svc" folder. Enabled services are listed under the `svc` attribute of the bundle descriptor `entando.json`. The following sections describe how Entando supports and implements auxiliary services. @@ -16,17 +16,17 @@ Three services are available out of the box: `mysql`, `postgresql` and `keycloak - `mysql` and `postgresql` obey the same naming convention - The username and password are derived from the bundle name, e.g. YOUR-BUNDLE has the username YOUR-BUNDLE-USER and the password YOUR-BUNDLE-PASSWORD - - A database is automatically created and given the bundle name, e.g. YOUR-BUNDLE + - A database is automatically created and given the name, e.g. YOUR-BUNDLE -- `keycloak` configures authentication for Entando - - The `keycloak` realm name is 'entando-dev' +- `keycloak` manages authentication for Entando + - The `keycloak` realm name is `entando-dev` - The console is accessible at *http://localhost:9080* with username: *admin*, password: *admin* - All roles and permissions are preset, based on the Keycloak realm-config file - - The `keycloak.yaml`, realm-config and user config files are located in the 'keycloak' folder inside 'svc' + - The `keycloak.yaml`, realm-config, and user config files are located in the "keycloak" folder inside "svc" ## Custom Services -A custom service can be added to a bundle's 'svc' folder as a Docker Compose YAML file. The file and service must have the same name, e.g. if the service filename is `mysql.yml`, then the service name must be `mysql`: +A custom service can be added to a bundle's "svc" folder as a Docker Compose YAML file. The file and service must have the same name, e.g. if the service filename is `mysql.yml`, then the service name must be `mysql`: ``` yaml version: '3.7' @@ -54,8 +54,8 @@ The subcommands of `ent bundle svc` are used to manage services. **Command details:** -- `svc logs`: The log of a running service will continue to update until exited via `Ctrl+C` +- `svc logs`: The log of a running service will continue to update until exited via `Ctrl+C`. -- `svc list`: Include the option `--available` to list all services located in the 'svc' bundle folder +- `svc list`: Include the option `--available` to list all services located in the "svc" bundle folder. - Auxiliary commands can operate on multiple services by listing each service name as an argument, e.g. `ent bundle svc start service_1 service_2`. The option `--all` applies the command to all enabled bundle services. \ No newline at end of file diff --git a/vuepress/docs/next/docs/getting-started/entando-cli.md b/vuepress/docs/next/docs/getting-started/entando-cli.md index e032ec799d..7bde158280 100644 --- a/vuepress/docs/next/docs/getting-started/entando-cli.md +++ b/vuepress/docs/next/docs/getting-started/entando-cli.md @@ -4,7 +4,7 @@ sidebarDepth: 1 # Entando CLI -The Entando Command Line Interface, **ent**, provides a set of commands that accelerate common tasks such as installing a new instance of Entando, building projects, creating and deploying bundles, and composing Entando Applications. This document covers the install, command list, and a few operations to start using the ent tool. +The Entando command line interface, **ent**, provides a set of commands that accelerate common tasks such as installing Entando, building projects, creating and deploying bundles, and composing Entando Applications. This document covers some basic commands to start using the ent tool. For specific topics, follow these links: 1. [Bundle Management](ent-bundle.md): `ent bundle` @@ -15,7 +15,7 @@ For specific topics, follow these links: ### Prerequisites -The basic requirements for the CLI vary with use case, as shown in the table below. +The requirements for ent functionality vary with each use case, shown in the table below. | Category | Prerequisite | :- | :- @@ -31,7 +31,7 @@ Install the current official release of the CLI: bash <(curl -L "https://get.entando.org/cli") --update --release="{{ $site.themeConfig.entando.fixpack.v73 }}" ->The automatic option in [Getting Started](../getting-started/) will install the CLI along with a quickstart Entando Application. +>The automatic option in [Getting Started](../getting-started/) will also install the CLI along with a quickstart Entando ACP. ## Command List Use `ent help` to review the list of available commands.\ @@ -39,8 +39,8 @@ Use `ent [command] --help` for command details. ``` > Available commands: - app-info => Displays information about an entando app - - bundle => Management of new generation entando bundles - - bundler => Export of resources from a running instance and generation old-generation bundle deployment CRs + - bundle => Management of entando bundles (v5 or higher) + - bundler => Export of resources from a running instance and older-generation bundle management - check-env => Checks the environment for required dependencies and settings - diag => Runs diagnostics and aggregates the related info in a .tgz file - ecr => Helper for managing the ECR @@ -50,7 +50,7 @@ Use `ent [command] --help` for command details. - kubectl => Helper for using kubectl in ent managed scenarios - pod => Displays information related to a set of pods - prj => Helper for managing the first generation of Entando bundle projects - - profile => Helps managing an EntandoApp + - profile => Helps manage the EntandoApp - quickstart => Helper for installing Entando instances locally - run-tests => Runs the internal tests @@ -77,16 +77,18 @@ TOPICS svc Manage auxiliary services COMMANDS - build Build bundle components - deploy Deploy a bundle to the Local Hub of an Entando Application + build Build the bundle components + deploy Generate the CR and deploy it to the currently attached EntandoApp generate-cr Generate the Entando Custom Resource (CR) for a bundle project - help Display help for ent bundle. + help Display help for ent bundle + images List the Docker images and their corresponding tags that are + included in the bundle info Show status information for the bundle project init Perform the scaffolding of a bundle project - install Install a bundle in the Local Hub of an Entando Application + install Install a bundle in the current directory to the currently attached EntandoApp list List the available components in the bundle pack Generate the bundle Docker images - publish Publish bundle Docker images + publish Publish the bundle Docker images run Run bundle components DEBUG MODE @@ -95,7 +97,7 @@ DEBUG MODE ``` ### Check the Environment -Verify dependencies required by your Entando installation: +Verify the dependencies required by your Entando installation: ``` bash ent check-env develop ``` @@ -107,16 +109,16 @@ To update ent to the latest version and check for dependencies: bash <(curl -L "https://get.entando.org/cli") --update ent check-env develop ``` ->Alternatively, to perform a clean install, delete the `~/.entando` directory via `rm -rf ~/.entando`. Then reinstall the CLI using the instructions above. This will also remove the private copies of JHipster, Entando Blueprint, etc. +>Alternatively, to perform a clean install, delete the `~/.entando` directory with the flags `rm -rf ~/.entando`. Then reinstall the CLI using the instructions above. This will also remove the private copies of JHipster, Entando Blueprint, etc. ### Enable Debug Mode -To utilize the debug mode for ent bundle commands: +To utilize the debug helper for ent bundle commands: ``` sh ent --debug bundle ``` ### Customize Quickstart -The `ent quickstart` command accepts parameters to customize your quickstart environment. These options allow you to modify specific properties of your VM, installation versions and databases. +The `ent quickstart` command accepts parameters to customize your quickstart environment. These options allow you to modify specific properties of the VM, installation versions, and databases. |Operation |Syntax|Description| |:--|:--|:--| diff --git a/vuepress/docs/next/docs/getting-started/img/entando-architecture-v1.5.svg b/vuepress/docs/next/docs/getting-started/img/entando-architecture-v1.5.svg deleted file mode 100644 index 0622d0bab7..0000000000 --- a/vuepress/docs/next/docs/getting-started/img/entando-architecture-v1.5.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - -
Entando Quickstart Architecture
Entando Quickstart Architecture
User Interface
User Interface
User/Identity Admin
User/Identity Admin
Entando Identity Management
Entando Identity Management
Content
Content
App Admin
App Admin
App Users
App Users
App Builder UI
App Builder UI
Content
Content
MFE
MFE
Paths
Paths
/abc-plugin-ingress-path
/abc-plugin-ingress-path
/app-builder
/app-builder
/auth
/auth
/entando-de-app
/entando-de-app
/digital-exchange
/digital-exchange
Kubernetes Containers
Kubernetes Containers
Plugin/Microservice Container(s)
Plugin/Microservice...
abc-plugin-server-deployment
abc-plugin-server-dep...
App Builder
App Builder
Component Manager
Component Manager
App Engine
App Engine
APIs
APIs
Core
Core
CMS
CMS


quickstart-cm-deployment
quickstart-cm-deploy...
quickstart-deployment
quickstart-deploym...
Operator
Operator
entando-operator
entando-opera...

default-sso-in-namespace-deployment

default-sso-in-namespace-dep...
Keycloak Server
Keycloak Server
entando-k8s--service
entando-k8s--ser...
Kubernetes Service
Kubernetes Service
Note: The Operator listens for events within the Kubernetes cluster and performs actions accordingly, e.g. creating Entando pods during initial install, setting up plugin ingress and pods upon bundle installation from ECR, etc.
Note: The Operator listens for events within the Kubern...

quickstart-ab-deployment

quickstart-ab-deployment
Custom App UI
Custom App UI

Text is not SVG - cannot display
\ No newline at end of file diff --git a/vuepress/docs/next/docs/getting-started/img/entando-architecture.png b/vuepress/docs/next/docs/getting-started/img/entando-architecture.png index 8943dda7c2e5b4af6d9b72cb08c629b2f3c67e90..549c9bd5ba91da4066a7d91fa683eef644357754 100644 GIT binary patch literal 12806 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

h0$LBNl!ZlTvlTVTb1N)9 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 ## Entando Hub -The [Entando Hub](../../tutorials/solution/entando-hub.md) empowers a team to share and collaborate on proprietary or Entando open source components. Capabilities, versions and metadata can be transparently analyzed, managed and published. +The [Entando Hub](../../tutorials/solution/entando-hub.md) empowers a team to share and collaborate on proprietary or Entando open source components. Capabilities, versions and metadata can be analyzed, managed and published. You can install a private catalog to share components within a team or the whole organization with user access controls. @@ -32,13 +32,13 @@ The [Entando Hub](../../tutorials/solution/entando-hub.md) empowers a team to sh ## Entando Process Driven Applications Plugin -The [Entando Process Driven Applications Plugin](../../tutorials/solution/pda-tutorial.md) provides a comprehensive and versatile automation scheme for Business Process Management. It comprises a custom UX layer, a Spring Boot Backend for Frontend microservice interface, and integration with the [Red Hat Process Automation Manager](https://www.redhat.com/en/technologies/jboss-middleware/process-automation-manager). +The [Entando Process Driven Applications Plugin](../../tutorials/solution/pda-tutorial.md) provides a comprehensive and versatile automation scheme for Business Process Management. It comprises a custom UX layer, a Spring Boot Backend for Frontend microservice interface, and integration with the [Red Hat Process Automation Manager](https://access.redhat.com/products/red-hat-process-automation-manager). ## Entando Standard Banking Demo -The [Entando Standard Banking Demo](../../tutorials/solution/install-standard-demo.md) showcases the benefits and possibilities of a composable application built from modular components. The example banking environment integrates a transaction table, sign up form, alert icon, and summary cards to demonstrate MFE communication and capabilities. Prominent features include Keycloak role based access control, coexistence of React and Angular MFEs, and pluggable Spring Boot microservices. +The [Entando Standard Banking Demo](../../tutorials/solution/install-standard-demo.md) showcases the possibilities and benefits of a composable application built from modular components. The example banking environment integrates a transaction table, sign up form, alert icon, and summary cards to demonstrate micro frontend (MFE) capabilities. Prominent features include Keycloak role based access control, coexistence of React and Angular MFEs, and pluggable Spring Boot microservices. diff --git a/vuepress/docs/next/tutorials/getting-started/azure-install.md b/vuepress/docs/next/tutorials/getting-started/azure-install.md index 22a5ca03cb..228faec784 100644 --- a/vuepress/docs/next/tutorials/getting-started/azure-install.md +++ b/vuepress/docs/next/tutorials/getting-started/azure-install.md @@ -140,7 +140,7 @@ kubectl get pods -n entando --watch http://YOUR-HOST-NAME/app-builder/ ``` -See the [Getting Started guide](../../docs/getting-started/README.md#login-to-entando) for helpful login instructions and next steps. +See the [Getting Started guide](../../docs/getting-started/README.md#log-in-to-entando) for helpful login instructions and next steps. ## Appendix A - Troubleshooting diff --git a/vuepress/docs/next/tutorials/getting-started/eks-install.md b/vuepress/docs/next/tutorials/getting-started/eks-install.md index 6658c4bf70..39fce2c281 100644 --- a/vuepress/docs/next/tutorials/getting-started/eks-install.md +++ b/vuepress/docs/next/tutorials/getting-started/eks-install.md @@ -214,7 +214,7 @@ Use `Ctrl+C` to exit the command. ``` http://YOUR-HOST-NAME/app-builder/ ``` -Congratulations! To continue your journey with Entando, see the [Getting Started guide](../../docs/getting-started/#login-to-entando) for helpful login instructions and next steps. +Congratulations! To continue your journey with Entando, see the [Getting Started guide](../../docs/getting-started/#log-in-to-entando) for helpful login instructions and next steps. ## Appendix A - Troubleshooting IAM and Roles diff --git a/vuepress/docs/next/tutorials/getting-started/gke-install.md b/vuepress/docs/next/tutorials/getting-started/gke-install.md index 735e3980f8..839a648061 100644 --- a/vuepress/docs/next/tutorials/getting-started/gke-install.md +++ b/vuepress/docs/next/tutorials/getting-started/gke-install.md @@ -132,7 +132,7 @@ kubectl get pods -n entando --watch http://YOUR-HOST-NAME/app-builder/ ``` -See the [Getting Started guide](../../docs/getting-started/README.md#login-to-entando) for helpful login instructions and next steps. +See the [Getting Started guide](../../docs/getting-started/README.md#log-in-to-entando) for helpful login instructions and next steps. ## Appendix: Configuring Clustered Storage diff --git a/vuepress/docs/next/tutorials/getting-started/openshift-install.md b/vuepress/docs/next/tutorials/getting-started/openshift-install.md index ba03e915bb..6e047c2a2e 100644 --- a/vuepress/docs/next/tutorials/getting-started/openshift-install.md +++ b/vuepress/docs/next/tutorials/getting-started/openshift-install.md @@ -84,7 +84,7 @@ http://YOUR-HOST-NAME/app-builder/ ``` ## Next Steps -Congratulations! To continue your journey with Entando, see the [Getting Started guide](../../docs/getting-started/#login-to-entando) for helpful login instructions and next steps. +Congratulations! To continue your journey with Entando, see the [Getting Started guide](../../docs/getting-started/#log-in-to-entando) for helpful login instructions and next steps. ## Appendix - Troubleshooting and Common Errors diff --git a/vuepress/docs/v7.3/docs/README.md b/vuepress/docs/v7.3/docs/README.md index a83146b3a4..1c48882861 100644 --- a/vuepress/docs/v7.3/docs/README.md +++ b/vuepress/docs/v7.3/docs/README.md @@ -4,16 +4,19 @@ sidebarDepth: 0 # Entando Platform -Entando is the leading open source **Application Composition Platform** for Kubernetes. It enables parallel teams to accelerate development and innovation of business capabilities on a modern, cloud-native, and Kubernetes-native stack. +Entando is an open-source application composition platform (ACP) that streamlines the development of composable applications for the web. By implementing a modular architecture, the Platform enables parallel teams to accelerate development and innovation on a modern, cloud-native, and Kubernetes-native stack. + +With Entando’s distributed working environment, you can build applications composed of modular reusable components and manage them all from one platform. The system includes development and runtime tools, a component catalog, and a component orchestrator to support all aspects of the development lifecycle. -It is a distributed and composable environment in which components can be built, scaled and iterated independently, helping teams build agile applications that can adapt to change. ![Entando Platform Development Process](./getting-started/img/concepts.png) -On the Entando Platform, development of an application is organized into four stages: Create, Curate, Compose, and Consume. In the simplest terms, you create functional building blocks, curate them in a catalog, compose the blocks into an application, which is then consumed by a user. The Enterprise Architect oversees the process, defining business domains and mapping the capabilities for the building blocks. +Development on Entando can be organized into four stages: Create, Curate, Compose, and Consume. In the simplest terms, you create functional building blocks or bundles, curate them in a catalog, compose them into an application, which is then consumed by a user. The Enterprise Architect oversees the process, defining business domains and mapping capabilities for the building blocks. -## Create Components -Building a composable application on Entando involves designing and creating each independent component or building block. Developers can use the [Entando Component Generator](./create/component-gen-overview.md) and [Blueprint](./create/blueprint-features.md) to automate the building and packaging of projects using any technology they choose. The modular architecture of apps built on Entando means new business capabilities can be easily integrated without reworking existing systems. + + +## Create +Building a composable application begins with self-contained bundles, created from scratch or using existing code. With the freedom to choose the technologies and frameworks that meet their needs, developers can use the [Entando Component Generator](./create/component-gen-overview.md) and [Blueprint](./create/blueprint-features.md) to speed up the process. The composable methods of Entando mean innovations can be easily integrated without reworking existing systems. | Documentation | Tutorials | | :------------ | :--------- | @@ -21,31 +24,29 @@ Building a composable application on Entando involves designing and creating eac | [Entando Blueprint Feature](./create/blueprint-features.md) | [Microservices](../tutorials/create/ms/generate-microservices-and-micro-frontends.md) | | [Component Generation Technologies](./create/component-gen-tech.md) | [Build and Publish Project Bundles](../tutorials/create/pb/publish-project-bundle.md) | -## Curate and Share Components -On the Entando Platform, Curate and Share means development teams can bundle and share components within a central catalog. Multiple teams can collaborate on a single component or packaged business capabilities (PBCs) and share them across organizations and applications. They can test and assess components for readiness, manage and publish versions, and share metadata for continuous upgrades. +## Curate +In this stage, curators discover and organize components to share across teams and projects. The components can be sourced internally or from the [Entando Marketplace](https://entando.com/composable-platform/packaged-business-capabilities/) which offers a selection of pre-built solutions. Curators assess, publish, and share component features and metadata in a private or public hub, ensuring that it is discoverable. Centralizing these functions also makes is easier to govern the consistency of the reusable bundles. | Documentation | Tutorials | | :------------ | :-------- | -| [Bundle and Component Descriptors](./curate/bundle-details.md) | [Install Bundles from a Private Image Registry](../tutorials/curate/bundle-private-images.md) | -| [Filtering Bundles](./curate/bundle-filters.md) | [Install Bundle Microservices from a Private Image Registry](../tutorials/curate/ms-private-images.md) | -| [Customize Bundle Info in App Builder](./curate/bundle-presentation-config.md) | | -| [Bundle Version and Updates FAQ](./curate/bundle-versions-faq.md) | | -| [Bundle Uninstall](./curate/uninstall-flow.md) | | +| [Bundle Details](./curate/bundle-details.md) | [Install Bundles from a Private Image Registry](../tutorials/curate/bundle-private-images.md) | +| [Bundle Component Descriptors](./curate/bundle-component-details.md) | [Install Bundle Microservices from a Private Image Registry](../tutorials/curate/ms-private-images.md) | +| [Enterprise Entando Hub](./curate/hub-details.md) | | + -## Compose an Application -The Compose stage is centered around the [Entando App Builder](./compose/app-builder.md), a low-code composition user interface where an application can be assembled using the prebuilt modular templates, widgets, PBCs and others. The [Entando Component Manager](./compose/ecm-overview.md) and [Local Hub](./compose/local-hub-overview.md) are integrated into the App Builder to manage your components, providing speed and flexibility. +## Compose +The Compose stage involves assembling the bundles, packaged business capabilities (PBCs), templates and other resources into an application. Centered around the visual interface, the [Entando App Builder](./compose/app-builder.md), the Platform provides tooling to define the structure, layouts, and interactions between micro frontends within an application. This unified environment, with direct access to the Entando catalogs, leads to the creation of a more cohesive and seamless user experience across a complex application. | Documentation | Tutorials | | :------------ | :-------- | -| [Welcome Wizard](./compose/welcome-wizard.md) | [Page Management](../tutorials/compose/page-management.md) | +| [App Builder Welcome Wizard](./compose/welcome-wizard.md) | [Create and Manage a Page](../tutorials/compose/page-management.md) | | [Local Hub](./compose/local-hub-overview.md) | [Widgets and Fragments](../tutorials/compose/widgets-fragments.md) | -| [Entando App Builder](./compose/app-builder.md) | [Content Creation](../tutorials/compose/content-tutorial.md) | -| [Entando Component Manager](./compose/ecm-overview.md) | [Content Templates](../tutorials/compose/content-templates-tutorial.md) | +| [Entando Component Manager](./compose/ecm-overview.md) | [Content Templates](../tutorials/compose/content-templates-tutorial.md) | | | [Digital Assets](../tutorials/compose/digital-assets-tutorial.md) | -## Consume Applications -In the development lifecycle of an application, Consume is the execution stage where users interact with the app. On Entando, the modular design of components and services means they can be scaled individually, or as a whole, according to those interactions. Likewise, content can be updated, engine rules adapted, and upgrades carried out seamlessly. As a result, the development cycle is a continuous process with minimal disruptions and faster time to market. +## Consume +In the lifecycle of an application, Consume is the execution stage where users interact with the application, using browsers, mobile devices, and conversational interfaces. On Entando, the modular design of components and services means they can be scaled independently, governed consistently, and new features integrated uniformly, as user's needs change. Likewise, content can be updated, interactions improved, and upgrades carried out in a continuous process, with minimal disruptions and faster time to market. | Documentation | Tutorials | | :------------ | :-------- | diff --git a/vuepress/docs/v7.3/docs/consume/identity-management.md b/vuepress/docs/v7.3/docs/consume/identity-management.md index 3417bad140..4018a0f50f 100644 --- a/vuepress/docs/v7.3/docs/consume/identity-management.md +++ b/vuepress/docs/v7.3/docs/consume/identity-management.md @@ -35,7 +35,7 @@ Keycloak authorizes microservices using clients and roles. Authorizations are st Below are the steps to grant a user one or more roles for a specific client. This controls permissions when configuring the microservice. Note, when a microservice is installed in Entando, a corresponding client (and set of roles) is created within its plugin definition. 1. [Log in to Keycloak](#logging-into-your-keycloak-instance) ->For non-external Keycloak instances, it is [the base URL of your running Entando application](../getting-started/README.md#configure-access-to-your-cluster) followed by `/auth/`, e.g. http://YOUR-HOST-NAME/auth. In a standard Entando installation, the base URL can be verified with `kubectl get ingress/default-sso-in-namespace-ingress`. +>For non-external Keycloak instances, it is the base URL of your running Entando application followed by `/auth/`, e.g. http://YOUR-HOST-NAME/auth. In a standard Entando installation, the base URL can be verified with `kubectl get ingress/default-sso-in-namespace-ingress`. 2. Select `Users` from the left menu 3. Use the search box to find the appropriate user, e.g. "admin" 4. Click on the user ID diff --git a/vuepress/docs/v7.3/docs/getting-started/README.md b/vuepress/docs/v7.3/docs/getting-started/README.md index c4cac4bf05..30ea590484 100644 --- a/vuepress/docs/v7.3/docs/getting-started/README.md +++ b/vuepress/docs/v7.3/docs/getting-started/README.md @@ -9,27 +9,27 @@ You can set up Entando in two simple steps or install it manually to meet your s * [Automatic Install](#automatic-install): The fastest way to locally install and start up Entando in Kubernetes. * [Manual Install](#manual-install): Useful if you want a shared cluster or a custom local instance. ->Installation on Mac M1/M2 systems: +>Installation on Apple Silicon processors: To install Entando on Mac systems running ARM64 architecture, see this alternate [Getting Started](../../tutorials/getting-started/arm-install.md) guide. ## Automatic Install Automatically install Entando via the Entando command-line interface (CLI) and prepare a local developer environment with default settings. -The following steps launch an Ubuntu VM via Multipass, install Kubernetes, then deploy Entando to it. +The following steps launch an Ubuntu VM via Multipass, install Kubernetes, and then deploy Entando to it. -1. Install [Multipass](https://multipass.run/#install) +1. Install [Multipass](https://multipass.run/#install). -2. Install Entando into Kubernetes on Ubuntu using the [Entando CLI](entando-cli.md) +2. Install Entando into Kubernetes on Ubuntu using the [Entando CLI](entando-cli.md): curl -sL "https://get.entando.org" | ENTANDO_RELEASE="{{ $site.themeConfig.entando.fixpack.v73 }}" bash -3. The progress of the install is displayed on the console. Installation can take up to 10 minutes, depending on how long the Docker images take to download. The sequence of steps performed by the CLI is identical to the manual steps below. To understand what the CLI does, review the manual steps. +3. The progress of the install is displayed on the console. Installation can take up to 10 minutes, depending on how long the Docker images take to download. The sequence of steps performed by the CLI is identical to the manual steps below. To better understand what the CLI does, review the manual steps. 4. The URL to access the Entando App Builder will print to the console once the install completes. -5. Login with username:`admin` and password: `adminadmin`. Refer to [Login to Entando](#login-to-entando) for more information and next steps. +5. Log in with username:`admin` and password: `adminadmin`. Refer to [Log in to Entando](#log-in-to-entando) for more information and next steps. ## Manual Install -Manual installation allows you to configure a shared cluster or customize a local developer environment. The following learn-as-you-go approach provides a working knowledge of Kubernetes as you install Entando in a local environment. After downloading the necessary files, your instance of Kubernetes will be up and running in <60 seconds. +Manual installation allows you to configure a shared cluster or customize a local developer environment. The following learn-as-you-go approach provides additional context about the process in the highlighted text boxes. After downloading the necessary files, your instance of Kubernetes will be up and running in <60 seconds. This is a three stage process: @@ -43,20 +43,20 @@ Kubernetes is a container orchestrator designed to manage a server cluster. It r ### Install Kubernetes -#### Enable Hypervisor -::: tip Why a Hypervisor? -Hypervisors allow you to create and run VMs. Virtualization software that run on top of your operating system as "guests" are Type 2 hypervisors, e.g. VirtualBox or VMWare Workstation. Type 1 hypervisors run directly on your host machine. +#### 1. Enable a Hypervisor +::: tip Why a hypervisor? +Hypervisors allow you to create and run VMs. Virtualization software that runs on top of your operating system as a guest is a Type 2 hypervisor, like VirtualBox or VMWare Workstation. Type 1 hypervisors run directly on your host machine. ::: Install a Type 1 hypervisor for optimal performance. -**Mac:** Install `hyperkit` + - **Mac:** Install `hyperkit`: -``` bash -brew install hyperkit -``` + ``` bash + brew install hyperkit + ``` -**Windows:** [Install Hyper-V](https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v?redirectedfrom=MSDN) + - **Windows:** [Install Hyper-V](https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v?redirectedfrom=MSDN) --- @@ -74,32 +74,32 @@ Install a Type 2 hypervisor that runs on top of your operating system.
-#### Launch an Ubuntu VM +#### 2. Launch an Ubuntu VM ::: tip Why Multipass? Multipass is a cross-platform tool developed by the publishers of Ubuntu to create lightweight Ubuntu VMs in seconds. ::: -1. Install [Multipass](https://multipass.run/#install) + 1. Install [Multipass](https://multipass.run/#install) -2. Launch a VM + 2. Launch a VM: -``` bash -multipass launch --name quickstart --cpus 4 --mem 8G --disk 20G -``` + ``` bash + multipass launch --name quickstart --cpus 4 --mem 8G --disk 20G + ``` -3. Open a VM shell. (Note: on Windows, you may need to use `winpty multipass`) + 3. Open a VM shell (Note on Windows, you may need to use `winpty multipass`): -``` bash -multipass shell quickstart -``` + ``` bash + multipass shell quickstart + ``` ### Run Kubernetes ::: tip Why K3s? -K3s is a certified Kubernetes distribution designed for production workloads in resource-constrained environments. +K3s is a certified light-weight version of Kubernetes designed for production workloads in constrained environments. -It's packaged as a single <50MB binary that minimizes the dependencies and procedure required to install, run and auto-update a production Kubernetes cluster. +It's packaged as a single (<50MB) binary that minimizes dependencies and simplifies the procedures required to install, run, and update a production Kubernetes cluster. ::: 1. Install the version of `K3s` supported by Entando 7.3. Note that this may not be the latest version of Kubernetes. @@ -130,44 +130,43 @@ sudo kubectl get pods -A You now have a local instance of Kubernetes up and running. ::: -Now that Kubernetes is running, you can use kubectl to send commands directly to K3s from the host machine, rather than from within the VM. To set this up with the [ent CLI](entando-cli.md), run `ent attach-vm quickstart` and then use `ent kubectl` for any calls to K8s. Alternatively, see the K3s documentation to [access your cluster with kubectl](https://rancher.com/docs/k3s/latest/en/cluster-access/). +Now that Kubernetes is running, you can use kubectl to send commands directly to K3s from the host machine, rather than from within the VM. To set this up with the [ent CLI](entando-cli.md), run `ent attach-vm quickstart` and then use `ent kubectl` for any calls to Kubernetes. Alternatively, see the K3s documentation to [access your cluster with kubectl](https://rancher.com/docs/k3s/latest/en/cluster-access/). ### Prepare Kubernetes -To install Entando, we'll add `Custom Resources`, create a `Namespace` and configure external access to our cluster. - -#### Create a Namespace +To install Entando, add the `Custom Resources`, create a `Namespace`, and configure external access to your cluster. -::: tip What are Namespaces? -Kubernetes supports multiple virtual clusters backed by the same physical cluster. These virtual clusters are called [namespaces](https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/). You can use namespaces to allocate resources and set CPU/memory limits for individual projects or teams. -::: +#### 1. Create a Namespace ``` bash sudo kubectl create namespace entando ``` +::: tip What are Namespaces? +Kubernetes supports multiple virtual clusters backed by the same physical cluster. These virtual clusters are called [namespaces](https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/). You can use namespaces to allocate resources and set CPU/memory limits for individual projects or teams. +::: -#### Add Custom Resources +#### 2. Add Custom Resources ::: tip Why Custom Resources? -Standard resources in Kubernetes include `Pods`, which are groups of one or more containers, `Services` to call or access Pods, and `Ingresses` to enable external access to Services. +Standard resources in Kubernetes include `Pods` (groups of one or more containers), `Services` to call or access Pods, and `Ingresses` to enable external access to Services. -[Custom resources](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/) let you store and retrieve structured data. Combining a custom resource with a custom controller allows you to define a desired state to automate how your applications or services run in a Kubernetes cluster. +[Custom resources](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/) let you store and retrieve structured data. Combining a custom resource with a custom controller allows you to define a desired state to automate how your applications and services run in a Kubernetes cluster. ::: Examples of custom resources in Entando are the [Entando App Engine](../../docs/getting-started/concepts-overview.md#entando-app-engine) and the [Entando Identity Management System](../../docs/getting-started/concepts-overview.md#entando-identity-management-system). -From your Ubuntu shell +From your Ubuntu shell: -1. Install the cluster-scoped custom resource definitions (CRDs) +1. Install the cluster-scoped custom resource definition (CRD): sudo kubectl apply -f https://raw.githubusercontent.com/entando/entando-releases/{{ $site.themeConfig.entando.fixpack.v73 }}/dist/ge-1-1-6/namespace-scoped-deployment/cluster-resources.yaml -2. Install the namespace-scoped custom resources +2. Install the namespace-scoped custom resource: sudo kubectl apply -n entando -f https://raw.githubusercontent.com/entando/entando-releases/{{ $site.themeConfig.entando.fixpack.v73 }}/dist/ge-1-1-6/namespace-scoped-deployment/namespace-resources.yaml -#### Configure Access to Your Cluster +#### 3. Configure Access to Your Cluster ::: tip What about Networking? Entando sets up [`Ingresses`](https://kubernetes.io/docs/concepts/services-networking/ingress/) in Kubernetes to expose HTTP routes from outside the cluster to services within the cluster. This is used to access Entando from a local browser. @@ -175,29 +174,32 @@ Entando sets up [`Ingresses`](https://kubernetes.io/docs/concepts/services-netwo If you run into network issues during startup, or if you are using Windows for your local development instance, you'll need to [troubleshoot your network](../reference/local-tips-and-tricks.md#network-issues). Indications of network issues can include Entando failing to completely start or a working Entando instance failing to restart later. ::: -To set up external access to your cluster, replace YOUR-HOST-NAME with the fully qualified domain of your Ubuntu VM. +To set up external access to your cluster, determine the fully qualified domain of your Ubuntu VM for the `ingressHostName` value in the EntandoApp CRD. -- On Windows with Hyper-V, YOUR-HOST-NAME is the name of your VM followed by `.mshome.net`, e.g. `quickstart.mshome.net`. +- On Windows with Hyper-V, `ingressHostName` is the name of your VM followed by `.mshome.net`, e.g. `quickstart.mshome.net`. -- On Mac, Linux, or Windows without Hyper-V, you'll use a host name based on your VM's IP address. You can determine the IP address from within the VM with this command: +- On Mac, Linux, or Windows without Hyper-V, `ingressHostName` is your VM name, plus you VM's IP address, plus "nip.io". You can determine the IP address from within the VM with this command: ``` bash hostname -I | awk '{print $1}' ``` -- Your IP-based YOUR-HOST-NAME should follow this pattern: `quickstart.YOUR-IP.nip.io`, e.g. `quickstart.192.168.64.33.nip.io`. The suffix `.nip.io` makes use of the free [nip.io](https://nip.io/) DNS service so that any requests to this host name will resolve to your VM. The prefix `quickstart` is arbitrary so you can choose your own. + E.g.: For VM named `quickstart`, IP=`192.168.64.33` + `ingressHostName` = `quickstart.192.168.64.33.nip.io` + +The suffix `.nip.io` makes use of the free [nip.io](https://nip.io/) DNS service so that any requests to this host name will resolve to your VM. `quickstart` is arbitrary so you can choose your own VM name. -Now that you've determined YOUR-HOST-NAME, use it to configure the Entando Application. +Now that you've determined `ingressHostName`, use it to configure the Entando Application. 1. Download the template `entando-app.yaml`. curl -sLO "https://raw.githubusercontent.com/entando/entando-releases/{{ $site.themeConfig.entando.fixpack.v73 }}/dist/ge-1-1-6/samples/entando-app.yaml" -2. Modify `entando-app.yaml` to set the `ingressHostName` to YOUR-HOST-NAME. Examples: -- `ingressHostName`: quickstart.mshome.net -- `ingressHostName`: quickstart.192.168.63.33.nip.io +2. Modify `entando-app.yaml` with the `ingressHostName` found in the previous step. Examples: +- Windows machine: `ingressHostName`: quickstart.mshome.net +- Mac or Linux: `ingressHostName`: quickstart.192.168.63.33.nip.io ::: tip Embedded Databases To speed up the _Getting Started_ environment, embedded databases are used by default. -See this [Tutorial on Default Databases](../../tutorials/devops/default-database.md) for information on how to change your database connection, or you can modify the `dbms` setting in the `entando-app.yaml`. +See the [Tutorial on Default Databases](../../tutorials/devops/default-database.md) for information on how to change your database connection, or modify the `dbms` setting in the `entando-app.yaml`. ::: ::: tip Entando Operator @@ -209,7 +211,7 @@ To customize the ingress path of a deployment, refer to the [Configure the Entan ::: ### Deploy Entando -Deploy Entando by applying `entando-app.yaml` to your namespace. +1. Deploy Entando by applying `entando-app.yaml` to your namespace. ```sh sudo kubectl apply -f entando-app.yaml -n entando @@ -217,7 +219,7 @@ sudo kubectl apply -f entando-app.yaml -n entando --- -Use the `get pods --watch` command to observe Entando starting up. +2. Use the `get pods --watch` command to observe Entando starting up. ```sh sudo kubectl get pods -n entando --watch @@ -225,16 +227,16 @@ sudo kubectl get pods -n entando --watch

What does a successful startup look like? -- The `entando-operator` and `entando-k8s-service` start when you apply the namespace resources above, so they should already be in the `Running` status by the time you reach this point -- When you apply the `entando-app.yaml`, the `quickstart-deployer` starts and kicks off a series of deployments, beginning with the Keycloak deployment via the `default-sso-in-namespace-deployer` +- The `entando-operator` and `entando-k8s-service` start when you apply the namespace resources above, so they should already be in `Running` status by the time you reach this point. +- When you apply the `entando-app.yaml`, the `quickstart-deployer` starts and kicks off a series of deployments, beginning with the Keycloak deployment via the `default-sso-in-namespace-deployer`. **Jobs / Deployments** -- Some Pods, like `quickstart-deployer`, run to completion and then shutdown; they should eventually show `READY`: `0/1` and `STATUS`: `Completed` +- Some Pods, like `quickstart-deployer`, run to completion and then shutdown; they should eventually show `READY`: `0/1` and `STATUS`: `Completed`. - Other deployments, like `quickstart-ab-deployment` or `quickstart-deployment`, should eventually show `READY`: `1/1` and `STATUS`: `Running` **Lifecycle Events** -- Each line represents an event: `Pending`, `ContainerCreating`, `Running` or `Completed` -- Restarts should ideally be `0`; otherwise, there may be a resource problem (slow network, not enough CPU or memory, etc.) with your cluster, and Kubernetes is trying to self-heal +- Each line represents an event: `Pending`, `ContainerCreating`, `Running` or `Completed`. +- Restarts should ideally be `0`; otherwise, there may be a resource problem (slow network, not enough CPU or memory, etc.) with your cluster, and Kubernetes is trying to self-heal. - This is a partial history for a typical install. ``` shell-session NAME READY STATUS RESTARTS AGE @@ -330,10 +332,10 @@ pn-3c07adf0-fac54a9f-entando-app-builder-menu-bff-deploymep6j87 1/1 Runnin --- -The URL of your running Entando instance is http://YOUR-HOST-NAME/app-builder/. +The URL of your running Entando instance is http://ingressHostName/app-builder/. -- Example URL +- Example URL: ``` bash quickstart.192.168.64.33.nip.io/app-builder/ @@ -341,9 +343,9 @@ quickstart.192.168.64.33.nip.io/app-builder/ --- -## Login to Entando +## Log in to Entando -Now that you've installed Entando, login to the Entando App Builder. +Now that you've installed Entando, log in to the Entando App Builder. ![entando-login.png](./img/entando-login.png) @@ -368,8 +370,8 @@ Check out these resources to continue your journey with Entando! * **Try a Tutorial:** Take advantage of the [Learning Paths](../../tutorials/), which organize a few of the most popular tutorials by user type. -* **Dig Deeper into Entando Concepts:** Review the [Docs](../) sections to more deeply understand the Entando building blocks. +* **Dig Deeper into Entando Concepts:** Review the [Docs](../) sections to get a better understanding of the Entando building blocks. -* **Learn about the Quickstart Environment:** See the [Quickstart Tips](../reference/local-tips-and-tricks.md) for more information on how to manage your Getting Started or quickstart environment. +* **Learn about the Quickstart Environment:** See the [Quickstart Tips](../reference/local-tips-and-tricks.md) for more information on how to manage and troublshoot your quickstart environment. --- diff --git a/vuepress/docs/v7.3/docs/getting-started/concepts-overview.md b/vuepress/docs/v7.3/docs/getting-started/concepts-overview.md index 9a7db53a94..8e2b3d99e4 100644 --- a/vuepress/docs/v7.3/docs/getting-started/concepts-overview.md +++ b/vuepress/docs/v7.3/docs/getting-started/concepts-overview.md @@ -1,89 +1,94 @@ # Entando Architecture Concepts -Entando is an application composition platform that simplifies and accelerates enterprise modernization across on-prem and cloud infrastructures. It offers native support for Javascript app development, a micro frontend and microservice architecture, scalable app deployment, and automated container orchestration via Kubernetes. +Entando is an application composition platform (ACP) that simplifies and accelerates enterprise modernization across on-prem and cloud infrastructures. It offers native support for Javascript app development, a micro frontend and microservice architecture, scalable deployments, and automated container orchestration via Kubernetes. -This document explores the architecture of the Entando Platform and some notable runtime characteristics. +This document explores the conceptual architecture of the Platform and its runtime characteristics. ![entando-architecture](./img/entando-architecture.png) -- [Key Entando Concepts](#key-entando-concepts) +- [Key Concepts](#key-concepts) - [Entando Cluster Elements](#entando-cluster-elements) - [Entando Ingresses](#entando-ingresses) -> Note: A portal, website, web app, or mobile app built with Entando is called an Entando Application. -An Entando Application is an assembly of out-of-the-box and/or custom-built components running on the -Entando Platform. Entando components can be widgets, micro frontends, microservices, page templates, WCMS content or WCMS content types. -## Key Entando Concepts +## Key Concepts + +### Entando Application +A portal, website, web app, or mobile app built with Entando is called an Entando Application. +An Entando Application is an assembly of out-of-the-box and/or custom-built components, called bundles, running on the +Platform. Applications also consist of page templates, WCMS content, content types, and other assets. + +### Entando Bundle +An Entando Bundle is a packaged set of components and resources created for the Platform. They are the building blocks of any application built on Entando, consisting of micro frontends, microservices, services and other resources. The Entando Component Manager identifies and installs the bundles to the Local Hub. + +See also: [Bundle Details](../curate/bundle-details.md) + ### Entando App Builder -The [Entando App Builder](../compose/app-builder.md) is the frontend of the Entando Platform with which an Entando Application is created and customized. It hosts the Entando WCMS and provides a feature-rich, low-code user interface to configure and interact with components, design and create pages, manage content, and build modular applications. +The [Entando App Builder](../compose/app-builder.md) is the application composer of the Platform. It hosts the WCMS and provides a feature-rich, low-code user interface to find and configure components, design and create pages, manage content, and build composable applications. See also: [Widget Tutorial](../../tutorials/compose/widgets-fragments.md) ### Entando App Engine -The Entando App Engine is the core runtime engine responsible for the primary out-of-the-box services required to develop Entando Applications. It exposes the backend APIs used to deliver the page and content management interface of an Entando Application, assembles and coordinates components within the Entando App Builder, and provides the data access layer to persist pages and application design. +The Entando App Engine is the core runtime engine responsible for the primary out-of-the-box services required to develop applications. It exposes the backend APIs used to deliver the page and content management interface of an Entando Application, assembles and coordinates components within the App Builder, and provides the data access layer to persist pages and application design. See also: [APIs tutorial](../consume/entando-apis.md) ### Entando Component Generator -The Entando Component Generator implements a [JHipster](https://www.jhipster.tech/) blueprint to quickly and efficiently generate the skeleton of an Entando project using automation and templating. The generator provides advanced data modeling capabilities, including object relational mapping, and the autogeneration of micro frontends and microservices. The [Entando Blueprint](../../tutorials/create/ms/generate-microservices-and-micro-frontends.md) fast-tracks development by creating the folders, files and infrastructure required by a project. +The Entando Component Generator implements a [JHipster](https://www.jhipster.tech/) blueprint to quickly generate the skeleton of an Entando bundle with automation and templating. The Generator provides advanced data modeling capabilities, including object relational mapping and dynamic creation of micro frontends and microservices. -See also: [Component Generation Technologies](../create/component-gen-tech.md) +See also: [Generate Microservices & Micro Frontends](../../tutorials/create/ms/generate-microservices-and-micro-frontends.md) ### Entando Identity Management System -[Entando Identity Management System](../consume/identity-management.md) is Entando's [Keycloak](https://www.keycloak.org/)-based user management and authentication system. It applies Single Sign On capabilities across multiple domains to connect service providers with identity providers. +[Entando Identity Management System](../consume/identity-management.md) is the Platform's [Keycloak](https://www.keycloak.org/)-based user management and authentication system. It applies Single Sign On capabilities across multiple domains to connect service providers with identity providers. See also: [Entando Authentication](../../tutorials/create/mfe/authentication.md) ### Entando Local Hub -The [Entando Local Hub](../compose/local-hub-overview.md) is the component repository of an Entando App Builder. The Entando Bundles available to the Entando Application are represented and can be deployed, installed, updated or versioned using the App Builder UI. +The [Local Hub](../compose/local-hub-overview.md) is the component repository of the App Builder. Bundles--the basic building block for composing applications on Entando--are catalogued and organized here. The Local Hub also provides direct access to bundles in the Entando Marketplace and the Enterprise Hub, if one exists for the organization, and can be deployed and installed from here. ### Entando WCMS -The Entando Web Content Management System (WCMS) is a lightweight content and digital asset management system. It manages widgets, HTML fragments, and other content types used in an Entando Application. +The Entando Web Content Management System (WCMS) is a lightweight content and digital asset management system. It manages widgets, HTML fragments, and other content types for an Entando Application. See also: [Content Types](../../tutorials/compose/content-types-tutorial), [Content Templates](../../tutorials/compose/content-templates-tutorial) and [Digital Assets](../../tutorials/compose/digital-assets-tutorial.md) ## Entando Cluster Elements -The following is an overview of the elements comprising an Entando Cluster. +The following is an overview of the elements comprising an Entando cluster. ### Architecture - Members of the Cluster -Below is a diagram of an Entando Cluster and depicts how the various elements interact with one another. Entando deploys this infrastructure on Kubernetes using the Entando Operator and controllers. Each element is associated with a custom resource definition (CRD) file, if applicable. +This is a diagram of an Entando cluster, depicting how the various elements interact with one another. Entando deploys this infrastructure on Kubernetes using the Entando Operator and controllers. Each element is associated with a custom resource definition (CRD) where applicable. -![Entando Cluster Architecture Diagram](./img/entando-architecture-v1.5.svg) +![Entando Cluster Architecture Diagram](./img/entando-cluster-arch.png) #### EntandoApp -The EntandoApp is comprised of the Entando App Builder, the Entando App Engine and the Entando Component Manager. Keycloak-based authorization and authentication enable these to interact with each other and other cluster elements. +The EntandoApp is comprised of the App Builder, App Engine and Component Manager. Keycloak-based authorization and authentication enable these to interact with each other and other cluster elements. + + #### Entando Component Manager -The purpose of the [Entando Component Manager](../compose/ecm-overview.md) is to: +The purpose of the [Entando Component Manager](../compose/ecm-overview.md) (ECM) is to: - Provide the functionality to deploy and install micro frontends and widgets - Manage the connections between an application and the installed microservices -It integrates the Local Hub into the App Builder to list the Entando Bundles accessible from the EntandoApp, provisioning bundle management services such as install, uninstall, upgrade, downgrade and versioning. The Entando Kubernetes integration service communicates with the cluster to supply these bundle services and is the only service, other than the Entando Operator, that can interact with the cluster and custom resources. +The ECM integrates the Local Hub into the App Builder, listing the bundles accessible from the EntandoApp, and managing their install, uninstall, upgrade, downgrade and tracking processes. The Entando Kubernetes integration service communicates with the cluster to supply these bundle services and is the only service, other than the Entando Operator, that can interact with the cluster and custom resources. #### Entando Kubernetes Service -The Entando Kubernetes integration service (`entando-k8s-service`) is a function of the Entando Cluster infrastructure custom resource, providing an abstraction layer between Entando microservices and the APIs exposed by Kubernetes. It supplies access points to several custom resources defined by Entando, in particular Entando Applications, Entando Plugins, Entando Bundles and Entando links. +The Entando Kubernetes integration service (`entando-k8s-service`) is a function of the Entando cluster infrastructure custom resource, providing an abstraction layer between Entando microservices and the APIs exposed by Kubernetes. It supplies access points to several custom resources defined by Entando, in particular Entando Applications, plugins, bundles and links. The `entando-k8s-service` is used to: - Provide a list of the available Entando Bundles to the Entando Component Manager - Deploy a microservice, or expose an already available microservice, during the installation of a bundle - Create a link between an EntandoApp and an EntandoPlugin to expose microservice APIs to the EntandoApp and micro frontends -#### Entando Bundle -An Entando Bundle is a packaged set of components and resources created for the Entando Platform. The Entando Component Manager identifies the bundles and can install their components to extend the functionality of an Entando Application. - -See also: [Local Hub Overview](../compose/local-hub-overview.md) - #### Entando Plugin -An Entando Plugin is a microservice that exposes APIs reusable by one or more Entando Applications. Plugin services are commonly accessible from micro frontends and can be quickly generated with the [Entando Blueprint](../../tutorials/create/ms/generate-microservices-and-micro-frontends.md). A blueprint-generated project can be used as-is in an Entando environment and provides Keycloak integration, a set of default micro frontends, and microservices exposed by the bundle. +An Entando Plugin is a microservice that exposes APIs reusable by one or more Entando Applications. Plugin services are commonly accessible from micro frontends and can be quickly generated with the [Entando Blueprint](../../tutorials/create/ms/generate-microservices-and-micro-frontends.md). This blueprint-generated project is customizable and provides Keycloak integration, a set of default micro frontends, and microservices exposing APIs. #### Keycloak -Keycloak is responsible for authorization and authentication on Entando. All members of an Entando Cluster interact with Keycloak to verify user and service authorization. +Keycloak is responsible for authorization and authentication. All members of an Entando cluster interact with Keycloak to verify users and service authorizations. ## Entando Ingresses -An ingress is a Kubernetes resource that exposes HTTP and HTTPS paths from outside an Entando Cluster to services within it. Traffic routing is controlled by rules defined on the ingress resource. +An ingress is a Kubernetes resource that exposes HTTP and HTTPS paths from outside a cluster to services within it. Traffic routing is controlled by rules defined in the ingress resource. When deploying a cluster, ingresses are generated for the resources that must be exposed to external services. The Entando Operator and custom resource controllers create the ingresses and set the correct paths and certificates. Entando implements Keycloak and EntandoApp ingresses. #### Keycloak Ingress @@ -99,8 +104,8 @@ The EntandoApp ingress is also used to link a microservice with an EntandoApp wh The table below lists the default paths exposed for each ingress.
--++ @@ -142,5 +147,8 @@ A microservice under the same domain (ingress) as the EntandoApp is exposed usin Once the link between the EntandoApp and the microservice is created, the controller reads the link specification. It then automatically creates HTTP paths in the EntandoApp to expose the microservice in the same domain as the App Builder, App Engine and Component Manager. This allows micro frontend developers to reference the microservice using relative URLs. -See also: [Entando Deployment Structure](../reference/deployment-structure.md) and [Check Ingresses](../reference/check-ingress.md) +See also: +* [Entando Deployment Structure](../reference/deployment-structure.md) +* [Check Ingresses](../reference/check-ingress.md) +* [Entando Glossary](../reference/glossary.md) diff --git a/vuepress/docs/v7.3/docs/getting-started/ent-api.md b/vuepress/docs/v7.3/docs/getting-started/ent-api.md index d6334c5fcf..a4cffc09b5 100644 --- a/vuepress/docs/v7.3/docs/getting-started/ent-api.md +++ b/vuepress/docs/v7.3/docs/getting-started/ent-api.md @@ -5,11 +5,11 @@ sidebarDepth: 1 # API Management -An API claim informs the Entando Platform that a micro frontend (MFE) intends to use the API of a microservice (MS). This request can be sent within a single bundle or across bundles. The abstraction of an API claim eliminates the need to define and manage API endpoints, both in local development and within a running instance. +An API claim informs the Entando Platform that a micro frontend (MFE) intends to use the API of a microservice (MS), standardizing authentication across many services. This request can be sent within a single bundle or across bundles. The abstraction of an API claim eliminates the need to define and manage API endpoints, both in local development and within a running instance. ## Internal vs. External API Claim -An MFE can initiate both internal and external API claims. An internal claim specifies an MS API in the same bundle as the MFE, while an external claim specifies the MS API of another bundle in the same Kubernetes namespace. +An MFE can initiate both internal and external API claims. An internal claim connects an MS API in the same bundle as the MFE, while an external claim specifies the MS API of another bundle in the same Kubernetes namespace. The structure of internal and external API claims are as follows: @@ -33,7 +33,7 @@ The structure of internal and external API claims are as follows: ## API Claim Commands -Common operations associated with API claims are detailed below. To execute `ent bundle api` subcommands, the user must be connected to a running Entando instance (via `ent attach-*`) or the CLI will generate an authentication error. +Common operations associated with API claims are detailed below. To execute `ent bundle api` subcommands, the user must be connected to a running Entando instance (via [ent attach-vm](ent-profile.md)) or the CLI will generate an authentication error. | Command | Description | :- | :- @@ -61,12 +61,12 @@ Common operations associated with API claims are detailed below. To execute `ent ## Microservice URL Retrieval -To retrieve the URL of an MS declared through an API claim, add `systemParams.api[claimName].url` to the MFE JavaScript code so it can access that element of the config object. The `claimName` is chosen by the user when the API claim was defined. +To retrieve the URL of an MS declared through an API claim, add `systemParams.api[claimName].url` to the MFE JavaScript code so it can access that element of the config object. The `claimName` is chosen by the user when the API claim is defined. **Installed Bundles** -The configuration data of installed bundles are provided by the Entando instance. To render an MFE from an installed bundle, Entando injects a JSON object containing configuration details inside the "config" attribute of a custom HTML element, e.g. ``. +The configuration data of installed bundles are provided by the Entando instance. To render an MFE from an installed bundle, Entando injects a JSON object containing configuration details inside the `config` attribute of a custom HTML element, e.g. ``. **Local Bundles** diff --git a/vuepress/docs/v7.3/docs/getting-started/ent-bundle.md b/vuepress/docs/v7.3/docs/getting-started/ent-bundle.md index a962b031f2..a90710a19f 100644 --- a/vuepress/docs/v7.3/docs/getting-started/ent-bundle.md +++ b/vuepress/docs/v7.3/docs/getting-started/ent-bundle.md @@ -4,44 +4,45 @@ sidebarDepth: 2 # Bundle Management -The Entando Bundle CLI extends the functionality of **ent** through a dedicated bundle management system. The `ent bundle` command orchestrates the lifecycle of a project, packaging it into a convenient and recognizable docker-based bundle that can be inserted into any Entando Application. This composable approach takes advantage of a single project descriptor and repository, along with centralized [API management](ent-api.md) and [DB and Keycloak services](ent-svc.md). Common operations and the steps required to create an Entando Bundle are detailed below. +The Entando Bundle commands extend the functionality of **ent** through a dedicated bundle management system. The `ent bundle` set of subcommands orchestrate the lifecycle of a component, packing it into a convenient standardized docker-based bundle that can be used to build composable applications. This approach takes advantage of a single project descriptor, along with centralized [API management](ent-api.md) and [DB and Keycloak services](ent-svc.md). Common operations and the steps required to create an Entando Bundle are detailed below. -In addition, this document describes the series of `ent ecr` commands that manage bundle interactions with the [Entando Component Repository](../../docs/compose/local-hub-overview.md) (ECR). These are applicable to both docker-based bundles and their git-based predecessors (< Entando 7.1). Notable commands applicable to creating and deploying git-based bundles only are also discussed. +In addition, this document describes the series of `ent ecr` commands that manage bundle interactions with the [Entando Component Repository](../../docs/compose/local-hub-overview.md) (ECR). These are applicable to both docker-based bundles and their git-based predecessors (< Entando 7.1). Notable commands applicable to creating and deploying only git-based bundles are also discussed. ## Entando Bundle Development -The `ent bundle` CLI tool provides a streamlined process to govern the files, structure, and management of Entando bundles. The bundle development lifecycle consists of 6 stages, each corresponding to a subcommand: +The bundle development lifecycle consists of 6 stages, each corresponding to a subcommand of ent bundle: -- [Initialization](#initialization): `ent bundle init` initializes a new bundle project, either with the default files and folders or from an existing bundle in an Entando Hub. The bundle format relies on a single JSON descriptor as the project manifest. +- [Initialization](#initialization): `ent bundle init` launches a new bundle project, either with the default starter files and folders, or dynamically, from the catalog of an Entando Hub. The bundle format relies on a single JSON descriptor as the project manifest. -- [Build](#build): With the structure established, `ent bundle build` generates micro frontend (MFE) and microservice (MS) components. These are filtered by type and name and assigned version numbers. +- [Build](#build): With the structure established, `ent bundle build` generates micro frontend (MFE) and microservice (MS) components. These are filtered by type and name, and assigned version numbers. -- [Run](#run): `ent bundle run` and Keycloak integration enable components to be tested locally, external to an Entando cluster. +- [Run](#run): `ent bundle run` and Keycloak integration enable components to be tested locally, independent of an Entando cluster. -- [Package](#package): `ent bundle pack` generates the bundle artifacts, the bundle image and the microservice images. One image is created for each microservice while a single image is created for the bundle and micro frontends. +- [Package](#package): `ent bundle pack` generates the bundle artifacts and images for the bundle and each microservice. -- [Publish](#publish): `ent bundle publish` pushes the Docker images to a Docker repository, after which the bundle can be deployed and installed. +- [Publish](#publish): `ent bundle publish` pushes the images to a Docker repository, after which the bundle can be deployed and installed. -- [Deploy](#deploy): `ent bundle deploy` delivers a published bundle to the ECR of an Entando Application. The bundle custom resource is generated and tags are retrieved from Docker Hub. +- [Deploy](#deploy): `ent bundle deploy` delivers a published bundle to the ECR of the Entando Platform. The bundle custom resource is generated and tags are retrieved from Docker Hub. -- [Install](#install): `ent bundle install` applies the bundle to the Entando instance. It is then available in the App Builder for unlimited reuse within the application. +- [Install](#install): `ent bundle install` applies the bundle to the Entando instance. It is then available in the App Builder for unlimited reuse. -See the [Build and Publish a Simple Bundle](../../tutorials/create/pb/publish-simple-bundle.md) tutorial to see the full process. And for more information on Entando Bundle specifications, go to the [Bundle Details](../curate/bundle-details.md) page. +See the [Build and Publish a Simple Bundle](../../tutorials/create/pb/publish-simple-bundle.md) tutorial to follow the full process. And for more information on Entando Bundle specifications, go to the [Bundle Details](../curate/bundle-details.md) page. ## Docker-based Bundle Commands | Commands | Description | |:- |:- |`ent bundle build`| Build components (MFE, MS) with a selector | -|`ent bundle deploy`|Deploy a bundle to the Local Hub of an Entando Application +|`ent bundle convert --bundle-path [path1]` | Convert a git-based bundle to a Docker-based one | +|`ent bundle deploy`|Deploy a bundle to the Local Hub of an Entando Platform |`ent bundle generate-cr`| Generate the Entando Custom Resource for a bundle project | |`ent bundle help` | Display help for ent bundle | |`ent bundle info`| Show status information for the bundle project | |`ent bundle init`| Initialize the project folder structure and descriptor | -|`ent bundle install`| Install a bundle to the Local Hub of an Entando Application| +|`ent bundle install`| Install a bundle to the Local Hub of an Entando Platform| |`ent bundle list`| List the available bundle components | |`ent bundle mfe add` | Add a micro frontend | -| `ent bundle mfe rm` | Remove a micro frontend | +|`ent bundle mfe rm` | Remove a micro frontend | |`ent bundle ms add` | Add a microservice | |`ent bundle ms rm` | Remove a microservice | |`ent bundle run`| Run bundle components | @@ -54,25 +55,25 @@ See the [Build and Publish a Simple Bundle](../../tutorials/create/pb/publish-si | Command | Description |:--|:-- |`ent bundle init [name]` | Initialize a new empty project with the default structure and files | -|`ent bundle init [name] --from-hub`| Initialize a bundle from the Entando Cloud Hub | +|`ent bundle init [name] --from-hub`| Initialize a bundle from the Entando Marketplace catalog | |`ent bundle init [name] --from-hub --hub-url=[url]` | Initialize a bundle from an enterprise Entando Hub | -|`ent bundle init [name] --from-hub --hub-url=[url] --hub-api-key=[]` | Initialize a bundle from a private Entando Hub with an API key| +|`ent bundle init [name] --from-hub --hub-url=[url] --hub-api-key=[]` | Initialize a bundle from a private enterprise Entando Hub with an API key| #### Init Command Details - Bundle names may only contain lowercase letters, numbers, periods(.) and dashes(-). They cannot start or end with periods or dashes. - `--from-hub`: This option leverages an existing bundle from an Entando Hub to jumpstart your project. The `ent bundle` tool will pull the package and rebuild the structure, which can then be customized locally. -- `--hub-url`: Use this option to specify a custom Entando Hub, else ent defaults to the Entando Cloud Hub +- `--hub-url`: Use this option to specify an enterprise Entando Hub, else ent defaults to the Entando Cloud Hub. -- `--hub-api-key`: This flag supplies the [Hub API key](../../tutorials/solution/entando-hub.md#create-a-private-catalog) to access a bundle from a private enterprise Entando Hub to copy it locally. +- `--hub-api-key`: This flag supplies the [Hub API key](../../tutorials/solution/entando-hub.md#create-a-private-catalog) to access a bundle from a private enterprise Hub. ### Micro Frontend and Microservice | Command| Descriptions |:--|:-- -|`ent bundle mfe add` --stack [stack-type] [name] | Add a React or Angular micro frontend | -|`ent bundle mfe add` --stack custom [name] | Add a custom stack micro frontend | +|`ent bundle mfe add --stack [stack-type] [name]` | Add a React or Angular micro frontend | +|`ent bundle mfe add --stack custom [name]` | Add a custom stack micro frontend | |`ent bundle ms add --stack [stack-type] [name]` | Add a Spring Boot or node microservice | -|`ent bundle ms add` --stack custom [name]` | Add a custom stack microservice | +|`ent bundle ms add --stack custom [name]` | Add a custom stack microservice | #### MFE and MS Command Details - `ent bundle mfe add --stack custom [name]` & `ent bundle ms add --stack custom [name]`: When a custom stack is used for any MFE or microservice, custom commands for the build, run, and pack functions are required under the Command spec in the bundle descriptor `entando.json`. In addition, a version number must be specified for each component. Because Entando can only parse information from a pom.xml or package.json, the custom commands are required to manage the bundle, and the version number is required to track Docker images. For an example, see the [Bundle Details](../curate/bundle-details.md#micro-frontends-sample-code) page. @@ -89,16 +90,16 @@ See the [Build and Publish a Simple Bundle](../../tutorials/create/pb/publish-si #### Build Command Details - `ent bundle build`: - - The `build` command constructs the project files based on the `entando.json` descriptor. + - The `build` sub command constructs the project files based on the `entando.json` descriptor. - Component type and stack determines the build process, e.g. a React MFE executes an npm build. It can be customized in the command section of the `entando.json`. - All the components in the bundle are built in parallel. - A log file for each component is generated inside the .entando/logs directory of the project. - `--fail-fast`: - - Fail the command as soon as any subtask fails + - Fail the command as soon as any subtask fails. - `--max-parallel=`: - Maximum number of subtasks running simultaneously. The default value is 3. Setting `max-parallel=1` results in a sequential process. - `--stdout`: - - Print the subtask logs to the standard output (stdout) instead of individual log files. This is very useful in CI/CD pipelines. + - Print the subtask logs to the standard output (stdout) instead of individual log files. This is useful in CI/CD pipelines. ### Run | Command| Descriptions @@ -111,7 +112,7 @@ See the [Build and Publish a Simple Bundle](../../tutorials/create/pb/publish-si #### Run Command Details - `ent bundle run`: - - The `run` command executes processes in accordance with the component type and stack, e.g `mvn spring-boot:run` for a Spring Boot microservice. It can be customized in the command section of the `entando.json`. + - The `run` subcommand executes processes in accordance with the component type and stack, e.g `mvn spring-boot:run` for a Spring Boot microservice. It can be customized in the command section of the `entando.json`. - All the components in the bundle run in parallel, with the logs printed to the standard output. - The `run` command can be used to run multiple microservices side by side without collision in local development, but in production, they must run on port 8081. @@ -128,13 +129,13 @@ See the [Build and Publish a Simple Bundle](../../tutorials/create/pb/publish-si - `ent bundle pack`: - The artifacts generated for micro frontends and microservices are stored in their respective component folders. File format depends on component type, e.g. a React micro frontend may result in HTML, JavaScript and CSS files. - Once the artifacts are generated, a Docker image for each microservice is built using the Dockerfile located in the microservice's folder. If the Dockerfile is missing, the `pack` command exits with failure. - - The `pack` command executes either `mvn package` or `npm run build`, depending on the stack. These defaults can be overridden in the [custom command section](../curate/bundle-details.md#command-specification) of the bundle descriptor `entando.json`. + - The `pack` subcommand executes either `mvn package` or `npm run build`, depending on the stack. These defaults can be overridden in the [custom command section](../curate/bundle-details.md#command-specification) of the bundle descriptor `entando.json`. - `--fail-fast`: - Fail the command as soon as any subtask fails - `--max-parallel=`: - Maximum number of subtasks running simultaneously. The default value is 3. Setting `max-parallel=1` results in a sequential process. - `--stdout`: - - Print the subtask logs to the standard output (stdout) instead of individual log files. This is very useful in CI/CD pipelines. + - Print the subtask logs to the standard output (stdout) instead of individual log files. This is useful in CI/CD pipelines. - `--skip-docker-build`: - Allow the user to create a custom image build. The YAML descriptors and Dockerfile are created in the `.output` folder but no images are generated for the bundle and microservices. - `ent bundle images`: @@ -150,17 +151,17 @@ See the [Build and Publish a Simple Bundle](../../tutorials/create/pb/publish-si ### Deploy | Command| Description |:--|:-- -|`ent bundle deploy`| Deploy a bundle to the Local Hub of an Entando Application | +|`ent bundle deploy`| Deploy a bundle to the Local Hub of the Entando Platform | ### Install | Command| Description |:--|:-- -|`ent bundle install`| Install a bundle in the Local Hub of an Entando Application | +|`ent bundle install`| Install a bundle in the Local Hub of the Entando Platform | #### Install Command Details -* `ent bundle install --conflict-strategy=OVERRIDE`: If a bundle project has already been installed, the `--conflict-strategy` flag forces a `CREATE`, `SKIP` or `OVERRIDE` strategy for components +* `ent bundle install --conflict-strategy=OVERRIDE`: If a bundle project has already been installed, this flag forces a `CREATE`, `SKIP` or `OVERRIDE` strategy for components. -### Convert v1 to v5 +### Convert v1 to v5 Bundle | Command| Descriptions |:--|:-- @@ -196,14 +197,14 @@ The following commands are applicable to both docker-based and git-based bundles |`ent ecr uninstall`| Uninstall a bundle | #### ECR Command Details -* `ent ecr get-bundle-id`: The unique identifier assigned to each bundle provides a mechanism to customize parameters and add security controls for bundle-specific resources +* `ent ecr get-bundle-id`: The unique identifier assigned to each bundle provides a mechanism to customize parameters and add security controls for bundle-specific resources. -* `ent ecr get-plugin-code`: To retrieve the unique identifier for each microservice +* `ent ecr get-plugin-code`: Retrieve the unique identifier for each microservice. * Docker-based bundles: `ent ecr get-plugin-code YOUR-ORG/YOUR-PLUGIN-NAME --repo=docker://registry.hub.docker.com/YOUR-ORG/YOUR-BUNDLE` * Git-based bundles: `ent ecr get-plugin-code --auto --repo=[repository-url]` -* `ent ecr install --conflict-strategy=OVERRIDE`: If a bundle project has already been installed, the `--conflict-strategy` flag forces a `CREATE`, `SKIP` or `OVERRIDE` strategy for components +* `ent ecr install --conflict-strategy=OVERRIDE`: If a bundle project has already been installed, the `--conflict-strategy` flag forces a `CREATE`, `SKIP` or `OVERRIDE` strategy for components. ## Git-based Bundle Commands @@ -233,7 +234,7 @@ The following ent commands are used to manage git-based (< Entando 7.1) bundles. * `ent prj get-plugin-code`: Uniquely and safely identifies each bundle plugin and derived cloud-native resources -* `ent prj install --conflict-strategy=OVERRIDE`: If a bundle project has already been installed, the `--conflict-strategy` flag forces a `CREATE`, `SKIP` or `OVERRIDE` strategy for components +* `ent prj install --conflict-strategy=OVERRIDE`: If a bundle project has already been installed, this flag forces a `CREATE`, `SKIP` or `OVERRIDE` strategy for components * `ent bundler`: Provides an interactive mode to identify components to export. Point the bundler to existing environments to extract components and static assets into a custom bundle. This bundle can be used to migrate from one Entando environment to another (e.g. Dev to QA) or as a framework for building a new application. diff --git a/vuepress/docs/v7.3/docs/getting-started/ent-diag.md b/vuepress/docs/v7.3/docs/getting-started/ent-diag.md index a50c5839e2..42913cf639 100644 --- a/vuepress/docs/v7.3/docs/getting-started/ent-diag.md +++ b/vuepress/docs/v7.3/docs/getting-started/ent-diag.md @@ -4,24 +4,24 @@ sidebarDepth: 1 # Diagnostics and Troubleshooting -Diagnostic information is critical to analysis and troubleshooting, and the Entando CLI (ent) is a useful tool for debugging issues with an Entando instance. +Diagnostic information is critical for troubleshooting and analysis, and the Entando CLI (ent) provides several methods. | Command | Description -| :- | :- -| `ent app-info` | Display basic information about Kubernetes and Entando resources -| `ent bundle info` |Show status information for the bundle project| -| `ent --debug bundle "command"` |Enable debug mode| -| `ent diag` | Run diagnostics on the pods currently in an Entando namespace and prepare a diagnostic tar.gz -| `ent pod "command"` | Displays information related to a set of pods -| `ent pod grep --all "error\|fail"` | Locate error messages within EntandoApp pods +| :- | :---------------------------- | +|`ent app-info`| Display basic information about Kubernetes and Entando resources +|`ent bundle info`|Show status information for the bundle project| +|`ent --debug bundle "command"`|Enable debug mode| +|`ent diag`| Run diagnostics on the pods in the current Entando namespace and prepare a diagnostic tar.gz +|`ent pod "command"`| Display information related to a set of pods +|`ent pod grep --all "error\|fail"`| Locate error messages within EntandoApp pods ### Command Details -* `ent diag`: Executes operations to analyze, organize and output detailed pod information. It exports custom resources, ingresses, deployments, "previous" pod logs, namespace events, etc. The command also generates diagnostics and returns log paths like the following: +* `ent diag`: Executes operations to analyze, organize and output detailed pod information. It exports custom resources, ingresses, deployments, "previous" pod logs, namespace events, etc. The command generates this diagnostics data and returns log paths like the following: ``` > Collected diagdata available under "~/.entando/reports/entando-diagdata-2020-11-19T02:58:47+0000" for consultation > Collected diagdata available in archive "~/.entando/reports/entando-diagdata-2020-11-19T02:58:47+0000.tgz" ``` -* `ent pod "command"`: Analyzes pods in a cluster with commands like `describe`, `logs`, `shell`, `force-reload`, `port-forward`, and others. +* `ent pod "command"`: Administer pods in a cluster with subcommands like `describe`, `logs`, `shell`, `force-reload`, `port-forward`, and others. ### Log Files Log files for the `ent bundle build` and `pack` commands are generated for each component inside the .entando/logs directory. For single components and other processes, they are printed to the standard outputs. \ No newline at end of file diff --git a/vuepress/docs/v7.3/docs/getting-started/ent-profile.md b/vuepress/docs/v7.3/docs/getting-started/ent-profile.md index 71d6584f16..fbeb98c93b 100644 --- a/vuepress/docs/v7.3/docs/getting-started/ent-profile.md +++ b/vuepress/docs/v7.3/docs/getting-started/ent-profile.md @@ -3,17 +3,15 @@ sidebarDepth: 1 --- -# Profile and Configuration Management +# Profile Management -The [Entando CLI](entando-cli.md) can define a collection of configuration variables to fully describe an Entando instance. One or more profiles can be created to store configuration settings for a particular instance. A profile with this information is automatically generated for a quickstart application. +The [Entando CLI](entando-cli.md) manages one or more profile to store the configuration settings for a particular Entando instance. For a quickstart installation, a profile is automatically generated and can be edited for customization. A set of `ent profile` subcommands are available to manage the configurations and to switch between different Entando instances. -At minimum, a profile configuration must consist of the key-value pairs specifying the application name and namespace. To run the application, the Kubernetes connection must also be provided. Cloud Kubernetes tools typically create a Kube context, which can be linked to an Entando profile. +At a minimum, a profile must consist of the key-value pair specifying the application name and namespace. To run Entando, a Kubernetes context must be established and linked to an Entando profile. ## Profile Management -Common operations associated with profile management are detailed below. - -Note: The `ent profile` command is available to manage and switch between the configurations of different Entando instances. Refer to `ent profile first-use-readme` for additional information. +Refer to `ent profile first-use-readme` for additional information. | Command | Description | :- | :- @@ -31,17 +29,17 @@ Note: The `ent profile` command is available to manage and switch between the co **Command details:** -- `ent pro link`: Provides ent with instructions to connect to the Kubernetes containing the Entando Application. Alias of `ent attach-kubectx`. +- `ent pro link`: Provides ent with instructions to connect to the Kubernetes containing the EntandoApp. Alias of `ent attach-kubectx`. - `ent pro new`: Sets the minimal profile data and outputs next steps. - `ent pro use`: Initializes the global profile ent should use across shells. -- `source ent pro use`: Initializes the local profile ent should use within the current shell. Allows ent instances in different shells to simultaneously use different Kube contexts, kubeconfigs or custom commands. The quickstart script creates a profile named "qs--{vmname}" that is associated with the Entando Application it generates. +- `source ent pro use`: Initializes the local profile ent should use within the current shell. It allows ent instances in different shells to simultaneously use different Kube contexts, kubeconfigs or custom commands. The quickstart script creates a profile named "qs--{vmname}" that is associated with the EntandoApp. ## Configuration Management -The output of `ent config` is a key-value archive of configuration settings related to the current profile. The following commands and definitions are especially useful. +The output of `ent config` is a key-value archive of configurations defining the current profile. The following commands and definitions may be useful. ### Commands @@ -59,7 +57,7 @@ The output of `ent config` is a key-value archive of configuration settings rela | Key | Description |---|--- | ENTANDO_NAMESPACE | Stores the fallback namespace used by explicit or implicit runs of `ent kubectl` -| ENTANDO_APPNAME | Stores the Entando Application name related to the current profile +| ENTANDO_APPNAME | Stores the EntandoApp name related to the current profile | DESIGNATED_JAVA_HOME | Stores the path of the Java version used internally by ent diff --git a/vuepress/docs/v7.3/docs/getting-started/ent-svc.md b/vuepress/docs/v7.3/docs/getting-started/ent-svc.md index 2709e446db..ac51882e27 100644 --- a/vuepress/docs/v7.3/docs/getting-started/ent-svc.md +++ b/vuepress/docs/v7.3/docs/getting-started/ent-svc.md @@ -4,9 +4,9 @@ sidebarDepth: 1 # Auxiliary Services -Auxiliary services add capabilities to a local environment to accelerate application development. This is in contrast to developing on Kubernetes, where the equivalent services are either provisioned by the Entando Platform or are externally managed and pointed to by the application. +Auxiliary services add capabilities to a local environment for application development. This is in contrast to developing on Kubernetes, where the equivalent services are either provisioned by the Entando Platform or are externally managed and pointed to by the application. -To run auxiliary operations, a service must be enabled. When the Entando Bundle CLI enables a service, a default auxiliary configuration is generated and formatted as a Docker Compose YAML file in the bundle's 'svc' folder. Enabled services are listed under the 'svc' attribute in the bundle descriptor, `entando.json`. +To run auxiliary operations, a service must be enabled. When the Entando CLI enables a service for a bundle, a default auxiliary configuration is generated and formatted as a Docker Compose YAML file in the bundle's "svc" folder. Enabled services are listed under the `svc` attribute of the bundle descriptor `entando.json`. The following sections describe how Entando supports and implements auxiliary services. @@ -16,17 +16,17 @@ Three services are available out of the box: `mysql`, `postgresql` and `keycloak - `mysql` and `postgresql` obey the same naming convention - The username and password are derived from the bundle name, e.g. YOUR-BUNDLE has the username YOUR-BUNDLE-USER and the password YOUR-BUNDLE-PASSWORD - - A database is automatically created and given the bundle name, e.g. YOUR-BUNDLE + - A database is automatically created and given the name, e.g. YOUR-BUNDLE -- `keycloak` configures authentication for Entando - - The `keycloak` realm name is 'entando-dev' +- `keycloak` manages authentication for Entando + - The `keycloak` realm name is `entando-dev` - The console is accessible at *http://localhost:9080* with username: *admin*, password: *admin* - All roles and permissions are preset, based on the Keycloak realm-config file - - The `keycloak.yaml`, realm-config and user config files are located in the 'keycloak' folder inside 'svc' + - The `keycloak.yaml`, realm-config, and user config files are located in the "keycloak" folder inside "svc" ## Custom Services -A custom service can be added to a bundle's 'svc' folder as a Docker Compose YAML file. The file and service must have the same name, e.g. if the service filename is `mysql.yml`, then the service name must be `mysql`: +A custom service can be added to a bundle's "svc" folder as a Docker Compose YAML file. The file and service must have the same name, e.g. if the service filename is `mysql.yml`, then the service name must be `mysql`: ``` yaml version: '3.7' @@ -54,8 +54,8 @@ The subcommands of `ent bundle svc` are used to manage services. **Command details:** -- `svc logs`: The log of a running service will continue to update until exited via `Ctrl+C` +- `svc logs`: The log of a running service will continue to update until exited via `Ctrl+C`. -- `svc list`: Include the option `--available` to list all services located in the 'svc' bundle folder +- `svc list`: Include the option `--available` to list all services located in the "svc" bundle folder. - Auxiliary commands can operate on multiple services by listing each service name as an argument, e.g. `ent bundle svc start service_1 service_2`. The option `--all` applies the command to all enabled bundle services. \ No newline at end of file diff --git a/vuepress/docs/v7.3/docs/getting-started/entando-cli.md b/vuepress/docs/v7.3/docs/getting-started/entando-cli.md index e032ec799d..7bde158280 100644 --- a/vuepress/docs/v7.3/docs/getting-started/entando-cli.md +++ b/vuepress/docs/v7.3/docs/getting-started/entando-cli.md @@ -4,7 +4,7 @@ sidebarDepth: 1 # Entando CLI -The Entando Command Line Interface, **ent**, provides a set of commands that accelerate common tasks such as installing a new instance of Entando, building projects, creating and deploying bundles, and composing Entando Applications. This document covers the install, command list, and a few operations to start using the ent tool. +The Entando command line interface, **ent**, provides a set of commands that accelerate common tasks such as installing Entando, building projects, creating and deploying bundles, and composing Entando Applications. This document covers some basic commands to start using the ent tool. For specific topics, follow these links: 1. [Bundle Management](ent-bundle.md): `ent bundle` @@ -15,7 +15,7 @@ For specific topics, follow these links: ### Prerequisites -The basic requirements for the CLI vary with use case, as shown in the table below. +The requirements for ent functionality vary with each use case, shown in the table below. | Category | Prerequisite | :- | :- @@ -31,7 +31,7 @@ Install the current official release of the CLI: bash <(curl -L "https://get.entando.org/cli") --update --release="{{ $site.themeConfig.entando.fixpack.v73 }}" ->The automatic option in [Getting Started](../getting-started/) will install the CLI along with a quickstart Entando Application. +>The automatic option in [Getting Started](../getting-started/) will also install the CLI along with a quickstart Entando ACP. ## Command List Use `ent help` to review the list of available commands.\ @@ -39,8 +39,8 @@ Use `ent [command] --help` for command details. ``` > Available commands: - app-info => Displays information about an entando app - - bundle => Management of new generation entando bundles - - bundler => Export of resources from a running instance and generation old-generation bundle deployment CRs + - bundle => Management of entando bundles (v5 or higher) + - bundler => Export of resources from a running instance and older-generation bundle management - check-env => Checks the environment for required dependencies and settings - diag => Runs diagnostics and aggregates the related info in a .tgz file - ecr => Helper for managing the ECR @@ -50,7 +50,7 @@ Use `ent [command] --help` for command details. - kubectl => Helper for using kubectl in ent managed scenarios - pod => Displays information related to a set of pods - prj => Helper for managing the first generation of Entando bundle projects - - profile => Helps managing an EntandoApp + - profile => Helps manage the EntandoApp - quickstart => Helper for installing Entando instances locally - run-tests => Runs the internal tests @@ -77,16 +77,18 @@ TOPICS svc Manage auxiliary services COMMANDS - build Build bundle components - deploy Deploy a bundle to the Local Hub of an Entando Application + build Build the bundle components + deploy Generate the CR and deploy it to the currently attached EntandoApp generate-cr Generate the Entando Custom Resource (CR) for a bundle project - help Display help for ent bundle. + help Display help for ent bundle + images List the Docker images and their corresponding tags that are + included in the bundle info Show status information for the bundle project init Perform the scaffolding of a bundle project - install Install a bundle in the Local Hub of an Entando Application + install Install a bundle in the current directory to the currently attached EntandoApp list List the available components in the bundle pack Generate the bundle Docker images - publish Publish bundle Docker images + publish Publish the bundle Docker images run Run bundle components DEBUG MODE @@ -95,7 +97,7 @@ DEBUG MODE ``` ### Check the Environment -Verify dependencies required by your Entando installation: +Verify the dependencies required by your Entando installation: ``` bash ent check-env develop ``` @@ -107,16 +109,16 @@ To update ent to the latest version and check for dependencies: bash <(curl -L "https://get.entando.org/cli") --update ent check-env develop ``` ->Alternatively, to perform a clean install, delete the `~/.entando` directory via `rm -rf ~/.entando`. Then reinstall the CLI using the instructions above. This will also remove the private copies of JHipster, Entando Blueprint, etc. +>Alternatively, to perform a clean install, delete the `~/.entando` directory with the flags `rm -rf ~/.entando`. Then reinstall the CLI using the instructions above. This will also remove the private copies of JHipster, Entando Blueprint, etc. ### Enable Debug Mode -To utilize the debug mode for ent bundle commands: +To utilize the debug helper for ent bundle commands: ``` sh ent --debug bundle ``` ### Customize Quickstart -The `ent quickstart` command accepts parameters to customize your quickstart environment. These options allow you to modify specific properties of your VM, installation versions and databases. +The `ent quickstart` command accepts parameters to customize your quickstart environment. These options allow you to modify specific properties of the VM, installation versions, and databases. |Operation |Syntax|Description| |:--|:--|:--| diff --git a/vuepress/docs/v7.3/docs/getting-started/img/entando-architecture-v1.5.svg b/vuepress/docs/v7.3/docs/getting-started/img/entando-architecture-v1.5.svg deleted file mode 100644 index 0622d0bab7..0000000000 --- a/vuepress/docs/v7.3/docs/getting-started/img/entando-architecture-v1.5.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - -
Entando Quickstart Architecture
Entando Quickstart Architecture
User Interface
User Interface
User/Identity Admin
User/Identity Admin
Entando Identity Management
Entando Identity Management
Content
Content
App Admin
App Admin
App Users
App Users
App Builder UI
App Builder UI
Content
Content
MFE
MFE
Paths
Paths
/abc-plugin-ingress-path
/abc-plugin-ingress-path
/app-builder
/app-builder
/auth
/auth
/entando-de-app
/entando-de-app
/digital-exchange
/digital-exchange
Kubernetes Containers
Kubernetes Containers
Plugin/Microservice Container(s)
Plugin/Microservice...
abc-plugin-server-deployment
abc-plugin-server-dep...
App Builder
App Builder
Component Manager
Component Manager
App Engine
App Engine
APIs
APIs
Core
Core
CMS
CMS


quickstart-cm-deployment
quickstart-cm-deploy...
quickstart-deployment
quickstart-deploym...
Operator
Operator
entando-operator
entando-opera...

default-sso-in-namespace-deployment

default-sso-in-namespace-dep...
Keycloak Server
Keycloak Server
entando-k8s--service
entando-k8s--ser...
Kubernetes Service
Kubernetes Service
Note: The Operator listens for events within the Kubernetes cluster and performs actions accordingly, e.g. creating Entando pods during initial install, setting up plugin ingress and pods upon bundle installation from ECR, etc.
Note: The Operator listens for events within the Kubern...

quickstart-ab-deployment

quickstart-ab-deployment
Custom App UI
Custom App UI

Text is not SVG - cannot display
\ No newline at end of file diff --git a/vuepress/docs/v7.3/docs/getting-started/img/entando-architecture.png b/vuepress/docs/v7.3/docs/getting-started/img/entando-architecture.png index 8943dda7c2e5b4af6d9b72cb08c629b2f3c67e90..549c9bd5ba91da4066a7d91fa683eef644357754 100644 GIT binary patch literal 12806 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

h0$LBNl!ZlTvlTVTb1N)9 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 ## Entando Hub -The [Entando Hub](../../tutorials/solution/entando-hub.md) empowers a team to share and collaborate on proprietary or Entando open source components. Capabilities, versions and metadata can be transparently analyzed, managed and published. +The [Entando Hub](../../tutorials/solution/entando-hub.md) empowers a team to share and collaborate on proprietary or Entando open source components. Capabilities, versions and metadata can be analyzed, managed and published. You can install a private catalog to share components within a team or the whole organization with user access controls. @@ -32,13 +32,13 @@ The [Entando Hub](../../tutorials/solution/entando-hub.md) empowers a team to sh ## Entando Process Driven Applications Plugin -The [Entando Process Driven Applications Plugin](../../tutorials/solution/pda-tutorial.md) provides a comprehensive and versatile automation scheme for Business Process Management. It comprises a custom UX layer, a Spring Boot Backend for Frontend microservice interface, and integration with the [Red Hat Process Automation Manager](https://www.redhat.com/en/technologies/jboss-middleware/process-automation-manager). +The [Entando Process Driven Applications Plugin](../../tutorials/solution/pda-tutorial.md) provides a comprehensive and versatile automation scheme for Business Process Management. It comprises a custom UX layer, a Spring Boot Backend for Frontend microservice interface, and integration with the [Red Hat Process Automation Manager](https://access.redhat.com/products/red-hat-process-automation-manager). ## Entando Standard Banking Demo -The [Entando Standard Banking Demo](../../tutorials/solution/install-standard-demo.md) showcases the benefits and possibilities of a composable application built from modular components. The example banking environment integrates a transaction table, sign up form, alert icon, and summary cards to demonstrate MFE communication and capabilities. Prominent features include Keycloak role based access control, coexistence of React and Angular MFEs, and pluggable Spring Boot microservices. +The [Entando Standard Banking Demo](../../tutorials/solution/install-standard-demo.md) showcases the possibilities and benefits of a composable application built from modular components. The example banking environment integrates a transaction table, sign up form, alert icon, and summary cards to demonstrate micro frontend (MFE) capabilities. Prominent features include Keycloak role based access control, coexistence of React and Angular MFEs, and pluggable Spring Boot microservices. diff --git a/vuepress/docs/v7.3/tutorials/getting-started/azure-install.md b/vuepress/docs/v7.3/tutorials/getting-started/azure-install.md index 22a5ca03cb..228faec784 100644 --- a/vuepress/docs/v7.3/tutorials/getting-started/azure-install.md +++ b/vuepress/docs/v7.3/tutorials/getting-started/azure-install.md @@ -140,7 +140,7 @@ kubectl get pods -n entando --watch http://YOUR-HOST-NAME/app-builder/ ``` -See the [Getting Started guide](../../docs/getting-started/README.md#login-to-entando) for helpful login instructions and next steps. +See the [Getting Started guide](../../docs/getting-started/README.md#log-in-to-entando) for helpful login instructions and next steps. ## Appendix A - Troubleshooting diff --git a/vuepress/docs/v7.3/tutorials/getting-started/eks-install.md b/vuepress/docs/v7.3/tutorials/getting-started/eks-install.md index 6658c4bf70..39fce2c281 100644 --- a/vuepress/docs/v7.3/tutorials/getting-started/eks-install.md +++ b/vuepress/docs/v7.3/tutorials/getting-started/eks-install.md @@ -214,7 +214,7 @@ Use `Ctrl+C` to exit the command. ``` http://YOUR-HOST-NAME/app-builder/ ``` -Congratulations! To continue your journey with Entando, see the [Getting Started guide](../../docs/getting-started/#login-to-entando) for helpful login instructions and next steps. +Congratulations! To continue your journey with Entando, see the [Getting Started guide](../../docs/getting-started/#log-in-to-entando) for helpful login instructions and next steps. ## Appendix A - Troubleshooting IAM and Roles diff --git a/vuepress/docs/v7.3/tutorials/getting-started/gke-install.md b/vuepress/docs/v7.3/tutorials/getting-started/gke-install.md index 735e3980f8..839a648061 100644 --- a/vuepress/docs/v7.3/tutorials/getting-started/gke-install.md +++ b/vuepress/docs/v7.3/tutorials/getting-started/gke-install.md @@ -132,7 +132,7 @@ kubectl get pods -n entando --watch http://YOUR-HOST-NAME/app-builder/ ``` -See the [Getting Started guide](../../docs/getting-started/README.md#login-to-entando) for helpful login instructions and next steps. +See the [Getting Started guide](../../docs/getting-started/README.md#log-in-to-entando) for helpful login instructions and next steps. ## Appendix: Configuring Clustered Storage diff --git a/vuepress/docs/v7.3/tutorials/getting-started/openshift-install.md b/vuepress/docs/v7.3/tutorials/getting-started/openshift-install.md index ba03e915bb..6e047c2a2e 100644 --- a/vuepress/docs/v7.3/tutorials/getting-started/openshift-install.md +++ b/vuepress/docs/v7.3/tutorials/getting-started/openshift-install.md @@ -84,7 +84,7 @@ http://YOUR-HOST-NAME/app-builder/ ``` ## Next Steps -Congratulations! To continue your journey with Entando, see the [Getting Started guide](../../docs/getting-started/#login-to-entando) for helpful login instructions and next steps. +Congratulations! To continue your journey with Entando, see the [Getting Started guide](../../docs/getting-started/#log-in-to-entando) for helpful login instructions and next steps. ## Appendix - Troubleshooting and Common Errors