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
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
60
kpackによるコンテナイメージのビルド
masanara
0
140
Harbor RegistryのReplication機能
masanara
0
450
Kubernetes Operator for vSphere VM
masanara
0
70
Other Decks in Technology
See All in Technology
AgentCore Runtime上にAgentic Coding基盤を構築・展開する際の設計ポイントと限界点 / Design considerations and limitations when building an agentic coding platform on AgentCore Runtime
har1101
6
710
AIで社員の自主発信に広報目線を組み込む
_mossann_t
0
140
C#コードの結合を可視化する Roslyn解析による設計改善と リファクタリング判断
dora56
0
540
え、こんなに早く改修できるの?──新人エンジニアとスクラムマスターの2人が語る、AI×アジャイル開発の現場
ysasago
2
700
AI 時代のスタートアップエコシステ厶から考究する技術的負債との向き合い方
m3m0r7
PRO
3
2.6k
AI coding 整合正規方法
philipz
0
530
Oracle Cloud Network Path Analyzerを試してみた/I Tried Out Oracle Cloud Network Path Analyzer
masakiokuda
1
110
サーバーレスをどこまで使う? WebRTC対戦ゲームで選んだVPSとの共存設計
kaidouji85
0
380
Harness Engineering on Rails
joelq
0
190
俺の仕事は AIに奪われないし、たぶんその BIも要らない
hikaruri
0
540
時うどん〜Socket.getifaddrsで学ぶネットワーク編 / Tokiudon: The Socket.getifaddrs Edition
coe401_
4
240
現場で役立つ技術負債の効果的な返済方法
masuda220
PRO
11
5.1k
Featured
See All Featured
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
310
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
440
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
770
We Are The Robots
honzajavorek
0
380
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
340
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
880
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
700
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
680
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
3k
Agile that works and the tools we love
rasmusluckow
331
22k
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)
ありがとうございました