サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
GPT-4o
techstep.hatenablog.com
今回はO'Reilly社から2020年に出版された Infrastructure as Code (2nd Edition) を読み、IaCに対するテストについて個人的に気になった箇所などを書き留めていきます。 www.oreilly.com 目的 前提 IaCとは 2つ目のCore Practice IaCをテストするうえでの課題 Challenge: Tests for Declarative Code Often Have Low Value Challenge: Testing Infrastructure Code is Slow Challenge: Dependencies Complicate Testing Infrastructure IaCでのテスト項目 オフラインテスト オンラインテスト Preview: Seeing What Changes Will Be Ma
今回はManning Publicationsから2022年に出版された Infrastructure as Code Practices and Patterns の中から、IaCのテストに関連する部分を取り上げます。 www.manning.com 前提 テストのサイクル 静的解析 動的解析 テストの種類 unit test contract test integration test end-to-end test continuous test regression test テスト戦略 テストピラミッド モジュールに対するテスト戦略 インフラ設定に対するテスト戦略 前提 本書ではテストに限らずIaCの広範なテーマを取り上げており、その中で実践的なテクニックやIaCのパターンなどを紹介しています。今回はIaCのテストを取り上げる第6章を中心に、いくつかのトピックを取り上げています。
はじめに 今回はタイトルの通り、GItHub ActionsとGitHub Container Registryを利用したCI/CDを用意し、コンテナイメージのビルドからKubernetesクラスターへのデプロイまでを実行するサンプルを作成しました。 構成 CI/CDのパイプラインのパターンはいくつか考えられますが、今回メインで用意したのは、以下のような特徴を備えたものです。 管理対象はGoのコードとDockerfile、Kubernetesマニフェストファイル CIでは、Goのコード・Dockerfileの変更を伝えるPR発行時にGoのテストを実行し、テストに成功してMergeを行った際にDockerfileを用いたイメージビルドを実行する CDでは、Kubernetesマニフェストの変更を伝えるPRを発行した際、KubernetesマニフェストファイルのValidationを実行し、M
はじめに 先日ArgoCDをAmazon EKS上にデプロイし、AWS ALB経由でArgoCD UIにアクセスしようとした際、幾つかの設定変更が必要であることが分かったので、備忘録として残しておきます。 ArgoCD - AWS ALBの構成 ArgoCD + AWS ALBの構成は、大まかには以下のようになります。ArgoCDのWeb UIはArgoCD Serverが提供します。AWS ALBはNodePortを経由してArgoCD Serverにアクセスし、Web UIへの接続を実現します。 このため、AWS ALBからArgoCDにアクセスするには、argocd-server というCluster IPをNode Portに変更することでアクセスできそうです。 ArgoCDデプロイ時にNodePortが作成されるよう、試しに以下のようなyamlファイルを用意します。ここではtyp
ArgoCD Image Updaterとは イメージ更新のプロセス 前提条件 ArgoCD Image Updaterを使ってみる 事前準備 ArgoCD Image Updaterの導入 インストール用ファイルの用意 IRSAの用意 argocd-image-updater-config ConfigMapの修正 ArgoCD Image Updaterのデプロイ 導入後の動作確認 ArgoCD Image Updaterの動作確認 コンテナイメージの更新方法 write-back-method: argocd write-back-method: git 動作確認: argocd 動作確認: git 今回はArgoCD Image Updaterを使ってみます。 ArgoCD Image Updaterとは ArgoCD Image Updaterは、コンテナレジストリを定期的にチェ
今回は汎用的な環境に対してポリシーエンジンを提供するOpen Policy Agent(OPA)について調査しました。 Policy as Codeとは OPAを操作する前に、Policy as Codeというコンセプトについて少し触れます。Policy as CodeはHashiCorp社がSentinelというツールを発表した際に用いたコンセプト(Twitterで検索したところ、用語自体はこれが初出ではなさそう)で、名前の通りアクセスポリシーなどをコードとして記述・管理可能とすることを意味します。ポリシーをコードで表現することで、バージョン管理や自動テストなどのベストプラクティスをポリシー定義に対して適用できるようになります。 TerraformやAnsibleなど様々なプロダクトが登場し、インフラをコードで管理するInfrastructure as Code (IaC)が進むことで、
今回はArgoCDでマルチテナント向けに利用できる Project という機能について整理しようと思います。 ここ最近のArgoCDのアップデートにもProjectに関するものが含まれていたので、そちらも試しています。 Projectとは Projectの基本的な使い方 ローカルユーザーの作成 Projectの作成 RBACの設定 アクセスのテスト Projectに関連する機能 Orphaned Resource Monitoring Global Project Project scoped Repositories & Clusters その他 Projectとは ArgoCDでは、Applicationというカスタムリソースの中にGitリポジトリやデプロイ先のクラスター・Namespaceなどの情報を設定します。Projectは、このApplicationを論理的にグループ分けするカ
今回はArgoCDをより拡張する機能を持つ ApplicationSetを動かしてみます。 ApplicationSetとは Generator ユースケース Cluster add-on Monorepo Self-service of ArgoCD Applications on multi-tenant cluster ApplicationSetを動かしてみる インストール Local cluster List generator Cluster generator Git generator External cluster List generator Cluster generator Matrix generator ApplicationSetとは ApplicationSetは、Argo Projectに含まれるプロダクトの一つです。ArgoCDを利用する複数のユースケ
今回はCloud-Nativeなランタイムセキュリティ機能を提供するFalcoを試しました。 Falcoとは FalcoはSysdig社が開発元であるランタイムセキュリティツールです。CNCFがホストとなっているOpen Sourceであり、2020年12月時点でプロジェクトの成熟度はIncubatingとされています。 Falcoの前に、Container Runtime Securityについて少し触れておきます。本番環境で動作するコンテナは、インターネットからの外部通信や、サービス・システム内部のマイクロサービスからの通信を受け取り、常に攻撃者からの標的となります。またコンテナを利用したシステムはコンテナ単体では動作せず、サーバ・ネットワークなどのインフラレイヤー、ユーザーに対して実際のサービスの機能を提供するアプリケーションレイヤーなど、様々な要素が連携して成り立っています。さらに
今回はArgoCD CoreというArgoCDの新たなディストリビューションを動かしてみました。 ArgoCD Coreとは ArgoCD Coreを動かす 感想 参考リンク ArgoCD Coreとは ArgoCD Coreは ArgoCDの ver 2.1で導入された、ArgoCD distributionになります。ArgoCDはデフォルトだとSSO / RBAC / ユーザー管理などの機能を搭載しており、1つのArgoCDインスタンスを複数のチームが利用できる、マルチテナントをサポートしています。 一方でArgoCDを利用するユーザーの中には、マルチテナントをサポートする機能が不要であり、ArgoCDの提供するGitOps的な機能だけを使いたい人も大勢います。そういったユーザー向けに登場したのがArgoCD Coreです。 ArgoCD Coreでは、デフォルトのArgoCDディス
つい先日ArgoCD ver 2.2.0がリリースされたので、今回はその内容を眺めてみます。 また、以前ArgoCDを触ってからだいぶ時間が空いてしまい、その間アップデートがいくつもあったので、ver 1.8からおさらいしようと思います。 ver 2.2だけ見たい場合はこちらから飛んでください。 なお、過去の性能改善系はなるべく省き、機能追加の部分に絞ってます。 1.8 性能関連 annotation-base path detection Application Controllerの水平スケール Core Func Namespace and CRD creation unknown field of built-in k8s type endpoint diffing app-of-apps health assessment Global Project コンフィグ管理ツール UI
今回はProgressive Deliveryを実現するツールの一つであるFlaggerを試してみます。なお、Progressive Deliveryについては、以下の参考リンクなどを参照ください。 ※参考リンク: Towards Progressive Delivery DevOps Institute - Progressive Delivery Flaggerとは Flaggerは Progressive Dlivery Operator for Kubernetes と打ち出されている通り、KubernetesをベースにProgressive Deliveryの実現をサポートするプロダクトです。 Flaggerを利用する環境は、以下のような構成となります。 ※画像:Flagger Docより Flaggerの実現するのは大きく3つ紹介されており、 Progressive Deliv
はじめに 今回はKubernetesのCronJobリソースでkubectlコマンドを実行し、定期的にリソースを更新する方法について、メモを残しておきます。 やりたいことは以下の通りです。 git cloneにより、GitHubリポジトリからマニフェストファイルを取得する kubectlコマンドにより、取得したマニフェストファイルをKubernetesクラスターへデプロイする 今回はgit kubectlそれぞれのコマンドを実行することのできるコンテナイメージを利用し、2つのコンテナ間でEmptyDir Volumeを共有することで、マニフェストファイルのデプロイを実行しました。 CronJobの利用方法 CronJobからkubectlコマンドを実行するには、CronJobがkubectlコマンドを実行できるよう権限を付与する必要があります。そのため、まずはService Account
はじめに 今回はCircleCIとAmazon ECRを利用したCI/CDパイプラインを用意し、コンテナイメージのビルドからKubernetesクラスタへのデプロイまで実行するサンプルを作成しました。 構成 今回は以下のようなCI/CDパイプラインを作成しました。 管理対象はGoのソース・テストコード、Kubernetesマニフェストファイル・テスト用スクリプト リポジトリ上のいずれかのブランチに対するPushを受けたら、GoコードのテストとKubernetesマニフェストファイルのValidationを並列に実行する mainブランチへのMergeが行われたら、Dockerイメージのビルド・プッシュ、Kubernetesリソースの更新を行う 構成図は以下のようになります。CI/CDパイプラインはCircleCI、コンテナレジストリはAmazon ECR、Kubernets環境はAmazo
はじめに 本記事ではGitOps CDツールの一つであるArgoCDの概要と利用方法について紹介いたします。 ArgoCDとは ArgoCDはKubernetesクラスター向けのContinuous Deliveryを実現するツールです。ArgoCDでは、Kubernetesマニフェストファイルが格納されたGitHub / Helmリポジトリを監視し、リポジトリ上で変更が発生したらその差分を検出して、Kubernetesクラスターに反映します。 GitOpsとは ArgoCDは、いわゆるGitOpsを実現するツールとして注目されています。GitOpsとは、以下のような特徴を備えたContinuous Deliveryの手法です。 GitをSingle Source of Truth(信頼できる唯一の情報源)として扱い、バージョン管理や変更履歴、ピアレビュー、ロールバックなどを、kubect
今回はKubernetes上で扱う秘匿情報を管理するExternal Secretsを試してみました。 注意事項:本記事はExternal SecretsのリポジトリがGoDaddyからexternal-secretsに移管する前に検証をしていたものです。そのため、一部マニフェストファイルにはgodaddy/kubernetes-external-secretsと記載されております。 リポジトリ移管の経緯はGitHub Issueに記載されております。 Kubernetesで利用するSecretの課題と関連プロダクト Kubernetesはログインパスワードなどの秘匿情報をSecretリソースで管理することが一般的な方法です。Secretリソースはbase64で暗号化した値を設定する必要があり、これはSecretリソースにアクセスできてしまえば、簡単に復号化できてしまう情報になります。 a
今回はメッセージングシステムの一つであるNATSを試してみました。 NATSとは 分散システムにおけるアプリケーションとサービス間のコミュニケーションは複雑で理解が難しいものとなります。現代のメッセージングシステムは複数のコミュニケーションパターンをサポートする必要があり、それに加えてセキュリティ・マルチテナンシー・拡張性など多様な要素も求められています。 NATSはこれらの要求を満たすために開発されたソフトウェアで、以下のような特徴を備えています。なおNATSはNeural Automatic Transport Systemの略称です。 複数のメッセージングパターンのサポート NATSはSubjectをベースとしたメッセージングシステムで、PublisherがSubjectに対してメッセージを送信し、Subjectと紐づくSubscriberへメッセージを転送します。Subjectは、
はじめに 先日個人的な興味でKubevirtを少し触っておりました。その中で、いったん全部のリソースを削除し、最初からやり直そうとしておりました。その中で、namespaceリソースを削除してもTerminatingの状態で止まる状態になってしまいました。これを削除するため色々と調べ、無事に削除することができました。今回は調べたことを一旦まとめておきたいと思い、やったことと参考ドキュメントを残しておきました。 結論 kubevirt-operatorを削除したとき、namespace kubevirt以外のリソースは削除されたが、namespaceはTermintaingのまま残り続けた。 いろいろやった結果、最終的にはjsonコンフィグを用意してcurlコマンドで直接APIを叩き、finalizerの状態を[]にしてあげることで削除できた。 起こったこと Kubevirtの基本的な利用方
先日ArgoCDを利用してみましたが、今回は同じArgo Projectの中からArgo Rolloutsを試してみました。Argo Rolloutsを利用することで、より高度なデプロイ・リリースを実現することができます。 リリース方式の違いと特徴について Argo Rolloutsを利用する前に、Kubernetes上で利用することの多いデリバリー/リリース方式について整理しておきます。なお、記載に当たり、以下のドキュメントを参照いたしました。 ※参考ドキュメント: 書籍 - 継続的デリバリー ~信頼できるソフトウエアリリースのためのビルド・テスト・デプロイメントの自動化~ Search ITOperations - When to use canary vs.blue/green vs. rolling deployment RedHat Openshift Doc - Advance
今回はService Meshについて概要を調べ、Service Meshを提供するプロダクトの一つであるIstioに触れてみました。 Service Meshとは マイクロサービスの課題 Service Meshを考えるうえでまず必要になるのが、マイクロサービスアーキテクチャの抱えるいくつかの課題です。 マイクロサービスを導入・構築するうえでの課題として、ネットワークに関連する事項が挙げられます。マイクロサービスはお互いネットワークを通じて連携するため、ネットワークに関する機能(Load Balancing、Traffic Routingなど)を実装する必要があります。また、アプリケーションを構成するマイクロサービスの数が多くなるほど、マイクロサービス間の接続数は増加し、通信断の発生する確率やパフォーマンス低下など、ネットワーク関連の問題が発生する可能性も増加します。 これまで複数のグロ
はじめに 今回は、Argo CDと組み合わせて利用することのできる通知ツールの一つ、Argo CD Notificationsについて、概要と利用方法を紹介します。 Argo CD Notificationsとは Argo CD Notificationsは、Argo CDのリソースを監視し、実行結果に応じてメール・Slackなどで通知してくれるプロダクトです。Triggerによって通知を送る契機やタイミングを指定、Templateによって通知する内容やフォーマットを指定することが可能です。また、Argo CD Notificationsが監視対象とするのはApplication AppProjectで、対象のリソースに対してAnnotationを付与することで監視対象とすることができます。 他の通知ツールとの比較 Argo CDのNotificationページには、Argo CD Not
はじめに 最近Kubernetes上でCI/CDパイプラインを構築するTektonというツールについて調べる機会があったので、本記事で簡単にまとめておきます。 Tektonとは TektonはKubernetes NativeなCI/CDソリューションとして開発され、Kubernetesクラスター上でのアプリケーションのビルド・テスト・デプロイなどを目的としたパイプラインの構築を実現します。 Tektonは主に4つのコンポーネントを利用しています。 Pipelines: CI/CDワークフローの基礎となるブロック。後述のTaskやPipelineなどを含む。Tektonのコア機能や他の機能の基盤を提供する。 Triggers: CI/CDワークフロー向けのイベントトリガー機能を提供。 CLI: TektonのCI/CDワークフローを管理するCLIツール(tkn)を提供。 Dashboard
はじめに Docker、Kubernetesをはじめとするコンテナ技術が普及するにつれ、現行でVirtual Machine(VM)が稼働している環境からコンテナへの移行を、どうやって実現するかが課題になってきました。 例えば、リフト&シフトなどの方法で基盤を移行させることを検討する際、VMとコンテナが共通基盤上にあるほうが、移行はやりやすくなるだろうと考えられました。 Kubevirtはそんなソリューションを提供するツールの一つになります。 今回はKubevirtについて簡単に紹介し、新しくリリースされたv0.21.0で利用可能となったvirtctl migrateコマンドを試してみました。 結論 KubevirtはVMとコンテナをKubernetes基盤上で共通管理するツールである。 v0.21.0よりvirtctl migrateコマンドが利用可能になり、VMのライブマイグレーション
はじめに Kubernetesの環境でPodのデプロイやClusterの制御などを行う際にはkubectlコマンドを介して操作します。 kubectlにはたくさんのコマンドやオプションが用意されています。その中の一つであるkubectl proxyについて、少しだけ検証する機会がありました。 これまではただただkubectl proxyと叩くだけだったコマンドでしたが、実はいろんなオプションがあって色々とできることを知れたので、備忘録の意味も含めてここに書いておきます。 ※kubectlの全体像は公式ページのこちら、kubectlのコマンド、オプションはこちらから詳しい説明を見ることができます。 kubectl proxyで提供するオプション kubectl proxy -hコマンドでヘルプを確認すると、以下のように表示されます。 [root@k8s-master-ksonnet gues
はじめに 最近業務でDockerを触る機会があります。これまで研修などで触れることはありましたが、やはり業務となるとわからなくなることがとても多くあります。その中でもつい最近わからなかったのが、Dockerを導入するホストに複数NICがついている場合、コンテナからの通信はどのようになるのかでした。こちらは色々と調べてみたのですが明確な回答にたどり着けなかったため、ひとまずは触って確かめてみようと思い、検証いたしました。 Dockerのネットワークの基本 Dockerのネットワークは、デフォルトではbridgeを利用したネットワークになります。bridgeはDockerを起動した時点で自動的に作成され、bridgeとコンテナNICとの接続は、仮想NIC(virtual ethernet)によって実現します。 コンテナからホストのネットワークへの通信は、ホストのiptablesによるIPマスカ
はじめに 本記事では、Kubernetesで実現するマルチテナントについて、2020年9月時点での現状と、将来的に利用できるであろう機能の紹介をいたします。各機能についての詳細は、参考ドキュメント等を参照していただければと思います。 本記事の要点 マルチテナントは単一のクラスター上に複数のテナントを共存させることを指す。 Kubernetesにはマルチテナントを実現するための機能が備わっている。 アクセスコントロール:RBAC セキュリティ:Namespace / Network Policy / Pod Security Policy リソースの隔離:ResourceQuota / LimitRange / Affinity / Taintなど Kubernetesのマルチテナント機能は、SIGを中心として機能開発が進められている。 Benchmarks Tenant Controlle
はじめに 本記事はCephのBest Practiceを探る第三弾になります。今回も先日紹介した記事の続編として、Cephの公式ブログで公開されているこちらの記事の内容を紹介いたします。今回も記事内容への補足や個人的なメモは青文字で加えております。 ceph.com 要約 Part 1で利用した検証環境において、Red Hat Ceph Storage(RHCS)が3ノードの時と5ノードの時を比べ、パフォーマンスがどの程度向上したかを測定しました。 Smallブロックサイズでは、ハードウェアリソースを60%追加することで、Random Read-WriteのワークロードのIOPSを95%向上し、平均レイテンシ・Tailレイテンシをそれぞれ46%、44%削減しました。 LargeブロックサイズのRandom Readワークロードでは、クライアントネットワークがボトルネックとなり、9.8GB/
はじめに 本記事はCephのBest Practiceを探る第二弾になります。今回は先日紹介した記事の続編としてCephの公式ブログで公開されているこちらの記事の内容を紹介いたします。今回も記事内容への補足や個人的なメモは青文字で加えております。 ceph.com 要約 Part-1に引き続き、Red Hat Ceph Storage (RHCS) 3.2でBlueStoreを利用した際のパフォーマンス検証を行った。本章では、ブロックサイズを3つのカテゴリー(Small / Medium / Large)に分け、それぞれのブロックサイズでどのようにパフォーマンスが変化するかを検証した。 Small / Mediumサイズの場合、CPUとメディアの競合により、パフォーマンスが制限された。 Largeサイズの場合、4Mサイズの時にピーク値を迎えた。クライアントのネットワーク帯域が上限に達したた
はじめに 本ブログでは、2020年になってからRook-Cephについて、機能や使い方などをいろいろと調べてまいりました。しかし一方で、そうやって調べた機能は、具体的にどのように利用するのか、どのような設定を行えばRook(というよりCeph)の機能を引き出すことができるのかについて、あまり理解をすることができていませんでした。例えば、Rook-Cephを利用する際、IOPSやスループットなどのパフォーマンスを引き上げるためには、どのような設定を行う必要があるのか、といった点が気になっております。 Rook-Cephの場合、ストレージの処理を行うのはCephの役割です。Cephは10年以上前に登場し、多くの本番環境で利用されてきたソフトウェアです。そのため、これまでのCephの運用や設計に関する知見・情報は多く公開されており、これらをたどることでCephを利用するうえでの最善策、Best
次のページ
このページを最初にブックマークしてみませんか?
『techstep.hatenablog.com』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く