Deploy Python + Ollama + Redis + Chroma + Nginx (AIA stack)
First published: Sunday, August 17, 2025 | Last updated: Sunday, August 17, 2025Deploy Python + Ollama + Redis + Chroma + Nginx (AIA stack) using the SloopStash Kubernetes starter-kit.
Previous: Configure |
Modify hosts
Windows
# Modify hosts configuration.
$ notepad C:\Windows\System32\drivers\etc\hosts
<PRIVATE_IP> app.aia.sloopstash.stg app-static.aia.sloopstash.stg
<PRIVATE_IP> app.aia.sloopstash.qaa app-static.aia.sloopstash.qaa
<PRIVATE_IP> app.aia.sloopstash.qab app-static.aia.sloopstash.qab
Mac and Linux
# Modify hosts configuration.
$ sudo nano /etc/hosts
<PRIVATE_IP> app.aia.sloopstash.stg app-static.aia.sloopstash.stg
<PRIVATE_IP> app.aia.sloopstash.qaa app-static.aia.sloopstash.qaa
<PRIVATE_IP> app.aia.sloopstash.qab app-static.aia.sloopstash.qab
Deploy and manage AIA stack environments
Kubernetes
# Switch to SloopStash Kubernetes starter-kit directory.
$ cd /opt/kickstart-kubernetes
# Create Kubernetes namespace.
$ kubectl create namespace sloopstash-${ENVIRONMENT}-aia
# Create Kubernetes storage-class.
$ envsubst < storage-class/aia/redis.yml | kubectl apply -f -
$ envsubst < storage-class/aia/chroma.yml | kubectl apply -f -
$ envsubst < storage-class/aia/ollama.yml | kubectl apply -f -
$ envsubst < storage-class/aia/app.yml | kubectl apply -f -
$ envsubst < storage-class/aia/nginx.yml | kubectl apply -f -
# Create Kubernetes persistent-volume.
$ envsubst < persistent-volume/aia/redis.yml | kubectl apply -f -
$ envsubst < persistent-volume/aia/chroma.yml | kubectl apply -f -
$ envsubst < persistent-volume/aia/ollama.yml | kubectl apply -f -
$ envsubst < persistent-volume/aia/app.yml | kubectl apply -f -
$ envsubst < persistent-volume/aia/nginx.yml | kubectl apply -f -
# Create Kubernetes persistent-volume-claim.
$ envsubst < persistent-volume-claim/aia/app.yml | kubectl apply -f - -n sloopstash-${ENVIRONMENT}-aia
$ envsubst < persistent-volume-claim/aia/nginx.yml | kubectl apply -f - -n sloopstash-${ENVIRONMENT}-aia
# Create Kubernetes config-map.
$ kubectl create configmap redis \
--from-file=workload/redis/${AIA_REDIS_VERSION}/conf/ \
--from-file=supervisor-server=workload/supervisor/conf/server.conf \
-n sloopstash-${ENVIRONMENT}-aia
$ kubectl create configmap chroma \
--from-file=workload/chroma/${AIA_CHROMA_VERSION}/conf/ \
--from-file=supervisor-server=workload/supervisor/conf/server.conf \
-n sloopstash-${ENVIRONMENT}-aia
$ kubectl create configmap ollama \
--from-file=workload/ollama/${AIA_OLLAMA_VERSION}/conf/ \
--from-file=supervisor-server=workload/supervisor/conf/server.conf \
-n sloopstash-${ENVIRONMENT}-aia
$ kubectl create configmap app \
--from-file=supervisor-server=workload/supervisor/conf/server.conf \
--from-file=app-supervisor=stack/aia/app/conf/supervisor.ini \
-n sloopstash-${ENVIRONMENT}-aia
$ kubectl create configmap nginx \
--from-file=workload/nginx/${AIA_NGINX_VERSION}/conf/ \
--from-file=supervisor-server=workload/supervisor/conf/server.conf \
--from-file=nginx-app=stack/aia/nginx/conf/app.conf \
-n sloopstash-${ENVIRONMENT}-aia
# Create Kubernetes service.
$ kubectl apply -f service/aia/redis.yml -n sloopstash-${ENVIRONMENT}-aia
$ kubectl apply -f service/aia/chroma.yml -n sloopstash-${ENVIRONMENT}-aia
$ kubectl apply -f service/aia/ollama.yml -n sloopstash-${ENVIRONMENT}-aia
$ kubectl apply -f service/aia/app.yml -n sloopstash-${ENVIRONMENT}-aia
$ envsubst < service/aia/nginx.yml | kubectl apply -f - -n sloopstash-${ENVIRONMENT}-aia
# Create Kubernetes stateful-set.
$ envsubst < stateful-set/aia/redis.yml | kubectl apply -f - -n sloopstash-${ENVIRONMENT}-aia
$ envsubst < stateful-set/aia/chroma.yml | kubectl apply -f - -n sloopstash-${ENVIRONMENT}-aia
$ envsubst < stateful-set/aia/ollama.yml | kubectl apply -f - -n sloopstash-${ENVIRONMENT}-aia
# Create Kubernetes deployment.
$ envsubst < deployment/aia/app.yml | kubectl apply -f - -n sloopstash-${ENVIRONMENT}-aia
$ envsubst < deployment/aia/nginx.yml | kubectl apply -f - -n sloopstash-${ENVIRONMENT}-aia
# List Kubernetes resources.
$ kubectl get sc,pv,ns -o wide
# List resources under Kubernetes namespace.
$ kubectl get pvc,cm,sts,deploy,rs,ds,po,svc,ep,ing -o wide -n sloopstash-${ENVIRONMENT}-aia
# Delete Kubernetes namespace.
$ kubectl delete namespace sloopstash-${ENVIRONMENT}-aia
# Delete Kubernetes persistent-volume.
$ envsubst < persistent-volume/aia/redis.yml | kubectl delete -f -
$ envsubst < persistent-volume/aia/chroma.yml | kubectl delete -f -
$ envsubst < persistent-volume/aia/ollama.yml | kubectl delete -f -
$ envsubst < persistent-volume/aia/app.yml | kubectl delete -f -
$ envsubst < persistent-volume/aia/nginx.yml | kubectl delete -f -
# Delete Kubernetes storage-class.
$ envsubst < storage-class/aia/redis.yml | kubectl delete -f -
$ envsubst < storage-class/aia/chroma.yml | kubectl delete -f -
$ envsubst < storage-class/aia/ollama.yml | kubectl delete -f -
$ envsubst < storage-class/aia/app.yml | kubectl delete -f -
$ envsubst < storage-class/aia/nginx.yml | kubectl delete -f -
- STG environment: http://app.aia.sloopstash.stg:30001/dashboard
- QAA environment: http://app.aia.sloopstash.qaa:30002/dashboard
- QAB environment: http://app.aia.sloopstash.qab:30003/dashboard
Previous: Configure |