タグ

ブックマーク / deeeet.com (13)

  • Kubernetes YAMLの壁

    Kubernetes に入門しようする人を躊躇させる原因のひとつは間違いなくYAMLによる設定ファイルだろう.Kubernetesにアプリケーションをデプロイするとき,例えそれがシンプルなサーバーアプリケーションであっても,多くのYAMLファイルを手で記述する必要がある.初心者を慄かせるその大量のYAMLはよくwall of YAMLYAMLの壁)などと揶揄される. 初心者でなくてもKubernetesYAMLは煩わしい.YAML自体は単なるKubernetes APIへのリクエストボディであり慣れてしまえば実はそんなに難しくない.しかし記述する内容のほとんどがBoilerplateであり何度も書いていると飽き飽きする(実際にはほとんどがコピペだが).あるアプリケーションの開発環境と番環境のYAMLファイルをいかに効率的に管理するかについて決定的な方法もない. そもそもKuberne

  • Go言語でファジング

    この記事はGo Advent Calendar 2015の21日目の記事です. 今年もGoコミュニティーから多くのツールが登場した.その中でも異彩を放っていたのがGoogleのDynamic testing toolsチームの@dvyukov氏によるgo-fuzzである. go-fuzzはGo関数のファジングを行うツールである.このツールはとても強力で標準パッケージで100以上,golang.org/x/パッケージで40以上,その他を含めると300以上のバグを発見するという実績を残している(cf. Trophies). 記事ではこのgo-fuzzの紹介を行う. ファジングとは? Fuzz testing - Wikipedia, the free encyclopedia ソフトウェアの脆弱性検出におけるファジングの活用 「ファジング」とはソフトウェアのテスト手法である.テスト対象となる

  • Herokuの'docker:release'の動き

    Herokuの'docker:release'の動き Introducing ‘heroku docker:release’: Build & Deploy Heroku Apps with Docker HerokuDockerを使ったツールを提供し始めた.一通り触ってコードもちょっと読んでみたので現時点でできること,内部の動きについてまとめる. TL;DR Herokuのデプロイ環境とおなじものをDockerでつくれる Buildpackを使わないでDockerfileからSlugを作れる 自分の好きなDockerイメージをHeroku上で動かせるようになるわけではない. 何ができるのか まず何ができるようになったのかについて簡単に書く.プラグインをインストールするとDockerコマンドが使えるようになる. $ heroku plugins:install heroku-docker

  • デプロイ自動化とServerspec

    Serverspecの献ありがとうございました.とても面白かったです.詳しい書評はすでに素晴らしい記事がいくつかあるので,僕は現チームでどのようにServerspecを導入したか,どのように使っているかについて書きたいと思います. Serverspec導入の背景 今のチームではサーバーのセッアップおよびデプロイにChefを使っている.にも書かれているようにこのような構成管理ツールを使っている場合はそのツールを信頼するべきであり,Serverspecのようなテストツールは必要ない.僕らのチームもそのような理由でServerspecの導入には至っていなかった. しかしアプリケーションが複雑になりChefのレシピも混沌とするようになるとそれは成立しなくなる.見通しの悪いレシピはChefへの信頼度を落とす.信頼度の低下はデプロイ不信に繋がり人手(筋肉)によるテストが始まる. サーバーの数がそ

  • DockerHubのAutomated Buildsをフックして最新のDockerコンテナをデプロイする

    DockerHubのAutomated Buildsをフックして最新のDockerコンテナをデプロイする DockerHubのAutomated Buildsは,GithubやBitbucketへのgit pushをフックしてレポジトリ内のDockerfileを元にDockerイメージをビルドする機能である. イメージを使う側からすれば,それがどのようなDockfileから作られているか可視化され,常に新しいイメージがあることが保証されるので安心感がある.イメージを提供する側からすればDockerfileを更新してgit pushすれば自動でビルドしてくれくれるので楽という利点がある.そのためDockerHubにイメージを上げる場合は,docker pushを使うことはほとんどなくてこのAutomated Buildsを使うのが普通である. このAutomated BuildsはWeb h

  • Dockerの諸問題とRocket登場の経緯

    2014年の後半あたりからDockerDocker Inc.への批判を多く見かけるようになった(もちろんもともと懸念や嫌悪を表明するひとはいた).それを象徴する出来事としてCoreOSチームによる新しいコンテナのRuntimeであるRocketのリリースと,オープンなアプリケーションコンテナの仕様の策定を目指したApp Containerプロジェクトの開始があった. CoreOS is building a container runtime, Rocket 批判は,セキュリティであったり,ドキュメントされていない謎の仕様やバグだったり,コミュニティの運営だったり,と多方面にわたる.これらは具体的にどういうことなのか?なぜRocketが必要なのか?は具体的に整理されていないと思う.これらは,今後コンテナ技術を使っていく上で,オーケストレーションとかと同じくらい重要な部分だと思うので,ここ

  • わかりやすいREADME.mdを書く

    GitHubなどに自分のツールやライブラリを公開するとき,README.mdは重要な役割を担っている.レポジトリを訪れたユーザが自分のツールを使ってくれるか否かの第一歩はREADME.mdにかかっている,と言っても過言ではない.実際自分が使う側になったときも,まずREADME.mdを読んで判断していると思う. 成功しているプロジェクトを参考にしつつ,自分が実践していることをまとめておく.ここに書いていることはあくまで(自分の中で)最低限的なものである.プロジェクトが成長していくにつれてREADMEはあるべき姿に成長していくべきだと思う. READMEの役割 README.mdには大きく2つの役割がある. プロジェクト,ツールの使い方,インストール方法 プロジェクト,ツールの宣伝 元々READMEは前者の役割しかなかったが,GitHubの仕組み上,後者の役割も徐々に重要になっている. さらに

  • libswarmの現状と将来 | SOTA

    libswarmの現状と将来 DockerCon14で新たに発表されたDockerによる新しいOSSであるlibswarmをざっと触ってみたので,現状何ができて,将来的にどういったことができそうになるかを簡単にまとめておく. TL;DR libswarmを使うと複数ホストやサービス(自社サーバー,DigitalOcean,Amazon EC2,Orchardなど)に存在するDockerコンテナを,1つのホストに存在しているかのように扱うことができるようになる.Dockerホストを抽象化したのに対して,libswarmは複数ホストを抽象化する. libswarmを使ったswarmdコマンドを使って,UNIXのパイプのように複数ホストやサービスを連鎖的につなげる. デモ libswarmで何ができるのかは,DockerCon14でのデモ動画“Orchard + libswarm demo f

  • DockerによるマルチホストのPaaS flynnの概要とそのアーキテクチャー

    “flynnの時代” “Docker meetup tokyo #3”で発表してきた.内容は,Dockerの応用の1つであるOSSでPaaSをつくるflynnというプロジェクトの概要とそのアーキテクチャーの紹介.このflynnというプロジェクトの中には,Dockerの面白い使い方がたくさん詰まってるため,今後Dockerを使う人が,その応用の際の参考になればという思いで紹介させてもらった. 今回の発表のために資料を集めまくり,理解できない部分は出来る限りコードも読んだ.発表スライドの補完にもなると思うので,そのメモ書き(一応体裁は整えた)を公開しておく. デモ 以下は,簡単なデモ. やっていることは以下. nodeのアプリケーションをデプロイ ルーティングの追加 スケール コマンドを含めた詳しい解説は以下で解説する. 前提知識 (Herokuの動作) まず,前提知識としてPaaS (ここで

  • Dockerコンテナ間のlink,database.ymlの書き方

    Dockerコンテナ間のlink,database.ymlの書き方 DockerはLinksというコンテナ同士の連携を簡単に行う仕組みをもつ. これは,DB用のコンテナとアプリケーション用のコンテナの連携を行いたいときなどに有用になる. 例えば,1337ポートがEXPOSEされたcontainer1という名前のコンテナとの連携を行いたいとする. このとき以下のように,-link 連携したいコンテナ名:エイリアス名で新しいコンテナを起動すると, そのコンテナ内に連携したいコンテナのポート番号やIPをもった環境変数が現れる. docker run -d -link container1:alias user/sample bash root@48408a38c9b2:/# env ALIAS_PORT_5432_TCP_ADDR=172.17.0.2 ALIAS_PORT=tcp://172.

  • Dockerとは何か?どこで使うべきか?

    この記事はDockerに関する実験的な記事や,Buildpackを使ってHeroku AppをDocker Containerとして使えるようにする“building”の開発などで知られるCenturyLink Labsの “What is Docker and When To Use It”の翻訳です. Dockerとは何か?Dockerをどこで使うべきか?についてよく見かける記事とは違った視点から説明されています. 翻訳は許可をとった上で行っています. Dockerとは何でないか Dockerとは何かを説明する前に,Dockerは何でないかについて述べる.Dockerの否定形は何か?Dockerの制限は何か?Dockerが得意でないことは何か? DockerLXCのようなLinux Containerではない DockerLXCだけのラッパーではない(理論的には仮想マシンも管理でき

  • Packerを使ってChef/Puppet/AnsibleでDockerのイメージをつくる

    Packerを使ってChef/Puppet/AnsibleでDockerのイメージをつくる Packerは,Vagrantの作者であるMitchell Hashimoto氏によって開発が進められているVirtualBoxやVMWare,Amazon EC2などの仮想マシンのテンプレートの作成を行うツール.VagrantのVirtualBox用のBoxを作るveeweeに置き換わるツールとして知られている.最近のアップデートDockerのイメージのビルドをサポートした. TL;DR Packerを使えばDockerのイメージをDockerfileを使わずビルドすることができる つまり,Dockerfileの特有な記述を使わず,今まで慣れ親しんできたChefやPuppet,Ansibleのようなプロビジョニングツールを使ってDockerのイメージをビルドできる. 参考 Dockerイメージの

  • BrewfileでHomebrewパッケージを管理する

    BrewfileでHomebrewパッケージを管理する この記事は1分で実現できる有用な技術 Advent Calendar 2013の24日目の記事です. Brewfileを使えば,Bundlerでrubygemsを管理するようにHomebrewのパッケージを管理できる.Brewfileのあるディレクトリで $ brew bundle とすれば,Brewfileに書かれたパッケージがすべてインストールされる.これはHomebrew公式のコマンドであり,特別なインストール等は必要なく,最新版にアップデートすればすぐに使うことができる. これを使えば,dotfilesに加えて自分のbrewパッケージを管理しておくこともできるし(tcnksm/dotfiles/Brewfile),imagemagickのようにプロジェクトで必要になるパッケージをBrewfileとして共有しておくこともできる.

    yugui
    yugui 2014/02/08
  • 1