Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Cloudflare Meetup Nagano Vol.2
Search
Taisei Ito
October 14, 2023
Technology
2.1k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Cloudflare Meetup Nagano Vol.2
Taisei Ito
October 14, 2023
More Decks by Taisei Ito
See All by Taisei Ito
Grafana Meetup Japan Vol. 6
kaedemalu
1
830
Cloudflare Meetup Nagano Vol.3
kaedemalu
0
110
20220214_Future Tech Night
kaedemalu
0
2.5k
20210910_nyle
kaedemalu
0
1.1k
20210827 Future Tech Night
kaedemalu
0
4.6k
CNDO2021 Open Policy Agent
kaedemalu
1
1.5k
20210210 Terraform meetup ONLINE
kaedemalu
0
700
Future Talk Night 20201118
kaedemalu
0
250
20201114 GCPUG Shonan
kaedemalu
0
510
Other Decks in Technology
See All in Technology
AWS Summit Japan 2026の振り返りと2027へ向けて / AWS Summit Japan 2026 Recap and Prospects for 2027
kaminashi
1
190
SRE Lounge Hiroshimaへの招待
grimoh
0
160
背中から、背中へ /paying forward to community
naitosatoshi
0
220
Why is RC4 still being used?
tamaiyutaro
0
290
AI Agent SaaS を支える自社仮想化基盤への挑戦と実運用 / ai-agent-saas-virtualization
flatt_security
2
1k
飲食店もAIで。レジ締めやハンディシステムをつくってる話 / Using AI for restaurant management
vtryo
0
240
“全部コピーしない”ファイルデータの活用 : — FSx for ONTAP × S3 Tables × Icebergで作るメタデータカタログ
yoshiki0705
0
410
End-to-Endで考える信頼性 —LINEアプリにおけるクライアント開発×SRE連携の実践
maruloop
1
240
NDIAS CTF 2026 問題解説会資料
bata_24
0
170
依頼文化をやめる日 EM視点で語るPlatform EngineeringとInclusive SRE / Discussing Platform Engineering and Inclusive SRE from an EM's Perspective
shin1988
2
1.3k
5分でわかるDuckDB Quack
chanyou0311
4
310
なぜ私たちのSREプラクティスはなかなか機能しないのか 〜システムより先に組織を見る〜 / Why our SRE practices aren't really working
vtryo
0
590
Featured
See All Featured
Large-scale JavaScript Application Architecture
addyosmani
515
110k
AI: The stuff that nobody shows you
jnunemaker
PRO
8
770
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
180
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
2
290
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.2k
We Have a Design System, Now What?
morganepeng
55
8.2k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
480
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
460
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
410
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6k
Being A Developer After 40
akosma
91
590k
Amusing Abliteration
ianozsvald
1
220
Transcript
Cloudflare Meetup Nagano Vol.2 2023.10.14 Sat. Taisei Ito kaedemalu 𝕏
kaedemalu
自己紹介 • 伊藤 太斉(Taisei Ito) ◦ @kaedemalu(X, GitHub) ◦ フューチャー株式会社
▪ Technology Innovation Group ▪ シニアコンサルタント ◦ #Terraform #Google Cloud #AWS • Community ◦ GCPUG Shonan Staff • Like ◦ サウナ・スキー・カメラ・ロードバイク
Agenda • 話そうと思っていること ※詳細については以下ブログを確認してください cf-terraformingで入門するCloudflare
Agenda • 話そうと思っていること ※詳細については以下ブログを確認してください cf-terraformingで入門するCloudflare
Agenda • 話そうと思っていること ◦ Terraformについて ◦ CloudflareとTerraform ◦ TerraformerからみたCloudflare •
話さないこと ◦ CloudflareにおけるTerraformのベストプラクティス
Infrastructure as Code (IaC) • インフラリソースをコードで管理する時代 ◦ 開発の高速化・変化に耐えうる必要が出てきた • クラウドサービスが発展し、より複雑に絡み合うモダンインフラには
「設定の明文化」が必要 • IaCに挙げられるメリットは以下である ◦ Reusability(再利用性) ◦ Portability(可搬性) ◦ Automation(自動化) • IaCのツール例 ◦ Ansible ◦ Cloud Formation ◦ Deployment Manager
Terraformとは • HashiCorp社が開発しているOSS ◦ インフラをソースコードで定義するツール ▪ InfraStructure as Code(IaC)ツールである ◦
HashiCorp Configuration Language(HCL)で記載する ◦ 拡張子は .tf で定義する ◦ 最近、Terraformのv1.6がGAになった
Terraformのコンポーネント • ソースコード ◦ 開発者がHCLで記述するファイル • Provider ◦ ソースコードをクラウドに適用するために必要 ▪
クラウドに向けてリクエストを投げる • State ◦ クラウドリソースの「あるべき」が書かれるファイル ◦ 自分で触ることは基本しない ◦ 管理はストレージサービス (S3, GCS etc…)に配置して管理する
Terraformのコンポーネント ソースコード Provider State 各種クラウド リソース 差分の同期 差分の比較
CloudflareとTerraform • CloudflareもTerraformで管理することが可能 • プロバイダーは現在Cloudflareで開発している ◦ cloudflare/terraform-provider-cloudflare ◦ コミット、リリースも積極的に行われている •
cf-terraformingというツールがCloudflareにて開発されている ◦ cloudflare/cf-terraforming • ストレージサービスでのState管理 ◦ R2で管理は現在できない ▪ Issue: Support Cloudflare r2 for storing Terraform state #33847
Cloudflare内部でTerraformの管理を完結させてみたいと思った
Stateを管理するときの例 • いずれかのストレージサービスでStateを管理するとき、以下のように書く ex.) S3で管理する場合 terraform { backend "s3" {
bucket = "sample-tfstate" # バケット名 key = "state" # オブジェクトのパスを指定 region = "us-east-1" # バケットのリージョン } }
Cloudflareのみで管理を完結するための課題 • Stateの管理をCloudflareに持っていきたい ◦ そうでない場合、S3, GCSなど他のクラウドに管理を委ねることになる
Cloudflareのみで管理を完結するための課題 • 自作 ◦ http backendがあり、Stateの挙動に合わせてAPIを準備すればできる可能性が高い ▪ Backend: http •
あるもの ◦ R2とS3の間でのAPI互換性あり ▪ APIの互換性一覧:S3 API compatibility
Cloudflareのみで管理を完結するための課題 • 自作 ◦ http backendがあり、Stateの挙動に合わせてAPIを準備すればできそう ▪ Backend: http •
あるもの ◦ R2とS3の間でのAPI互換性あり ▪ APIの互換性一覧:S3 API compatibility
調べても出てこないので、やってみた
設定していく • まずは課金の有効化 ◦ Stateのみ保存なので無料の範囲内
設定していく • アカウントIDを控える • APIトークンの作成
設定していく • APIトークンの作成 ◦ 出力された以下を控えておく ▪ アクセス キーID ▪ シークレット
アクセス キー
設定していく • R2バケットを作成する
設定していく • 環境変数の設定を行う ※Terraform側でパラメータを扱わないようにするため No. 環境変数名 値 1 AWS_ACCOUNT_ID CloudflareのアカウントID
2 AWS_ACCESS_KEY_ID APIトークンで払い出したアクセスキー ID 3 AWS_SECRET_ACCESS_KEY APIトークンで払い出したシークレット アクセスキー 4 CLOUDFLARE_ACCOUNT_ID CloudflareのアカウントID 5 CLOUDFLARE_API_KEY ユーザーAPIトークンで確認できる Global API Key 6 CLOUDFLARE_API_TOKEN アクセスキー, シークレットアクセスキーと 共に払い出したトークン
実際に管理する • backendの設定を行う ◦ ① S3と同様の設定を行う →トークン系のエラー(403) terraform { backend
"s3" { bucket = "kaedemalu-tfstate" key = "default.state" region = "us-east-1" } }
実際に管理する • backendの設定を行う ◦ ②トークンのバリデーションをスキップするオプションを追加 →アクセスキーがAWSの形式ではないと怒られる(403) terraform { backend "s3"
{ bucket = "kaedemalu-tfstate" key = "default.state" region = "us-east-1" skip_credentials_validation = true } }
実際に管理する • backendの設定を行う ◦ ③ S3のエンドポイントの向き先を指定 →成功した! terraform { backend
"s3" { bucket = "kaedemalu-tfstate" key = "default.state" region = "us-east-1" endpoint = "https://<CLOUDFLARE_ACCOUNT_ID>.r2.cloudflarestorage.com" skip_credentials_validation = true } }
余談 • us-east-1リージョンはないが、Cloudflare側でautoというリージョンになるようにエ イリアスが貼られている • Terraformのv1.6からはエンドポイントが以下のようにendpointsブロックになる terraform { backend "s3"
{ bucket = "kaedemalu-tfstate" key = "default.state" region = "us-east-1" endpoints = { s3 = "https://<CLOUDFLARE_ACCOUNT_ID>.r2.cloudflarestorage.com" } skip_credentials_validation = true } }
Workersをデプロイしてみる • Workersのスクリプト Terraform部分 • 実際に乗せるスクリプト ◦ 「Hello World」を出力するスクリプトを公式から拝借 ◦
https://developers.cloudflare.com/workers/examples/return-html/ resource "cloudflare_worker_script" "sample_workers" { account_id = "0000000000000000000000" name = "test-cf-workers" content = file("./scripts/workers.js") module = true }
Workersをデプロイしてみる • Terraform経由でデプロイしていることがわかる
Workersをデプロイしてみる • Terraform経由でデプロイしていることがわかる
Workersをデプロイしてみる • ZoneもTerraformで追加(したかった) • 「workers.dev」ドメインはZone IDを持たないことから利用できない ◦ 今回は手動で有効化して以下を確認しました(悔しい resource "cloudflare_worker_route"
"sample_workers" { zone_id = "xxxxxxxxx" pattern = "example.com/*" script_name = cloudflare_worker_script.sample_workers.name }
Terraformから眺めるCloudflare(クラウド) • Terraformからリソースを作成する場合、コンソール上では1つのリソース でも複数から構成する必要がある ◦ Workersを画面で立ち上げた場合、以下の 2つが同時に作成される ▪ Workers本体(スクリプト) ▪
ドメインの紐付け • クラウド側のリソース作成の流れを感じることができる
まとめ • Cloudflare単体でTerraformを利用・管理はできる ◦ State管理の方法として正式なサポートはなくても R2で管理可能
• 大崎にあるITコンサル会社 • 経営戦略から実装、運用までを全てこなす • ベンダーニュートラルの考え方 • 「ないものは作る」 フューチャーについて
• Real World HTTPの著者 • 実用Go言語の著者たち • Vue.jsのコミッター • TomcatのPMCメンバー
• OSS「Vuls」の作成者 こんな人います
ブログも出しています
参考リンク • Amazon S3 と API の互換性がある Cloudflare R2 を
AWS CLI から使ってみる
Cloudflare Meetup Nagano Vol.2 2023.10.14 Sat. Taisei Ito kaedemalu 𝕏
kaedemalu