K8s (minikube) связка не работает

Манифесты:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: api
spec:
  replicas: 3
  selector:
    matchLabels:
      app: api
  template:
    metadata:
      labels:
        app: api
    spec:
      containers:
      - name: api
        image: basilex/api:0.1.0
        resources:
          limits:
            memory: "128Mi"
            cpu: "500m"
        ports:
        - containerPort: 3000
---
apiVersion: v1
kind: Service
metadata:
  name: api
spec:
  selector:
    app: api
  ports:
  - port: 3000
    targetPort: 3000
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ing
  labels:
    name: ing
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: "junker.k8s.local"
    http:
      paths:
      - pathType: Prefix
        path: "/api"
        backend:
          service:
            name: api
            port: 
              number: 3000

Ingress

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ing
  labels:
    name: ing
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: "junker.k8s.local"
    http:
      paths:
      - pathType: Prefix
        path: "/api"
        backend:
          service:
            name: api
            port: 
              number: 3000

Код, который смог придумать:

package main

import (
    "fmt"
    "log"
    "os"

    "github.com/gofiber/fiber/v2"
    "github.com/gofiber/fiber/v2/middleware/recover"
)

//
// Main entry point
//
func main() {
    app := fiber.New()

    app.Use(recover.New())

    app.Get("/api", func(c *fiber.Ctx) error {
        return c.Status(fiber.StatusOK).SendString("Welcome to Junker API!")
    })

    app.Get("/api/v1", func(c *fiber.Ctx) error {
        return c.Status(fiber.StatusOK).SendString("Welcome to Junker API V1!")
    })

    app.Get("/api/v1/health", func(c *fiber.Ctx) error {
        var (
            err  error
            host string
        )
        if host, err = os.Hostname(); err != nil {
            e := fmt.Sprintf("error: %s", err.Error())
            return c.Status(fiber.StatusInternalServerError).SendString(e)
        }
        res := fmt.Sprintf("host: %s, status: OK", host)
        return c.Status(fiber.StatusOK).SendString(res)
    })
    log.Fatal(app.Listen(":3000"))
}

Не вижу извне, хотя программка работает исправно.

Dockerfile:

##
## Build target
##
FROM golang:1.17.2-buster AS build

WORKDIR /build

COPY go.mod ./
COPY go.sum ./

RUN go mod download

COPY *.go ./

RUN go build -o api
##
## Container deploy
##
FROM debian:10.10-slim

WORKDIR /app

COPY --from=build /build/api /app

#USER nonroot:nonroot

ENTRYPOINT ["/app/api"]

EXPOSE 3000/tcp

Ответы (0 шт):