美文网首页Java
Podinfo,迷你的 Go 微服务模板

Podinfo,迷你的 Go 微服务模板

作者: 程序花生 | 来源:发表于2021-01-23 22:35 被阅读0次

    项目介绍

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

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

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

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

    构建容器调试环境

    IDE

    VSCode + golang/vscode-go

    Go 国内加速镜像

    https://learnku.com/go/wikis/38122

    编写 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=https://mirrors.aliyun.com/goproxy/,direct
    
    # 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

    查看首页

    http://localhost:9898

    查看给 Prometheus 的 metrics API

    http://localhost:9898/metrics

    下断点,发请求调试

    curl http://localhost:9898/api/info
    
    

    Helm Charts

    Podinfo/Charts

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

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

    Helm 安装 Podinfo

    $ helm repo add podinfo https://stefanprodan.github.io/podinfo
    
    $ helm upgrade -i my-release podinfo/podinfo
    
    

    Helm 卸载 Podinfo

    $ helm delete my-release
    
    

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

    非常值得借鉴

    Refs

    笔者修改过的 Podinfo 项目地址

    官方 Podinfo

    作者:为少
    链接:https://www.cnblogs.com/hacker-linner/p/14318010.html

    相关文章

      网友评论

        本文标题:Podinfo,迷你的 Go 微服务模板

        本文链接:https://www.haomeiwen.com/subject/uekpzktx.html