Cloudflare Workers Plugin for PipeCD
はじめに
CyberAgentのDeveloper Productivity室で室長をしています、 uncle__ko です
現在PipeCDではPlugin化構想に向けて鋭意開発中です
そこで、PipeCDで実現すると面白そうなPluginのアイデアについて記載していきます
What is Cloudflare Workers?
Cloudflare Workersは、Cloudflare のエッジで動くサーバーレスの JavaScript 実行環境
主な特徴:
- エッジコンピューティング: Cloudflareのグローバルネットワーク上で動作し、遅延を削減。
- サーバーレス: インフラ管理不要で手軽に利用可能。
- スケーラビリティ: トラフィックの増減に自動対応。
V8 isolate architecture
開始時にインスタンスにruntimeがロードされるのを待つ遅延がない
isolateはすでににruntimeを備えており、必要なのは呼び出し時にCodeをロードすることだけ
リクエスト時のcold startは存在しない
Deploying PipeCD Plugins with Wrangler
Wrangler
Cloudflare Workersを管理することができるCLI
※ちなみにCDNとかdomainの管理はflarectl
欲しいコマンドはだいたいあると思われる
init - Create a new project from a variety of web frameworks and templates.
deploy - Deploy your Worker to Cloudflare.
delete - Delete your Worker from Cloudflare.
rollback - Rollback to a recent deployment.
Configuration fileもあり、現状はJSONC or TOMLがサポートされている
{
"name": "my-worker",
"main": "src/index.js",
"compatibility_date": "2022-07-12",
"workers_dev": false,
"route": {
"pattern": "example.org/*",
"zone_name": "example.org"
},
"kv_namespaces": [
{
"binding": "<MY_NAMESPACE>",
"id": "<KV_ID>"
}
],
"env": {
"staging": {
"name": "my-worker-staging",
"route": {
"pattern": "staging.example.org/*",
"zone_name": "example.org"
},
"kv_namespaces": [
{
"binding": "<MY_NAMESPACE>",
"id": "<STAGING_KV_ID>"
}
]
}
}
}
# Top-level configuration
name = "my-worker"
main = "src/index.js"
compatibility_date = "2022-07-12"
workers_dev = false
route = { pattern = "example.org/*", zone_name = "example.org" }
kv_namespaces = [
{ binding = "<MY_NAMESPACE>", id = "<KV_ID>" }
]
[env.staging]
name = "my-worker-staging"
route = { pattern = "staging.example.org/*", zone_name = "example.org" }
kv_namespaces = [
{ binding = "<MY_NAMESPACE>", id = "<STAGING_KV_ID>" }
]
Configuration fileの形式をどうサポートするかは悩みどころ
個人的にはv3.91.0以上がjsoncとtoml、それ以下はtomlしかサポートされてないので、最初はtomlだけサポートしておけば良い気もする
最初は下記stageさえ用意できれば問題ない気がしてる
- WRANGER_DRY_RUN
- wrangler deploy –dry-run
- WRANGER_DEPLOY
- wrangler deploy
- WRANGER_ROLLBACK
- wrangler rollback
※これは勝手な想像です
こんなapp.pipecd.configになるイメージをしてます
apiVersion: pipecd.dev/v1beta1
kind: WranglerApplication
spec:
name: wrangler
input:
config: wrangler.toml
pipeline:
stages:
- name: WRANGER_DRY_RUN
- name: WRANGER_DEPLOY
Summary
- plugin化たのしみ
- plugin作れるようになったら本スライドで話したwrangler用のplugin作ろうかなって思ってる
- Cloudflare Workersはこれから需要も増えていくだろうし、対応すれば使ってくれる人もいるかなって思ったりしてる
- Hono界隈の人にも認知されたら熱そう
Discussion