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