Alfresco Content Services Helm Deployment on local machines

This page describes how to deploy Alfresco Content Services (ACS) Enterprise or Community using Helm onto Rancher Desktop and Docker for Desktop.

Prerequisites

  • You’ve read the projects main README prerequisites section
  • You’ve read the main Helm README page
  • You are proficient in Kubernetes
  • A machine with at least 16GB memory
  • Having installed either of:

Rancher Desktop specific configuration

Uncheck Enable Traefik from the Kubernetes Settings page to disable the default ingress controller. You may need to exit and restart Rancher Desktop for the change to take effect. Ref: Setup NGINX Ingress Controller

Then proceed to the deployment section to install ingress-nginx.

Docker Desktop specific configuration

On top of the Docker desktop Prerequisites, it is essential to install the latest version of Kubectl & Helm.

After the installation of Docker Desktop, the following configurations should be adjusted within Docker Desktop settings.

  • Settings > Resources > Advanced > CPUs:8, Memory: 16GB, Swap: 1GB
  • Settings > kubernetes > Enable Kubernetes

After changing the necessary settings Apply and restart the docker desktop.

Deployment

Please proceed to execute the instructions detailed in the following sections for the installation of ACS (Enterprise or Community edition) on your local system.

Namespace

To establish an isolated environment for ACS within the Kubernetes cluster, initiate the creation of a Kubernetes namespace using the provided command. Throughout the subsequent sections of this tutorial, we will consistently refer to this namespace as ‘alfresco’

kubectl create namespace alfresco

Ingress

See ingress-nginx section.

ACS

This repository offers you the option to either deploy a system using stable released artifacts or the latest in-progress development artifacts.

To use a released version of the Helm chart add the stable chart repository:

helm repo add alfresco https://kubernetes-charts.alfresco.com/stable
helm repo update

Community localhost deployment

To install the latest version of Community we need to download the community_values.yaml file. Once downloaded, execute the following to initiate the deployment.

helm install acs alfresco/alfresco-content-services \
  --values=community_values.yaml \
  --set global.search.sharedSecret=$(openssl rand -hex 24) \
  --atomic \
  --timeout 10m0s \
  --namespace=alfresco

NOTE: The command will wait until the deployment is ready so please be patient.

Enterprise localhost deployment

ACS enterprise version needs to pull container images from private image repositories. To configure credentials for accessing the Alfresco Enterprise registry, please review the information provided in the registry-authentication

The Enterprise Helm deployment is intended for a Cloud based Kubernetes cluster and therefore requires a large amount of resources out-of-the-box. To reduce the size of the deployment so it can run on a single machine we’ll need to reduce the number of pods deployed and the memory requirements for several others.

To install the Enterprise on localhost we need to use the local-dev_values.yaml

curl -fO https://raw.githubusercontent.com/Alfresco/acs-deployment/master/docs/helm/values/local-dev_values.yaml

Once downloaded, execute the following to initiate the deployment.

helm install acs alfresco/alfresco-content-services \
  --values local-dev_values.yaml \
  --set global.search.sharedSecret=$(openssl rand -hex 24) \
  --atomic \
  --timeout 10m0s \
  --namespace alfresco

NOTE: The command will wait until the deployment is ready so please be patient. See below for troubleshooting tips.

The helm command above installs the most current released version of ACS Enterprise.

Enterprise deployment for previous versions

Use the above helm commands and pass an additional argument as described in this section.

Development versions deployment

To deploy ACS platform with the latest development version follow the steps below.

  1. Download the pre-release_values.yaml file
  2. Deploy ACS by executing the following command:

    helm install acs alfresco/alfresco-content-services \
      --values pre-release_values.yaml \
      --values local-dev_values.yaml \
      --atomic \
      --timeout 10m0s \
      --namespace alfresco
    

NOTE: The command will wait until the deployment is ready so please be patient. See below for troubleshooting tips.

Access

When the deployment has completed the following URLs will be available:

  • Repository: http://localhost/alfresco
  • Share: http://localhost/share
  • API Explorer: http://localhost/api-explorer

If you deployed Enterprise you’ll also have access to:

  • ADW: http://localhost/workspace/
  • Sync Service: http://localhost/syncservice/healthcheck

Cleanup

  1. Remove the acs and acs-ingress deployments by running the following command:

    helm uninstall -n alfresco acs acs-ingress
    
  2. Delete the Kubernetes namespace using the command below:

    kubectl delete namespace alfresco
    

Troubleshooting

In the event of a deployment failure, it is important to recognize that resource constraints are a common underlying cause. For further insights and guidance. Additionally, you can find more comprehensive troubleshooting advice in the Helm Troubleshooting section

Lack Of Resources

One of the most prevalent causes of deployment failures is insufficient memory or CPU resources. It is imperative to ensure that an adequate amount of resources is allocated to prevent deployment failures.

To save the deployment of two more pods you can also try disabling the Sync Service, to do that provide the additional --set option below with your helm install command:

--set alfresco-sync-service.enabled=false

If you need to reduce the memory footprint further the JVM memory settings in most pods use the MaxRAMPercentage option so lowering the various limits.memory and requests.memory values will also reduce the JVM memory allocation.

Timeout

If the deployment fails and rolls back with following error:

Error: release acs failed, and has been uninstalled due to atomic being set: timed out waiting for the condition

You may should check resources above and then re-run the deployment with either an increased timeout, eg. –timeout 15m0s. Alteratively run without following:

--atomic --timeout 10m0s

and then monitor the logs for any failing pods. Please also consult the Helm Troubleshooting section for deploying Kubernetes Dashboard and more generic troubleshooting tips and tricks.