PHPerKaigi 2024〜10年以上動いているレガシーなバッチシステムを Kubernetes(Amazon EKS) に移行する取り組み〜
PHPerKaigi 2024〜10年以上動いているレガシーなバッチシステムを Kubernetes(Amazon EKS) に移行する取り組み〜
概要 前提 規約 コンテナはエフェメラル(短命:ephemeral)であること .dockerignoreを有効活用する 不要なパッケージのインストールを避ける コンテナ毎に1つのプロセスだけ実行 レイヤーの数を最小に 複数行の引数はアルファベット順、改行すること Docker network 概要 bridge none host overlay ipvlan macvlan Docker Volume 概要 bind mount volume tmpfs mount Dockerfileを扱う まずはDockerfileを作成する! FROM:ベースイメージを作成 RUN: 任意のコマンドを実行する WORKDIR: ワークディレクトリを追加する レイヤーの確認 コンテナの生成と停止 imageを作成 runでコンテナを起動 stopでコンテナを停止 pruneでDockerのお掃除
はじめに コンテナをマネジメントする様々なサービスが登場し、コンテナを利用する敷居が下がってきています。今回はその中でも特に設定が簡単だと思われるAmazon ECSでGoのEchoサーバを立ち上げる方法を紹介します。 全体の流れ ECSで独自イメージのコンテナを立ち上げるには、以下の4つの手順が最低限必要です。 ECSで使用するロールをIAMで作成する VPCを作成する(defaultのVPCは使わない) ECRにDockerイメージをプッシュする ECSでコンテナを立ち上げる まずはこれらのサービスについて簡単に説明します。 サービスの概要 それぞれのサービスで何ができるかについて簡単に説明します。 IAM(Identity and Access Management) IAMはリソースに紐付ける事ができる権限設定を管理するためのサービスです。 IAMには「グループ」、「ユーザ」、「ロ
はじめに 業務で使用して少し詰まった箇所があるので、忘備録の為に記事にします。 今回はECRへPushするところまでです。(長くなるので2つに分けました) 続きはこちら。 【Go, AWS】ECS(Fargate)でGoを動かす(M1) Fargate起動して動作確認までやっています。 前提 Docker、ECR、ECSの概要についてはここでは説明しないので、よく分からない方は公式のドキュメントを参照してください。 環境 go 1.17 macOS 12.0.1 M1チップ 手順 ECRのリポジトリを作成する。 ECRへPushする。 2-1.ターミナルからAWS CLIを使ってレジストリに対して Docker クライアントを認証します。 2-2.Dockerfileをbuildする。 2-3.ECRへPushする用にbuildしたimageにtagをつける。 2-4.ECRへAWS CL
はじめに 【Go, AWS】DockerfileをECRへPushする(M1)の続きです。 今回はFargateで動かすところまでやります。 前提 Docker、ECR、ECSの概要についてはここでは説明しないので、よく分からない方は公式のドキュメントを参照してください。 Dockerfileやmain.goの中身は前回のこちらの記事に書いてあります。 【Go, AWS】DockerfileをECRへPushする(M1) 環境 go 1.17 macOS 12.0.1 M1チップ 手順 ECSクラスターを作成する。 タスク定義を作成する。 サービスを作成する。 解説 手順を解説していきます。 1. ECSクラスターを作成する。 ECSのクラスターに入り、「クラスターの作成」ボタンをタップします。 クラスターテンプレートの選択をします。今回はネットワーキングのみを選択。 クラスター名の入力と
はじめに Dockerfile、サッと書こうと思ったのに、書き始めたら意外と時間かかったりしますよね。 突き詰めるとすごく奥が深いなと思います。 公式のドキュメントでも、Dockerfileのベスト・プラクティスという形で公開してくれていますが、 これを毎回意識するのは大変です。 また、意識できていたとしても、複数人で管理していると、各個人のスキルレベルによって差が出てしまいます。 そんなときにおすすめのツールを見つけたので紹介します。 hadolintというツールです。 Haskell Dockerfile Linterの略だそうで、Dockerfileの静的解析を行ってくれるlintツールです。 hadolintを使うとこんな利点があります。 build前にシンタックスエラーなどに気付ける (地味にトライアンドエラーしてると時間食うんですよね...) 自然とベストプラクティスに則ったD
はじめに 皆さん、docker composeを利用しているでしょうか? 複数のdockerコンテナをまとめて立ち上げたり、環境変数を定義できたり便利ですよね。 今回はある程度docker composeを利用している方向けに私が便利、便利そうと感じたdocker composeの機能を挙げてみました。 docker compose cli v2を利用 docker-composeではなく docker composeコマンドも利用可能になってます。 Docker Desktopでは v3.4.0から利用可能で、基本的にはコマンドの互換性あります。 Docker image名やコンテナ名のプレフィックスをディレクトリ名から変更する 通常は ${ディレクトリ名}_${サービス名}でイメージが作成されます。 環境変数COMPOSE_PROJECT_NAMEでプロジェクト名を指定することにより
先日、徳丸本(正式名称: 安全なWebアプリケーションの作り方 第2版)の実習環境 Docker 対応バージョンが公開されました。 こちら、M1/M2 Mac にも対応したものになっています。 リリース内容を確認してみましたが、解説されている内容は既存の部分からの変更点のみとなっています。 せっかくなので、1から新規で M1 Mac 環境に構築した方法の記録です。 前提条件 初心者向けではありません。 ある程度の知識がある方向けに、簡略化して記載しています。 初心者向けに記事を寄稿しました。 初心者の方は、リンク先の記事をご確認ください。 ウェブ・セキュリティ学習のため徳丸本を読んでみた 第3回 M1/M2 Mac に対応!Docker 環境で実習環境を構築しよう https://www.school.ctc-g.co.jp/columns/mikumo/mikumo03.html Hom
2022年12月4日よりDocker版実習環境を提供します。オリジナルの実習環境はVirtualBox上の仮想マシンとして提供していますが、M1/M2 MacではVirtualBoxが動作しないことから、Docker版として提供するものです。 元々はM1/M2 Macを想定してARM64アーキテクチャ用に作りましたが、AMD64のWindowsやMacでも動作するように作っています。 Dockerコンテナの起動方法 ダウンロードページから実習用仮想マシン (Docker版)をダウンロードして適当なディレクトリに設置してください。 以下のコマンドによるコンテナーのビルド及び実行をします。 $ cd <wasbook-docker.zip を設置したディレクトリ> $ unzip wasbook-docker.zip # あるいは適当な方法でのzip解凍 $ cd wasbook-docker
Docker Desktop の代わりになるかも。AWS が OSS として公開した「Finch」を使ってみた。AWSDockercontainerfinch 概要 2022/11/23 に唐突に公開された Finch なるOSSがAWSより公開されました。 どうやら、Docker Desktopの代わりとなりそうな、ローカルマシン上に仮想環境とコンテナランタイム、ビルドツールなど一式を楽〜に導入できるツールっぽいので試してみたという内容です。 Finchとは つい先日(2022/10/27)に、Docker社が、Docker の Team プラン、Business プランを値上げするニュースが発表された。期限も短く、急いで対応に追われた企業も多いのではないでしょうか・・・ まさかこのタイミングでという感じですが、AWS よりローカルマシン上に仮想環境とコンテナランタイム、ビルドツールなど
DockerでDevOpsな環境を整える ここ数年、炎上してる案件にアサインされてる。。 傾向として、svnでブランチがいっぱい作ってマージでデグレしたり、 Excelでバグ表を管理したり、ガントチャートを手作業で管理したり、 結合テストの段階までプログラムを動かしたテストをしてない、 テストが自動化されていないと惨憺たる状況が見られる。。。 正直、付き合ってられない😭 チンパンジーを相手にしてる気分、 ということで、docker-composeを使って、進捗/バグ管理にRedmine ソース管理と自動テストのためにgitlab,gitlab-runnerの環境を整えてみました。 ソースコードやバグの管理、テストの自動化などに使っていただければ幸いです。 docker-compose.ymlファイル version: "3" volumes: # gitlab関連Volume gitla
概要 2021年の後半にDocker Compose V2がリリースされました Docker Compose V2はCompose Spec[1]に準拠しているため、docker-compose.ymlもその仕様に則った書き方ができるようになっています services: app1: image: awesome/webapp configs: - my_config secrets: - server-certificate app2: image: awesome/database extends: service: app1 configs: my_config: file: ./my_config.txt secrets: server-certificate: file: ./server.cert services: app1: configs: - source: my_co
【2022/2/26 追記】 主にはてブコメントで様々なご指摘を頂いたので、タイトルの修正&内容を一部追記しました。分かりにくいタイトルを付けてしまい申し訳ございません。ご指摘ありがとうございます。 もともと本記事は自分用のメモを兼ねて駆け出しエンジニアの人が数人参考にしてくれたらいいかな、程度の気持ちで書いたものでした。 現在はてなブックマークのテクノロジーカテゴリーで 1 位になっており、予想の 1000 倍以上の人に見ていただける記事になってしまいました。 今後も精進します、ありがとうございます! 特に理由もなくローカルに MySQL を入れて遊びたくなる気持ちって定期的に湧きますよね。 私は湧きます、半年に 1 回ぐらい。 業務ではフロントを触ることが多く、DB はそれほど触りません。 そのため久々に MySQL をローカルで立ち上げようとするといつも手順を忘れてしまっていて、なん
この記事はFixer Advent Calendar 9日目の記事です。 はじめに 最近CKADの受験して一旗上げようと画策しているなむゆです。 Kubernetesについて学ぶ中で、腕試しに使えそうな面白そうなサイトを見つけたので紹介してみようという回です。 Game of PODsとは Game of PODsとは、無料で遊べるKubernetesの問題集です。 Kubernetesクラスターにアプリケーションを展開したり、クラスターで起きている問題を解決することを通してそれらの方法を学ぶことができます。 この問題集はKodeKloudというサービスに提供されている教材のひとつで、KataKodaという教材用環境サービス内でホストされている仮想環境にアクセスしてハンズオン形式で課題を解くことができることが特徴です。 問題の内容としては、あるアーキテクチャが与えられて、「このアプリケーシ
業務やプライベートでのハンズオンを通して得た知見を元に、dockerfileの実践的な書き方を記載いたしました。 軽量なdocker imageを作る観点とセキュリティーの観点を踏まえた内容になっております。なにか付け足す点などあればコメントいただければと思います。 軽量なimageを作る観点 軽量なimageの使用 Dockerfileでimageを指定する際に、軽量なimageを使用することが進めれている。 docker docsでも代表的な軽量なimageのalpineをおすすめしている。 Whenever possible, use current official images as the basis for your images. We recommend the Alpine image as it is tightly controlled and small in s
恥ずかしながら Docker をほぼ触ったことがなかったので、基礎的なことを学びました。 学びながら「こんな絵があったら理解しやすかったなー」と感じていた絵を自分で描きました。 せっかくだから整理して公開したいと思います。 同じ様な方の役に立ったら、とても嬉しいです。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く