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
setup
chart. NOTE as these are very common installations, each may be disabled as needed to resolve conflicts.
From deploy/complete/helm-chart
directory:
-
Install
setup
chart:helm install setup \ --name mushop-utils \ --namespace mushop-utilities
helm upgrade --install mushop-utils setup \ --dependency-update \ --namespace mushop-utilities \ --create-namespace
OPTIONAL In case you are provisioning ATP, Stream, and Object Storage with OCI Service Broker. In that case, you should enable the Service Catalog
catalog.enabled
totrue
invalues.yaml
or by adding the command line flag--set catalog.enabled=true
in thehelm install
command above.helm upgrade --install mushop-utils setup \ --dependency-update \ --namespace mushop-utilities \ --create-namespace \ --set catalog.enabled=true
OPTIONAL The Jenkins automation server can be enabled by setting
jenkins.enabled
totrue
invalues.yaml
or by adding the command line flag--set jenkins.enabled=true
in thehelm install
command above.helm upgrade --install mushop-utils setup \ --dependency-update \ --namespace mushop-utilities \ --create-namespace \ --set jenkins.enabled=true
-
NOTE the public
EXTERNAL-IP
assigned 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-IP
created during setup, ORport-forward
directly to theedge
service resource:kubectl port-forward \ --namespace mushop \ svc/edge 8000:80
Using
port-forward
connecting localhost:8000 to theedge
servicekubectl get svc mushop-utils-ingress-nginx-controller \ --namespace mushop-utilities
Locating
EXTERNAL-IP
for Ingress Controller. NOTE this will be localhost on local clusters.