“container”タグの記事

  • | ブログ | 9 min read
    #posts #2022年 #k8s #container #CI/CD

    Flagger と Ingress Nginx でA/Bテストをする

    前回は、FlaggerとNginxのIngress Controllerを使ってカナリアリリースを試しました。 Flagger と Ingress Nginx でカナリアリリースをする 今回はA/Bテストの方を試したいと思います。 前回のカナリアリリースは、徐々にカナリアバージョンのトラフィック量を増やしながら切り替えていく形でした...

    記事を読む
  • | ブログ | 18 min read
    #posts #2022年 #k8s #container #CI/CD

    Flagger と Ingress Nginx でカナリアリリースをする

    Kubernetesはデフォルトではローリングアップデート(RollingUpdate)とPod再生成(Recreate)をデプロイ時の戦略として利用できます。 特にデフォルトのデプロイ戦略であるRollingUpdateは、ゼロダウンタイムで順次新バージョンをリリースさせていく方式ですが欠点もあります...

    記事を読む
  • | ブログ | 4 min read
    #posts #2022年 #k8s #container

    Mizu(水)でマイクロサービスのトラフィックを分析する

    Kubernetesでおもしろいツールを見つけたので、ご紹介したいと思います。 その名もMizuです。ロゴを見れば分かるように日本語の「水」から名付けられたものです。 https://getmizu.io/ その中身はPod間を流れるトラフィックをキャプチャし、可視化してくれるもので、多数のサービスで構成されるシステムの調査で強さを発揮しそうです...

    記事を読む
  • | ブログ | 2 min read
    #posts #2022年 #k8s #container

    Kubernetes v1.24がリリースされました

    2022/05/03 Kubernetesのv1.24がリリースされました。 Kubernetes 1.24: Stargazer 詳細な変更履歴はこちらで確認できます。 以下個人的に大きいと感じた変更点についてまとめてみました。 Dockershim削除# 今回のリリースで一番の目玉はやはりDockershimの削除でしょうね...

    記事を読む
  • | コンテナ - Kubernetesチュートリアル | 11 min read
    #container #k8s #tutorial #aws

    分散トレーシング(OpenTelemetry / AWS X-Ray)

    前回はOpenTelemetryとJaegerを使って、エンドツーエンドでトレース情報を収集・可視化をしました。 ここで利用したJaegerは分散トレーシングに特化したOSSプロダクトで高機能ではありますが、実際に運用する場合は、その構成を慎重に検討する必要があります。 例えば、以下の対応が必須で必要となるでしょう...

    記事を読む
  • | コンテナ - Kubernetesチュートリアル | 20 min read
    #container #k8s #tutorial

    分散トレーシング(OpenTelemetry / Jaeger)

    今回はアプリケーションのパフォーマンスに焦点を当てます。 アプリケーションのパフォーマンスを分析するにはどうすれば良いでしょうか? 従来は処理時間等の情報をログに残し、これを集計することが多かったと思います。 単一サービスで構成されるシステムではこれで事足りることが多いですが、多数のサービスで構成されるマイクロサービスとなるとそうはいきません...

    記事を読む
  • | コンテナ - Kubernetesチュートリアル | 12 min read
    #container #k8s #tutorial #aws

    ログ収集・分析(Fluent Bit / Amazon CloudWatch)

    前回はログの収集にFluent Bit、その分析にAWS OpenSearchを使用しました。 AWS OpenSearchは、非常に高機能な検索とリッチなUIを提供しますが、デメリットもあります。 まず、OpenSearch自体のセットアップ作業が別途必要です。特に、高スループットが予想される商用環境では、マルチノードでクラスターを組む必要がありますし、構成に応じてかなりのコストが発生します...

    記事を読む
  • | コンテナ - Kubernetesチュートリアル | 13 min read
    #container #k8s #tutorial #aws

    ログ収集・分析(Fluent Bit / AWS OpenSearch)

    今回はログの収集と分析に焦点を当てます。 いつの時代もアプリケーションが出力するログは、障害解析やアクセス/証跡管理に欠かせません。 マイクロサービスのような分散アーキテクチャを採用した場合、1つのアプリケーションは複数のサービスで構成されることになります...

    記事を読む
  • | コンテナ - Kubernetesチュートリアル | 21 min read
    #container #k8s #tutorial #aws

    メトリクス収集・可視化 - OpenTelemetry / CloudWatch

    前回はPrometheusとGrafanaを利用して、Kubernetesおよびアプリケーションに関するメトリクスの収集・可視化を行いました。 今回はOpenTelemetryとCloudWatchを使って同じことをしてみましょう...

    記事を読む
  • | コンテナ - Kubernetesチュートリアル | 13 min read
    #container #k8s #tutorial

    メトリクス収集・可視化 - Prometheus / Grafana

    今回のテーマはモニタリングです。 アプリケーションの運用が開始されると、ピーク時間帯や各種イベントに応じてシステム負荷は大きく変動します。 特に、マイクロサービスアーキテクチャでは、臨機応変なスケーラビリティや、無駄なのないリソース効率性とそれに応じたコスト最適化が求められます。 このような状況下では、各サービスレベルできめ細かい情報を収集・可視化することがより重要となります...

    記事を読む
  • | ブログ | 11 min read
    #posts #2022年 #container #k8s

    KubernetesのPod Security(PSS/PSA)

    Kubernetesのv1.21で、今までPodセキュリティを担っていたPodSecurityPolicy(PSP)が非推奨となりました[1]。このままいくとPSPはv1.25で削除される予定です...

    記事を読む
  • | コンテナ - Kubernetesチュートリアル | 23 min read
    #container #k8s #tutorial

    Podスケジューリング - NodeAffinity / TaintToleration

    Kubernetesで作成したPodは、Node[1]が割り当てられ、コンテナランタイムを通して実行されます。 Nodeは、多数のVMでクラスタ構成され、データセンター障害に備えて物理的に分散して配置されることが一般的です。 また、コスト最適化やワークロード要件を満たすために、コア数やメモリ容量だけでなく、OS種類やCPU/GPU、SSD/HDD等様々なスペックを持っていることもあるでしょう...

    記事を読む
  • | ブログ | 6 min read
    #posts #2022年 #container

    macOS 上で Podman を動かす

    2022年1月31日で Docker Desktop の移行期間が終了し、企業での使用は無償使用の条件に該当しない限り全て有償化されました。 有償化による金額の大小に関わらず、大企業での作業には予算の認可に時間が掛かったり、中小企業だとそもそも年度の予算が足りなかったりなど、さまざまな理由でライセンス料を支払う事が難しいケースもあります...

    記事を読む
  • | コンテナ - Kubernetesチュートリアル | 11 min read
    #container #k8s #tutorial

    オートスケーリング - Horizontal Pod Autoscaler(HPA)

    商用環境で実際にサービスが運用されると、時間帯やイベント等、様々な要因によってトラフィックが変動し、それに合わせてシステム負荷も増減します。 コンテナ以前の従来のシステムでは、あらかじめ最大のスループットを見積もり、それに合わせてサーバーのサイジングをすることが一般的でした。 ただ、これはほとんどのケースでオーバースペックとなり、費用対効果が良いとは言えない状況でした...

    記事を読む
  • | ブログ | 26 min read
    #posts #2022年 #k8s #container #aws

    Karpenterのオートスケールを試してみました

    2021/11/29に、AWSはKarpenterというKubernetesのオートスケーラーをGAリリースしました。 Introducing Karpenter – An Open-Source High-Performance Kubernetes Cluster Autoscaler これは有料のサービスではなく、OSSとしての提供です...

    記事を読む
  • | コンテナ - Kubernetesチュートリアル | 17 min read
    #container #k8s #tutorial #CI/CD #GitOps

    継続的デリバリ - ArgoCD

    前回は、GitOpsの産みの親であるWeaveworks社が開発したFluxを導入して、継続的デリバリを実現しました。 今回はもう1つのGitOpsツールとして人気を集めるArgoCDを導入します。 Flux同様に、ArgoCDもGitOpsを体現したツールですが、最も大きな違いとして、ArgoCDはリッチなWeb UIを組み込みで持っています[1]...

    記事を読む
  • | コンテナ - Kubernetesチュートリアル | 19 min read
    #container #k8s #tutorial #CI/CD #GitOps

    継続的デリバリ - Flux

    アプリケーション開発編では、お手製のアプリをローカル環境やクラウド環境(AWS EKS)にデプロイしてきました。 しかし、ローカル環境はSkaffoldを使って自動化したものの、クラウド環境はkubectl applyを使って手動デプロイしました。 ここでは、GitOps[1]を体現する継続的デリバリツールとして人気のFluxを導入します。 最終的には、以下のような構成となります...

    記事を読む
  • | ブログ | 1 min read
    #posts #2022年 #k8s #container

    Rancher Desktop 紹介

    つい先日 (2022年1月21日) に、lima 紹介 という記事を書いたばかりですが、Mac (M1/Intel) と Windows のどちらにも対応し (さらに Linux にも)、それぞれ Lima と WSL2 を利用してコンテナランタイムを実行する、Rancher Desktop がついに v1.0.0 に到達したというニュースを受け取りました...

    記事を読む
  • | コンテナ - Kubernetesチュートリアル | 11 min read
    #container #k8s #tutorial #aws

    クラスタ環境デプロイ - EKSクラスタ(デプロイ)

    本記事は、クラスタ環境デプロイ - EKSクラスタ(Kustomize導入)からの続きです。 これまで、DynamoDBやS3等のAWSリソースを準備し、環境差分を吸収するために、Kustomizeを導入しました。 ここからは、仮想の商用環境としてAWS EKSにアプリケーションをデプロイします...

    記事を読む
  • | コンテナ - Kubernetesチュートリアル | 11 min read
    #container #k8s #tutorial #aws

    クラスタ環境デプロイ - EKSクラスタ(Kustomize導入)

    本記事は、クラスタ環境デプロイ - EKSクラスタ(AWS環境準備)からの続きです。 ここでは、Kubernetesのマニフェストファイルを、Kustomizeに対応した構成へと見直していきます。 Kustomizeはbaseと呼ばれる環境共通部分にパッチを当てることで、各環境の完全なマニフェストを生成します。 以下のようなフローで最終的にデプロイする形になります...

    記事を読む
  • | コンテナ - Kubernetesチュートリアル | 9 min read
    #container #k8s #tutorial #aws

    クラスタ環境デプロイ - EKSクラスタ(AWS環境準備)

    前回で、コンテナレジストリを導入し、コンテナイメージ用のリポジトリを準備しました。 今回はアプリケーション開発編の仕上げとして、Kubernetesクラスタ環境のEKSにアプリケーションをデプロイしましょう。 一般的なプロジェクトでは商用環境だけでなく、結合テスト、受け入れテスト等、様々なフェーズに応じた環境が準備されています...

    記事を読む
  • | ブログ | 2 min read
    #posts #2022年 #container

    lima 紹介

    M1 チップ搭載の mac で Windows の WSL2 のような感覚で仮想 Linux 環境を手に入れたいとの思いから、lima というプロジェクトがあることを知り早速使い始めました。 インストールは、Homebrew を使うと楽にインストールすることができます...

    記事を読む
  • | コンテナ - Kubernetesチュートリアル | 9 min read
    #container #k8s #tutorial #aws

    クラスタ環境デプロイ - コンテナレジストリ(ECR)

    さて、ここまででWeb・バッチアプリケーションの開発が終わり、ローカル環境で動作確認ができました。 いよいよここからは、AWS EKSにアプリケーションをデプロイしていきます。 その前に、アプリケーションをEKSにデプロイする際、コンテナイメージはどこで管理すべきでしょうか? 今まではコンテナのビルドと実行が同一環境(ローカル環境)のため、イメージビルド後にそのまま実行できていました[1]...

    記事を読む
  • | コンテナ - Kubernetesチュートリアル | 15 min read
    #container #k8s #tutorial

    Kubernetesマニフェスト作成 - バッチアプリケーション

    前回は、ローカル環境のKubernetesでタスク管理ツールのWebアプリケーションを動かすことができました。 今回は日次でタスク完了レポートを出力するバッチアプリケーションを作成してみましょう。 Kubernetesを利用する主なメリットとして、セルフヒーリングによる耐障害性強化や、大規模トラフィックに耐えられるスケーラビリティが得られる等の印象が強いかと思います...

    記事を読む
  • | ブログ | 4 min read
    #posts #2022年 #container #k8s

    Dapr on Jetson Nano with k3s

    マイクロサービスのように、多言語プログラミング (polyglot programming) が前提の環境では、認証認可やログのような横断的関心事 (cross-cutting concern) をアプリケーションのコードとして実装すると、各言語やフレームワークごとに移植が必要となり最新化への足かせとなります...

    記事を読む
  • | コンテナ - Kubernetesチュートリアル | 18 min read
    #container #k8s #tutorial

    Kubernetesマニフェスト作成 - Webアプリケーション

    ここまででローカル環境で開発する準備が整いました。 ここからは、実際に動くアプリケーションをローカル環境にデプロイしましょう。 このチュートリアルでは、一般的によくあるであろうシンプルなWebアプリケーションとバッチアプリケーションを例に見ていきます。 題材としてはタスク管理ツールとします。このツールの機能としては以下になります...

    記事を読む
  • | ブログ | 2 min read
    #posts #2021年 #container #docker

    Windows への Docker CLI のインストール

    Docker は背後で Docker デーモンが実行されて、Docker コマンドは Unix ドメインソケット (Linux や macOS の場合) または tcp ソケットで Docker デーモンと通信します。 Linux にインストールした Docker デーモンは設定により Unix ドメインではなく tcp で外部マシンからのアクセスも可能にすることができます...

    記事を読む
  • | コンテナ - Kubernetesチュートリアル | 12 min read
    #container #k8s #tutorial #aws

    ローカル開発環境準備 - ローカルAWS(LocalStack)

    これまでローカルでKubernetesを実行する環境としてminikube、開発からデプロイまでを自動化するツールとしてSkaffoldを導入し、いよいよ開発が始められる準備が整ってきました。 最後にアプリケーションが外部プロダクトに依存する場合を考えてみましょう。 一般的にアプリケーションはそれのみで完結することはほとんどなく、DBやキャッシュ等他のプロダクトを利用することが大半です...

    記事を読む
  • | コンテナ - Kubernetesチュートリアル | 5 min read
    #container #k8s #tutorial

    ローカル開発環境準備 - 自動化ツール(Skaffold)

    前回は、minikubeを使ってローカル環境内でコンテナアプリケーションを実行する環境を整えました...

    記事を読む
  • | コンテナ - Kubernetesチュートリアル | 12 min read
    #container #k8s #tutorial

    ローカル開発環境準備 - 実行環境(minikube)

    それではここからはアプリケーションの開発編に入っていきましょう。 チームでKubernetesで動作するアプリケーションを開発する場合に、どうやって各開発者がコンテナ環境で動作するアプリケーションを実装・テストすればよいでしょうか? クラウド上に各個人のクラスタ環境を準備するのが理想的ですが、コスト的に難しいというのが一般的かと思います...

    記事を読む
  • | OSS | 2 min read
    #oss #CI/CD #container #k8s

    setup-helmfile

    setup-helmfile は Github Actionsで Helmfile を利用するための Action です。 Helmfile は、複数の Helm Chart を纏めて Kubernetes クラスタにインストールするツールです。インストールの順序制御や、インストールの前後にフックを挟んでちょっとしたスクリプトを実行させることもできます...

    記事を読む
  • | OSS | 1 min read
    #oss #CI/CD #k8s #container

    concourse-k8s-resource

    concourse-k8s-resource は Concourse CI で、Kubernetes クラスターにコンテナイメージをデプロイするための Concource カスタムリソースです。 Concourse CI では、Resource という概念で、パイプラインから成果物を取得したり生成するターゲットを定義します。公式・サードパーティ含め多くのリソースが公開されています...

    記事を読む
  • | OSS | 1 min read
    #oss #container #CI/CD

    buildpacks-action

    buildpacks-action は GitHub Actions で Cloud Native Buildpacks を使ってコンテナイメージビルドを実行するための Action です...

    記事を読む
  • | コンテナ - Kubernetesチュートリアル | 11 min read
    #container #k8s #tutorial

    Velero による Kubernetes クラスタのバックアップ・リストア

    Velero は Kubernetes クラスタのオブジェクトをバックアップ・リストアするためのツールです。 Velero 概要ページで Velero の想定しているユースケースを見てみましょう...

    記事を読む
  • | コンテナ - Kubernetesチュートリアル | 23 min read
    #container #k8s #tutorial #aws

    ストレージ - AWS EFS

    前回はAWS EBSを使ってコンテナにストレージをマウントすることで、Podの再起動時にもデータを消失することなく継続して利用することができました。 今回はNFSプロトコルを利用する共有ファイルストレージサービスであるAWS EFSを使って複数Pod間でのファイル共有を実現します...

    記事を読む
  • | コンテナ - Kubernetesチュートリアル | 20 min read
    #container #k8s #tutorial #aws

    ストレージ - AWS EBS

    これまでAWS EKS上でk8sクラスタ環境の構築を行い、Ingress Controllerを導入することでインターネットからのリクエストを受け付けられるようにしました。 ただ、アプリについては固定レスポンスを返すだけで実践的なものではありませんでした。 そこで今回は、データ保存を行うアプリを考えてみましょう...

    記事を読む
  • | コンテナ - Kubernetesチュートリアル | 24 min read
    #container #k8s #tutorial

    Ingress - HTTPS通信(Cert Manager)

    今回は、IngressにTLS証明書をセットアップし、セキュアに外部と通信できるようにしましょう。 ゼロトラストネットワークの考え方が普及し、今や開発・テスト環境でも通信のTLS化が当たり前の時代になりました(もちろん暗号化は通信だけではだめですが)。 そこで課題となるのが、暗号化で利用する証明書の管理です。証明書の有効期限切れによる通信障害のニュースもよく耳にします...

    記事を読む
  • | コンテナ - Kubernetesチュートリアル | 17 min read
    #container #k8s #tutorial #aws

    Ingress - AWS Load Balancer Controller

    前回はNginxをIngress Controllerとして利用しました。 Nginxはロードバランサーとして利用可能なプロキシサーバーで、実績のある成熟したミドルウェアと言えます。 しかし、AWSにはロードバランサーのフルマネージドサービスとしてELB(Elastic Load Balancing)が存在しますので、あえてNginxを入れなくても、ロードバランサー機能として同等のことができます...

    記事を読む
  • | コンテナ - Kubernetesチュートリアル | 17 min read
    #container #k8s #tutorial

    Ingress - カスタムドメイン管理(external-dns)

    前回までは、Ingressに登録したホスト名をHostヘッダを直接指定することで、DNSで名前解決がされた体で確認ました。 当然ですが、実運用でこのようなことをすることはなく、DNSサーバにIngressとのマッピングを追加する必要があります。 これを手動で実施すると、Ingressに新しいホストを追加する度に別途DNSで作業する必要が出てきます...

    記事を読む
  • | コンテナ - Kubernetesチュートリアル | 14 min read
    #container #k8s #tutorial

    Kubernetes ネイティブなワークフローエンジン Argo Workflows

    Argo Workflows は Kubernetes で動作するワークフローエンジンです。コンテナイメージを利用してジョブを記述でき、Kubernetes 上でそのまま実行できます...

    記事を読む
  • | コンテナ - Kubernetesチュートリアル | 23 min read
    #container #k8s #tutorial

    Ingress - NGINX Ingress Controller

    KubernetesのIngressリソースを導入しましょう。 Ingressとは、クラス環境内にデプロイされたアプリ(Pod)に対して、ロードバランシングを行うKubernetesの機能です(こちら参照)。 環境構築編では、動作確認用にServiceリソースをLoadBalancerとして定義することでL4ロードバランサーを作成(実態はELB)しました...

    記事を読む
  • | コンテナ - Kubernetesチュートリアル | 18 min read
    #container #k8s #tutorial #aws

    クラスタ環境構築 - AWS EKS (Terraform)

    前回に引き続き、AWSのKubernetesフルマネージドサービスのEKS(Elastic Kubernetes Service)でクラスタ環境を構築してみましょう。 前回はeksctlを利用してクラスタ環境を構築しましたが、今回はIaCツールとして高い人気を誇るTerraformを使います...

    記事を読む
  • | コンテナ - Kubernetesチュートリアル | 12 min read
    #container #k8s #tutorial #aws

    クラスタ環境構築 - AWS EKS (eksctl)

    AWSのKubernetesフルマネージドサービスのEKS(Elastic Kubernetes Service)でクラスタ環境を構築してみましょう。 今回クラスタの構築にはAWS公式のCLIツールのeksctlを利用します。 eksctlはWeaveworks社で開発されたEKSクラスタの構築・運用を容易にしてくれるCLIツールです...

    記事を読む