Kubernetes Deployment
This deployment option utilizes helm for
configuration and installation onto a Kubernetes
cluster. It is recommended to use an
Oracle Container Engine for Kubernetes
cluster, however other standard Kubernetes clusters will also work.
cd deploy/complete/helm-chart
dir deploy/complete/helm-chart
Path for Cloud Native deployment configurations using
helm
Deploying the complete MuShop application with backing services from Oracle Cloud Infrastructure involves the use of the following helm charts:
setup: Installs umbrella chart dependencies on the cluster (optional)provision: Provisions OCI resources integrated with Service Broker (optional)mushop: Deploys the MuShop application runtime
To get started, create a namespace for the application and its associative deployments:
kubectl create ns mushop
Setup
MuShop provides an umbrella helm chart called setup, which includes several
recommended installations on the cluster. These represent common 3rd party
services, which integrate with Oracle Cloud Infrastructure or enable certain
application features.
| Chart | Purpose | Option | Default |
|---|---|---|---|
| Prometheus | Service metrics aggregation | prometheus.enabled |
true |
| Grafana | Infrastructure/service visualization dashboards | grafana.enabled |
true |
| Metrics Server | Support for Horizontal Pod Autoscaling | metrics-server.enabled |
true |
| Ingress Nginx | Ingress controller and public Load Balancer | ingress-nginx.enabled |
true |
| Service Catalog | Service Catalog chart utilized by Oracle Service Broker | catalog.enabled |
true |
| Cert Manager | x509 certificate management for Kubernetes | cert-manager.enabled |
true |
| Jenkins | Jenkins automation server on Kubernetes | jenkins.enabled |
false |
Dependencies installed with
setupchart. NOTE as these are very common installations, each may be disabled as needed to resolve conflicts.
From deploy/complete/helm-chart directory:
-
Install chart dependencies:
helm dependency update setup -
Install
setupchart:helm install setup \ --name mushop-utils \ --namespace mushop-utilitieskubectl create ns mushop-utilitieshelm install mushop-utils setup \ --namespace mushop-utilities
OPTIONAL The Jenkins automation server can be enabled by setting
jenkins.enabledtotrueinvalues.yamlor by adding the command line flag--set jenkins.enabled=truein thehelm installcommand above.
helm install mushop-utils setup \
--namespace mushop-utilities \
--set jenkins.enabled=true
-
NOTE the public
EXTERNAL-IPassigned to the ingress controller load balancer:kubectl get svc mushop-utils-ingress-nginx-controller \ --namespace mushop-utilities
Deploy MuShop
To get started with the simplest installation, MuShop supports a mock mode deployment option where cloud backing services are disconnected or mocked, yet the application remains fully functional. This is useful for development, testing, and cases where cloud connectivity is not available.
From deploy/complete/helm-chart directory:
-
Deploy “mock mode” with
helm:helm install mushop \ --name mushop \ --namespace mushop \ --set global.mock.service="all"helm install mushop mushop \ --namespace mushop \ --set global.mock.service="all" -
Wait for services to be Ready:
kubectl get pod --watch --namespace mushop -
Open a browser with the
EXTERNAL-IPcreated during setup, ORport-forwarddirectly to theedgeservice resource:kubectl port-forward \ --namespace mushop \ svc/edge 8000:80Using
port-forwardconnecting localhost:8000 to theedgeservicekubectl get svc mushop-utils-ingress-nginx-controller \ --namespace mushop-utilitiesLocating
EXTERNAL-IPfor Ingress Controller. NOTE this will be localhost on local clusters.