### 担当箇所
##### 構成管理
- TerraformとAnsibleを用いた個人開発環境、開発環境(dev)、ステージング環境(stg)、プロダクション環境(prd)の構築
個人開発環境は、開発環境と同じアカウントで作成を行いますが、個人の識別名を変数化し、terraform apply実行時に必ずユニークな文字がリソース名に付与される仕組みを採用し各個人の環境を作成します。
- AnsibleとKustomizeを組み合わせEC2インスタンスのパラメータ設定とEKS内部の構築自動化
- Amazon EKSのNamespaceとIngressGatewayによる開発環境の複数面対応
開発チームの検証環境が1つだけだと様々なバグの修正を行いテストまで完了させるためには、どうしても複数の環境が必要となりました。
Route53でサブドメインを複数作成しALBのALIASを紐付け、
istio-ingressgatewayでFQDNによるトラフィックのNamespace振り分けを採用し、
AmazonEKS内で複数の開発環境を擬似的に構築しています。
##### Istio (Envoy-Proxy)
- Istio機能検証(IngressGateway, Gateway, VirtualService, DestinationRule, ServiceEntry)
IngressGatewayが何らかの原因により機能しなくなった場合を想定し、
IngressGatewayの冗長化を目的としたPodAffinityを活用し、異なるAZのワーカーノードへPodを配置する検証を行いました。
- フロントエンドからバックエンドに対する通信において、コネクション効率を考慮したEnvoy-SidecarでのHTTP1.0 < - > gRPC変換の動作検証
EKSクラスタを2つ用意し、
1つ目のクラスタ(Webクラスタ)はWebUIを提供するnginxコンテナとバックエンド連携するAPIを配置。
2つ目のクラスタ(APIクラスタ)はマイクロサービス化されたAPI群を配置。
WebクラスタからAPIクラスタ間の通信はHTTP1.0(REST)ですが、APIクラスタ側ではAPI PodのEnvoy-SidecarでgRPCへの変換を行う形での検証を行いました。
- サービス提供を行うアプリケーションPodに対しL7レベルの監視を行うため、Envoy-Sidecarでのアクティブヘルスチェック検証および実装
サービス監視手段の冗長化として、ELBからのヘルスチェックの他に、Envoy-FilterのL7ヘルスチェック機能を採用しました。ヘルスチェックの結果はPodのログに出力されるため、Datadogによるログモニタに組み込むことでアラート通知することで運用チームへの通知を行います。
##### モニタリング
- DatadogとAWSのインテグレーションとモニタリング
- TerraformからDatadogで、監視定義コード化とgit管理
Terraformを使用した監視定義のコード化を行うことで、バージョン管理や他のプロジェクトでも再利用できる形にし、開発効率および運用・監視定義更新の利便性が向上されました。
##### CI/CD
- GitLab Runnerを用いたDockerプライベートリポジトリへのDocker Image Pushパイプライン構築
- デプロイフレームワークのArgoCDを用いたKubernetes環境へのデプロイ環境の構築(app of apps)
多くのアプリケーションPodのデプロイを一度の操作で行うようにするべく、
ArgoCDのApp of Appsを活用し、デプロイ時(運用時)の手順簡略化に貢献しています。
App of Appsのデプロイイメージとしては、親となるリポジトリのデプロイ操作を行うことで、
子として紐付く複数のアプリケーションコンテナが同時にデプロイされる仕組みです。
##### その他
- Jira を用いたスクラム、チケット管理、進捗確認
- Confluenceでドキュメント類の作成、更新
- 社内Istio勉強会(資料作成、メインスピーカー)
- 業務を進める上でのコミュニケーションは次の方式で行いました。
デイリースクラムで現在の担当チケットおよび進捗状況、ブロック要因の有無について連携。
簡易的な連絡はMattermostで行い、認識合わせや詳細な情報共有についてはZoomなどを活用。