apiVersion: v1
kind: Namespace
metadata:
name: odoo
---
apiVersion: v1
kind: Secret
metadata:
name: postgres-secret
namespace: odoo
type: Opaque
data:
POSTGRES_USER: b2Rvbw== # "odoo"
POSTGRES_PASSWORD: b2Rvbw== # "odoo"
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: postgres
namespace: odoo
spec:
replicas: 1
selector:
matchLabels:
app: postgres
template:
metadata:
labels:
app: postgres
spec:
containers:
- name: postgres
image: postgres:15
envFrom:
- secretRef:
name: postgres-secret
ports:
- containerPort: 5432
---
apiVersion: v1
kind: Service
metadata:
name: postgres
namespace: odoo
spec:
ports:
- port: 5432
selector:
app: postgres
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: odoo
namespace: odoo
spec:
replicas: 1
selector:
matchLabels:
app: odoo
template:
metadata:
labels:
app: odoo
spec:
containers:
- name: odoo
image: odoo:18
env:
- name: HOST
value: postgres
- name: USER
valueFrom:
secretKeyRef:
name: postgres-secret
key: POSTGRES_USER
- name: PASSWORD
valueFrom:
secretKeyRef:
name: postgres-secret
key: POSTGRES_PASSWORD
- name: ADMIN_PASSWORD
value: admin
ports:
- containerPort: 8069
---
apiVersion: v1
kind: Service
metadata:
name: odoo
namespace: odoo
spec:
type: NodePort
ports:
- port: 8069
nodePort: 30069
selector:
app: odoo
一気に成功
apiVersion: v1
kind: Namespace
metadata:
name: odoo
---
apiVersion: v1
kind: Secret
metadata:
name: postgres-secret
namespace: odoo
type: Opaque
data:
POSTGRES_USER: b2Rvbw== # "odoo"
POSTGRES_PASSWORD: b2Rvbw== # "odoo"
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-postgres
spec:
accessModes:
- ReadWriteOnce
capacity:
storage: 1Gi
hostPath:
path: /data/postgres
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-postgres
namespace: odoo
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: postgres
namespace: odoo
spec:
replicas: 1
selector:
matchLabels:
app: postgres
template:
metadata:
labels:
app: postgres
spec:
containers:
- name: postgres
image: postgres:15
envFrom:
- secretRef:
name: postgres-secret
ports:
- containerPort: 5432
volumeMounts:
- mountPath: /var/lib/postgresql/data
name: postgres-storage
resources:
requests:
cpu: "250m"
memory: "256Mi"
limits:
cpu: "500m"
memory: "512Mi"
volumes:
- name: postgres-storage
persistentVolumeClaim:
claimName: pvc-postgres
---
apiVersion: v1
kind: Service
metadata:
name: postgres
namespace: odoo
spec:
ports:
- port: 5432
selector:
app: postgres
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: odoo
namespace: odoo
spec:
replicas: 1
selector:
matchLabels:
app: odoo
template:
metadata:
labels:
app: odoo
spec:
initContainers:
- name: init-odoo-db
image: odoo:18
command: ["/bin/sh", "-c"]
args:
- |
echo "Waiting for PostgreSQL...";
until pg_isready -h postgres -p 5432; do sleep 2; done;
echo "PostgreSQL is up, initializing Odoo DB...";
odoo --db_host=postgres --db_port=$PGPORT --db_user=$PGUSER --db_password=$PGPASSWORD -d odoo -i base --stop-after-init;
env:
- name: PGPORT
value: "5432"
- name: PGUSER
valueFrom:
secretKeyRef:
name: postgres-secret
key: POSTGRES_USER
- name: PGPASSWORD
valueFrom:
secretKeyRef:
name: postgres-secret
key: POSTGRES_PASSWORD
containers:
- name: odoo
image: odoo:18
command: ["/bin/sh", "-c"]
args:
- |
odoo --db_host=postgres --db_port=$PGPORT --db_user=$PGUSER --db_password=$PGPASSWORD
env:
- name: PGPORT
value: "5432"
- name: PGUSER
valueFrom:
secretKeyRef:
name: postgres-secret
key: POSTGRES_USER
- name: PGPASSWORD
valueFrom:
secretKeyRef:
name: postgres-secret
key: POSTGRES_PASSWORD
- name: ADMIN_PASSWORD
value: admin
ports:
- containerPort: 8069
resources:
requests:
cpu: "500m"
memory: "512Mi"
limits:
cpu: "1"
memory: "1Gi"
---
apiVersion: v1
kind: Service
metadata:
name: odoo
namespace: odoo
spec:
type: NodePort
ports:
- port: 8069
nodePort: 30069
selector:
app: odoo
適用手順
- 既存のリソース削除:
kubectl delete namespace odoo kubectl delete pv pv-postgres - 新しい構成適用:
kubectl apply -f odoo18-all.yaml - ログを確認:
kubectl logs deploy/odoo -n odoo -c init-odoo-db -f
初期化完了後:kubectl logs deploy/odoo -n odoo -c odoo -f
ポートフォワードでブラウザからアクセス
kubectl port-forward -n odoo svc/odoo 8069:8069
適用手順2
./deploy_odoo.sh
コメントを残す