Reputation: 53
I have built my docker image in Docker desktop but I do not know how to config so that terraform kubernetes can refer to local image? (it stuck while creating the pod)
Here is my tf file look like
....
provider "kubernetes" {
config_path = "~/.kube/config"
}
resource "kubernetes_pod" "test" {
metadata {
name = "backend-api"
labels = {
app = "MyNodeJsApp"
}
}
spec {
container {
image = "backendnodejs:0.0.1"
name = "backendnodejs-container"
# I think it keep pulling from Docker Hub
port {
container_port = 5000
}
}
}
}
resource "kubernetes_service" "test" {
metadata {
name = "backendnodejs-service"
}
spec {
selector = {
app = kubernetes_pod.test.metadata.0.labels.app
}
port {
port = 5000
target_port = 5000
}
type = "LoadBalancer"
}
}
Upvotes: 0
Views: 762
Reputation: 53
So after hours researching how to deploy to minikube (installed on minikube website not docker desktop kubernetes). I found out that minikube ran as container itself in docker desktop which is why you can not use images from docker desktop to deploy into minikube.
Here are the link solved about this:
So things you will need before using terraform deploy to minikube:
Pushing directly to the in-cluster Docker daemon (docker-env)
PS> & minikube -p minikube docker-env --shell powershell | Invoke-Expression
CMD> @FOR /f "tokens=*" %i IN ('minikube -p minikube docker-env --shell cmd') DO @%i
> eval $(minikube docker-env)
Build docker image again (same terminal that been entered command above)
docker build -t your_image_tag your_docker_file
Run normal terraform file (same terminal)
This link also explained same as above
Upvotes: 1