kakakakakku blog

Weekly Tech Blog: Keep on Learning!

docker の検索結果:

Kubernetes を網羅的に学ぶなら「Kubernetes 完全ガイド 第2版」を読むべし

…次 🐋 第1章 : Docker の復習と「Hello, Kubernetes」 第2章 : なぜ Kubernetes が必要なのか? 第3章 : Kubernetes 環境の選択肢 第4章 : API リソースと kubectl 第5章 : Workloads APIs カテゴリ 第6章 : Service APIs カテゴリ 第7章 : Config & Storage APIs カテゴリ 第8章 : Cluster APIs カテゴリと Metadata APIs カ…

kind を使って Feature Gates を有効化した Kubernetes クラスターを構築する

…るときに,お手軽な Docker Desktop for Mac "Edge" を使っている.Feature Gates を有効化した Kubernetes クラスターで検証をするときは minikube に --feature-gates オプションを指定して使うこともある. Docker Desktop for Mac Edge release notes | Docker Documentation GitHub - kubernetes/minikube: Run K…

入門から実践まで CircleCI のノウハウが凝縮された「CircleCI 実践入門」を読んだ

…CI のビルド済み Docker イメージ - CircleCI Pre-Built CircleCI Docker Images - CircleCI Designing a package manager: an inside look at CircleCI orbs 永続化(ワークスペースとキャッシュ) 第4章「ワークフローでジョブを組み合わせる」には「ワークスペース」や「キャッシュ」など,CircleCI をよく使っていても個人的に理解が曖昧になりがちだった機能の解…

「Slack Orb」を使って CircleCI から Slack に通知する

…s: hello: docker: - image: cimg/base:stable steps: - checkout - run: exit 0 - slack/status workflows: version: 2 ci: jobs: - hello exit 0 と exit 1 を使って実行すると,以下のように「成功」も「失敗」も Slack に通知できるようになった.簡単! fail_only パラメータを追加する 実運用を考えると,ジョブが「失敗」したときに…

Flux と kustomize を組み合わせた GitOps 入門チュートリアル「Using Flux with Kustomize」を試した

… 事前準備 今回も Docker Desktop for Mac "Edge" を使って,以下の Kubernetes 環境で試す.昨日の記事と同じく fluxctl コマンドも使う. $ kubectl version --short Client Version: v1.18.6 Server Version: v1.18.6 $ fluxctl version 1.20.2 そして,チュートリアルで使う GitHub リポジトリ fluxcd/flux-kustomiz…

Flux を使った GitOps 入門チュートリアル「Get started with Flux」を試した

… 事前準備 今回は Docker Desktop for Mac "Edge" を使って,以下の Kubernetes 環境で試す. $ kubectl version --short Client Version: v1.18.6 Server Version: v1.18.6 次に fluxctl コマンドを使えるようにする.今回は brew でインストールしておく. $ brew install fluxctl $ fluxctl version 1.20.2 最後にチ…

kustomize の configGeneration を使って ConfigMap リソースをデプロイする

…om 前提 今回も Docker Desktop for Mac "Edge" を使って,以下の Kubernetes 環境で試した. $ kubectl version --short Client Version: v1.18.6 Server Version: v1.18.6 $ kustomize version --short {3.8.1 2020-07-16T05:11:04+01:00 } Examples「configGeneration」とは? kusto…

Kubernetes の YAML をカスタマイズする kustomize の基本を学べる Examples「helloWorld」

…on 前提 今回は Docker Desktop for Mac "Edge" を使って,以下の Kubernetes 環境で試した.kustomize コマンドは brew install kustomize で使えるようにした.なお,現在は kubectl と統合されて kubectl kustomize というコマンドも使えるけど,本書にコラムが載っている通り,バージョンが異なる. $ kubectl version --short Client Version: v1…

Kubernetes でバイナリを ConfigMap (binaryData) に登録する

….18.6 通常の Docker Desktop for Mac だと Kubernetes v1.16 になるけど,Docker Desktop for Mac "Edge" を使えば,Kubernetes v1.18 を使えるようになる.個人的には Edge を使っている. docs.docker.com ConfigMap を作成する まず,マニフェストを書かずに kubectl create で直接 ConfigMap を作成する.今回は --from-literal…

Redash v9 で採用されたジョブキューライブラリ RQ (Redis Queue) の基本機能を試した

… 検証環境 今回は Docker Compose で検証環境を構築した.役割としては,大きく4種類あり,以下に載せておく.簡単に構成図も描いておいた. enqueue コンテナ : ジョブ登録 (Python) queue コンテナ : キュー (Redis) worker1 コンテナ : ジョブ実行 (Python) worker2 コンテナ : ジョブ実行 (Python) なお,検証環境を再現する場合は GitHub の sandbox-rq リポジトリを見てもらえれば…

gibo コマンドを使って .gitignore のテンプレートを簡単に作成する

…ルしたくない場合は,Docker を使う案もある. $ docker run --rm simonwhitaker/gibo version gibo 2.2.4 by Simon Whitaker <sw@netcetera.org> https://github.com/simonwhitaker/gibo gibo を使う 基本的には gibo dump コマンドを使って,標準出力をリダイレクトする.以下のように gibo dump Python とすれば,Python…

Mac の「画面共有」を使って「配信用 Mac」と「デモ用 Mac」を使い分ける

Mac

…る場合」で,例えば Docker Desktop for Mac を使ってコンテナイメージをビルドをしたり,実装したコードをコンパイルしたり,ローカル環境に API サーバを起動したり.通常なら問題なくても,配信中だと顕著に遅くなってしまう.Amazon EC2 など,クラウド上にデモ環境を構築して SSH をしたり VS Code Remote Development を使う案もあるし,実際に使っているけど,やはり「ローカル環境で動かしたい場合」もある! Mac の「画面共…

GitHub Actions と hadolint を組み合わせて Dockerfile の静的解析を自動化しよう!

… (Haskell Dockerfile Linter) を組み合わせて,今まで雑に実装してきた Dockerfile の静的解析を自動化する環境を作った.できる限り Dockerfile Best Practices を意識していることもあり,警告はあまり多く出なかったけど,やはり CI (Continuous Integration) で気付ける安心感はある! www.docker.com hadolint (Haskell Dockerfile Linter) hado…

GitHub Actions に入門するなら GitHub Learning Lab の Hello World コースを受講しよう

…ions を使って,Docker イメージをビルドして実行できるようになる. Step 1 : Add a Dockerfile Step 2 : Add an entrypoint script Step 3 : Add an action.yml file Step 4 : Start your workflow file Step 5 : Run an action from your workflow file Step 6 : Trigger the workflo…

Dependabot の config.yml に「Automatic PR merging」を設定する

… Python / Docker をよく使っている.最高に便利なんだけど,例えば JavaScript などはリリース頻度が高く,すぐにプルリクエストが溜まってしまう(プルリクエスト数の制限はできる).最近は「Automatic PR merging(プルリクエスト自動マージ機能)」を使うことも多く,設定例を紹介する. dependabot.com Dependabot 設定画面 「Automatic PR merging」をすぐに試すなら設定画面を使う.true or fa…

「iPad mini 4 + Elemiya タッチペン + Jamboard」で実現するデジタルホワイトボード環境

…下はサンプルとして Docker コマンドの構成図を描いてみた.基本的には「マーカー」と「蛍光ペン」を使う.「ペン」はちょっと細すぎる. 2. イラストのようなもの 簡単なイラストも描いてみた.そもそも絵が苦手ではあるけど,雰囲気は伝わると思う💦 気になる点 iPad で Jamboard を使うと「元に戻す/やり直し」が右下にあり,右利きだと描きながら押してしまう.ツライ! まとめ 「デジタルホワイトボード環境」を作るために「Elemiya タッチペン」を購入した.Appl…

「ghq handbook」を読んで ghq を使った最高のリポジトリ管理を体験しよう

…kakakakku/docker-hands-on 一括アップデート 本書の最後には「レシピ集」があり,ghq の基本的なコマンドを活用した Tips が載っている.個人的には「標準出力からリストを受け取れる仕組み」と「--parallel オプション」を組み合わせた「一括アップデート」をよく使いそう.全リポジトリだと流石に多すぎるため,例えば以下のように ghq list である程度フィルタリングしてから ghq get --update --parallel に流せる.便…

Envoy の「サーキットブレーカー」を試す検証環境を構築する

…確認をした.今回は Docker Compose で「Envoy コンテナ(フロントエンド)」と「Sinatra コンテナ(バックエンド)」を起動し,Sinatra では単純に文字列を返すプロトタイプ実装にした. get '/' do 'Hello!' end 構成図は以下のようになる. 負荷テスト : Vegeta 今回は Vegeta を使って負荷テストを行う.-rate オプションに秒間のリクエスト数を指定し,-duration オプションに継続する時間を指定する.レポ…

Envoy の generate_request_id パラメータがデフォルト true であることを検証した

…確認をした.今回は Docker Compose で「Envoy コンテナ(フロントエンド)」と「Sinatra コンテナ(バックエンド)」を起動し,Sinatra で x-request-id ヘッダを表示するプロトタイプ実装にした.構成図は以下のようになる. envoy.yaml の一部を以下に載せておく.generate_request_id の部分を修正しながら動作確認をした. generate_request_id なし generate_request_id: t…

MySQL で JSON 型からクオートを除去した文字列を取得するなら ->> を使う

MySQL(5.7 以降)で「JSON 型」のカラムから指定したキーを取得する場合 JSON_EXTRACT() を使う.もしくは JSON_EXTRACT() と同じ動作をする -> オペレータを使うこともできる.以下に members テーブルの info カラムから name キーを取得する SQL を載せる.なお,今回は MySQL 8.0.19 を検証環境にした. -- サンプルテーブルを作成する mysql> CREATE TABLE members ( info…

Envoy x Prometheus x Grafana x Jaeger に入門する「Implementing Metrics and Tracing Capabilities」を試した

… katacoda/docker-http-server:healthy を起動し,動作確認をしておく. $ docker run --name=proxy -d \ -p 80:10000 \ -p 9901:9901 \ -v $(pwd)/envoy/:/etc/envoy \ envoyproxy/envoy:latest $ docker run -d katacoda/docker-http-server:healthy $ docker run -d katac…

Envoy の lb_policy は ROUND_ROBIN 以外にもある!「Controlling load balancing policies」を試した

… katacoda/docker-http-server:healthy を起動する. $ docker run --name=proxy -d \ -p 80:10000 \ -p 9901:9901 \ -v $(pwd)/envoy/:/etc/envoy \ envoyproxy/envoy:latest $ docker run -d katacoda/docker-http-server:healthy; $ docker run -d katacoda/dock…

2019年の振り返りと2020年の抱負

… GraphQL, Docker, Ansible, Kubernetes, Prometheus, HashiCorp」などなど,技術領域の制限はせず,様々な技術に挑戦できた.そして幅広く学んだからこそ,さらなる「未経験の技術の発見」もできた.本当に未経験の技術は無限にある!Trello のチケットは日々増えているけど,1年間を通してずっと「楽しく学び続けられた」ことは良かった. 当然ながら「技術的な深さを追い求めること」は課題となる.認識はしている.しかし,仕事柄プロダク…

Envoy の route.HeaderMatcher を使う「Implementing Blue / Green Rollouts」を試した

… katacoda/docker-http-server を起動する.katacoda/docker-http-server は v1 を2個 / v2 を2個 / v3 を1個起動する.構成図は以下のようになる. $ docker run -d --name proxy1 -p 80:8080 -v /root/:/etc/envoy envoyproxy/envoy $ docker run -d katacoda/docker-http-server:v1 $ dock…

Envoy の Health Checking と Outlier Detection の違いを学べる「Detecting Down Services with Health Checks」を試した

… katacoda/docker-http-server:healthy を2個起動する.コンテナイメージ(healthy タグ)の解説は書かれてなく,あくまで予想だけど,デフォルトでヘルスチェックに成功する実装になっていると思う.そして curl で状態を変えることもできる. $ docker run -d --name proxy1 -p 80:8080 -v /root/:/etc/envoy envoyproxy/envoy $ docker run -d katac…

Envoy の EDS を REST API で体験する「API Based Dynamic Routing Configuration」を試した

…のようになる. $ docker run --name=api-eds -d \ -p 9901:9901 \ -p 80:10000 \ -v /root/:/etc/envoy \ envoyproxy/envoy:latest Step.3 「Start upstream services」 今回も katacoda/docker-http-server を起動し,個別に接続確認をしておく. $ docker run -p 8081:8081 -d -e EDS_SER…

Envoy のディスカバリサービス (xDS) を学べる「File Based Dynamic Routing Configuration」を試した

… katacoda/docker-http-server を起動し,以下の構成図のようになる. $ docker run --name=proxy-eds-filebased -d \ -p 9901:9901 \ -p 80:10000 \ -v /root/:/etc/envoy \ envoyproxy/envoy:latest $ docker run -d katacoda/docker-http-server $ docker run -d katacoda/do…

Envoy で HTTPS 接続をする設定を学べる「Securing traffic with HTTPS and SSL/TLS」を試した

… katacoda/docker-http-server を2個起動し,最終的に以下の構成図のようになる. 8080 (HTTP) 8443 (HTTPS) 8001 (管理画面) $ docker run -it --name proxy1 -p 80:8080 -p 443:8443 -p 8001:8001 -v /root/:/etc/envoy/ envoyproxy/envoy $ docker run -d katacoda/docker-http-server…

nginx と Envoy の設定を比較して学べる「Migrating from NGINX to Envoy Proxy」を試した

… katacoda/docker-http-server となり,これは Go の net/http パッケージを使って,ホスト名を表示するだけの実装になっている. $ docker run --name proxy1 -p 80:8080 --user 1000:1000 -v /root/envoy.yaml:/etc/envoy/envoy.yaml envoyproxy/envoy $ docker run -d katacoda/docker-http-server…

Dockerfile に HEALTHCHECK を設定すると「ヘルスチェック機能」が使えるようになる

今回は Docker で使える「ヘルスチェック機能」を試す.Release Note を読むと,機能としては Docker 1.12 から使えるらしく,3年前からあったなんて...!仕組みとしては,Docker デーモンからコンテナに指定したコマンドを定期的に実行する. Dockerfile 構文 「ヘルスチェック機能」を使う場合,まず Dockerfile に HEALTHCHECK を設定する.実行するコマンド以外に以下のオプションも設定できる.注意点として,--retr…