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:

  1. setup: Installs umbrella chart dependencies on the cluster (optional)
  2. provision: Provisions OCI resources integrated with Service Broker (optional)
  3. 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:

  1. 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 to true in values.yaml or by adding the command line flag --set catalog.enabled=true in the helm 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 to true in values.yaml or by adding the command line flag --set jenkins.enabled=true in the helm install command above.

    helm upgrade --install mushop-utils setup \
      --dependency-update \
      --namespace mushop-utilities \
      --create-namespace \
      --set jenkins.enabled=true
    
  2. 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:

  1. 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"
    
  2. Wait for services to be Ready:

    kubectl get pod --watch --namespace mushop
    
  3. Open a browser with the EXTERNAL-IP created during setup, OR port-forward directly to the edge service resource:

    kubectl port-forward \
      --namespace mushop \
      svc/edge 8000:80
    

    Using port-forward connecting localhost:8000 to the edge service

    kubectl get svc mushop-utils-ingress-nginx-controller \
      --namespace mushop-utilities
    

    Locating EXTERNAL-IP for Ingress Controller. NOTE this will be localhost on local clusters.