Slide 1

Slide 1 text

1 変革の先駆け Cloud Native 開発・運用のたイント Shintaro Kitamura Specialist Solution Architect Red Hat K.K. @IT Cloud Native Week 2024 winter Developer Hub (Backstage) が解き放つ セルフサービス化の可能性 Shintaro Kitamura Specialist Solution Architect Red Hat K.K. OpenShit.Run

Slide 2

Slide 2 text

北村 慎太郎 Red Hat - Specialist Solution Architect - OpenShiftを中心としたプリセールス 得意領域: - SRE - Automation - CICD - Platform Engineering (←New!!) #Kubernetes #OpenShift #AWS #GCP #Terraform

Slide 3

Slide 3 text

Internal Developer Platform オンボーディング Internal Developer Platform (IDP) ドキュメント オーケストレーター (K8s) Git CICD ストレージ Observability コンテナ テスト セキュリティ コンプライアンス レジストリ Developer Centric ポータル テンプレート 開発者の幸せを追求する開発者向けプラットフォーム 
 開発者体験を向上するためのあらゆるツー ルを提供
 このPlatform上でアプリを効率的に開発・ 運用するための環境を提供 
 
 


Slide 4

Slide 4 text

Internal Developer Platform オンボーディング Internal Developer Platform (IDP) ドキュメント オーケストレーター (K8s) Git CICD ストレージ Observability コンテナ テスト セキュリティ コンプライアンス レジストリ Developer Centric ポータル テンプレート 開発者の幸せを追求する開発者向けプラットフォーム 
 Platform Engineering 成功のカギ いかに開発者にPlatformが持つ機能を うまく使ってもらえるか? いかに会社のガイドラインと開発効率性を両立で きるか? いかに開発者の認知負荷を軽減できるか?

Slide 5

Slide 5 text

5 Internal Developer Portal Internal Developer Platformの
 アクセスポイントとしてのポータル機能と、
 プラットフォームの機能を活用するための
 ユーザーインターフェースを提供
 
 Happy developers makes happy code! Backstage.io CNCFでホストされたオープンな Internal Developer Portal プロジェクト
 Backstage

Slide 6

Slide 6 text

Backstage Internal Developer Portal 開発チーム プラグインエコシステム 機能を拡張し、 カスタマイズを提供する ソフトウェアテンプレート 新しいプロジェクトを迅速に立ち上げ、組 織のベストプラクティスに従ってツールを標 準化 技術ドキュメント 「Decument as Code」アプローチを 使用して、技術ドキュメントを簡単に 作成、保守、検索 検索 Backstage内の 適切な情報を検索 ソフトウェアカタログ 組織内のすべてのソフトウェアのア プリケーションの所有権と メタデータを追跡 IDPのアクセスポイントとしてのポータル機能と プラットフォームの機能を活用するためのユーザーインターフェースを提供

Slide 7

Slide 7 text

Backstage Internal Developer Portal 開発チーム プラグインエコシステム 機能を拡張し、 カスタマイズを提供する ソフトウェアテンプレート 新しいプロジェクトを迅速に立ち上げ、組 織のベストプラクティスに従ってツールを標 準化 技術ドキュメント 「Decument as Code」アプローチを 使用して、技術ドキュメントを簡単に 作成、保守、検索 検索 Backstage内の 適切な情報を検索 ソフトウェアカタログ 組織内のすべてのソフトウェアのア プリケーションの所有権と メタデータを追跡 Platformの様々なステータスと ツールへのアクセスポイントを提供

Slide 8

Slide 8 text

Backstage Internal Developer Portal 開発チーム プラグインエコシステム 機能を拡張し、 カスタマイズを提供する ソフトウェアテンプレート 新しいプロジェクトを迅速に立ち上げ、組 織のベストプラクティスに従ってツールを標 準化 技術ドキュメント 「Decument as Code」アプローチを 使用して、技術ドキュメントを簡単に 作成、保守、検索 検索 Backstage内の 適切な情報を検索 ソフトウェアカタログ 組織内のすべてのソフトウェアのア プリケーションの所有権と メタデータを追跡 Golden Pathの提供を強力に支援する プロビジョニング機能

Slide 9

Slide 9 text

Backstage Internal Developer Portal 開発チーム プラグインエコシステム 機能を拡張し、 カスタマイズを提供する ソフトウェアテンプレート 新しいプロジェクトを迅速に立ち上げ、組 織のベストプラクティスに従ってツールを標 準化 技術ドキュメント 「Decument as Code」アプローチを 使用して、技術ドキュメントを簡単に 作成、保守、検索 検索 Backstage内の 適切な情報を検索 ソフトウェアカタログ 組織内のすべてのソフトウェアのア プリケーションの所有権と メタデータを追跡 ポータルの可視化機能を強化 テンプレート実行機能を強化 Platform Services 他サービスとの連携を強化 Backstage全体の機能を強化する 豊富※な拡張機能 ※https://backstage.io/plugins/

Slide 10

Slide 10 text

Red Hat Developer Hub 開発チームのコラボレーションを加速する Internal Developer Portal v 1.1 Release!! Backstageをベースとした開発者ポー タルがOpenShiftで利用可能に 3月中旬 v 1.1 GA!!!! 🎉EKS/AKSサポート開始 🎉Operator提供開始 🎉RBACをUI上で設定可能に 🎉GitLab用Actionが強化 🎉その他UI改善

Slide 11

Slide 11 text

Red Hat Developer Hubの強化ポイント Internal Developer Portal 開発チーム プラグインエコシステム 機能を拡張し、 カスタマイズを提供する ソフトウェアテンプレート 新しいプロジェクトを迅速に立ち上げ、組 織のベストプラクティスに従ってツールを標 準化 技術ドキュメント 「Decument as Code」アプローチを 使用して、技術ドキュメントを簡単に 作成、保守、検索 検索 Backstage内の 適切な情報を検索 ソフトウェアカタログ 組織内のすべてのソフトウェアのア プリケーションの所有権と メタデータを追跡 ツール・プラグイン全体のエンタープライズサポートを提供

Slide 12

Slide 12 text

Red Hat Developer Hubの強化ポイント Internal Developer Portal 開発チーム プラグインエコシステム 機能を拡張し、 カスタマイズを提供する ソフトウェアテンプレート 新しいプロジェクトを迅速に立ち上げ、組 織のベストプラクティスに従ってツールを標 準化 技術ドキュメント 「Decument as Code」アプローチを 使用して、技術ドキュメントを簡単に 作成、保守、検索 検索 Backstage内の 適切な情報を検索 ソフトウェアカタログ 組織内のすべてのソフトウェアのア プリケーションの所有権と メタデータを追跡 ※https://backstage.io/plugins/ UIの継続的な改善を実施

Slide 13

Slide 13 text

Red Hat Developer Hubの強化ポイント Internal Developer Portal 開発チーム プラグインエコシステム 機能を拡張し、 カスタマイズを提供する ソフトウェアテンプレート 新しいプロジェクトを迅速に立ち上げ、組 織のベストプラクティスに従ってツールを標 準化 技術ドキュメント 「Decument as Code」アプローチを 使用して、技術ドキュメントを簡単に 作成、保守、検索 検索 Backstage内の 適切な情報を検索 ソフトウェアカタログ 組織内のすべてのソフトウェアのア プリケーションの所有権と メタデータを追跡 ※https://backstage.io/plugins/ 独自のプラグインと動的な プラグインインストール機能を提供

Slide 14

Slide 14 text

Red Hat Developer Hubの強化ポイント Internal Developer Portal 開発チーム プラグインエコシステム 機能を拡張し、 カスタマイズを提供する ソフトウェアテンプレート 新しいプロジェクトを迅速に立ち上げ、組 織のベストプラクティスに従ってツールを標 準化 技術ドキュメント 「Decument as Code」アプローチを 使用して、技術ドキュメントを簡単に 作成、保守、検索 検索 Backstage内の 適切な情報を検索 ソフトウェアカタログ 組織内のすべてのソフトウェアのア プリケーションの所有権と メタデータを追跡 ※https://backstage.io/plugins/ 定義済み、サポート付きの Golden Pathを提供

Slide 15

Slide 15 text

Red Hat Developer Hubの強化ポイント Internal Developer Portal 開発チーム プラグインエコシステム 機能を拡張し、 カスタマイズを提供する ソフトウェアテンプレート 新しいプロジェクトを迅速に立ち上げ、組 織のベストプラクティスに従ってツールを標 準化 技術ドキュメント 「Decument as Code」アプローチを 使用して、技術ドキュメントを簡単に 作成、保守、検索 検索 Backstage内の 適切な情報を検索 ソフトウェアカタログ 組織内のすべてのソフトウェアのア プリケーションの所有権と メタデータを追跡 ※https://backstage.io/plugins/ 定義済み、サポート付きの Golden Pathを提供 ★本日の主役★

Slide 16

Slide 16 text

Step #1 Step #2 • • Step #N + 既存のプラクティスと会社の ガイドラインを使用して最適な 構成(Golden Path)を作成す る 新しいプロジェクトを素早く立ち上げ、組織のベストプラクティスでツールを標準化 Automatically starts GIT ソフトウェアテンプレート テンプレートの実行に関連 する必要なデータを入力す る 開発チームはテンプレート実行に よって払い出された Gitリポジトリを使って開発を開始 組織のガイドラインに従って自動 的に作成され、プロビジョニングさ れる 開発チームの ベストプラクティス フォームの入力 実際に動作する環境も デプロイ 新しいGitリポジトリを自 動的に作成

Slide 17

Slide 17 text

ソフトウェアテンプレート もう少し見てみる

Slide 18

Slide 18 text

ソフトウェアテンプレートの仕組み apiVersion: scaffolder.backstage.io/v1beta3 kind: Template metadata: name: sample-template title: deploy sample app tags: - recommended spec: parameters: - title: Provide information required: - app_name properties: app_name: title: Appliction Name default: sample-blog type: string cluster_name: title: EKS Cluster Name template.yaml PFE Team push template入力画面 read Dev Team

Slide 19

Slide 19 text

ソフトウェアテンプレートの仕組み apiVersion: scaffolder.backstage.io/v1beta3 kind: Template metadata: name: sample-template title: deploy sample app tags: - recommended spec: parameters: … steps: - id: get-app-code name: Get the Application Source Code action: fetch:plain input: url: ./app-skeleton targetPath: ./tenant-app - id: get-catalog-info name: Generating the Catalog Info … template.yaml action1 execute action2 execute ・・・ Dev Team read Template実行

Slide 20

Slide 20 text

テンプレート実行の流れ ① fetch:template   Sketelonリポジトリをローカルにコピーし、ユーザーが入力した値を代入する Action skeleton repo … … … key1: “${{values.app-name}}” key2: “${{values.k8s-url}}” Dev Team Backstage local … … … key1: “app-1” key2: “k8s.local.com” app-1 app-name k8s.local.com k8s-url ※変数代入など特別な処理をしたくない場合は fetch: plain というactionを使う

Slide 21

Slide 21 text

テンプレート実行の流れ ② publish:github / publish:gitlab / publish:azure / publish:bitbucket   Backstage localにあるファイルをGit にPushするAction Backstage local … … … key1: “app-1” key2: “k8s.local.com” app-1 repo … … … key1: “app-1” key2: “k8s.local.com” ※リポジトリは新規に作成される

Slide 22

Slide 22 text

manifest テンプレート実行の流れ ③ argocd:create-resources (要プラグイン)   ArgoCDのApplicationリソースをK8s上にデプロイする app-1 repo kustomization.yaml … … deployment.yaml service.yaml deploy sync

Slide 23

Slide 23 text

テンプレート実行の流れ ④ catalog:register   Git上にあるBackstage用のmanifestファイルを読み込み、 Backstage上に反映するAction app-1 repo apiVersion: backstage.io/v1alpha1 kind: Component metadata: name: sample-blog-021 spec: type: app system: "system:default/test-system" lifecycle: production … key1: “app-1” key2: “k8s.local.com” read Component管理画面

Slide 24

Slide 24 text

😎 デモ行ってみよう (時間がかかるので録画)

Slide 25

Slide 25 text

templates eks-skeleton デモ概要 Create EKS OpenShift Cluster (ROSA) Deploy App sample-app-skeleton app-skeleton manifest-skeleton

Slide 26

Slide 26 text

templates eks-skeleton デモ概要 Create EKS OpenShift Cluster (ROSA) Deploy App sample-app-skeleton app-skeleton manifest-skeleton terraform fetch:template push:github

Slide 27

Slide 27 text

templates eks-skeleton デモ概要 Create EKS OpenShift Cluster (ROSA) Deploy App sample-app-skeleton app-skeleton manifest-skeleton terraform EKS Cluster terraform apply argocd setting EKS VPC

Slide 28

Slide 28 text

templates eks-skeleton デモ概要 Create EKS OpenShift Cluster (ROSA) sample-app-skeleton app-skeleton manifest-skeleton terraform EKS Cluster terraform apply argocd setting EKS VPC ArgoCD Applications OpenShift Cluster (ROSA) terraform destroy 6 hours have passed Deploy App argocd:create-resource

Slide 29

Slide 29 text

templates eks-skeleton デモ概要 Create EKS OpenShift Cluster (ROSA) sample-app-skeleton app-skeleton manifest-skeleton terraform EKS Cluster terraform apply argocd setting EKS VPC ArgoCD Applications OpenShift Cluster (ROSA) terraform destroy 6 hours have passed Deploy App app code terraform k8s manifest fetch:template push:github

Slide 30

Slide 30 text

templates eks-skeleton デモ概要 Create EKS OpenShift Cluster (ROSA) sample-app-skeleton app-skeleton manifest-skeleton terraform EKS Cluster terraform apply argocd setting EKS VPC ArgoCD Applications OpenShift Cluster (ROSA) terraform destroy 6 hours have passed Deploy App app code terraform k8s manifest RDS terraform apply ECR

Slide 31

Slide 31 text

templates eks-skeleton デモ概要 Create EKS OpenShift Cluster (ROSA) sample-app-skeleton app-skeleton manifest-skeleton terraform EKS Cluster terraform apply argocd setting EKS VPC ArgoCD Applications OpenShift Cluster (ROSA) terraform destroy 6 hours have passed Deploy App app code terraform k8s manifest RDS terraform apply ECR build push images

Slide 32

Slide 32 text

templates eks-skeleton デモ概要 Create EKS OpenShift Cluster (ROSA) sample-app-skeleton app-skeleton manifest-skeleton terraform EKS Cluster terraform apply argocd setting EKS VPC ArgoCD Applications OpenShift Cluster (ROSA) terraform destroy 6 hours have passed Deploy App app code terraform k8s manifest RDS terraform apply ECR build push images frontend backend argocd:create-resource

Slide 33

Slide 33 text

デモ概要 templates eks-skeleton Create EKS OpenShift Cluster (ROSA) sample-app-skeleton app-skeleton manifest-skeleton terraform EKS Cluster terraform apply argocd setting EKS VPC ArgoCD Applications OpenShift Cluster (ROSA) terraform destroy 6 hours have passed Deploy App app code terraform k8s manifest RDS terraform apply ECR build push images frontend backend ここが超頑張っている

Slide 34

Slide 34 text

テンプレートについて伝えたいこと ● BackstageのTemplateはセルフサービス化の補助であり、自動化の補助ではない。 ○ 自動化はIaC、CIパイプライン、GitOpsが頑張る世界。 ○ Pluginの活用でActionの幅は広げられるが、基本の考えは変わらない(はず)。 ● 現実的な範囲でのテンプレート化を目指す。 ○ 全部入りを頑張りすぎると、ZTP専用のスクリプトが量産されて却って開発者が使いづらいソースコードになりか ねない。 ○ 払い出されたGitリポジトリは開発者が今後使っていくため、”手離れのいい自動化”を目指すこと。 ● 実現すべきは開発者に対するベストプラクティスの提供 ○ 単なるセルフサービス機能の集合ではなく、開発者を導くためのTemplate(Golden Path)であるべき ○ Platform Engineeringの本来の目的に立ち返って、本当に開発者に必要なTemplateを作成しよう。

Slide 35

Slide 35 text

Golden Path公開までの道のり ● 自分たちの開発環境の状態、制約、ノウハウの醸成具合を正しく把握する ● 現在の開発環境にGitOps、CI/CD、IaC、(Kubernetes) を導入する ● 複数開発プロジェクトに対するプラットフォーム支援から、”共通的なノウハウ”を抽出する —--- このあたりからBackstageの導入を検討する —-- ● 共通的なノウハウをGolden Pathとして定義し、Skeletonリポジトリを作成する ● BackstageにTemplateとして公開するにあたり、開発者に入力してもらうパラメータを定義する ● Backstageのtemplate.yamlを作成する ● template.yamlに”testing”などのタグを付与し、テストを実施する ● 期待した動作が確認できたら、”production”タグに切り替え、開発者に公開する

Slide 36

Slide 36 text

Tips Developer Hubと相性のいいツールは? ArgoCD ・CDにおいてはほぼ一強。 PluginもRed Hat がサポートを提供しているため利用しやすい (現在はRoadie社製のPluginを採用) ・argocd:create-resourcesでapplicationのデプロイを実行できるが、細かい Optionが設定できないため、 Gitリポジト リ配下のArgoCD applicationリソースをデプロイすることに特化した使い方 (App Of Apps)をおすすめ ・今後はRed HatもArgoCD pluginの開発を進めていき、将来的には置き換えることになるかも? Ansible / Terraform ・クラウドサービスのプロビジョニングに利用 ・現時点ではRed HatのPluginにAnsible / Terraform 用のActionが存在しないため、基本は CIツール上で実行するこ とになる ・ソフトウェアカタログの観点では Ansible Automation PlatformのPluginを提供しているため、 AAP利用者はAnsibleの 採用をおすすめ

Slide 37

Slide 37 text

Tips Developer Hubと相性のいいツールは? GitHub ● ソフトウェアカタログに対する機能が非常に充実しており、かなり使い勝手が良い ● Actionも豊富で、Pull Requestの発行やWorkflowのDispatchもできるので、Developer Hubとの相性はかなり良い ● Pipelineをひとつのyamlファイルで管理できるため、可読性が高い& ChatGPTとの相性が最高 GitLab ● CIツールとしてはGitHubと同じくらい相性が良い ● Developer Hub v1.1から大幅にActionが増え、GitHubと遜色なくなった ● 日本のエンタープライズ界隈では GitLabユーザーが多いため、 Developer Hubの導入障壁が下がってきた印象 Tekton ● GitHub / GitLabと比べて少々扱いづらい印象。そもそも Tektonが難しい説もあり ● 基本的にArgoCDを使ってPipelineやTask、EventTrigger系をデプロイして利用する ● GitのPushを契機に最初のPipelineを実行できるGitHub/GitLabとは違い、Gitリポジトリの作成後に Pipelineがデプロイされるため、 初回の実行方法に工夫が必要 ● 一部はGitHub ActionsやGitLab Runnerで実行した方がいい処理もあるため、現在すでに Tektonで問題なくPipelineの 構築・運用ができているユーザー以外はまずは GitHub / GitLabでGolden Pathの作成に着手することをおすすめ ● pipelinerunの実行など、もっとActionが増えると使いやすくなると思う(頑張れ Red Hat !!)

Slide 38

Slide 38 text

Management Cluster Tips 中央集権的なポータルにする?開発チームごとに払い出す? Developer Hub 開発用OpenShift 開発用OpenShift 開発チームA 開発チームB 開発用OpenShift 開発用OpenShift 開発チームA 開発チームB Developer Hub Developer Hub Backstage Resources Backstage Resources ・開発チームごとに細かいチューニングが可能 ・気軽に設定変更が可能 ・同じBackstage Resource(Golden Pathなど)を参照する こ とでガバナンスも取れる ・リソースの分割損が発生 ・他のチームのノウハウを参照できない ・効率的なノウハウの展開が可能 ・リソースの効率化 ・クラスターや開発ツールの連携設定の度にRHDHの  再起動が必要 ・権限管理が大変 個人的には こっちをおすすめ

Slide 39

Slide 39 text

token: hoge … Tips テンプレート実行時における Secretの取扱いについて token: hoge action: publish:github secrets: - token: ${{parameters.token}} … リポジトリの Secretsに登録する action:fetch:template kind: Secret data: token : ${{values.token}} ソースコードからは 参照しない GitHub Repository Repository Secrets workflow.yml AWS Secrets Manager ex-secret-token.yaml kind: externalsecret … externalSecret Secret token: hoge OpenShift ArgoCD 外部のSecretストアにSecretを登録する Workflowを作成・実行 aws secretsmanager create-secret --name token --secret-string ${{ secrets.token }}

Slide 40

Slide 40 text

Tips その他 いっぱいあるので興味のある方はお気軽にご相談 &ご質問下さい😄

Slide 41

Slide 41 text

さいごに〜Backstageについて思うこと〜 ● 初期のKubernetesのようなフインキを感じる ○ デフォルトのままだと手が届かない範囲が結構ある ○ 独自プラグインで俺TUEEEEする感じが、K8s黎明期の独自CRDで俺TUEEEEする感じと似ている ● プラガブルかつエディタブルなので、独自の路線を貫きやすい柔軟なプロダクトである ○ ポータルという特性も相まって、Platform as Productの観点で考えると開発者からの要望を 拾いやすく、反映しやすい領域でもある ○ 一方で、あくまで開発者の体験を向上させるのはPortalの品質ではなく、Platformとしての品質であるため、優先 度をつけて改修していくことが重要 ● ネットに情報が無さすぎる。。。もっとみんなBackstageで遊ぼう。

Slide 42

Slide 42 text

Update confidential designator here Version number here V00000 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

Slide 43

Slide 43 text

Developer Experience Platform Engineering Developer Experience Business Value (TCO / ROI) Tech Platforms テクノロジーをビジネス価値の実現につなげる 
 People and Process 人材、プロセス、技術の習熟度向上による 
 ビジネス価値の創出 
 開発者の生産性を向上させ、 
 ビジネス価値を創出するためのスタート地点 
 プロジェクトで得た経験から開発のプラクティスを Golden Pathとして定義し、展開する 
 開発者のイノベーション加速を支援するために 
 Platformの継続的な改善を実施 
 Kubernetes/OpenShiftの各種機能を理解し、 
 単一クラスターの運用業務を定義 
 ビジネス価値の実現に向けて”単なる基盤”からの進化を目指す