loading...

27/07/2023

Odoo in k8s and Docker

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

 

 

Posted in Docker, k8sTaggs: