https://www.cybrosys.com/blog/how-to-deploy-odoo-15-in-kubernetes
https://www.youtube.com/watch?v=_Ab6KQq5qzY
======================================== Odoo in Kubernetes =================================
Step 01: Apply ConfigMap
# vi postgres-config.yml
apiVersion: v1
kind: ConfigMap
metadata:
name: postgres-config
labels:
app: postgres
data:
POSTGRES_DB: postgresdb
POSTGRES_USER: admin
POSTGRES_PASSWORD: root
# kubectl apply -f postgres-config.yml
# kubectl get configmap
Step 02: Apply Persistent Storage Volume, and Persistent Volume Claim (mkdir /data/volume )
# vi postgres-pv.yaml
apiVersion: v1
kind: PersistentVolume # Create a PV
metadata:
name: postgresql-data # Sets PV’s name
labels:
type: local # Sets PV’s type to local
spec:
storageClassName: manual
capacity:
storage: 10Gi # Sets PV Volume
accessModes:
– ReadWriteMany
hostPath:
path: “/data/volume” # Sets the volume’s path
# kubectl apply -f postgres-pv.yaml
# kubectl get pv
# vi postgres-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim # Create PVC
metadata:
name: postgresql-data-claim # Sets name of PV
spec:
storageClassName: manual
accessModes:
– ReadWriteMany # Sets read and write access
resources:
requests:
storage: 10Gi # Sets volume size
# kubectl apply -f postgres-pvc.yaml
# Kubectl get pvc
Step 03: Apply Postgresql deployment (mkdir /var/lib/postgresql/data -p)
# vi postgres.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: postgres # Sets Deployment name
spec:
replicas: 1
selector:
matchLabels:
app: postgres
template:
metadata:
labels:
app: postgres
spec:
containers:
– name: postgres
image: postgres:10.1 # Sets Image
ports:
– containerPort: 5432 # Exposes container port
envFrom:
– configMapRef:
name: postgres-config
volumeMounts:
– mountPath: /var/lib/postgresql/data
name: postgredb
volumes:
– name: postgredb
persistentVolumeClaim:
claimName: postgresql-data-claim
# kubectl apply -f postgres.yaml
Step 04: Apply Postgresql service
# vi postgre-service.yaml
apiVersion: v1
kind: Service
metadata:
name: postgres-service # Sets service name
labels:
app: postgres # Labels and Selectors
spec:
type: NodePort # Sets service type
ports:
– port: 5432 # Sets port to run the postgres application
selector:
app: postgres
# kubectl apply -f postgre-service.yaml
# kubectl get service
Step 05: Deploy Odoo In Kubernetes
# vi odoo-deploy-service.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: odoo-deployment
labels:
app: odoo
spec:
replicas: 1
selector:
matchLabels:
app: odoo
template:
metadata:
labels:
app: odoo
spec:
containers:
– name: odoo
image: odoo:latest
ports:
– containerPort: 8069
env:
– name: HOST
value: postgres
– name: USER
value: admin
– name: PASSWORD
value: root
—
apiVersion: v1
kind: Service
metadata:
name: odoo-service
spec:
type: NodePort
selector:
app: odoo
ports:
– protocol: TCP
port: 8069
targetPort: 8069
nodePort: 30300
# kubectl apply -f odoo-deploy-service.yaml
# kubectl get pod
Web Access : 192.168.49.2:30300 (IP + : + Nodeport).
================================== Odoo on Kubernetes ===========================
https://glasskube.eu/en/r/guides/odoo-kubernetes/
https://github.com/glasskube/operator
Step 01:
# git clone https://github.com/glasskube/operator.git
# deploy/deploy.sh -v latest
# vi Odoo.yaml
apiVersion: “glasskube.eu/v1alpha1”
kind: Odoo
metadata:
name: odoo
namespace: odoo
spec:
host: odoo.hostname.tld # hostname
demoEnabled: true # Whether Odoo should be initially populated with demo data.
# kubectl apply -f Odoo.yaml
=============================== Deploy Odoo 15 Using Docker =======================
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release
—> Add Docker’s official GPG key
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg –dearmor -o /etc/apt/keyrings/docker.gpg
—> Run the below command to set up the repository
echo \
“deb [arch=$(dpkg –print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable” | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
—> Install Docker Engine
sudo apt update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
=========================== Installing Odoo in Docker =========================
mkdir -p /docker/odoo
cd ~/docker/odoo
mkdir config
mkdir addons
mkdir config
mkdir extra-addons
—-> Setting up the Postgres configuration
# sudo nano .env
#psql environment variable
POSTGRES_DB=postgres
POSTGRES_PASSWORD=odoo
POSTGRES_USER=odoo15
PGDATA=/var/lib/postgresql/data/pgdata
#odoo environment variables
HOST=postgres
USER=odoo15
PASSWORD=odoo
# nano docker-compose.yml
version: ‘3’
services:
odoo:
image: odoo:15.0 #image of the odoo
env_file: .env #environment file(contains odoo environment)
depends_on:
– postgres
ports:
– “8000:8069” #port mapping
Volumes: #mapping directory
– data:/var/lib/odoo
– ./config:/etc/odoo
– ./extra-addons:/mnt/extra-addons
postgres:
image: postgres:13 #postgres image
env_file: .env #environment file(contains postgres environment)
volumes:
– db:/var/lib/postgresql/data/pgdata
volumes:
data:
db:
N.B. Now we are going to create a odoo.conf file inside the directory config.
[options]
admin_passwd = admin_password
db_host = postgres
db_user = odoo15
db_password = odoo
db_port = 5432
addons_path = /mnt/extra-addons
# docker-compose up
Web Access : http://localhost:8000
To install an additional package to the container:
Docker exec -it [container name] /bin/bash To get bash shell
Docker exec -it [container name] [command] To execute the command