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
820
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
Kubernetesにおける学習基盤とLLMOpsの概要
ry
1
270
AmazonRoute 53ではじめてのドメイン取得!HTTPS化までの道のりを整理してみた
usanchuu
3
140
AIの性能が向上しても未解決な組織の重大問題は何か?/An Unsolved Organizational Problem in the Age of AI
moriyuya
4
640
RAG を使わないという選択肢
tatsutaka
1
220
2026.06.13_AI時代に事業会社が「SIer出身エンジニア」を求める理由 / Why Businesses Seek Engineers with a System Integrator Background in the AI Era
jumtech
0
1.1k
Android の公式 Skill / Android skills
yanzm
0
140
2026TECHFRESH畢業分享會 - Lightning Talk - 打造精準高效的 MCP 設計模式與測試實務
line_developers_tw
PRO
0
920
攻撃者視点で考えるDetection Engineering
cryptopeg
2
1.6k
Amazon Bedrock AgentCore ワークショップ JAWS UG TOHOKU / amazon-bedrock-agentcore-workshop-jawsug-tohoku-2026
gawa
9
770
On-behalf-of Token exchange with AgentCore Identity
hironobuiga
2
160
あなたの AI ワークスペースに、 専門コーダーを連れてくる - Amazon Quick Desktop 最新情報
kawaji_scratch
1
130
Disciplined Vibes: Scaling AI-Assisted Engineering
sheharyar
0
140
Featured
See All Featured
30 Presentation Tips
portentint
PRO
1
320
The Curse of the Amulet
leimatthew05
1
13k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.6k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
140
Become a Pro
speakerdeck
PRO
31
6k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
390
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
65
56k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.8k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.3k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
840
Skip the Path - Find Your Career Trail
mkilby
1
150
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