4

私は、ローカルに minikube をインストールして scaffold を試してきました。本番環境にできるだけ近いものでプロジェクトを開発できることは素晴らしいことです。

skaffold github リポジトリで提供されている入門サンプルを使用すると、すべてが正常に機能し、IDE (intellij アイデア) がブレークポイントで停止し、コードを変更すると、変更が即座に反映されます。

単純な main.go ファイルよりも少し複雑な私の個人的なプロジェクトでは、期待どおりに動作しません。IDE はブレークポイントで停止しますが、コンソールで scaffold がその特定のファイルに加えられた変更を検出したことを確認しても、ホット コード リロードは発生しませんが、残念ながら変更は反映/適用されません。

イメージのビルドには docker ファイルが使用されます。docker ファイルは次のとおりです。

FROM golang:1.14 AS builder

WORKDIR /app

COPY go.mod go.sum ./
RUN go mod download
COPY . .

RUN CGO_ENABLED=0 go build -o /app.o ./cmd/shortener/shortener.go

FROM alpine:3.12
COPY --from=builder /app.o ./
COPY --from=builder /app ./
EXPOSE 3000
ENV GOTRACEBACK=all
CMD ["./app.o"]

kubernetes 側では、次のようにデプロイとサービスを作成しています。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: url-shortener-deployment
spec:
  selector:
    matchLabels:
      app: url-shortener
  template:
    metadata:
      labels:
        app: url-shortener
    spec:
      containers:
        - name: url-shortener
          image: url_shortener
          ports:
            - containerPort: 3000
---
apiVersion: v1
kind: Service
metadata:
  name: url-shortener-service
spec:
  selector:
    app: url-shortener
  ports:
    - port: 3000
      nodePort: 30000
  type: NodePort

skaffold に関しては、ここに skaffold.yaml ファイルがあります。

apiVersion: skaffold/v2beta5
kind: Config
metadata:
  name: url-shortener
build:
  artifacts:
    - image: url_shortener
      context: shortener
      docker:
        dockerfile: build/docker/Dockerfile.dev
        noCache: false
deploy:
  kubectl:
    manifests:
      - stack/mongo/mongo.yaml
      - shortener/deployments/kubernetes/shortener.yaml

詳細ログを有効にしましたが、ソース コード ファイルを保存 (CTRL+S) するたびに、出力にこれが表示されます。

time="2020-07-05T22:51:08+02:00" level=debug msg="Found dependencies for dockerfile: [{go.mod /app true} {go.sum /app true} {. /app true}]"
time="2020-07-05T22:51:08+02:00" level=info msg="files modified: [shortener/internal/handler/rest/rest.go]"

これは、変化が検出されたことを意味すると思います。

ブレークポイントは IDE で正しく機能しますが、kubernetes でのコード スワップは発生していないようです

4

1 に答える 1