そんな今日この頃の技術ネタ

本家側に書くほどでもない小ネタ用

kubernetes学習その4 GCRの認証

 Dockerイメージの保管場所としてGoogle Container Registry(GCR)を用いる場合、同じプロジェクト内の例えばGoogle Container Engine(GKE)なんかでpullする分には認証も要らないのだけど、開発環境としてminikubeだったり他の場所でk8sを動かしたりしている場合には認証を行う必要がある。

blue1st-tech.hateblo.jp

 個人アカウントでの認証を用いる場合とサービスアカウントを発行して用いる場合の2通りを示した。

続きを読む

kubernetes学習その3 スケールとかB/Gデプロイとか

引き続きk8s学習話。

前回k8sでPodとServiceという概念や、その中で名前やラベルといった抽象的な表現を用いて扱うことを学んだ。

blue1st-tech.hateblo.jp

今回は実際にそれを利用してスケールしたりB/Gデプロイ的なことをしてみる。

続きを読む

kubernetes学習その2 最低限文化的なサービスを立ち上げてみる

引き続きkubernetesの使い方について学習。

前回作ったminikubeの環境で実際にyamlファイルを用いた操作を行ってみる。

blue1st-tech.hateblo.jp


最低限把握しておくこと

作業の前にザックリと用語と概念を把握。

  • Node: 実際にコンテナが動いているマシンのこと。kubectl get nodeで一覧を見ることができる。
  • Pod: 同一のNode上で動かすコンテナ群。スケールする場合このPod単位での操作になるので、機能を実現する最低単位で分割していくと良さそう。
  • Service: それぞれのNode/Podで動作しているコンテナ同士や外部との通信を司る概念。
  • Resource: PodとかServiceとかいった概念をk8sではこう呼ぶらしい。
  • Manifestfile: Resourceの設定ファイルで、yamlやjsonなどの形式で記述できる。

今のところの大雑把な理解でいえば、Podがdocker-compose.yamlでいうところのservicesおよびvolumes項、Serviceがnetworks項にあたりそう。

この業界では「インスタンス上で動く何かしらの機能」を指して「サービス」と言ったりする(現にこの記事のタイトルもdocker-composeは前者の意味で使ってる)わけだけど、それと混同しないように注意したい。

続きを読む

webpackのビルドが尋常じゃなく長い→不必要な遅延読み込み処理をやめたら改善した

あまりフロントエンドには明るくない+チームもそこまでフロントに力を入れてる人がいないという感じなんで厳密さには欠けるネタかもしれないけどご勘弁を。


現象

Vue Adminをベースとした管理画面開発を行っている案件。

github.com


先に述べたようにあまりSPAに明るいチームではないので手探りで開発していたのだけど、気付いたらビルド時間が20分近くもかかるようになっていた。

具体的には

91% additional asset processing

の箇所がやたらと時間を食っている模様。


ファイル数が多くなってきたというのもあるし、ググれば「ビルド時間かかる」系の話は色々引っかかるけれど、それにしたって長過ぎる。

流石にこれは今後の作業に差し支えるなということで調査をしてみた。

続きを読む

kubernetes学習その1 minikubeを導入して学習環境を整える

どうも世の中の趨勢はkubernetesを使う方向で決してる感じがあるわけで、そろそろ押さえておかねばなるまいと勉強しはじめた今日この頃。

一年前に前職でDockerのオーケストレーションツールを検討していた頃はまだどれが有力とも言いづらい状況だったし、導入も運用もなかなか大変そうな雰囲気だったのでスルーしていたのだけど、今では色々なPaaSがマネージドな環境を提供し始めたし、公式でminikubeというローカル環境が用意されたということで学ぶには丁度よいタイミングになったといえると思う。


「いうてもdocker-composeみたいなもんでしょう」とタカをくくって始めてみたのだけど・・・いやはや独特の概念・用語が沢山あるやら、移行しようにも必ずしも一対一で機能が対応しているわけではなくて頭を捻らねばならないやら。

学習コストは低くないというか、なまじdocker-compose慣れしてしまうと戸惑う部分もある。

ただ、実際に手を動かしてみると例えば起動・終了をトリガーとしたコマンドの実行やcron的な定期実行を定義できたり、何よりオートスケールを考慮した作りになっていたりと、なるほど実運用を見越した合理的な機能構成になっていると感じられる。

そんなわけで、学習環境としてminikubeをセットアップするところまで今回は紹介しようと思う。

続きを読む

Docker for Macが重くてしんどくなってきたのでdocker-syncについて調べてみた

OSXでWebアプリケーションを開発する上でDocker on Macは非常に便利ではあるのだが、ファイルシステムの関係上、 多数のファイルをマウントし書き換えが高頻度で発生するような用途では動作が非常に重くなってしまう。

(僕の場合だと最近はWebpackのdev-serverによるライブロードを使ったフロントエンド開発をやってるんだけど、これがファイル数が増えるにしたがって激烈に重くなってきたのだ・・・)

そこでファイル転送によって擬似的にマウントしているかのような動作を実現し、 動作速度の低下を回避するツールがdocker-syncである。

docker-sync by EugenMayer

github.com

続きを読む

突然Dockerコンテナ内からネットワークに繋がらなくなったらiptablesを疑ってみよう

ちょっと前まで問題なく使えていたはずのイメージが、 ある日起動してみたらどうもネットワークに接続できない。

イメージは当然作成時と同じものだし、Dockerまわりの設定は変えてない、 ネットワークも別に阻害するような設定はしてないはずなのに・・・

結論からいえば、 ホスト側のiptablesを別件でも再起動するとDockerのデーモン起動時に設定した項目がリセットされてしまうことが原因だった。

僕は前職でこの件でかなりの時間を無駄にした経験があったのですぐに気づけたけど、 案外こういう話って記事で見かけなくて「これからDockerはじめてみよう」勢に把握されてなさそうなのでメモ的に書いてみた。

続きを読む