Has anyone a working example of how to deploy and run a spring boot app in a minikube using skaffold and podman on a Mac Book M3? I am not able to get it done. The current error I encounter is, that the minikube tries to pull the image but does not get it. But docker image ls shows it. I read that minikube uses its own docker daemon, so I assume it is correct, that it needs to pull the image, although I set the imagePullPolicy to IfNotPresent. But I cannot see from where it tries to pull it. So here is what I did:
minikube start
skaffold config set --global local-cluster true
eval $(minikube -p minikube docker-env)
skaffold.yml
apiVersion: skaffold/v4beta9
kind: Config
metadata:
name: greeting-service
build:
artifacts:
- image: greeting-service-arm64
platforms:
- linux/arm64
jib:
fromImage: eclipse-temurin
manifests:
rawYaml:
- src/k8s/base/deployment.yml
deployment.yml
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app.kubernetes.io/name: greeting-service
app.kubernetes.io/version: 0.0.1-SNAPSHOT
name: greeting-service
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: greeting-service
app.kubernetes.io/version: 0.0.1-SNAPSHOT
template:
metadata:
labels:
app.kubernetes.io/name: greeting-service
app.kubernetes.io/version: 0.0.1-SNAPSHOT
spec:
containers:
- env:
- name: KUBERNETES_NAMESPACE
value: default
image: greeting-service
imagePullPolicy: IfNotPresent
livenessProbe:
httpGet:
path: /actuator/health/liveness
port: 8080
scheme: HTTP
successThreshold: 1
name: greeting-service
ports:
- containerPort: 8080
name: http
protocol: TCP
readinessProbe:
httpGet:
path: /actuator/health/readiness
port: 8080
scheme: HTTP
---
apiVersion: v1
kind: Service
metadata:
labels:
app.kubernetes.io/name: greeting-service
app.kubernetes.io/version: 0.0.1-SNAPSHOT
name: greeting-service
spec:
ports:
- name: http
port: 80
protocol: TCP
targetPort: 8080
selector:
app.kubernetes.io/name: greeting-service
app.kubernetes.io/version: 0.0.1-SNAPSHOT
type: ClusterIP
skaffolds output:
DEBU[0009] image [greeting-service-arm64] is not used by the current deployment subtask=-1 task=DevLoop
DEBU[0009] manifests with tagged images:apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app.kubernetes.io/name: greeting-service
app.kubernetes.io/version: 0.0.1-SNAPSHOT
name: greeting-service
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: greeting-service
app.kubernetes.io/version: 0.0.1-SNAPSHOT
template:
metadata:
labels:
app.kubernetes.io/name: greeting-service
app.kubernetes.io/version: 0.0.1-SNAPSHOT
spec:
containers:
- env:
- name: KUBERNETES_NAMESPACE
value: default
image: greeting-service
imagePullPolicy: IfNotPresent
livenessProbe:
httpGet:
path: /actuator/health/liveness
port: 8080
scheme: HTTP
successThreshold: 1
name: greeting-service
ports:
- containerPort: 8080
name: http
protocol: TCP
readinessProbe:
httpGet:
path: /actuator/health/readiness
port: 8080
scheme: HTTP
---
apiVersion: v1
kind: Service
metadata:
labels:
app.kubernetes.io/name: greeting-service
app.kubernetes.io/version: 0.0.1-SNAPSHOT
name: greeting-service
spec:
ports:
- name: http
port: 80
protocol: TCP
targetPort: 8080
selector:
app.kubernetes.io/name: greeting-service
app.kubernetes.io/version: 0.0.1-SNAPSHOT
type: ClusterIP subtask=0 task=Render
DEBU[0009] manifests with labels apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app.kubernetes.io/name: greeting-service
app.kubernetes.io/version: 0.0.1-SNAPSHOT
skaffold.dev/run-id: da01fc2c-a936-48fd-9a7a-a715e7eecbe1
name: greeting-service
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: greeting-service
app.kubernetes.io/version: 0.0.1-SNAPSHOT
template:
metadata:
labels:
app.kubernetes.io/name: greeting-service
app.kubernetes.io/version: 0.0.1-SNAPSHOT
skaffold.dev/run-id: da01fc2c-a936-48fd-9a7a-a715e7eecbe1
spec:
containers:
- env:
- name: KUBERNETES_NAMESPACE
value: default
image: greeting-service
imagePullPolicy: IfNotPresent
livenessProbe:
httpGet:
path: /actuator/health/liveness
port: 8080
scheme: HTTP
successThreshold: 1
name: greeting-service
ports:
- containerPort: 8080
name: http
protocol: TCP
readinessProbe:
httpGet:
path: /actuator/health/readiness
port: 8080
scheme: HTTP
---
apiVersion: v1
kind: Service
metadata:
labels:
app.kubernetes.io/name: greeting-service
app.kubernetes.io/version: 0.0.1-SNAPSHOT
skaffold.dev/run-id: da01fc2c-a936-48fd-9a7a-a715e7eecbe1
name: greeting-service
spec:
ports:
- name: http
port: 80
protocol: TCP
targetPort: 8080
selector:
app.kubernetes.io/name: greeting-service
app.kubernetes.io/version: 0.0.1-SNAPSHOT
type: ClusterIP subtask=-1 task=DevLoop
INFO[0009] Render completed in 1.822583ms subtask=-1 task=DevLoop
Tags used in deployment:
- greeting-service-arm64 ->
DEBU[0009] push value not present in isImageLocal(), defaulting to false because cluster.PushImages is false subtask=-1 task=DevLoop
DEBU[0009] Local images can't be referenced by digest.
They are tagged and referenced by a unique, local only, tag instead.
See https://skaffold.dev/docs/pipeline-stages/taggers/#how-tagging-works subtask=-1 task=Deploy
Starting deploy...
DEBU[0009] getting client config for kubeContext: `minikube` subtask=-1 task=DevLoop
DEBU[0009] Running command: [kubectl --context minikube get -f - --ignore-not-found -ojson] subtask=0 task=Deploy
DEBU[0009] Command output: [] subtask=0 task=Deploy
DEBU[0009] 2 manifests to deploy. 2 are updated or new subtask=0 task=Deploy
DEBU[0009] Running command: [kubectl --context minikube apply -f -] subtask=0 task=Deploy
- deployment.apps/greeting-service created
- service/greeting-service created
DEBU[0009] Couldn't parse image []: repository name must have at least one component subtask=-1 task=DevLoop
Waiting for deployments to stabilize...
DEBU[0009] getting client config for kubeContext: `minikube` subtask=-1 task=DevLoop
DEBU[0009] getting client config for kubeContext: `minikube` subtask=-1 task=DevLoop
DEBU[0009] checking status deployment/greeting-service subtask=0 task=Deploy
DEBU[0010] Running command: [kubectl --context minikube rollout status deployment greeting-service --namespace default --watch=false] subtask=0 task=Deploy
DEBU[0010] Command output: [Waiting for deployment "greeting-service" rollout to finish: 0 of 1 updated replicas are available...
] subtask=0 task=Deploy
DEBU[0010] Pod "greeting-service-6c78df657d-swfc9" scheduled but not ready: checking container statuses subtask=-1 task=DevLoop
DEBU[0011] Running command: [kubectl --context minikube rollout status deployment greeting-service --namespace default --watch=false] subtask=0 task=Deploy
DEBU[0011] Command output: [Waiting for deployment "greeting-service" rollout to finish: 0 of 1 updated replicas are available...
] subtask=0 task=Deploy
DEBU[0011] Pod "greeting-service-6c78df657d-swfc9" scheduled but not ready: checking container statuses subtask=-1 task=DevLoop
DEBU[0012] Running command: [kubectl --context minikube rollout status deployment greeting-service --namespace default --watch=false] subtask=0 task=Deploy
DEBU[0012] Command output: [Waiting for deployment "greeting-service" rollout to finish: 0 of 1 updated replicas are available...
] subtask=0 task=Deploy
DEBU[0012] Pod "greeting-service-6c78df657d-swfc9" scheduled but not ready: checking container statuses subtask=-1 task=DevLoop
DEBU[0012] marking resource failed due to error code STATUSCHECK_IMAGE_PULL_ERR subtask=0 task=Deploy
- deployment/greeting-service: container greeting-service is waiting to start: greeting-service can't be pulled
- pod/greeting-service-6c78df657d-swfc9: container greeting-service is waiting to start: greeting-service can't be pulled
- deployment/greeting-service failed. Error: container greeting-service is waiting to start: greeting-service can't be pulled.
DEBU[0012] setting skaffold deploy status to STATUSCHECK_IMAGE_PULL_ERR. subtask=0 task=Deploy
DEBU[0012] Running command: [tput colors] subtask=-1 task=DevLoop
DEBU[0012] Command output: [256
] subtask=-1 task=DevLoop
1/1 deployment(s) failed
DEBU[0012] exporting metrics disabled subtask=-1 task=DevLoop
Any help is welcome, Tobias