Copilot est le successeur de Amazon ECS CLI. Un outil de construction d'environnement développé pour faciliter l'exécution des conteneurs dans ECS. Les ressources AWS créées avec Copilot sont gérées par CloudFormation Contrairement à AWS CDK (un outil qui gère les modèles CloudFormation par programmation), vous avez rarement besoin d'écrire du code!
Peut être installé avec homebrew ou directement avec curl
# homebrew
$ brew install aws/tap/copilot-cli
#Installer directement avec curl
$ curl -Lo /usr/local/bin/copilot https://github.com/aws/copilot-cli/releases/download/v0.3.0/copilot-darwin-v0.3.0 && chmod +x /usr/local/bin/copilot && copilot --help
#Confirmation de version
$ copilot -v
Préparons d'autres éléments nécessaires
Déployons réellement l'application Web sur ECS en utilisant Copilot!
Vous pouvez vous référer à l'état d'exécution du déploiement et au modèle CloudFormation à exécuter en suivant les étapes ci-dessous. Vous pouvez également vérifier les ressources AWS qui seront créées ici. ** AWS Console> CloudFormation> Stack **
Créez l'application que vous souhaitez déployer à l'aide de docker Cette fois, déployons cette application rails en utilisant copilot
https://github.com/git-gen/copilot-rails-deploy
** Réglage initial **
# config/database.yml
default: &default
adapter: mysql2
encoding: utf8
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
database: ## RDS database ##
host: ## RDS host ##
username: ## RDS username ##
password: ## RDS password ##
development:
<<: *default
test:
<<: *default
production:
<<: *default
$ docker-compose build
$ docker-compose up -d
Si vous pouvez le confirmer sur http: // localhost: 3000, vous êtes prêt à partir!
C'est le mécanisme de l'application créée par Copilot Je vais créer ceux-ci un par un
--Application: Résumé des applications Copilot --Enviroment: un mécanisme pour diviser les applications par environnement tel que l'environnement de test et l'environnement de production --Service: application de conteneur fonctionnant sur ECS
Environments · aws/copilot-cli Wiki · GitHub
Créer une application avec Copilot À ce moment-là, il vous sera demandé le nom de l'application, alors définissons-le
$ copilot app init
What would you like to name your application? [? for help]
> copilot-app
#Confirmation de l'application créée
$ copilot app init
En créant plusieurs environnements, vous pouvez diviser l'environnement en un environnement de test et un environnement de production. Il vous sera demandé de définir le VPC / sous-réseau lors de la création de l'environnement, Les paramètres par défaut généreront un nouveau VPC / sous-réseau / groupe de sécurité
$ copilot env init
What is your environment's name? [? for help]
> development
#confirmation d'environnement
$ copilot env ls
** Si vous souhaitez utiliser un VPC / sous-réseau existant, ajoutez une option comme celle-ci ** À propos, le paramètre du groupe de sécurité est Il semble que Copilot ne le supporte pas encore et ne puisse pas être configuré
$ copilot env init \
--import-vpc-id vpc-****** \
--import-public-subnets subnet-******,subnet-****** \
--import-private-subnets subnet-******
Ajouter un service de rails J'appelle des rails directement depuis ALB sans utiliser nginx, etc.
$ copilot svc init
Which service type best represents your service's architecture? [Use arrows to move, type to filter, ? for more help]
> Load Balanced Web Service
Backend Service
What do you want to name this Load Balanced Web Service? [? for help]
> app
Which Dockerfile would you like to use for app? [Use arrows to move, type to filter, ? for more help]
> ./Dockerfile
#confirmation de service
$ copilot svc ls
Le Dockerfile ressemble à ceci Veuillez vous reporter ici pour la conversion Docker des rails! https://docs.docker.com/compose/rails/
FROM ruby:2.7.0-alpine3.11
ENV LANG=C.UTF-8
ENV TZ=Asia/Tokyo
RUN apk update && \
apk upgrade && \
apk add --no-cache \
gcc \
g++ \
git \
libc-dev \
libxml2-dev \
linux-headers \
make \
nodejs \
mariadb-dev \
tzdata && \
apk add --virtual build-packs --no-cache \
build-base \
curl-dev
RUN mkdir /app
WORKDIR /app
COPY Gemfile /app/Gemfile
COPY Gemfile.lock /app/Gemfile.lock
RUN bundle install
COPY . /app
RUN apk del build-packs
# Add a script to be executed every time the container starts.
COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]
EXPOSE 3000
# Start the main process.
CMD ["rails", "server", "-b", "0.0.0.0"]
Vous êtes maintenant prêt à déployer! Vérifiez que le fichier de paramètres a été généré dans le répertoire racine du projet.
copilot-rails-deploy/
├ copilot/
│ ├ app/
│ │ └ manifest.yml
│ └ .workspace
│...
Vous pouvez définir les spécifications et les constantes des tâches dans manifest.yml La configuration de la voiture latérale ECS, etc. peut également être définie ici
name: app
type: Load Balanced Web Service
image:
build: ./Dockerfile
port: 3000
http:
path: "/"
healthcheck: "/health_check"
cpu: 1024
memory: 2048
count: 1
variables:
RAILS_ENV: development
Bien qu'il s'agisse d'une spécification de définition de tâche, Les nombres pris en charge sont fixes, donc si vous souhaitez le modifier, définissez-le dans cette plage.
Valeur CPU | Valeur mémoire(MiB) |
---|---|
256 (.25 vCPU) | 512 (0.5 GB)、1024 (1 GB)、2048 (2 GB) |
512 (.5 vCPU) | 1024 (1 GB)、2048 (2 GB)、3072 (3 GB)、4096 (4 GB) |
1024 (1 vCPU) | 2048 (2 GB)、3072 (3 GB)、4096 (4 GB)、5120 (5 GB)、6144 (6 GB)、7168 (7 GB)、8192 (8 GB) |
2048 (2 vCPU) | 4096 (4 GB) ~ 16384 (16 GB) (1024 (1 GB)Incrément de) |
4096 (4 vCPU) | 8192 (8 GB) ~ 30720 (30 GB) (1024 (1 GB)Incrément de) |
Déployez l'application avec Copilot
$ copilot deploy
Si le déploiement réussit, l'URL sera écrite dans la ligne de commande, donc Si vous accédez et ouvrez l'écran des rails, le déploiement est réussi!
Les ressources AWS créées avec Copilot peuvent être supprimées en bloc avec la commande delete Supprimons l'application créée cette fois
#Voir l'application copilot
$ copilot app ls
copilot-app
#Supprimer l'appli
$ copilot app delete copilot-app
Are you sure you want to delete application copilot-app? Yes
Recommended Posts