5分钟上手!podinfo零服务器部署:AWS Fargate与Azure容器实例实战指南
还在为Kubernetes集群维护头疼?想体验Serverless容器的弹性优势却被复杂配置劝退?本文将带你用两种零服务器方案部署Go微服务模板podinfo,无需管理节点即可享受容器编排的便利,从构建到访问全程不超过5分钟。
关于podinfo项目
podinfo是一个专为Kubernetes设计的Go微服务模板,集成了健康检查、监控、日志、配置管理等企业级特性。作为CNCF项目Flux和Flagger的测试基准,其代码质量与最佳实践已得到行业验证。
核心功能模块:
- Web API接口:pkg/api/http/
- gRPC服务实现:pkg/api/grpc/
- 配置管理:charts/podinfo/values.yaml
- 部署模板:deploy/
方案一:AWS Fargate无服务器部署
准备工作
确保已安装AWS CLI并配置凭证:
aws configure
构建容器镜像
使用项目Dockerfile构建并推送至ECR:
# 创建ECR仓库
aws ecr create-repository --repository-name podinfo --region cn-northwest-1
# 登录ECR
aws ecr get-login-password --region cn-northwest-1 | docker login --username AWS --password-stdin {your-account-id}.dkr.ecr.cn-northwest-1.amazonaws.com.cn
# 构建并推送镜像
docker build -t {your-account-id}.dkr.ecr.cn-northwest-1.amazonaws.com.cn/podinfo:6.9.2 -f Dockerfile .
docker push {your-account-id}.dkr.ecr.cn-northwest-1.amazonaws.com.cn/podinfo:6.9.2
创建Fargate任务定义
创建任务定义文件fargate-task.json:
{
"family": "podinfo",
"networkMode": "awsvpc",
"requiresCompatibilities": ["FARGATE"],
"cpu": "256",
"memory": "512",
"executionRoleArn": "arn:aws-cn:iam::{your-account-id}:role/ecsTaskExecutionRole",
"containerDefinitions": [
{
"name": "podinfo",
"image": "{your-account-id}.dkr.ecr.cn-northwest-1.amazonaws.com.cn/podinfo:6.9.2",
"portMappings": [
{
"containerPort": 9898,
"hostPort": 9898,
"protocol": "tcp"
}
],
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group": "/ecs/podinfo",
"awslogs-region": "cn-northwest-1",
"awslogs-stream-prefix": "ecs"
}
}
}
]
}
注册任务定义:
aws ecs register-task-definition --cli-input-json file://fargate-task.json
运行Fargate服务
aws ecs run-task \
--cluster default \
--task-definition podinfo \
--launch-type FARGATE \
--network-configuration "awsvpcConfiguration={subnets=[subnet-xxxxxx],securityGroups=[sg-xxxxxx],assignPublicIp=ENABLED}"
访问服务
获取公共IP并访问:
# 获取任务公网IP
aws ecs list-tasks --cluster default --family podinfo
aws ecs describe-tasks --cluster default --tasks {task-id} | grep PublicIp
# 访问podinfo
curl http://{public-ip}:9898/version
方案二:Azure Container Instances部署
准备工作
安装Azure CLI并登录:
az login --use-device-code
创建容器实例
直接部署podinfo官方镜像:
az container create \
--name podinfo \
--resource-group myResourceGroup \
--image ghcr.io/stefanprodan/podinfo:6.9.2 \
--ports 9898 \
--ip-address Public \
--environment-variables "BACKEND=" "LOG_LEVEL=info"
查看部署状态
az container show --name podinfo --resource-group myResourceGroup --query "ipAddress.ip" -o tsv
访问服务
curl http://{public-ip}:9898
验证与监控
健康检查
验证服务健康状态:
# readiness探针
curl http://{public-ip}:9898/readyz
# liveness探针
curl http://{public-ip}:9898/healthz
性能指标
访问Prometheus指标端点:
curl http://{public-ip}:9797/metrics
对比与最佳实践
| 特性 | AWS Fargate | Azure Container Instances |
|---|---|---|
| 启动时间 | ~60秒 | ~30秒 |
| 自动扩缩容 | 支持 | 有限支持 |
| 成本模型 | 按秒计费 | 按秒计费 |
| 网络配置 | VPC集成 | 直接公网IP |
| 持久存储 | EFS集成 | Azure Files |
推荐使用场景
- 开发测试:优先选择ACI,启动更快
- 生产环境:推荐Fargate,更完善的生态集成
- 流量波动大:结合AWS Application Auto Scaling或Azure Autoscale
总结与进阶
通过本文你已掌握:
- 在AWS Fargate上部署容器化微服务
- 使用Azure Container Instances快速启动应用
- 验证podinfo服务健康状态与性能
进阶学习:
- 实现自动扩缩容:deploy/overlays/production/
- 配置TLS加密:charts/podinfo/templates/certificate.yaml
- 分布式追踪:otel/otel-config.yaml
现在你可以将这些知识应用到自己的微服务项目中,享受Serverless容器带来的运维简化与成本优化!
点赞收藏本文,关注获取更多云原生实战指南!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



