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
Cartographer入門
Search
masanara
August 19, 2022
Technology
530
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
290
EKS Anywhere on vSphere
masanara
0
56
kpackによるコンテナイメージのビルド
masanara
0
130
Harbor RegistryのReplication機能
masanara
0
440
Kubernetes Operator for vSphere VM
masanara
0
67
Other Decks in Technology
See All in Technology
KPIだけでは評価できないプロダクトが考えるべき Evalsという第二の評価系 / Beyond KPIs: Evals as a Second Evaluation Framework for Products #PdEConf
aki_iinuma
4
3.5k
はじめてのDatabricks:技術者向けワークショップ / beginner-workshop
databricksjapan
PRO
0
150
#jawssonic2026 あの時代が悪かった ~動かなかったSageMakerと共に迎えたイベント当日~
ktkn1129
0
130
いま、生成AIにKaggleをどこまで 任せられるか — ROGIIコンペでの進め方とTips
k951286
2
1.3k
プロダクト思考 × 基盤思考を AIで実現する Compound Engineering
tkc66buzz
1
240
AI時代におけるプロダクト横断勉強会の設計
zozotech
PRO
0
150
Jetpack Compose で挑む新聞紙面UI ─ 複合ジェスチャー・ポリゴン記事領域・適応的ページ構成という3つの壁/droidkaigi2026
nikkei_engineer_recruiting
0
190
Amazon S3 Tablesに全部任せてみた結果——コンパクション/スナップショット管理は本当に手放せるか
shigeruoda
0
340
Claude Codeの体系的な理解と知識のフック
oikon48
10
6.7k
AIエージェントを雇う前に決める5つのこと
knishioka
1
150
AIで開発は速くなったのに、なぜ現場は楽にならないのか 〜あなたの組織のボトルネックを突き止めるワークショップ〜
jacopen
1
250
多層防御と最⼩権限で実現する、安全なAIエージェント設計パターン
lycorptech_jp
PRO
0
150
Featured
See All Featured
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Being A Developer After 40
akosma
91
590k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
560
Thoughts on Productivity
jonyablonski
76
5.4k
The Limits of Empathy - UXLibs8
cassininazir
1
630
First, design no harm
axbom
PRO
2
1.3k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.8k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
680
From π to Pie charts
rasagy
0
350
How to Think Like a Performance Engineer
csswizardry
28
2.8k
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)
ありがとうございました