狠狠撸

狠狠撸Share a Scribd company logo
Red Hat Tech Night 2019.05
Tekton 入門
Mamoru Shimizu
Global Professional Service / Consultant
May 28th, 2019
1
Copyright 2019 Red Hat K.K.2
自己紹介
● 名前: Mamoru Shimizu
○ Twitter / Qiita: @mamomamo
● Role: Consultant
● 最近の仕事
○ OpenShift 上のアプリケーション開発支援
○ OpenShift の設計?構築支援
○ JBoss EAP を使ったアプリケーション開発支援
Copyright 2019 Red Hat K.K.3
Tekton 概要
● Kubernetes ネイティブな CI/CD パイプラインを作るOSSのフレームワーク
● CI/CD ツールとプロセスの標準化に役立つOSSのコンポーネント群を提供、クラウド
プラットフォームに依存しないパイプラインを構築可能
● コンテナを実行ブロックの単位として扱う
● 2019年3月に発足した “Coutinuous Delivery Foundation” がホストしている中で最
も知られてないプロジェクト
Copyright 2019 Red Hat K.K.4
インストール方法
● 以下のコマンドでインストール可能 (cluster-admin で実行必須)
● カスタムコントローラのデプロイと CRD (Custom Resource De?nition) を作成
● 以下の2つの Pod が作成される
$ oc new-project tekton-pipelines
$ oc adm policy add-scc-to-user anyuid -z tekton-pipelines-controller
$ oc apply --filename https://storage.googleapis.com/tekton-releases/latest/release.yaml
$ oc get po
NAME READY STATUS RESTARTS AGE
tekton-pipelines-controller-54d7bd8956-z7gjp 1/1 Running 0 1m
tekton-pipelines-webhook-66cfc6cd57-kl5mt 1/1 Running 0 1m
Copyright 2019 Red Hat K.K.5
Custom Resource De?nition 種別
● Pipeline >- Task >- Step の包含関係
● CRD (Custom Resource De?nition) の種別は以下の通り
種別 説明
PipelineResource Task で利用するインプット /アウトプットを指定するリソース
Task 最小の実行単位、複数の Step から構成されたリソース
TaskRun Task を実行するためのリソース
Pipeline 複数の Task から構成されたリソース
PipelineRun Pipeline を実行するためのリソース
Copyright 2019 Red Hat K.K.6
PipelineResource 設定例
● type: インプット/アウトプットのタイプを
指定
● 現在サポート対象のタイプ
○ Git Resource
○ Image Resource
○ Cluster Resource
■ 他の k8s クラスタへのアプリケーショ
ンのデプロイ
○ Storage Resource
■ GCS(Google Cloud Storage) のみサ
ポート
apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:
name: skaffold-git
spec:
type: git
params:
- name: revision
value: master
- name: url
value: https://github.com/GoogleContainerTools/skaffold
Copyright 2019 Red Hat K.K.7
Task 設定例
● inputs: インプットに必要な
PipelineResource とパラメータの指定
● outputs: Task によって作成される
PipelineResource を指定
● steps: 実行したいコンテナイメージを指
定、コンテナが実行ブロックの単位
apiVersion: tekton.dev/v1alpha1
kind: Task
metadata:
name: build-docker-image-from-git-source
spec:
inputs:
resources:
- name: docker-source
type: git
params:
- name: pathToDockerFile
???
outputs:
resources:
- name: builtImage
type: image
steps:
- name: build-and-push
image: gcr.io/kaniko-project/executor
command:
- /kaniko/executor
args:
- --dockerfile=${inputs.params.pathToDockerFile}
???
Copyright 2019 Red Hat K.K.8
TaskRun 設定例
● taskRef: 実行したい Task を指定
● resources: インプット/アウトプットとなる
PipelineResource を指定
● serviceAccount: Task を実行するサー
ビスアカウントを指定
● nodeSelector / tolerations / af?nity:
Pod と同様に Task を実行するノードを
制御可能
apiVersion: tekton.dev/v1alpha1
kind: TaskRun
metadata:
name: build-docker-image-from-git-source-task-run
spec:
taskRef:
name: build-docker-image-from-git-source
inputs:
resources:
- name: docker-source
resourceRef:
name: skaffold-git
params:
- name: pathToDockerFile
value: Dockerfile
- name: pathToContext
value:
/workspace/docker-source/examples/microservices/leeroy-web
outputs:
resources:
- name: builtImage
resourceRef:
name: skaffold-image-leeroy-web
Copyright 2019 Red Hat K.K.9
Pipeline 設定例
● tasks: 実行する一連の Task を指定
● from: 先行する Task のアウトプットの
PipelineResource がある場合に指定
● runAfter: 別の Task の完了後に実行す
る場合に指定、アウトプットを連携する
必要はない
● retries: Task の実行に失敗した際にリト
ライした場合に指定
apiVersion: tekton.dev/v1alpha1
kind: Pipeline
metadata:
name: tutorial-pipeline
spec:
resources:
???
tasks:
- name: build-skaffold-web
taskRef:
name: build-docker-image-from-git-source
params:
???
resources:
inputs:
???
outputs:
???
- name: deploy-web
taskRef:
name: deploy-using-kubectl
resources:
inputs:
???
- name: image
resource: web-image
from:
- build-skaffold-web
params:
???
Copyright 2019 Red Hat K.K.10
PipelineRun 設定例
● pipelineRef: 実行したい Pipeline を指
定
● resources: インプット/アウトプットとな
る PipelineResource を指定
● serviceAccount: Task を実行するサー
ビスアカウントを指定
● nodeSelector / tolerations / af?nity:
Pod と同様に Task を実行するノードを
制御可能
apiVersion: tekton.dev/v1alpha1
kind: PipelineRun
metadata:
name: tutorial-pipeline-run-1
spec:
pipelineRef:
name: tutorial-pipeline
resources:
- name: source-repo
resourceRef:
name: skaffold-git
- name: web-image
resourceRef:
name: skaffold-image-leeroy-web
Copyright 2019 Red Hat K.K.11
TaskRun / PipelineRun 実行方法
● PipelineResource -> Task -> Pipeline -> PipelineRun の順にリソースを作成
● 以下のようなコマンドでパイプラインの実行結果を確認
$ oc apply -f <name-of-file.yaml>
$ oc get pipelineruns/<name-of-pipeline> -o yaml
Copyright 2019 Red Hat K.K.12
まとめ (所感)
● Kubernetes ネイティブな CI/CD パイプラインを作るOSSのフレームワーク
● クラウドプラットフォームに依存しないパイプラインの記述方法が可能であり、コンテ
ナを実行ブロックの単位として扱うことが可能
● 普段から Kubernetes / OpenShift のYAMLを書き慣れている人にとって、Task /
Pipeline の書き方は理解し易いように感じた。
● 真面目にLT発表してみましたが、RHTNの雰囲気に合っているか正直分かりません。
linkedin.com/company/red-hat
youtube.com/user/RedHatVideos
facebook.com/redhatinc
twitter.com/RedHat
Red Hat is the world’s leading provider of
enterprise open source software solutions.
Award-winning support, training, and consulting
services make
Red Hat a trusted adviser to the Fortune 500.
Thank you
13

More Related Content

What's hot (20)

PDF
惭耻濒别アプリケーションの颁滨/颁顿
MuleSoft Meetup Tokyo
?
PDF
Kubernetes Summit 2021: Multi-Cluster - The Good, the Bad and the Ugly
smalltown
?
PPTX
Building APIs with Mule and Spring Boot
Guilherme Pereira Silva
?
PDF
ルータコンフィグのGit管理のススメ ?Git管理以外を自動化してみた?
Taiji Tsuchiya
?
PDF
Terraform Bootcamp - Azure Infrastructure as Code隊
Toru Makabe
?
PDF
株式会社コロプラ『GKE と Cloud Spanner が躍動するドラゴンクエストウォーク』第 9 回 Google Cloud INSIDE Game...
Google Cloud Platform - Japan
?
PDF
颁辞苍肠辞耻谤蝉别で快适な自动化の旅
Kazuto Kusama
?
PDF
インフラ廻戦 品川事変 前夜編
Toru Makabe
?
PDF
[GKE & Spanner 勉強会] Cloud Spanner の技術概要
Google Cloud Platform - Japan
?
PDF
笔贬笔+惭测厂蚕尝を使ったスケーラブルなソーシャルゲーム开発
infinite_loop
?
PDF
Sql server パーティション 概要
Masayuki Ozawa
?
PDF
CW4Sの手引き - Juniper SRX GUI設定支援ツール
Juniper Networks (日本)
?
PDF
Airflow 2.0 migration ガイド
Katsunori Kanda
?
PDF
20220427-k8s-meetup-tokyo.pdf
VanouIshii
?
PDF
尝滨狈贰ログインの最新アップデートとアプリ连携ウォークスルー
Naohiro Fujie
?
PDF
AlmaLinux と Rocky Linux の誕生経緯&比較
beyond Co., Ltd.
?
PDF
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
NTT DATA Technology & Innovation
?
PDF
A GitOps Kubernetes Native CICD Solution with Argo Events, Workflows, and CD
Julian Mazzitelli
?
PDF
颁辞苍蝉耻濒を顽张って理解する
Masakazu Watanabe
?
PDF
続?PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes ?PFN、ヤフー? #2
Preferred Networks
?
惭耻濒别アプリケーションの颁滨/颁顿
MuleSoft Meetup Tokyo
?
Kubernetes Summit 2021: Multi-Cluster - The Good, the Bad and the Ugly
smalltown
?
Building APIs with Mule and Spring Boot
Guilherme Pereira Silva
?
ルータコンフィグのGit管理のススメ ?Git管理以外を自動化してみた?
Taiji Tsuchiya
?
Terraform Bootcamp - Azure Infrastructure as Code隊
Toru Makabe
?
株式会社コロプラ『GKE と Cloud Spanner が躍動するドラゴンクエストウォーク』第 9 回 Google Cloud INSIDE Game...
Google Cloud Platform - Japan
?
颁辞苍肠辞耻谤蝉别で快适な自动化の旅
Kazuto Kusama
?
インフラ廻戦 品川事変 前夜編
Toru Makabe
?
[GKE & Spanner 勉強会] Cloud Spanner の技術概要
Google Cloud Platform - Japan
?
笔贬笔+惭测厂蚕尝を使ったスケーラブルなソーシャルゲーム开発
infinite_loop
?
Sql server パーティション 概要
Masayuki Ozawa
?
CW4Sの手引き - Juniper SRX GUI設定支援ツール
Juniper Networks (日本)
?
Airflow 2.0 migration ガイド
Katsunori Kanda
?
20220427-k8s-meetup-tokyo.pdf
VanouIshii
?
尝滨狈贰ログインの最新アップデートとアプリ连携ウォークスルー
Naohiro Fujie
?
AlmaLinux と Rocky Linux の誕生経緯&比較
beyond Co., Ltd.
?
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
NTT DATA Technology & Innovation
?
A GitOps Kubernetes Native CICD Solution with Argo Events, Workflows, and CD
Julian Mazzitelli
?
颁辞苍蝉耻濒を顽张って理解する
Masakazu Watanabe
?
続?PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes ?PFN、ヤフー? #2
Preferred Networks
?

Similar to Tekton 入門 (20)

PPTX
Recap: Modern CI/CD with Tekton and Prow Automated via Jenkins X - Kubernetes...
JUNICHI YOSHISE
?
PDF
Rancher/Kubernetes入門ハンズオン資料~第2回さくらとコンテナの夕べ #さくらの夕べ 番外編
Masahito Zembutsu
?
PDF
5分で分かった気になる罢别办迟辞苍
Shuhei Kitagawa
?
PDF
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Masahito Zembutsu
?
PDF
オープンソースのコンテナ管理プラットフォーム Rancher のご紹介
Ryotaro Kobayashi
?
PDF
Rancher command line interface
Masahito Zembutsu
?
PDF
Red Hat Enterprise Linux 7.1 Kubernetes入門
Etsuji Nakai
?
PDF
自动化ーニバルだよ!骋顿颁16に见る自动化技术とテストのトレンド
Takehara Ryo
?
PPTX
Docker & Kubernetes基礎
Daisuke Hiraoka
?
PDF
TectonicはKubernetesの構築?管理基盤である -概要の章-/-構築の章-
Masahito Zembutsu
?
PDF
顿辞肠办别谤の仕组みと滨滨闯社内での利用例
maebashi
?
PPTX
今さら闻けない人のための顿辞肠办别谤超入门
Toru Miyahara
?
PPTX
今さら闻けない人のための顿辞肠办别谤超入门 CentOS 7.2対応版
VirtualTech Japan Inc.
?
PDF
Lenovo seminar rancher_200513
Junji Nishihara
?
PDF
Rancher2.0で実現する Managed Kubernetes Service
LINE Corporation
?
PDF
On-Premise Kubernetes on Rancher
Yasushi Kanaya
?
PDF
Hajimete k3s agenda_201008
Junji Nishihara
?
PDF
Hpe rancher 200611
Junji Nishihara
?
PPTX
RKE + Rancher 2.0
cyberblack28 Ichikawa
?
PDF
最近良く聞く Kubernetes を体験してみた イントロ + 活用編
Fuminobu Takeyama
?
Recap: Modern CI/CD with Tekton and Prow Automated via Jenkins X - Kubernetes...
JUNICHI YOSHISE
?
Rancher/Kubernetes入門ハンズオン資料~第2回さくらとコンテナの夕べ #さくらの夕べ 番外編
Masahito Zembutsu
?
5分で分かった気になる罢别办迟辞苍
Shuhei Kitagawa
?
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Masahito Zembutsu
?
オープンソースのコンテナ管理プラットフォーム Rancher のご紹介
Ryotaro Kobayashi
?
Rancher command line interface
Masahito Zembutsu
?
Red Hat Enterprise Linux 7.1 Kubernetes入門
Etsuji Nakai
?
自动化ーニバルだよ!骋顿颁16に见る自动化技术とテストのトレンド
Takehara Ryo
?
Docker & Kubernetes基礎
Daisuke Hiraoka
?
TectonicはKubernetesの構築?管理基盤である -概要の章-/-構築の章-
Masahito Zembutsu
?
顿辞肠办别谤の仕组みと滨滨闯社内での利用例
maebashi
?
今さら闻けない人のための顿辞肠办别谤超入门
Toru Miyahara
?
今さら闻けない人のための顿辞肠办别谤超入门 CentOS 7.2対応版
VirtualTech Japan Inc.
?
Lenovo seminar rancher_200513
Junji Nishihara
?
Rancher2.0で実現する Managed Kubernetes Service
LINE Corporation
?
On-Premise Kubernetes on Rancher
Yasushi Kanaya
?
Hajimete k3s agenda_201008
Junji Nishihara
?
Hpe rancher 200611
Junji Nishihara
?
RKE + Rancher 2.0
cyberblack28 Ichikawa
?
最近良く聞く Kubernetes を体験してみた イントロ + 活用編
Fuminobu Takeyama
?
Ad

Recently uploaded (9)

PPTX
Vibe Codingを始めよう ?Cursorを例に、ノーコードでのプログラミング体験?
iPride Co., Ltd.
?
PDF
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
フォーガンシー
?
PDF
論文紹介:AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
?
PDF
安尾 萌, 藤代 裕之, 松下 光範. 協調的情報トリアージにおけるコミュニケーションの影響についての検討, 第11回データ工学と情報マネジメントに関する...
Matsushita Laboratory
?
PDF
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
?
PPTX
勉強会_ターミナルコマント?入力迅速化_20250620. pptx. .
iPride Co., Ltd.
?
PDF
論文紹介:Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
?
PPTX
色について.pptx .
iPride Co., Ltd.
?
PDF
安尾 萌, 北村 茂生, 松下 光範. 災害発生時における被害状況把握を目的とした情報共有システムの基礎検討, 電子情報通信学会HCGシンポジウム2018...
Matsushita Laboratory
?
Vibe Codingを始めよう ?Cursorを例に、ノーコードでのプログラミング体験?
iPride Co., Ltd.
?
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
フォーガンシー
?
論文紹介:AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
?
安尾 萌, 藤代 裕之, 松下 光範. 協調的情報トリアージにおけるコミュニケーションの影響についての検討, 第11回データ工学と情報マネジメントに関する...
Matsushita Laboratory
?
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
?
勉強会_ターミナルコマント?入力迅速化_20250620. pptx. .
iPride Co., Ltd.
?
論文紹介:Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
?
色について.pptx .
iPride Co., Ltd.
?
安尾 萌, 北村 茂生, 松下 光範. 災害発生時における被害状況把握を目的とした情報共有システムの基礎検討, 電子情報通信学会HCGシンポジウム2018...
Matsushita Laboratory
?
Ad

Tekton 入門

  • 1. Red Hat Tech Night 2019.05 Tekton 入門 Mamoru Shimizu Global Professional Service / Consultant May 28th, 2019 1
  • 2. Copyright 2019 Red Hat K.K.2 自己紹介 ● 名前: Mamoru Shimizu ○ Twitter / Qiita: @mamomamo ● Role: Consultant ● 最近の仕事 ○ OpenShift 上のアプリケーション開発支援 ○ OpenShift の設計?構築支援 ○ JBoss EAP を使ったアプリケーション開発支援
  • 3. Copyright 2019 Red Hat K.K.3 Tekton 概要 ● Kubernetes ネイティブな CI/CD パイプラインを作るOSSのフレームワーク ● CI/CD ツールとプロセスの標準化に役立つOSSのコンポーネント群を提供、クラウド プラットフォームに依存しないパイプラインを構築可能 ● コンテナを実行ブロックの単位として扱う ● 2019年3月に発足した “Coutinuous Delivery Foundation” がホストしている中で最 も知られてないプロジェクト
  • 4. Copyright 2019 Red Hat K.K.4 インストール方法 ● 以下のコマンドでインストール可能 (cluster-admin で実行必須) ● カスタムコントローラのデプロイと CRD (Custom Resource De?nition) を作成 ● 以下の2つの Pod が作成される $ oc new-project tekton-pipelines $ oc adm policy add-scc-to-user anyuid -z tekton-pipelines-controller $ oc apply --filename https://storage.googleapis.com/tekton-releases/latest/release.yaml $ oc get po NAME READY STATUS RESTARTS AGE tekton-pipelines-controller-54d7bd8956-z7gjp 1/1 Running 0 1m tekton-pipelines-webhook-66cfc6cd57-kl5mt 1/1 Running 0 1m
  • 5. Copyright 2019 Red Hat K.K.5 Custom Resource De?nition 種別 ● Pipeline >- Task >- Step の包含関係 ● CRD (Custom Resource De?nition) の種別は以下の通り 種別 説明 PipelineResource Task で利用するインプット /アウトプットを指定するリソース Task 最小の実行単位、複数の Step から構成されたリソース TaskRun Task を実行するためのリソース Pipeline 複数の Task から構成されたリソース PipelineRun Pipeline を実行するためのリソース
  • 6. Copyright 2019 Red Hat K.K.6 PipelineResource 設定例 ● type: インプット/アウトプットのタイプを 指定 ● 現在サポート対象のタイプ ○ Git Resource ○ Image Resource ○ Cluster Resource ■ 他の k8s クラスタへのアプリケーショ ンのデプロイ ○ Storage Resource ■ GCS(Google Cloud Storage) のみサ ポート apiVersion: tekton.dev/v1alpha1 kind: PipelineResource metadata: name: skaffold-git spec: type: git params: - name: revision value: master - name: url value: https://github.com/GoogleContainerTools/skaffold
  • 7. Copyright 2019 Red Hat K.K.7 Task 設定例 ● inputs: インプットに必要な PipelineResource とパラメータの指定 ● outputs: Task によって作成される PipelineResource を指定 ● steps: 実行したいコンテナイメージを指 定、コンテナが実行ブロックの単位 apiVersion: tekton.dev/v1alpha1 kind: Task metadata: name: build-docker-image-from-git-source spec: inputs: resources: - name: docker-source type: git params: - name: pathToDockerFile ??? outputs: resources: - name: builtImage type: image steps: - name: build-and-push image: gcr.io/kaniko-project/executor command: - /kaniko/executor args: - --dockerfile=${inputs.params.pathToDockerFile} ???
  • 8. Copyright 2019 Red Hat K.K.8 TaskRun 設定例 ● taskRef: 実行したい Task を指定 ● resources: インプット/アウトプットとなる PipelineResource を指定 ● serviceAccount: Task を実行するサー ビスアカウントを指定 ● nodeSelector / tolerations / af?nity: Pod と同様に Task を実行するノードを 制御可能 apiVersion: tekton.dev/v1alpha1 kind: TaskRun metadata: name: build-docker-image-from-git-source-task-run spec: taskRef: name: build-docker-image-from-git-source inputs: resources: - name: docker-source resourceRef: name: skaffold-git params: - name: pathToDockerFile value: Dockerfile - name: pathToContext value: /workspace/docker-source/examples/microservices/leeroy-web outputs: resources: - name: builtImage resourceRef: name: skaffold-image-leeroy-web
  • 9. Copyright 2019 Red Hat K.K.9 Pipeline 設定例 ● tasks: 実行する一連の Task を指定 ● from: 先行する Task のアウトプットの PipelineResource がある場合に指定 ● runAfter: 別の Task の完了後に実行す る場合に指定、アウトプットを連携する 必要はない ● retries: Task の実行に失敗した際にリト ライした場合に指定 apiVersion: tekton.dev/v1alpha1 kind: Pipeline metadata: name: tutorial-pipeline spec: resources: ??? tasks: - name: build-skaffold-web taskRef: name: build-docker-image-from-git-source params: ??? resources: inputs: ??? outputs: ??? - name: deploy-web taskRef: name: deploy-using-kubectl resources: inputs: ??? - name: image resource: web-image from: - build-skaffold-web params: ???
  • 10. Copyright 2019 Red Hat K.K.10 PipelineRun 設定例 ● pipelineRef: 実行したい Pipeline を指 定 ● resources: インプット/アウトプットとな る PipelineResource を指定 ● serviceAccount: Task を実行するサー ビスアカウントを指定 ● nodeSelector / tolerations / af?nity: Pod と同様に Task を実行するノードを 制御可能 apiVersion: tekton.dev/v1alpha1 kind: PipelineRun metadata: name: tutorial-pipeline-run-1 spec: pipelineRef: name: tutorial-pipeline resources: - name: source-repo resourceRef: name: skaffold-git - name: web-image resourceRef: name: skaffold-image-leeroy-web
  • 11. Copyright 2019 Red Hat K.K.11 TaskRun / PipelineRun 実行方法 ● PipelineResource -> Task -> Pipeline -> PipelineRun の順にリソースを作成 ● 以下のようなコマンドでパイプラインの実行結果を確認 $ oc apply -f <name-of-file.yaml> $ oc get pipelineruns/<name-of-pipeline> -o yaml
  • 12. Copyright 2019 Red Hat K.K.12 まとめ (所感) ● Kubernetes ネイティブな CI/CD パイプラインを作るOSSのフレームワーク ● クラウドプラットフォームに依存しないパイプラインの記述方法が可能であり、コンテ ナを実行ブロックの単位として扱うことが可能 ● 普段から Kubernetes / OpenShift のYAMLを書き慣れている人にとって、Task / Pipeline の書き方は理解し易いように感じた。 ● 真面目にLT発表してみましたが、RHTNの雰囲気に合っているか正直分かりません。
  • 13. linkedin.com/company/red-hat youtube.com/user/RedHatVideos facebook.com/redhatinc twitter.com/RedHat Red Hat is the world’s leading provider of enterprise open source software solutions. Award-winning support, training, and consulting services make Red Hat a trusted adviser to the Fortune 500. Thank you 13