SlideShare una empresa de Scribd logo
1 de 46
Argo CD Deep Dive
2021.11.04
2
Profile:
2019.4にfreee入社
以来ずっとSREやってます
主にKubernetesの構築運用設計やってます
like:
ゲーム
ボードゲーム
リアル脱出ゲーム
trend:
藤原峻輝
SRE
shunki fujiwara @renjikari
プロフィール画像の
トリミング方法
01 はじめに
02 Argo CDとArgo Family
03 コンセプト
04 アーキテクチャ詳解
05 Syncしたときの挙動をコ
ードベースで追ってみる
Agenda
01 はじめに
02 Argo CDとArgo Family
03 コンセプト
04 アーキテクチャ詳解
05 Syncしたときの挙動をコ
ードベースで追ってみる
Agenda
5
今日の話の対象者
Deep Diveと銘うちましたが、前提知識は少なめにK8sについてある程度の知識を持っていれば理
解できるsessionにします。
すでにArgo CDを利用している人にはより詳細な挙動についての解説
そうでない人にも(GitOpsの実装の一つとしての)Argo CDのコンセプトやアーキテクチャについて
解説します
6
今日話さないこと
● argocdに関連する拡張ツール群↓に一応いまあるやつまとめてみました(抜け漏れ勘弁)
● argocd-notifications
○ https://github.com/argoproj-labs/argocd-notifications
● applicationset
○ https://github.com/argoproj-labs/applicationset
○ https://qiita.com/shmurata/items/a6ee4193e2d2c8a2d34c
○ Kind: Applicationを管理するもの
● argocd-operator
○ https://github.com/argoproj-labs/argocd-operator
○ argocd clusterの管理をしてくれるoperator
● argocd-image-updater
○ https://github.com/argoproj-labs/argocd-image-updater
○ まだ若いv0.11.0のとまだサポートされてないパターンある
● Argo CD以外のArgo projects
○ さわりだけ話すけどほぼ話さない
今日のコンセプトは・・・
公式ドキュメントより詳しく
01 はじめに
02 Argo CDとそのコンセプト
03 Argo Familiy
04 アーキテクチャ詳解
05 Syncしたときの挙動をコ
ードベースで追ってみる
Agenda
Argo CDはKubernetes向けの宣言的なGitOpsツール
です。
11
Argo CDはKubernetes向けの宣言的なGitOpsツールです。
アプリケーションの定義/config/environmentは宣言的でバージョンコントロールできるべきです。
Argo CDではApplicationのデプロイやライフサイクルを自動的で監査可能で理解しやすいようにマ
ネージメントしてくれます。
Argo CD
12
Argo CDはKubernetes向けの宣言的なGitOpsツールです。
ArgoCDはGitOps patternを使っています。
GitOps pattern: Git repositoryをapplicationの定義のソースとするやり方
Weaveworks社が提唱しました
GitOps
13
ざっくりした図でArgo CDの流れを把握しまし
ょう(公式のアーキテクチャ図を拝借)
1. Argo CD clusterはK8s上で動いている
2. Argo CDはAPI/Repository/Contollerでできて
いる
3. gitをはじめとするいろんなサービスと連携で
きそう
4. Argo CD clusterから各K8s clusterにデプロイ
している
アーキテクチャ from 公式
14
Argo CDのコアコンセプト
Argo CDではいくつかのK8sリソース、及びGitOpsのための概念とプロセスでコンセプトが実現さ
れています。
なかでも、今回のDeepなDiveに関連するコアなもののみ公式から抜粋 + 補足していきます
● リソース
○ Application/Project
○ API Server
○ Application Controler
○ Repository Server
● 概念
○ Live State
○ Target State
● プロセス
○ Sync
○ Refresh
15
Application/project
● application
○ CRDによって定義されるresouce①
○ 一つのK8s resourceのまとまり。1serviceを1applicationとするのがわかりやすそう
● project
○ CRDによって定義されるresouce②
○ applicationの論理的なgroup
○ 権限(認可)の管理に利用できる
○ projectの中でmanifest deploy先のK8s clusterを指定する。
○ freeeでは基本的に1project = 1K8s clusterの運用をしている
○ appは1つのprojectに所属する
○ projectは複数のappに所属されうる
16
Live State/Target State/Sync/Refresh
LiveState: 現在の実際のstate
Target State: codeで定義されたmanifestのstate. redisにcache可能
Sync: Target StateをK8sにapply(deploy)する
Refresh: Target Stateを最新に更新する
17
API Server
API ServerはgRPC/RESTを受けるserverで、web UI, CLI, その他の外部システムなどからリクエス
トを受け付けます。
● Kind: Deployment
● application の管理とstatus管理
● applicationのoperationのinvoke(発火)
○ sync/rollback/user-defined actions
● repositoryとcluster credentialの管理
● 外部のidentity providersとの認証認可の権限移譲
○ ex) freeeではgithubのteamsでログインできて、権限管理もそれに紐付いている)
● RBAC
● Git webhook events
18
Application Controler
applicationのlive stateとtarget stateの比較を行い、OutOfSyncの状態を検知できます
live stateはK8s APIを叩いて現在の状態を取得します。TargetStateはargocd-repo-serverを使って
manifestをgenerateして取得します
また、lifecycle eventの発火にも責任をもっています(PreSync, Sync, PostSync)
19
Repository Server
repo サーバはgit repositoryから取ってきたapplication manifestsのlocal cacheとして機能していま
す。
以下の要素が入力されればK8s Manifestsを(tepmlateからの場合は生成して)returnしてくれます
- repository URL
- revision (commit, tag, branch)
- application path
- template specific settings: parameters, ksonnet environments, helm values.yaml
20
かなりざっくりした図でArgo CDの流れを把握
しましょう(公式のアーキテクチャ図を拝借)
1. Argo CD clusterはK8s上で動いている
2. Argo CDはAPI/Repository/Contollerでできて
いる
3. gitをはじめとするいろんなサービスと連携で
きそう
4. Argo CD clusterから各K8s clusterにデプロイ
している
アーキテクチャ from 公式
01 はじめに
02 Argo CDとそのコンセプト
03 Argo Familiy
04 アーキテクチャ詳解
05 Syncしたときの挙動をコ
ードベースで追ってみる
Agenda
22
Argo Workflow:
● Kubernetes-nativeなワークフローエンジン
● DAG(有向非巡回グラフ)も扱える
Argo Rollouts
● Canary release/Blue Green Deployなどのdeployment戦略を可能に
Argo Events
● event関連のツール
● 外部で起きたeventを監視したりあるいはwebhookなどで通知を受けてなにかを実行できる
Argo Family
01 はじめに
02 Argo CDとそのコンセプト
03 Argo Familiy
04 アーキテクチャ詳解
05 Syncしたときの挙動をコ
ードベースで追ってみる
Agenda
24
この図、結構ざっくり目
● それぞれの矢印がどこを指してるのかざっ
くりしてる
● Argo CDの中でどんなことが行われているか
省略されている
アーキテクチャ from 公式
詳細な図を作ってみました
26
変更箇所
● 外部からのアクセスがどのリソースに来て
いるかをはっきりさせた
● Argo CD内のリクエストの流れの例を書いて
みた
アーキテクチャ 詳解図
27
● API Serverが外部からのリクエストを受ける
● 図には書きませんでしたが、その他のgit以
外の連携ツールからの通信もAPI Serverが受
ける
アーキテクチャ 詳解図
クローズアップ①
28
● Sync
○ UI/CLIからsyncのコマンドが発行される
○ argo-cd serverがsyncされるように
applicationのstateを変更
○ それをapplication Contollerが監視
○ App Clusterにdeploy
アーキテクチャ 詳解図
クローズアップ②
29
● Refresh(の1パターン)
○ Application ControllerがTarget Stateの
revisionの差分チェック
○ Repository ServiceにManifest要求
○ Repository Serviceがgitからcode とって
きてGenerate Manifestする
アーキテクチャ 詳解図
クローズアップ③
01 はじめに
02 Argo CDとそのコンセプト
03 Argo Familiy
04 アーキテクチャ詳解
05 Syncしたときの挙動をコ
ードベースで追ってみる
Agenda
31
● 先ほど紹介したこの図を実際にAPI callから
コードレベルで追ってみます
● というか実際にはコード読んでこの図を作
りました
○ 詳細なDocないので
Sync時の動作をコードで追う
32
WebUIでSyncボタンを押すとこんな感じでPostを投げています
https://localhost:8080/api/v1/applications/guestbook/sync
ちなみに環境はEKSの検証用クラスタにArgo CDクラスタを作ってportforwardingしています。
Sync時の動作をコードで追う①
APIサーバにリクエストを投げる
33
https://localhost:8080/swagger-ui#operation/ApplicationService_Sync
のようにするとAPI referenceにアクセスできる
Sync時の動作をコードで追う②
APIリファレンス
34
ここからコードの中身ですが一旦API Serverの整理をします
argo-cdの中でAPI Serverのコードはここです
またendpointはすべてprotocol buffersによって生成されています。
ただしクラスター外部からの通信を受け取ることがあるため、ほとんどのendpointでgrpc-gatewayによるhttp ->
gRPCのreverce proxyが設定されています
https://github.com/argoproj/argo-
cd/blob/513d8a4ae07e65e9590783007153043e78cfbeb6/server/application/application.proto#L306
Sync時の動作をコードで追う③
API endpoint
36
https://github.com/argoproj/argo-
cd/blob/513d8a4ae07e65e9590783007153043e78cfbeb6/pkg/apiclient/application/application.pb.gw.go#L816
func request_ApplicationService_Sync_0(...)からclient.syncで
↓
https://github.com/argoproj/argo-cd/blob/master/pkg/apiclient/application/application.pb.go ファイルの
func (c *applicationServiceClient) Sync
↓
func _ApplicationService_Sync_Handlerがよばれ
↓
最終的に
srv.(ApplicationServiceServer).Sync(ctx, req.(*ApplicationSyncRequest)) が呼ばれる
このSyncはユーザが定義した(protobufによって生成されたものでない) func (s *Server) Sync(...)
https://github.com/argoproj/argo-
cd/blob/6262a8c750b27b254c330f9882ff26af7aac672c/server/application/application.go#L1346
Sync時の動作をコードで追う③
grpc gateway ~ sync用function
37
func (s *Server) Sync
↓
argo.goの
func SetAppOperation()
https://github.com/argoproj/argo-cd/blob/6262a8c750b27b254c330f9882ff26af7aac672c/util/argo/argo.go#L448
↓
func (c *applications) Update()
https://github.com/argoproj/argo-
cd/blob/6262a8c750b27b254c330f9882ff26af7aac672c/pkg/client/clientset/versioned/typed/application/v1alpha1/app
lication.go#L109
このUpdateでK8s上のkind:Applicationsをupdateしている
Sync時の動作をコードで追う④
func Sync 〜 リソースの変更まで
38
● 今話したのは図のWEBUI ~ Update Stateの
ところ
● Application controllerが実際にsyncするのは
別のコード体系なのでそちらをみていく
Sync時の動作をコードで追う
39
❯ k get -o yaml application guestbook
apiVersion: argoproj.io/v1alpha1
kind: Application
status:
health:
status: Missing
operationState:
finishedAt: "2021-11-02T18:36:14Z"
message: successfully synced (no more tasks)
operation:
initiatedBy:
username: admin
retry: {}
sync:
dryRun: true
resources:
- kind: Service
name: guestbook-ui
namespace: default
revision: 53e28ff20cc530b9ada2173fbbd64d48338583ba
syncStrategy:
hook: {}
phase: Succeeded
startedAt: "2021-11-02T18:36:14Z"
syncResult:
resources:
- group: ""
hookPhase: Succeeded
kind: Service
message: service/guestbook-ui configured (dry run)
name: guestbook-ui
namespace: default
status: Synced
syncPhase: Sync
version: v1
revision: 53e28ff20cc530b9ada2173fbbd64d48338583ba
source:
path: guestbook
repoURL: https://github.com/argoproj/argocd-example-apps.git
application詳解
reconciledAt: "2021-11-03T17:56:05Z"
resources:
- health:
status: Healthy
kind: Service
name: guestbook-ui
namespace: default
status: Synced
version: v1
- group: apps
health:
status: Missing
kind: Deployment
name: guestbook-ui
namespace: default
status: OutOfSync
version: v1
sourceType: Directory
summary: {}
sync:
comparedTo:
destination:
namespace: default
server: https://kubernetes.default.svc
source:
path: guestbook
repoURL: https://github.com/argoproj/argocd-example-apps.git
revision: 53e28ff20cc530b9ada2173fbbd64d48338583ba
status: OutOfSync
40
application ControllerはContainer起動時にrunされたときからgo routineでinformerを動かしている
https://github.com/argoproj/argo-
cd/blob/8a6b759c4a8705f30aafa1081e5068819f2abce7/controller/appcontroller.go#L598
func (ctrl *ApplicationController) Run()
informerは k8s.io/client-go/tools/cache で提供されていて、CustomControllerからK8sのリソースに関するeventを
watchできる
https://github.com/argoproj/argo-
cd/blob/8a6b759c4a8705f30aafa1081e5068819f2abce7/controller/appcontroller.go#L1649
informer.AddEventHandler() でfuncを定義していてその中でresouceのadd/update時に次のスライドで説明する
queueにkeyを追加する部分がある
Sync時の動作をコードで追う⑤
application controllerのreconcile roopその1
41
application ControllerはContainer起動時にrunされたときからgo routineでoperationをキュー管理している
https://github.com/argoproj/argo-
cd/blob/8a6b759c4a8705f30aafa1081e5068819f2abce7/controller/appcontroller.go#L598
func (ctrl *ApplicationController) Run()
ApplicationControllerはapplication get listを行うためのinterfaceやapplicationのstate, stateのCacheなどを持つ構造体
Sync時の動作をコードで追う⑤
application controllerのreconcile roopその2
42
● syncする場合はprocessAppOperationQueueItem() によって、operationQueueから実際にOperationを取得して
○ https://github.com/argoproj/argo-
cd/blob/8a6b759c4a8705f30aafa1081e5068819f2abce7/controller/appcontroller.go#L678
● processRequestedAppOperation()にてrequest
○ https://github.com/argoproj/argo-
cd/blob/8a6b759c4a8705f30aafa1081e5068819f2abce7/controller/appcontroller.go#L1002
● ↑のfuncでSyncAppStateを実行する
○ https://github.com/argoproj/argo-
cd/blob/8a6b759c4a8705f30aafa1081e5068819f2abce7/controller/sync.go#L46
○ Syncのコマンドだが、実際の実行はargoproj/gitops-engineにまかせている
■ https://github.com/argoproj/gitops-
engine/blob/2565df31d16fd28d34a442072cbb7bcbb7415d33/pkg/sync/sync_context.go#L368
Sync時の動作をコードで追う⑤
application controllerのOperation実行
43
最後にsetOperationState() などでstate更新を行いlogを出力して一連の流れが完了
https://github.com/argoproj/argo-
cd/blob/8a6b759c4a8705f30aafa1081e5068819f2abce7/controller/appcontroller.go#L1104
Sync時の動作をコードで追う⑥
application controllerのSync後の後処理
44
● Application Controllerの挙動を話した
● application controllerは自発的にmonitorする
のでendpointをもっていない
○ コード上もないし、k get svcしても
application controllerが利用するserviceは
ない
● 今回の話はあくまでSync(すでにrefreshは行
われている想定)
● refreshは自動でn分に一回実行したり、
UI/CLIから明示的にrefreshしたりできる。
● Syncと似たようなQueueで管理されている
Sync時の動作をコードで追う
まとめ
46
Argo CDの公式ドキュメントを読んでも詳細なところがわからない部分が多かったのでコードを読
みながら図を書いてみました。CNDTドリブンでしたが実業務にも役立ちそうな話があったのでよ
きでした。
application contollerまわりはコードを読んだだけでは思想を理解しづらい部分があってチームメイ
トに教えてもらいました。:kansha: KubernetesのCustomContollerとしての実装なのでそこと関連
付けられるとコードが読みやすかったです。
実はdex-server(login時の認証まわり)についてなどは省くなどしていて実際にはもっと複雑な図に
なります。
また、redis周りの利用(あるいはどういったものをmemoryに持っていてどういったものをredisに投
げているのかという分類)は読む時間がなかったので、いつか時間があったら再度まとめてみようか
と思っています。
まとめ
Argo CD Deep Dive

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Keycloakのステップアップ認証について
Keycloakのステップアップ認証についてKeycloakのステップアップ認証について
Keycloakのステップアップ認証について
 
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
 
Azure AD による Web API の 保護
Azure AD による Web API の 保護 Azure AD による Web API の 保護
Azure AD による Web API の 保護
 
Keycloak拡張入門
Keycloak拡張入門Keycloak拡張入門
Keycloak拡張入門
 
KeycloakでAPI認可に入門する
KeycloakでAPI認可に入門するKeycloakでAPI認可に入門する
KeycloakでAPI認可に入門する
 
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
 
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
 
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
 
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
 
3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal
 
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
 
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
 
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
 
超実践 Cloud Spanner 設計講座
超実践 Cloud Spanner 設計講座超実践 Cloud Spanner 設計講座
超実践 Cloud Spanner 設計講座
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
 
【de:code 2020】 Azure Red hat OpenShift (ARO) によるシステムアーキテクチャ構築の実践
【de:code 2020】 Azure Red hat OpenShift (ARO) によるシステムアーキテクチャ構築の実践【de:code 2020】 Azure Red hat OpenShift (ARO) によるシステムアーキテクチャ構築の実践
【de:code 2020】 Azure Red hat OpenShift (ARO) によるシステムアーキテクチャ構築の実践
 
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
 

Similar a Argo CD Deep Dive

Similar a Argo CD Deep Dive (7)

実践! Argo cd & rollouts による canary release(cndt2021)
実践! Argo cd & rollouts による canary release(cndt2021) 実践! Argo cd & rollouts による canary release(cndt2021)
実践! Argo cd & rollouts による canary release(cndt2021)
 
Argo CDについて
Argo CDについてArgo CDについて
Argo CDについて
 
DBP-002_データ分析のさらに一歩先へ Cortana Intelligence Suite
DBP-002_データ分析のさらに一歩先へ Cortana Intelligence SuiteDBP-002_データ分析のさらに一歩先へ Cortana Intelligence Suite
DBP-002_データ分析のさらに一歩先へ Cortana Intelligence Suite
 
INF-003_Azure でのセキュア ネットワーキング
INF-003_Azure でのセキュア ネットワーキングINF-003_Azure でのセキュア ネットワーキング
INF-003_Azure でのセキュア ネットワーキング
 
「第一部 日比谷ゴジラ迎撃作戦 戦略会議」製作秘話
「第一部 日比谷ゴジラ迎撃作戦 戦略会議」製作秘話「第一部 日比谷ゴジラ迎撃作戦 戦略会議」製作秘話
「第一部 日比谷ゴジラ迎撃作戦 戦略会議」製作秘話
 
20131019 OSC@Tokyo CloudStackユーザー会
20131019 OSC@Tokyo CloudStackユーザー会20131019 OSC@Tokyo CloudStackユーザー会
20131019 OSC@Tokyo CloudStackユーザー会
 
[2019 01-19] AzureDevOps LT
[2019 01-19] AzureDevOps LT[2019 01-19] AzureDevOps LT
[2019 01-19] AzureDevOps LT
 

Último

Último (7)

LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 

Argo CD Deep Dive

Notas del editor

  1. リソース Application/Project API Server Application Controler Repository Server 概念 Live State Target State プロセス Sync Refresh
  2. ApplicationServiceServerのinterface .Sync{} はinterface としてだけpbファイルに定義されており、実態はユーザが実装する それがapplication.goにある これはregisterで登録している(がっつりGRPCの話でよくわからん)
  3. ApplicationSyncRequest の中に様々な
  4. 途中のいらなさそうなものはバッサリカット https://github.com/argoproj/argo-cd/blob/6262a8c750b27b254c330f9882ff26af7aac672c/util/argo/argo.go#L458 で a.Status.OperationState = nil してたりしてる
  5. ApplicationSyncRequest の中に様々な
  6. ApplicationSyncRequest の中に様々な
  7. ApplicationSyncRequest の中に様々な
  8. ApplicationSyncRequest の中に様々な
  9. ・そしてその「スモールビジネスを、世界の主役に。」 ・スモールビジネスを「世界の」つまり「世の中の」主役するという使命の元ビジネスを続けてきた ・今それは願いから確信へと変わりつつある 【次項】創業時の想い ----- 改めて、「スモールビジネスを、世界の主役に。」こちらがfreee のミッションです。 私たちは、スモールビジネスを「世界の」つまり「世の中の」主役するという使命を掲げて走り続けてきました。 そして今、それは願いから確信へと変わりつつあります。