HenryXie1 / apexords-operator

This is operator to to create a brand new apex (oracle application express) 19.1 and ords (oracle rest data service)on a oracle 19c database

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Apexords-Operator in Kubernetes

This is operator to automate Apex Oracle Application Express 19.1 and Ords oracle rest data service via kubernetes CRD ,it creates a brand new Oracle 19c database statefulset,apex, ords deployment plus load balancer in the kubernetes cluster. This operator is using kubebuilder to create a framework. Tested in KIND and AWS EKS. It has upgraded with kubebuilder v3.1 controller-runtime v0.9.2 Golang 1.16.5

Preparation

Tasks in the operator

  • create Oracle 19c DB statefulset
  • install Apex 19.1 into the DB
  • install and configurate Ords into the DB
  • start http as sidecar for Ords
  • create loadbalancer for the Apex service

How to test on local machine

  • make install
  • make run
    • it will run controller locally while communicating with K8S master
    • all controller logs display on the screen
  • run below cmd
cat <<EOF | kubectl apply -f -
apiVersion: operator.apexords-operator/v1
kind: ApexOrds
metadata:
 name: apexords-apexdevords
spec:
 # Add fields here
 dbname: apexdevcdb
 dbservice: apexdevpdb
 ordsname: apexdevords
 # apexruntimeonly: True
EOF
  • kubectl get apexords

How to test in remote kubernetes cluster

  • make docker-build
  • make docker-push IMG="some-registry"/apexords-controller
  • Modify image locations on yaml files under config/default/
  • make deploy
  • run below cmd
cat <<EOF | kubectl apply -f -
apiVersion: operator.apexords-operator/v1
kind: ApexOrds
metadata:
 name: apexords-apexdevords
spec:
 # Add fields here
 dbname: apexdevcdb
 dbservice: apexdevpdb
 ordsname: apexdevords
 # apexruntimeonly: True
EOF
  • kubectl get po -n apexords-operator-system
    • find apexords controller pod
  • kubectl logs -f controller-pod-name -n apexords-operator-system
    • see controller logs of what happened include password infor
  • kubectl get apexords

How to login Apex instance

  • kubectl get svc
    • find nodeport or Loadbalancer IP or DNS details
    • open browser to access
    • workspace: internal
    • username: admin
    • password: find it in controller logs output

Clean up

  • kubectl delete apexords the-apexords-name
    • As we put owner reference for apexords , it will delete all related statefulesets, deployments,loadbalancer,configmap....etc
    • PV will not be deleted,thus Data won't be lost.

YouTube Demo:

YouTube Demo

About

This is operator to to create a brand new apex (oracle application express) 19.1 and ords (oracle rest data service)on a oracle 19c database


Languages

Language:Go 90.3%Language:Makefile 8.3%Language:Dockerfile 1.4%