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 |
| Cert Manager | x509 certificate management for Kubernetes | cert-manager.enabled |
true |
| Service Catalog | (Archived) Service Catalog chart utilized by Oracle Service Broker | catalog.enabled |
false |
| 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
setupchart:helm install setup \ --name mushop-utils \ --namespace mushop-utilitieshelm upgrade --install mushop-utils setup \ --dependency-update \ --namespace mushop-utilities \ --create-namespaceOPTIONAL In case you are provisioning ATP, Stream, and Object Storage with OCI Service Broker. In that case, you should enable the Service Catalog
catalog.enabledtotrueinvalues.yamlor by adding the command line flag--set catalog.enabled=truein thehelm installcommand above.helm upgrade --install mushop-utils setup \ --dependency-update \ --namespace mushop-utilities \ --create-namespace \ --set catalog.enabled=trueOPTIONAL 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 upgrade --install mushop-utils setup \ --dependency-update \ --namespace mushop-utilities \ --create-namespace \ --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 upgrade --install mushop mushop \ --namespace mushop \ --create-namespace \ --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.