Working example of locally run spring boot app on Mac Book M3 with skaffold, podman and minikube?

24 Views Asked by At

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

0

There are 0 best solutions below