blob: 588dd8e1312c5112d23a7f3110fad9af5cd4a952 [file] [log] [blame]
#
# ============LICENSE_START=======================================================
# Copyright (C) 2022 Nordix Foundation.
# ================================================================================
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
# ============LICENSE_END=========================================================
#
apiVersion: v1
kind: PersistentVolume
metadata:
name: postgres-storage-pv-volume
namespace: default
labels:
type: local
app: postgres
spec:
storageClassName: manual
capacity:
storage: 2Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/var/keycloak/data2"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: postgres-storage-pv-claim
namespace: default
labels:
app: postgres
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi
---
apiVersion: v1
kind: ConfigMap
metadata:
name: db-init
data:
init.sql: |
SELECT 'CREATE DATABASE capif'
WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'capif')\gexec
DO $$
BEGIN
IF NOT EXISTS (SELECT FROM pg_user WHERE usename = 'capif') THEN
CREATE USER capif WITH PASSWORD 'capif';
GRANT ALL PRIVILEGES ON DATABASE capif TO capif;
END IF;
END
$$;
---
apiVersion: v1
kind: Service
metadata:
name: postgres
namespace: default
spec:
type: NodePort
selector:
app: postgres
ports:
- protocol: TCP
port: 5432
nodePort: 30032
targetPort: 5432
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: postgres
namespace: default
spec:
selector:
matchLabels:
app: postgres
strategy:
type: Recreate
template:
metadata:
labels:
app: postgres
spec:
hostname: postgres
containers:
- image: nexus3.onap.org:10001/postgres
name: postgres
imagePullPolicy: IfNotPresent
env:
- name: POSTGRES_DB
value: keycloak
- name: POSTGRES_USER
value: keycloak
- name: POSTGRES_PASSWORD
value: keycloak
- name: PGDATA
value: /var/lib/pgsql/data
lifecycle:
postStart:
exec:
command: [ "/bin/sh", "-c", "sleep 10 && psql -U $POSTGRES_USER -f /init.sql" ]
livenessProbe:
exec:
command:
- /bin/sh
- -c
- exec pg_isready -U "keycloak" -h 127.0.0.1 -p 5432
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 5
readinessProbe:
exec:
command: ["psql", "-w", "-U", $(POSTGRES_USER), "-d", $(POSTGRES_DB), "-c", "SELECT 1"]
initialDelaySeconds: 15
timeoutSeconds: 2
ports:
- containerPort: 5432
name: postgres
volumeMounts:
- name: postgres-persistent-storage
mountPath: /var/lib/pgsql/data
- name : tmp-dir
mountPath: /tmp
- name: db-init
mountPath: /init.sql
subPath: init.sql
volumes:
- name: postgres-persistent-storage
persistentVolumeClaim:
claimName: postgres-storage-pv-claim
- name: tmp-dir
hostPath:
path: /tmp
type: Directory
- name: db-init
configMap:
name: db-init
defaultMode: 0755