서버리스 및 컨테이너

5170 단어 dockerserverlessaws
종종 컨테이너 및 도커 이미지에 대해 이야기할 때 배포와 관련하여 떠오르는 사항은 다음과 같습니다.
  • Kubernetes

  • ECS or Fargate

  • Docker Swarm 또는 도커 데몬

  • 이들은 배포에 가장 일반적으로 사용되는 기술이지만 소규모 상태 비저장 응용 프로그램 집합의 경우 많은 관리가 무시됩니다.

    이 시점에서 AWS는 Lambda에서 컨테이너 이미지를 배포 및 구축하고 간단한 애플리케이션으로 실행할 수 있는 영향력을 제공했습니다.

    serverless을 사용하여 DOCKER 응용 프로그램을 빌드하고 배포하는 방법을 살펴보겠습니다.

    사전 요청:
  • 도커 데몬

  • Serverless 유틸리티
  • ECR 및 AWS 로그인 세부 정보

  • 서버리스 유틸리티 설치

    npm install -g serverless
    


    설치가 완료되면 노드 애플리케이션용 서버리스 유틸리티를 사용하여 구조를 생성할 수 있습니다.

    애플리케이션을 실행하기 위한 Dockerfile 생성

    faisalnizam@Muhammads-MBP sample % serverless create --template aws-nodejs-docker --path aws-nodejs-docker-demo
    
    ✔ Project successfully created in "aws-nodejs-docker-demo" from "aws-nodejs-docker" template (3s)
    
    


    일단 구성되면 다음과 같은 구조를 가져야 합니다.

    faisalnizam@Muhammads-MBP aws-nodejs-docker-demo % tree
    .
    ├── Dockerfile
    ├── README.md
    ├── app.js
    └── serverless.yml
    
    0 directories, 4 files
    
    


    serverless.yml에서 cat을 수행하면 terraform과 같은 공급자 섹션이 표시됩니다.

    provider:
      name: aws
      ecr:
        # In this section you can define images that will be built locally and uploaded to ECR
        images:
          appimage:
            path: ./
    
    


    이것은 docker 빌드가 하는 것처럼 정확한 마법을 수행하고 응용 프로그램을 빌드하고 도커 이미지의 콘텐츠를 가져올 위치와 이미지를 가져올 위치(이 경우 ECR)를 알려줍니다.

    이제 서버리스 유틸리티를 사용하여 serverless.yml에 프로필을 추가하고 간단한 명령을 실행하여 컨테이너를 쉽게 빌드하고 배포할 수 있습니다.

    faisalnizam@Muhammads-MBP aws-nodejs-docker-demo % serverless            
    
    Onboarding "aws-nodejs-docker-demo" to the Serverless Dashboard
    
    ? Do you want to login/register to Serverless Dashboard? No
    
    ? Do you want to deploy now? Yes
    
    Deploying aws-nodejs-docker-demo to stage dev (us-east-1)
    
    ✔ Service deployed to stack aws-nodejs-docker-demo-dev (237s)
    
    functions:
      hello: aws-nodejs-docker-demo-dev-hello
    


    위에서 볼 수 있듯이 이것은 이미지를 빌드하고 업로드합니다. API 게이트웨이와 같은 리소스를 람다에 연결하여 serverless.yml에서 다음 줄의 주석을 제거하여 서비스를 시작할 수 있습니다.

         events:
           - httpApi:
               path: /users/create
               method: get
    


    서버리스 배포 실행

    faisalnizam@Muhammads-MBP aws-nodejs-docker-demo % serverless deploy 
    
    Deploying aws-nodejs-docker-demo to stage dev (us-east-1)
    
    ✔ Service deployed to stack aws-nodejs-docker-demo-dev (56s)
    
    endpoint: GET - https://lkvr0lkbf6.execute-api.us-east-1.amazonaws.com/users/create
    functions:
      hello: aws-nodejs-docker-demo-dev-hello
    


    이제 API 게이트웨이를 사용하여 람다에 대한 프록시 GET이 있는 도커 컨테이너에 대해 엔드포인트를 구성했습니다.

    끝점: GET - https://lkvr0lkbf6.execute-api.us-east-1.amazonaws.com/users/create

    이제 우리는 모든 자동화된 방법을 보았습니다. 해독하고 모든 것을 수동으로 빌드해 보겠습니다.

    Lambda용 도커 컨테이너 수동 구축



    이제 애플리케이션의 작은 구조가 있으므로 빌드 및 배포를 시도할 수 있습니다.

    ECR 저장소에 로그인

    aws --region=me-south-1 --profile=aws-test ecr get-login-password --region  | docker login --username AWS --password-stdin .dkr.ecr..amazonaws.com
    
    


    필요에 따라 올바른 지역 및 계정 ID를 프로필로 대체하면 "로그인 성공"메시지가 표시됩니다.

    lambda 준비된 Docker 이미지 설정

    docker pull public.ecr.aws/lambda/nodejs:12
    
    


    docker cli를 사용하여 docker를 빌드해 보겠습니다.

    docker build -t 
    


    이미지를 푸시할 ECR 저장소 생성

    aws ecr create-repository --repository-name  --image-scanning-configuration scanOnPush=true
    


    태그 및 푸시 도커

    docker tag :latest .dkr.ecr..amazonaws.com/:latest
    docker push .dkr.ecr..amazonaws.com/:latest
    
    


    이제 serverless.yml에 정보를 추가하여 서버리스가 올바른 도커 레지스트리를 가리키도록 합니다.

    functions:
      someFunction:
        image: .dkr.ecr..amazonaws.com/@
    


    이 부분이 완료되면 서버리스 배포를 실행하여 람다에 도커 컨테이너를 배포합니다.

    좋은 웹페이지 즐겨찾기