Ainz Titor
Ainz Titor

Reputation: 1557

Kubernetes on google cloud with hostPath mount

I've been developing an app on my local laptop (Mac) with Minikube. Instead of packaging the code and files into the docker image, I use hostPath and volumeMount that points to the code/file directory on my Mac, so that I can avoid rebuilding the image every time.

Now I would like to do the same iterative testing with google cloud. What's the best way to "mount" my local code/file directory and run pods remotely on the cloud? I don't want to package the code into a docker image, push to dockerhub, and then pull from dockerhub on gcloud. My dockerhub is a free account and would expose my code.

Upvotes: 2

Views: 855

Answers (3)

JamWils
JamWils

Reputation: 785

Steps for using the Google Cloud Registry:

Build Docker Image

docker build -t <image-name>:<tag> <path-to-dockerfile>

Tag for GCloud Container Registry

docker tag <image-name>:<tag> us.gcr.io/<gcloud-project-id>/<image-name>:<tag>

Container Registry

gcloud docker -- push us.gcr.io/<gcloud-project-id>/<image-name>:<tag>

Your spec will then point to the container registry path:

spec:
  containers:
    - name: hello-world
      image: us.gcr.io/<gcloud-project-id>/<image-name>:<tag>
      ports:
        - name: http
          containerPort: 8080

Upvotes: 1

Shahriar
Shahriar

Reputation: 13804

You want: You want to mount your local file system into your remote Kubernetes cluster.

Answer: As far I know, you can't do this. Its possible in minikube, because, you can mount your local directory with minikube.

Solution: I can tell you an alternative way. May be this is not what you want. But it can help you.

Do you use git? If your answer is yes and also if you have no problem to keep your files into git repository, following process will help you.

spec:
  containers:
  - image: nginx
    name: nginx
    volumeMounts:
    - mountPath: /mypath
      name: git-volume
  volumes:
  - name: git-volume
    gitRepo:
      repository: "git@somewhere:me/my-git-repository.git"
      revision: "22f1d8406d464b0c0874075539c1f2e96c253775"

When you will create this Pod, my-git-repository will be mounted into your directory /mypath inside your Pod container.

Basically, you can tell your Pod to pull this git from specific branch. So every time, you change your code, push it. Then create Pod again.

Read volumes/#gitrepo

Upvotes: 3

Richard Rose
Richard Rose

Reputation: 326

Easiest method to replicate your setup would be to use a storage bucket for the mount point.

For your setup, just pull the code to the local host when needing to build from the storage bucket. I am assuming you have a build script to do the configuration part.

However as per the other comment, you could just use gcr to host your config files and use deployment manager to build.

Upvotes: 1

Related Questions