プログラミング初心者がアーキテクトっぽく語る

見苦しい記事も多数あるとは思いますが訂正しつつブログと共に成長していければと思います

コンテナ

<環境構築不要>お手軽にKubernetesを試す

Kubernetesの公式Tutorial環境で自作コンテナのデプロイを試した話です。 動機と結果まとめ 勉強のために自作の超簡単サービスをDockerやAWSに簡易的にデプロイしてみました。 k8sでも試したいと思ったのですが環境を用意するほどの気力と余裕がありません。…

docker-composeを使ってみる

dockerしか使ったことない人間がdocker-composeを使います。 動機 Flaskアプリケーション作成のTutorialをやったらコンテナ化したくなりました。 コンテナ化したら今度はnginxコンテナやMySQLコンテナと連携させたくなりました。 連携させたら複数のコンテナ…

DockerhubへのイメージのPush

Dockerhubにアカウントを作成すると自分でBuidしたDockerイメージをリポジトリにpushすることができます。リポジトリのイメージはdocker pullで取得することができます。 Dockerhubは利用するけどアカウントは持っていない、という人は少なくないと思います…

API Gateway

API Gawewayという言葉をよく目にするようになった。 アーキテクチャ議論でよく出てくるのでなにを指しているのか理解しておきたい。 API Gatewayなしの場合 クライアントは「発注」という処理のために複数のサービスをREST APIで呼び出す 各サービスはTLS、…

KubernetesのServiceの種類

KubernetesのServiceの種類については以前、名前だけ紹介した。 architecting.hateblo.jp ここではそれぞれの概要について触れる。 ClusterIP クラスタ内でPod同士が通信するためのService 名前解決を利用できる デフォルト NodePort 簡易的な外部との接続を…

Istioとはなにか

以前、サービスメッシュがなぜ必要なのかをこちらの記事で紹介した。 architecting.hateblo.jp 今回はサービスメッシュの実装の一つであるIstioについて取り上げる。 サービスメッシュは執筆時点ではまだ新しい技術であり変化が激しい。実装間の差も大きく、…

その他のKubernetesの重要なオブジェクト

「Kubernetesの基礎」ではPodとServiceについて触れたがそれ以外のオブジェクトについては紙面の都合上触れることができなかった。 architecting.hateblo.jp ここでは前回、書ききれなかったKubernetesの重要なオブジェクトを紹介する。 Deployment Podの上…

Kubernetesの設定

Kubernetes(k8s)には複数の設定方法がある。 今回はKubernetesの設定方法について紹介する。 設定方法 k8sがサポートする設定方法を以下に示す。 kubectlコマンドで手続き的に設定する kubectl run/scale/expose Manifestファイルを手続き的に設定する kub…

Kubernetesの基礎

今のご時世はなんでもコンテナだ。そしてコンテナでサービスを提供するにはKubernetes(以下、k8s)が必要だ。 architecting.hateblo.jp 今回はk8sの概要について見ていこう。 歴史 Googleで前身となるBorgが開発された Borgの開発者を中心にGoogleでk8sの開…

なぜKubernetesを使うのか

今のご時世はなんでもコンテナだ。少なくとも会社の偉い人たちはそう思っている。 コンテナと言えばDockerだ。Dockerがあればコンテナに関わることは一通りできる。 しかし「Kubernetes」という単語もよく耳にする。Dockerで十分ではないのだろうか? 今回は…

Dockerのネットワークのタイプ

Dockerでコンテナ同士が通信するためにはネットワークが必要だ。 Dockerは複数のネットワーク接続方式をネットワークドライバというPluggableな形式でサポートしている。 ここではDockerが提供するネットワークについて見ていこう。 Default Bridge Dockerは…

RUN、ENTRYPOINT、CMDのexec表記とshell表記

前回、dockerfileのENTRYPOINTとCMDについて紹介した。 architecting.hateblo.jp RUN、ENTRYPOINT、CMDにはexec表記とshell表記の2つの記法がある。 以降、CMDを例にして2つの記法について見ていく。 shell表記 shell表記で記述した例を示す。 CMD echo hi s…

dockerfileのENTRYPOINTとCMD

dockerfileのENTRYPOINTとCMDは、どちらもコンテナで実行するプロセスを指定するInstructionだ。 それぞれ単独で利用することも、組み合わせて利用することもできる。 どのように違うのか、どのように組み合わせることができるのか見ていこう。 CMD まずCMD…

「docker run -it」にするとコンテナがすぐに終了しない理由

Dockerを使ったことがある人ならこんなことを経験したことがあるかもしれない。 このように実行するとコンテナがすぐに終了してまう。 docker run ubuntu:latest このように「-it」を付けて実行するとコンテナは終了しない。 docker run -it ubuntu:latest …

Twelve-Factor App

Twelve-Factor Appはモダンなアプリケーションの開発、Deploy、Scaleを成功させるための12のBest Practiceである。 2012年にHerokuのAdam Wiggins氏が発表し、https://12factor.net/にて公開されている。 Twelve-Factor Appはマイクロサービスを前提としてお…

Container Firewall

Kubernetes(以下、k8s)にHostingするマイクロサービスでは「Container Firewall」が注目されてきている。 「Container Firewall」とはなにか?いままでのFirewallとはなにが違うのだろうか? 従来のZone based Security 従来のセキュリティ対策はネットワ…

サービスメッシュとは

KubernetesにHostingされたマイクロサービスでは「サービスメッシュ」がよく使われている。 「サービスメッシュ」はサービス間の通信を制御するコンポーネントだ。しかしサービス間で通信する機能は既にそれぞれのサービスの中で実装されている。なぜサービ…

コンテナ技術のメリット

メリット 1. 起動が早い 2. イメージが軽い 3. 処理が少し早い デメリット 1. OSが選べない 2. カスタマイズ性が低い 3. HW障害やHW交換に弱い 4. ロールバック機能がない 考察 ソフトウェアの実行環境には以下の3つの選択肢がある。 物理サーバ 仮想マシン …

コンテナ技術の歴史

chroot control groups LXC Docker 現在 今のご時世はなんでもコンテナだ。docker、kubernetesは必須知識となった。 しかしコンテナは技術的には新しいものではない。 そんな雑学をひけらかすとユーザから変に信頼されたりたりするので知っておくとよいだろ…

よく使うDockerコマンド

イメージ管理 docker search <image> docker pull <image>:<tag> docker image ls docker image rm <image> docker image build -t <tag> . docker image history <image> docker commit <container> <image> コンテナ管理 docker run <option> <image>:<tag> オプション コマンド 複雑な実行例 参考 dock</option></image></container></image></tag></image></image>…