美文网首页
Gitlab CICD 部署到aws lambda

Gitlab CICD 部署到aws lambda

作者: 叶叶阿姨 | 来源:发表于2021-12-13 11:25 被阅读0次

本次cicd的流水线是解决python的flask自动部署到lambda,实现通过apigateway访问flask接口。

Gitlab CI/CD流水线搭建

git runner部署

参考文档:https://www.cnblogs.com/eastpig/p/12721130.html

本次git runner使用的是docker部署的,直接上命令

1.启动docker容器:

docker run -d --name tzq_gitlab_runner --restart always -v /srv/gitlab-runner/config:/etc/gitlab-runner -v /var/run/docker.sock:/var/run/docker.sock --net=host gitlab/gitlab-runner:latest

2.进入容器注册runner

docker exec -it tzq_gitlab_runner /bin/bash   
gitlab-runner register

3.在gitlab上获取tocken

img img

4.给runner取个名字和tag和runner的执行者和一个默认镜像

imag img img img

5.修改配置文件(可不操作)

打开/srv/gitlab-runner/config/config.toml文件,找到你对应的runner实例配置

找到并修改为:volumes = ["/cache","/var/run/docker.sock:/var/run/docker.sock"]

pull_policy = "if-not-present" 

然后重启runner,

docker restart gitlab-runner

6.gitlab上修改runner配置

这一步主要是忽视runner tag的影响,不然会导致pipline流水线一直处于pengding状态

img img

Lambda环境搭建

创建具有flask的lambda代码,创建过程略,附上需要注意的地方,第三方模块包使用的层来提供的

附上flask主函数代码(这里只是一个demo):注意引入了一个awsgi的包

import awsgi
from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return {'msg': 'inde'}

@app.route('/hello', methods=['GET'])
def hello_get():
    return {'msg': 'get method'}

@app.route('/hello', methods=['POST'])
def hello_post():
    return {'msg': 'post method'}

def lambda_handler(event, context):
    return awsgi.response(app, event, context)
img

ApiGateway部署

通过apigateway将lambda接口暴露出去

1.创建REST的apigateway

img

2.自定义api名称,创建api

img

3.创建资源

img

4.配置为代理资源proxy模式,这种模式的好处,可以模糊匹配你flask里面的所有路由,就不需要再繁琐的一个一个在api里面加了

img

5.绑定后端的lambda函数

img

6.部署api并给阶段命名

imag img img

通过上面的URL后面加上你自己方法,就可以愉快的玩耍了

gitlab pipline

这次流水线编写的比较简单,只是简单实现了把代码部署到lambda上,后续会加上单元测试相关的类容

image: public.ecr.aws/sam/build-python3.8
stages:
  - deploy

deploy_job:
  stage: deploy
  script:
    - zip -r ./lambda.zip ./* 
    - aws lambda update-function-code --function-name query_db --zip-file fileb://lambda.zip


至此基本实现了gitlab这个流水线流程,开发提交代码触发流水线自动部署到lambda,通过apigateway暴露python的flask接口

相关文章

网友评论

      本文标题:Gitlab CICD 部署到aws lambda

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