七叶笔记 » golang编程 » Podinfo,迷你的 Go 微服务模板

Podinfo,迷你的 Go 微服务模板

项目介绍

Podinfo 是一个用 Go 制作的小型 web 应用程序,它展示了在 Kubernetes 中运行微服务的最佳实践。

它已实现的技术指标(截选自官方 README.md ):

里面每一项技术指标的实现方式,其实都可以拿出来单独讲好久,相关理论也有好多。

这里我只是讲针对这个项目,我们该如何使用 Docker 去试玩它。

构建容器调试环境

IDE

VSCode + golang/vscode-go

Go 国内加速镜像

编写 Dockerfile.dev 文件

 FROM golang:1.14

WORKDIR /workspace

# copy modules manifests
COPY go.mod go.mod
COPY go.sum go.sum

# 阿里云
RUN go env -w GO111MODULE=on
RUN go env -w GOPROXY=

# cache modules
RUN go mod download
RUN go get github.com/go-delve/delve/cmd/dlv
  

构建 Image

 docker build -f Dockerfile.dev -t podinfo:dev .
  

编写 docker-compose. yaml

 version: "3.4"
 services :
  golang:
    image: podinfo:dev
    command: >
      bash -c "ls -la
      && dlv debug /workspace/cmd/podinfo --headless --log -l 0.0.0.0:2345 --api-version=2"
    volumes:
    - ./:/workspace
    ports:
      - 9898:9898
      - 2345:2345
    security_opt:
      - "seccomp:unconfined"
  

配置 .vscode 的 launch.json

 {
  "version": "0.2.0",
  "configurations": [
      {
          "name": "Remote Docker",
          "type": "go",
          " request ": "launch",
          "mode": "remote",
          "remotePath":"/workspace",
          "port": 2345,
          "host": "127.0.0.1",
          "program": "${workspaceFolder}",
          "args": [],
          "trace" : "verbose",
          "env" : {}
      }
  ]
}
  

开始试玩

docker compose 一键启动

 docker-compose up
  

Run Remote Docker

查看首页

查看给 Prometheus 的 metrics API

下断点,发请求调试

 curl 
  

Helm Charts

Podinfo/Charts

  • 因为 Podinfo 是一个云原生项目,所以它的 Helm Charts 的编写还是值得借鉴和学习的。

    当然这里需要你有一些 K8S 的经验。

    Helm 安装 Podinfo

     $ helm repo add podinfo 
    
    $ helm upgrade -i my-release podinfo/podinfo
      

    Helm 卸载 Podinfo

     $ helm delete my-release
      

    看配置,了解 PodInfo 是如何上云的?

    非常值得借鉴

    Refs

    笔者修改过的 Podinfo 项目地址

  • 官方 Podinfo

  • 相关文章