Kubernetesマニフェスト作成 - Webアプリケーション
ここまででローカル環境で開発する準備が整いました。 ここからは、実際に動くアプリケーションをローカル環境にデプロイしましょう。 このチュートリアルでは、一般的によくあるであろうシンプルなWebアプリケーションとバッチアプリケーションを例に見ていきます。 題材としてはタスク管理ツールとします。このツールの機能としては以下になります...
記事を読む分散 IoT Hub プラットフォーム
庄司です。 グローバルに展開する IoT プロダクトの場合、IoT デバイスとの通信のレイテンシーが非常に大きな課題となります。また、それぞれの地域で異なるセキュリティポリシーの課題もあり、可能な限りデバイスに近接したロケーションで処理を行い、中央との通信をフィルターし、通信量の低減も求められます...
記事を読むWindows への Docker CLI のインストール
庄司です。 Docker は背後で Docker デーモンが実行されて、Docker コマンドは Unix ドメインソケット (Linux や macOS の場合) または tcp ソケットで Docker デーモンと通信します。 Linux にインストールした Docker デーモンは設定により Unix ドメインではなく tcp で外部マシンからのアクセスもできます。これは、Windows Subsystem for Linux 2 にインストールした Docker デーモンの場合も同様です...
記事を読むローカル開発環境準備 - ローカルAWS(LocalStack)
これまでローカルでKubernetesを実行する環境としてminikube、開発からデプロイまでを自動化するツールとしてSkaffoldを導入し、いよいよ開発が始められる準備が整ってきました。 最後にアプリケーションが外部プロダクトに依存する場合を考えてみましょう。 一般的にアプリケーションはそれのみで完結することはほとんどなく、DBやキャッシュ等他のプロダクトを利用することが大半です。 ここでは開発対象のアプリケーションがS3やDynamoDB等のAWSのサービスを使うことを想定してみましょう...
記事を読むマイクロサービスの Active Directory の活用
庄司です。 新たなサービスの開発では、誰がサービスを使用できるかを確認するための認証 (Authentication) とサービスのどの機能にアクセスしてよいかを確認するための認可 (Authorization) を考える必要があります...
記事を読むローカル開発環境準備 - 自動化ツール(Skaffold)
前回は、minikubeを使ってローカル環境内でコンテナアプリケーションを実行する環境を整えました。 しかし、サンプルアプリのデプロイを通して、ソースコードに加えて、コンテナイメージのビルドやKubernetesマニフェストの反映等、手順が煩雑だと感じられた方も多かったのではないでしょうか? コンテナ以前のアプリ開発だと、任意のIDEを利用してソースコードを記述し、IDEまたはコマンドからそのままローカル環境で実行・確認していた方が多いと思います...
記事を読むローカル開発環境準備 - 実行環境(minikube)
それではここからはアプリケーションの開発編に入っていきましょう。 チームでKubernetesで動作するアプリケーションを開発する場合に、どうやって各開発者がコンテナ環境で動作するアプリケーションを実装・テストすればよいでしょうか? クラウド上に各個人のクラスタ環境を準備するのが理想的ですが、コスト的に難しいというのが一般的かと思います...
記事を読む非公式 Scrapbox アプリを開発している話
これは、Scrapbox Advent Calendar 2021 - Adventar 15日目の記事です。 2017年の終わり頃から個人で Scrapbox を使い始めました。それまでは Tumblr にサブアカウントを作って個人用 Wiki 的に使っていたのですが、テキスト(Markdown)編集が使いづらいと感じていました[1]。Scrapbox をちょっと使ってその書きやすさやリンクの機能に感動したので Tumblr から全てのエントリーを移行しました...
記事を読む「豆蔵デベロッパーサイト」ローンチのお知らせ
ビジネスソリューション事業部の近藤です。このたび豆蔵デベロッパーサイトを公開の運びとなりました。 このサイトは、豆蔵に所属する開発者が業務内・業務外を問わず注目したり採用したりした技術、使ってみての見解などを開発者の皆さんをターゲットにお届けする場として更新していこうと考えています。 サイト立ち上げの経緯 # 豆蔵公式サイトにも技術情報ページはありますが、顧客向けにコンテンツを作成して発信するという意味合いが大きく、社員が自発的に発信するメディアというかプラットフォームが存在しませんでした...
記事を読むsetup-helmfile
setup-helmfile は Github Actionsで Helmfile を利用するための Action です。 Helmfile は、複数の Helm Chart を纏めて Kubernetes クラスタにインストールするツールです。インストールの順序制御や、インストールの前後にフックを挟んでちょっとしたスクリプトを実行させることもできます。複雑な構成のソフトウェア群のインストールを効率的に行える優れたツールです...
記事を読むsbgraph
sbgraph は Scrapbox のページ間リンクを可視化するためデータを出力する CLI です。 Scrapbox はページ間のリンクを簡単に作成し、ページ配下にリンク先のページが可視化されていくユニークな情報共有システムです。豆蔵では社員の情報共有ツールとして大いに活用されています...
記事を読むmonorepo-update-checker
monorepo-update-checker は モノレポの変更有無を配下のプロジェクト(リポジトリ)ごとにチェックできる Action です。 モノレポは Git リポジトリ構成戦略で、あらゆるプロジェクトを一つの Git リポジトリで管理する方式です。相対する戦略はマルチレポです。Google の Chrome などのあらゆるプロダクトが巨大なモノレポで構成されているのは有名です...
記事を読むconcourse-k8s-resource
concourse-k8s-resource は Concourse CI で、Kubernetes クラスターにコンテナイメージをデプロイするための Concource カスタムリソースです。 Concourse CI では、Resource という概念で、パイプラインから成果物を取得したり生成するターゲットを定義します。公式・サードパーティ含め多くのリソースが公開されています...
記事を読むbuildpacks-action
buildpacks-action は GitHub Actions で Cloud Native Buildpacks を使ってコンテナイメージビルドを実行するための Action です。 Buildpacks は Dockerfile を記述しなくても、アプリケーションのコンテナイメージを作成してくれるツールであり、各種プログラミング言語・アプリケーションフレームワークに対応した buildpack が提供されています...
記事を読むVelero による Kubernetes クラスタのバックアップ・リストア
Velero は Kubernetes クラスタのオブジェクトをバックアップ・リストアするためのツールです。 Velero 概要ページで Velero の想定しているユースケースを見てみましょう...
記事を読むストレージ - AWS EFS
前回はAWS EBSを使ってコンテナにストレージをマウントすることで、Podの再起動時にもデータを消失することなく継続して利用することができました。 今回はNFSプロトコルを利用する共有ファイルストレージサービスであるAWS EFSを使って複数Pod間でのファイル共有を実現します。 EFSはAZ内でのみ利用可能なEBSと異なり、同一リージョン内の複数AZに冗長化されるため、AZ障害が発生しても別のAZのノードから引き続き利用することが可能です...
記事を読むストレージ - AWS EBS
これまでAWS EKS上でk8sクラスタ環境の構築を行い、Ingress Controllerを導入することでインターネットからのリクエストを受け付けられるようにしました。 ただ、アプリについては固定レスポンスを返すだけで実践的なものではありませんでした。 そこで今回は、データ保存を行うアプリを考えてみましょう。 コンテナではローカファイルシステムは一時的なもので、保存しても再起動時にそのデータは消失してしまいます...
記事を読むIngress - HTTPS通信(Cert Manager)
今回は、IngressにTLS証明書をセットアップし、セキュアに外部と通信できるようにしましょう。 ゼロトラストネットワークの考え方が普及し、今や開発・テスト環境でも通信のTLS化が当たり前の時代になりました(もちろん暗号化は通信だけではだめですが)。 そこで課題となるのが、暗号化で利用する証明書の管理です。証明書の有効期限切れによる通信障害のニュースもよく耳にします。 もちろん、KubernetesのIngressはHTTPS通信ができますが、前述の通り証明書の運用には課題があります...
記事を読むIngress - AWS Load Balancer Controller
前回はNginxをIngress Controllerとして利用しました。 Nginxはロードバランサーとして利用可能なプロキシサーバーで、実績のある成熟したミドルウェアと言えます。 しかし、AWSにはロードバランサーのフルマネージドサービスとしてELB(Elastic Load Balancing)が存在しますので、あえてNginxを入れなくても、ロードバランサー機能として同等のことができます...
記事を読むIngress - カスタムドメイン管理(external-dns)
前回までは、Ingressに登録したホスト名をHostヘッダを直接指定することで、DNSで名前解決がされた体で確認ました。 当然ですが、実運用でこのようなことをすることはなく、DNSサーバにIngressとのマッピングを追加する必要があります。 これを手動で実施すると、Ingressに新しいホストを追加する度に別途DNSで作業する必要が出てきます。DNSは設定ミスがあるとその被害は大きくなるのが通例です(それ故にネットワーク管理者のみがDNSにアクセス可能な組織が多いでしょう)...
記事を読む