Skip to content

Kubernetes Installation

Kubernetes Installation describes Helm-based deployment of Emakin into a Kubernetes cluster.

The preserved documentation references the Emakin Helm charts repository at 6Kare/charts.

Prerequisites

  • a working Kubernetes cluster
  • Helm configured to access that cluster

Installation Workflow

1. Add the Helm Repository

1
2
helm repo add emakin https://6kare.github.io/charts/
helm repo update

2. Install the Chart

Basic installation:

1
helm install emakin-prod emakin/emakin

Installation into a specific namespace:

1
2
3
4
5
helm install \
    --create-namespace \
    --namespace mynamespace emakin-prod emakin/emakin \
    --set host=mycompany.com \
    --set environment=production

Helm Values and Parameters

Documented Default Values

  • Host: emakin.mycompany.com
  • Application Name: mycompany.com
  • Environment: production
  • split-service deployment enabled by default
  • web, agent, smtp, fulltext, and hostadm enabled by default
  • market and push disabled by default

Configurable Parameters

Parameter Description Default Value
host Hostname for the application emakin.mycompany.com
storageClass Storage class for persistent volumes nfs
ingressClass Ingress class for the ingress controller nginx
externalIP External IP for the ingress controller (none)
environment Environment name production
emakin.image.repository Emakin container image repository 6kare/emakin
emakin.image.tag Emakin container image tag 8.5
emakin.subdomain Subdomain for the application emakin
emakin.services.web.enabled Enable web deployment true
emakin.services.web.replicaCount Web replica count 1
emakin.services.agent.enabled Enable agent deployment true
emakin.services.agent.replicaCount Agent replica count 1
emakin.services.smtp.enabled Enable SMTP deployment true
emakin.services.smtp.replicaCount SMTP replica count 1
emakin.services.fulltext.enabled Enable full-text deployment true
emakin.services.fulltext.replicaCount Full-text replica count 1
emakin.services.hostadm.enabled Enable host administration deployment true
emakin.services.hostadm.replicaCount Host administration replica count 1
emakin.services.hostadm.port Port for host administration 7180
emakin.services.market.enabled Enable isolated Market deployment false
emakin.services.market.replicaCount Market replica count 1
emakin.services.market.port Market HTTP port 5100
emakin.services.market.serviceType Kubernetes Service type for Market ClusterIP
emakin.services.push.enabled Enable isolated Push deployment false
emakin.services.push.replicaCount Push replica count 1
emakin.services.push.port Push HTTPS port 5111
emakin.services.push.serviceType Kubernetes Service type for Push ClusterIP
db.externalProvider External database provider Postgres
db.externalConnection Connection string for external database (none)
db.name Database name EMAKIN
db.user Database username EMAKIN
db.password Database password EMAKIN
letsencrypt.enabled Enable Let's Encrypt certificates true
letsencrypt.email Email for Let's Encrypt certificates (none)
onlyoffice.enabled Enable OnlyOffice document server true
onlyoffice.subdomain Subdomain for OnlyOffice oeditor
tika.enabled Enable Apache Tika server true
clamav.enabled Enable ClamAV antivirus server true

Persistent Volumes

The preserved documentation states that the chart defines PVCs for:

  • BaseX
  • ClamAV
  • Emakin application data
  • PostgreSQL

It also notes that PVC names are suffixed with the environment value, for example:

  • basex-pv-production
  • clamav-pv-production
  • emakin-pv-production
  • postgres-pv-production

Deployment Model

The chart creates separate Emakin Deployments for:

  • web
  • agent
  • smtp
  • fulltext
  • hostadm
  • market (optional)
  • push (optional)

The chart invokes the Emakin agent executable in CLI mode with the module-specific commands:

  • web
  • agent
  • smtp
  • fulltext
  • market
  • push

The host administration service is deployed as a dedicated pod and exposes only port 7180.

Market and Push use isolated Agent modes, so enabling either service does not start the normal web, HostAdmin, or worker surfaces in that pod. Both deployments include readiness and liveness probes against the internal health endpoint on port 5121.

Enable the optional services when required:

1
2
3
helm upgrade emakin-prod emakin/emakin \
    --set emakin.services.market.enabled=true \
    --set emakin.services.push.enabled=true

Their Services default to ClusterIP; configure serviceType to match the required network topology. When license generation is used, mount the signing PFX and supply its password through a Kubernetes Secret. The automatic TLS listener certificate does not replace that signing certificate.

Runtime ports are Web 80/443, Market 5100, Push 5110/5111, FullText 5120, Health 5121, and Host Administration 7180.

Access After Deployment

Documented access points:

  • Application: http://<host>
  • Host Administration: http://<host>:<emakin.services.hostadm.port>

Documented default credentials:

Overriding Default Ports

The preserved environment-variable examples are:

1
2
AK_Web__Kestrel__Endpoints__Http__Url=http://*:8080
AK_Web__Kestrel__Endpoints__Https__Url=https://*:8443

Scaling or Disabling Individual Services

Disable SMTP:

1
2
helm upgrade emakin-prod emakin/emakin \
    --set emakin.services.smtp.enabled=false

Scale agent workers:

1
2
helm upgrade emakin-prod emakin/emakin \
    --set emakin.services.agent.replicaCount=3