Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Cartographer入門
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
masanara
August 19, 2022
Technology
540
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Cartographer入門
TUNA-JP Conference #4
masanara
August 19, 2022
More Decks by masanara
See All by masanara
vSphere環境でLLMをServeする
masanara
0
300
EKS Anywhere on vSphere
masanara
0
60
kpackによるコンテナイメージのビルド
masanara
0
140
Harbor RegistryのReplication機能
masanara
0
460
Kubernetes Operator for vSphere VM
masanara
0
71
Other Decks in Technology
See All in Technology
スキマバイトという雇用形態は存在しないので、雇用期間1日のアルバイト契約を事業者とワーカーが結ぶ手続きを支えるのがタイミーなんです
akitoshiga
0
200
Benchmarking Disaggregated Serving on vLLM + Dynamo with a Real Coding-Agent Workload
nttcom
1
190
宣言型部分更新は何を解決しどこへ向かうのか
shuta13
1
460
Active Record Connection Adaptersにおける長年の課題に再び取り組む
yahonda
0
150
Kiro Crewをはじめよう
kizawa2020
1
160
[JAWS-UG彩の国埼玉#12]そろそろ準備する?re:Invent2026をやさしく解説 / reinvent2026-sainokuni
sh_fk2
1
340
Post AI時代のリファクタリング実践記 / Refactoring in the post AI era
kaminashi
1
240
USB PDを使ってスマホを労わりたい
raspython3
0
180
PHPカンファレンス関西の招待状 / Invitation to PHP Conference Kansai
ykanoh
0
130
NDIでApple Vision Proにリアルタイム映像送信
jyouryuusui
0
120
触りたくないデータに、どう触るか AI時代のRBACアクセスガバナンス
ivry_presentationmaterials
0
260
継続的なAIコスト最適化
bgpat
1
340
Featured
See All Featured
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
2
950
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
850
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
Design in an AI World
tapps
1
350
エンジニアに許された特別な時間の終わり
watany
109
250k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
77k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
360
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
3.4k
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
RailsConf 2023
tenderlove
30
1.6k
Transcript
Cartographer 入門 TUNA-JP Conference #4 2022/08/19
本日の内容 • KubernetesにおけるSource to URL • Cartographerの仕組み • Cartographerのデモ •
Application Toolkit 2.0 • Cartographerのインストールとサプライチェーン • Application Toolkitでsource-to-urlをやってみる
KubernetesにおけるSource to URL 指定したソースコードからコンテナイメージをビルドして、ビルドしたコンテナイメージをデプロイして HTTPアクセスを可能にする。 Kubernetes上でビルド・デプロイを完結するためにすべてを Kubernetesリソースとして管理する。 ソースコード gitrepositories.source.toolkit.fluxcd.io FluxCD
Source Controller イメージビルド images.kpack.io Cloud Native Buildpacks - kpack デプロイ services.serving.knative.dev Knative Serving OCIイメージ ビルド Podデプロイ URL発行 ソースコード 取得
Soruce to URLを実現するには、これらのKubernetesリソースを繋げる必要がある。Cartographer が実現する “ClusterSupplyChain” によりKubernetesの任意のリソースを利用したサプライチェーン を定義することが可能。 Cartographerの役割 Workload GitRepositories
Image App kservice Deployment HTTPProxy
Cartographerの “ClusterTemplate” を利用すると、Workloadリソースから任意のKubernetesリ ソースの作成が可能。 Cartographerの仕組み : WorkloadからDeploymentの作成 apiVersion: carto.run/v1alpha1 kind:
Workload metadata labels: workload-type: pre-built name: hello namespace: demo spec: image: harbor.example.com/nginxdemos:latest apiVersion: carto.run/v1alpha1 kind: ClusterTemplate metadata: name: app-deploy spec: template: apiVersion: apps/v1 kind: Deployment metadata: name: $(workload.metadata.name)$-deployment labels: app: $(workload.metadata.name)$ spec: replicas: 3 selector: matchLabels: app: $(workload.metadata.name)$ template: metadata: labels: app: $(workload.metadata.name)$ spec: containers: - name: $(workload.metadata.name)$ image: $(workload.spec.image)$ apiVersion: apps/v1 kind: Deployment metadata: name: hello-deployment labels: app: hello spec: replicas: 3 selector: matchLabels: app: hello template: metadata: labels: app: hello spec: containers: - name: hello image: harbor.example.com/nginxdemos:latest ClusterTemplate Workload Deployment Build Your First Supply Chain : https://cartographer.sh/docs/v0.4.0/tutorials/first-supply-chain/
ClusterSupplyChainの定義方法 “ClusterSupplyChain” によりWorkloadリソースに対するクラスターサプライチェーンの内容を定義 する。 apiVersion: carto.run/v1alpha1 kind: ClusterSupplyChain metadata: name:
supply-chain-simple spec: resources: - name: deploy templateRef: kind: ClusterTemplate name: app-deploy serviceAccountRef: name: default namespace: demo selector: workload-type: pre-built • resources : Workloadリソースに対する、処理内容を記述。 templateRef内のテンプレートを利用して Workloadリソースを基に新た なリソースを作成する。 • serviceAccountRef : CartographerがKubernetesクラスター上の各 種リソースの作成や更新を行うため、適切な権限を持ったサービスアカ ウントを指定する。 • selector : 指定したラベルに一致する Workloadリソースに対して ClusterSupplyChainで定義する処理が適用される。 Workload ClusterTemplate app-deploy Deployment hello
複数のClusterTemplateで、一つのWorkloadリソースから複数のKubernetesリソースを作成するこ とが可能。 ClusterTemplateによるClusterSupplyChainの例 Workload ClusterTemplate app-httpproxy ClusterTemplate app-deploy ClusterTemplate app-service
Deployment hello Service hello-service HTTPProxy hello-httpproxy apiVersion: carto.run/v1alpha1 kind: ClusterSupplyChain metadata: name: supply-chain-simple spec: resources: - name: deploy templateRef: kind: ClusterTemplate name: app-deploy - name: service templateRef: kind: ClusterTemplate name: app-service - name: httpproxy templateRef: kind: ClusterTemplate name: app-httpproxy serviceAccountRef : name: default namespace: demo selector : workload-type: pre-built https://cartgrapher.sh/live-editor
ClusterSupplyChainを構成するためのTemplate • ClusterTemplate : サプライチェーン内の他のオブジェクトに対する出力を持たないリソース、 例えばメージをデプロイするリソースを生成するために利用する。 • ClusterConfigTemplate : configPathに定義されたステータスを更新して、作成されたオブ
ジェクトのconfig値として出力する。サプライチェーンは出力の値を他のリソースで利用すること が可能。(※次のリソースに渡すパラメータ ) • ClusterSourceTemplate : ソースコードを管理するためのリソースの定義に利用する。 urlPath と revisionPath を指定可能。 • ClusterImageTemplate : コンテナイメージを生成するリソースの定義に利用する。ビルドさ れ たコンテナイメージは imagePath に作成される。 TemplateはシンプルなTemplate書式の他、yttを利用して動的に値を指定可能。 Template Custom Resources : https://cartographer.sh/docs/v0.4.0/reference/template/
ClusterTemplateとClusterConfigTemplateの例 apiVersion: carto.run/v1alpha1 kind: ClusterConfigTemplate metadata: name: demo-app-service spec: configPath:
.spec.selector template: apiVersion: v1 kind: Service metadata: name: $( configs.deploy.config .app)$-service labels: app: $(workload.metadata.name)$ spec: ports: - port: 80 protocol: TCP targetPort: 80 selector: app: $(workload.metadata.name)$ type: ClusterIP apiVersion: carto.run/v1alpha1 kind: ClusterTemplate metadata: name: demo-app-httpproxy spec: template: apiVersion: projectcontour.io/v1 kind: HTTPProxy metadata: name: $( configs.svc.config .app)$-httpproxy labels: app: $(workload.metadata.name)$ spec: virtualhost: fqdn: $(workload.metadata.name)$.demo.tce.example.com routes: - conditions: - prefix: / services: - name: $(workload.metadata.name)$-service port: 80 apiVersion: carto.run/v1alpha1 kind: ClusterConfigTemplate metadata: name: demo-app-deploy spec: configPath: .spec.selector.matchLabels template: apiVersion: apps/v1 kind: Deployment metadata: name: $(workload.metadata.name)$-deployment labels: app: $(workload.metadata.name)$ spec: replicas: 3 selector: matchLabels: app: $(workload.metadata.name)$ template: metadata: labels: app: $(workload.metadata.name)$ spec: containers: - name: $(workload.metadata.name)$ image: $(workload.spec.image)$ apiVersion: apps/v1 kind: Deployment metadata: name: hello-deployment spec: selector: matchLabels: app: hello template: metadata: labels: app: hello spec: containers: - image: harbor.tce.example.com/library/nginxdemos:latest apiVersion: v1 kind: Servic metadata: name: hello -service spec: ports: - port: 80 protocol: TCP targetPort: 80 selector: app: hello apiVersion: projectcontour.io/v1 kind: HTTPProxy metadata: name: hello -httpproxy spec: routes: - conditions: - prefix: / services: - name: hello-service port: 80 virtualhost: fqdn: hello.demo.tce.example.com deploy svc 次のリソースにわたすパラメータ
ClusterTemplateとClusterConfigTemplateの例 “ClusterConfigTemplate” と “ClusterTemplate” を組み合わせて、複数のKubernetesリソースによ るチェーンを作成することが可能。 Workload ClusterTemplate demo-app-httpproxy ClusterConfigTemplate
demo-app-deploy ClusterConfigTemplate demo-app-service Deployment hello Service hello-service HTTPProxy hello-httpproxy apiVersion: carto.run/v1alpha1 kind: ClusterSupplyChain metadata: name: demo2 spec: resources: - name: deploy templateRef: kind: ClusterConfigTemplate name: demo-app-deploy - name: service templateRef: kind: ClusterConfigTemplate name: demo-app-service configs: - name: deploy resource: deploy - name: httpproxy templateRef: kind: ClusterTemplate name: demo-app-httpproxy configs: - name: svc resource: service serviceAccountRef: name: default namespace: demo selector: workload-type: pre-built2
Application Toolkit 0.2.0 source-to-urlに必要なコンポーネントで構成される tanzuパッケージ Name Package Version Cartographer cartographer.community.tanzu.vmware.com
0.3.0 cert-manager cert-manager.community.tanzu.vmware.com 1.6.1 Contour contour.community.tanzu.vmware.com 1.20.1 Flux CD Source Controller fluxcd-source-controller.community.tanzu.vmware.com 0.21.2 Knative Serving knative-serving.community.vmware.com 1.0.0 kpack kpack.community.tanzu.vmware.com 0.5.2 Application Toolkit : https://tanzucommunityedition.io/docs/v0.12/package-readme-app-toolkit-0.2.0/
Application Toolkit 0.2.0にはSource to URLのためのSupplyChain/Template が含まれている ClusterSupplyChain : source-to-url apiVersion:
carto.run/v1alpha1 kind: ClusterSupplyChain metadata: name: source-to-url spec: selector: app.tanzu.vmware.com/workload-type: web resources: - name: source-provider templateRef: kind: ClusterSourceTemplate name: git-repository - name: image-builder templateRef: kind: ClusterImageTemplate name: image sources: - resource: source-provider name: source - name: deployer templateRef: kind: ClusterTemplate name: app images: - resource: image-builder name: image Workload (.spec.source.git.url) ClusterSourceTemplate source-provider GitRepositories (.status.artifact.url) ClusterImageTemplate image-builder Image.kpack.io (.status.latestImage) ClusterTemplate deployer App.kappctrl.k14s.io Services.serving.knative.dev
まとめ • CartographerでKubernetes上のリソースによるサプライチェーンを作成することが可能。 • サプライチェーンは ClusterSupplyChain リソースによって定義する。 • ClusterSupplyChain で生成するリソースは
ClusterSourceTemplate, ClusterImageTemplate, ClusterConfigTemplate, ClusterTemplateによって定義する。 • Application Toolkitにはsource-to-urlに必要なコンポーネントが含まれている。 ClusterSourceTemplate source-provider ClusterImageTemplate image-builder ClusterTemplate deployer Workload (.spec.source.git.url) App.kappctrl.k14s.io GitRepositories (.status.artifact.url) Image.kpack.io (.status.latestImage)
ありがとうございました