Minikube: Deploying to Our Cluster

30 minutes
  • 3 Learning Objectives

About this Hands-on Lab

In this hands-on lab we will be creating a deployment from scratch, using a YAML template, and deploying it to our Minikub cluster. Once everything looks like it’s up and running, we’ll run some tests.

Learning Objectives

Successfully complete this lab by achieving the following learning objectives:

Start the Minikube Cluster Using the Correct Driver

Issue the command to start Minikube:

sudo minikube start --vm-driver none
Create an Nginx Deployment from the Template

We can create the deployment using the file ~/nginx-deploy-template.yaml. Use the Nginx pv-deployment.yaml file as a reference if needed.

Our deployment should look similar to this:

kind: Service
apiVersion: v1
metadata:
    name: nginx-service
    labels:
      app: nginx-volume
spec:
    type: NodePort
    selector:
      app: nginx-volume
    ports:
        - nodePort: 30002
          port: 8080
          targetPort: 80
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: nginx-stor
  labels:
    app: nginx-deploy
    type: local
spec:
  storageClassName: manual
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/home/cloud_user/indexdoc"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: nginx-pvc
  labels:
    app: nginx-deploy
spec:
 storageClassName: manual
 accessModes:
   - ReadWriteOnce
 resources:
   requests:
     storage: 3Gi
---
apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx-deploy
spec:
  selector:
    matchLabels:
      app: nginx-deploy
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: nginx-deploy
    spec:
      containers:
          - name: nginx-cont
            image: nginx
            ports:
            - containerPort: 80
            volumeMounts:
            - name: nginx-vol
              mountPath: "/usr/share/nginx/html"
      volumes:
      - name: nginx-vol
        persistentVolumeClaim:
          claimName: nginx-pvc
Create the Index File and Create the Nginx Deployment

Run the following to create the index:

mkdir ~/indexdoc
echo 'this is the local index file' > ./indexdoc/index.html

Now let’s create the Nginx deployment using kubectl:

sudo kubectl create -f ~/nginx-deployment-template.yaml

We need make sure the Nginx pod is up and running, and get its IP:

sudo kubectl get po -o wide

And now we can run curl on that IP, to see if the index loads:

curl <POD_IP>

The output of that should be the this is the local index file that we put in ./indexdoc/index.html a couple minutes ago.

Additional Resources

We have been asked to create an Nginx deployment so that developers can use local storage to update the index file that is normally found in /usr/share/nginx/html. That file needs to be mapped to /home/cloud_user/indexdoc. And since this has to be maintained in version control, it needs to be a single file deployment that also contains an external service for the Nginx server.

Logging In

Use the credentials provided on the hands-on lab overview page, and log in as cloud_user.

What are Hands-on Labs

Hands-on Labs are real environments created by industry experts to help you learn. These environments help you gain knowledge and experience, practice without compromising your system, test without risk, destroy without fear, and let you learn from your mistakes. Hands-on Labs: practice your skills before delivering in the real world.

Get Started
Who’s going to be learning?

How many seats do you need?

  • $499 USD per seat per year
  • Billed Annually
  • Renews in 12 months

Ready to accelerate learning?

For over 25 licenses, a member of our sales team will walk you through a custom tailored solution for your business.


$2,495.00

Checkout
Sign In
Welcome Back!

Psst…this one if you’ve been moved to ACG!