Teresa is a simple platform as a service that enables easy deployment and management of applications on Kubernetes clusters through a client-server model.
Open source tool to deploy apps to Kubernetes clusters
Teresa is designed for developers and DevOps teams who want to streamline application deployment on Kubernetes without dealing directly with complex Kubernetes APIs. It provides a high-level CLI to create and deploy applications, manage users and teams, and automate infrastructure tasks, making it ideal for organizations adopting DevSecOps and infrastructure as code practices.
Teresa requires a Kubernetes cluster version 1.9 or higher and a backend database for user management. Proper RSA key generation and secure storage of credentials (AWS keys, DB passwords) are essential for secure operation. Using Helm simplifies server deployment and configuration. TLS encryption is optional but recommended for secure communication.
Download the latest client release from https://github.com/luizalabs/teresa/releases
Rename the downloaded file to 'teresa' (e.g., mv teresa-linux-amd64 teresa)
Make the client executable (chmod +x teresa)
Move the client binary to a system PATH folder (e.g., sudo mv teresa /usr/bin)
Alternatively, install client via Homebrew: brew tap luizalabs/teresa-cli && brew install teresa
Alternatively, install client via Snap: sudo snap install teresa-cli
Prepare server prerequisites: Kubernetes cluster (>= 1.9), database backend (SQLite or MySQL), storage (AWS S3 or MinIO), RSA keys for token signing
Generate RSA keys for token signing using openssl
Add Helm repo: helm repo add luizalabs http://helm.k8s.magazineluiza.com
Install Teresa server with Helm, setting RSA keys, AWS credentials, database details, and enabling RBAC
mv teresa-linux-amd64 teresa
Rename the downloaded client binary to a simpler executable name.
chmod +x teresa
Make the Teresa client binary executable.
sudo mv teresa /usr/bin
Move the Teresa client binary to a directory in the system PATH.
brew tap luizalabs/teresa-cli
Add the Teresa CLI Homebrew tap repository.
brew install teresa
Install the Teresa CLI using Homebrew.
sudo snap install teresa-cli
Install the Teresa CLI using Snap package manager.
openssl genrsa -out teresa.rsa
Generate RSA private key for token signing.
openssl rsa -in teresa.rsa -pubout > teresa.rsa.pub
Generate RSA public key from the private key.
helm repo add luizalabs http://helm.k8s.magazineluiza.com
Add the Helm repository containing Teresa charts.
helm install luizalabs/teresa --namespace teresa --set rsa.private=$TERESA_RSA_PRIVATE --set rsa.public=$TERESA_RSA_PUBLIC --set aws.key.access=xxxxxxxx --set aws.key.secret=xxxxxxxx --set aws.region=us-east-1 --set aws.s3.bucket=teresa --set db.name=teresa --set db.hostname=dbhostname --set db.username=teresa --set db.password=xxxxxxxx --set rbac.enabled=true
Install the Teresa server on Kubernetes with required configuration using Helm.
export POD_NAME=$(kubectl get pods -n teresa -l "app=teresa" -o jsonpath="{.items[0].metadata.name}")
Retrieve the name of the Teresa server pod.
kubectl exec $POD_NAME -it -n teresa -- ./teresa-server create-super-user --email admin@email.com --password xxxxxxxx
Create an admin user inside the Teresa server pod for user and team management.