AWSEKSにLaravelアプリケーションをデプロイしたいと思います。
私のアプリケーションはLaravelのジョブとキューを使用しています。Laravelに付属の職人ユーティリティを使用してキューワーカーを管理できます。
php artisan queue:work
php artisan queue:restart
キュープロセスを監視するためにSupervisordを使用します。
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /home/forge/app.com/artisan queue:work sqs --sleep=3 --tries=3
autostart=true
autorestart=true
user=forge
numprocs=8
redirect_stderr=true
stdout_logfile=/home/forge/app.com/worker.log
コンテナーがデプロイされたときにキューを開始するために、DockerfileでENTRYPOINTスクリプトを使用しています。
#!/usr/bin/env bash
##
# Ensure /.composer exists and is writable
#
if [ ! -d /.composer ]; then
mkdir /.composer
fi
chmod -R ugo+rw /.composer
##
# Run a command or start supervisord
#
if [ $# -gt 0 ];then
# If we passed a command, run it
exec "$@"
else
# Otherwise start supervisord
/usr/bin/supervisord
fi
私が理解できないのは、アプリケーションの複数のレプリカを実行している場合、実行中のコンテナーでキュープロセスをリモートで停止および開始するにはどうすればよいかということです。
EC2では、AWS SSMを使用して、複数のインスタンスで同時にシェルコマンドを実行できます。
AWS EKSにも同様の利用可能なものはありますか?
または、一般的に、AWS EKSの複数のコンテナで実行されているキュープロセスをどのように管理しますか?
一般に、一度に複数のコンテナでコマンドを実行する場合は、たとえば次のように実行できます。
for pod in $(kubectl get pods -o jsonpath='{.items[*].metadata.name}' -l app=myapp); do
kubectl exec "$pod" mycommand
done
これはmycommand
、app=myapp
ラベルが付いたすべてのポッドの最初のコンテナで実行されます。クラスタがEKSで実行されているか、他の場所で実行されているかは関係ありません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加