開発者向け機能 - サッカーベット Pipelines / サッカーベット GitOps
開発者機能
サッカーベット Container Platform
- 開発者向け機能の位置付け
- S2Iビルド/Red Hat 公式コンテナイメージ
- CodeReady Workspaces(IDE)
- サッカーベット Pipelines/サッカーベット GitOps(CICD)
- サッカーベット Serverless
サッカーベット Virtualization
サッカーベットで提供するCI/CDツール
サッカーベット Pipelines
サッカーベット GitOps
サッカーベット Pipelines
- Built for Kubernetes
-
- Kubernetesネイティブな宣言型CI/CDツール
- 中央サーバーの管理、プラグインの調整からの脱却
- オンデマンドな拡張性
-
- 独立したコンテナ内で実行・拡張されるパイプライン
- 再現性のある予測可能な結果
- セキュアなパイプラインの実行
-
- サッカーベットのRBACと連携し、アプリケーションのセキュリティポリシーと整合性が取れる安全なパイプライン
- 高いユーザービリティ
-
- サッカーベットのGUIや専用CLIを使ったパイプライン作成
- OperatorHubを使ったインストール・アップグレード
- 既存TaskとPipelineの利用(Tekton Hub)
サッカーベット Pipelinesのコンポーネント
- Tekton Pipelines
- CICDにおける各タスクとパイプラインの定義、実行
- Tekton Triggers
- Gitリポジトリのイベントを契機としたタスク/パイプラインのトリガー
- Tekton Catalog
- 一般公開されている共通利用可能なタスク集
Tekton Pipelinesのカスタムリソース
Task/PipelineによるCICDパイプライン構築
- CICDパイプラインにおける一つ一つのアクションをTaskとして定義
- Taskを組み合わせてPipelineを構築
- 一度定義したTask/Pipelineは入力するパラメータを変えることで再利用可能
apiVersion:tekton.dev/v1beta1 kind: Task metadata: name:hello-world spec: steps: - name:first-step image:registry.access.redhat.com/ubi8/ubi-minimal:latest command:["echo"] args: ["hello world"] apiVersion:tekton.dev/v1beta1 kind:Pipeline metadata:name:hello-pipe spec:tasks: -name:hello-world-task taskRef:name:hello-world
Task/Pipelineの実行
TaskRun
- Taskを実行するためのカスタムリソース
- Task実行時に必要なパラメータを渡す
PipelineRun
- Pipelineを実行するためのカスタムリソース
- Pipeline実行時に必要なパラメータを渡す
- Pipelineで定義された内容に基づきTaskRunを作成
- Task間でデータを受け渡すためのPVを定義
apiVersion:tekton.dev/v1beta1 kind: PipelineRun metadata:generateName:pipeline-run- spec:pipelineRef:name:hello-pipe params: -name:git-url value:'https://gitlab.com/.../...' - name:git-revision value:'main'…workspaces: -name:shared-workspace persistentVolumeClaim:claimName:shared-workspace - name:temp-dir emptyDir:{}
Tekton Triggersのカスタムリソース
TriggerTemplate
- Webhookを受け取った際に作成するリソース(PipelineRun、等)の定義
TriggerBinding
- Webhookで受け取ったJSONからPipelineRunに渡すパラメータの定義
EventListner
- Webhookの受け口(Service+Pod)の作成と、使用するTriggerTemplate /TriggerBindingの指定
Interceptorsによるフィルタリング
トリガー実行条件の詳細化
- Webhookに設定したSecretを利用することで特定のリポジトリからのWebhookのみ許可
- Gitイベントの種類や、実行対象のブランチを限定したパイプラインの実行
apiVersion:triggers.tekton.dev/v1alpha1 kind:EventListener metadata:name:test-event-listener spec:serviceAccountName:sample-sa triggers: -bindings: - ref:test-trigger-binding template:ref:test-pipeline-template interceptors: - github:secretRef:ecretName:github-webhook secretKey:secretKey eventTypes: - push - cel:filter:"body.ref == \"refs/heads/master\""
サッカーベット GitOps
- 宣言的なデプロイメントの実現
-
- Gitに記録されるマニフェスト情報を正とするデプロイメント
- マニフェストからの逸脱(ドリフト)の検知と自動修正
- マルチクラスタへの対応
-
- 複数のサッカーベット, Kubernetesクラスタにおけるデプロイメントの管理・制御
- 複雑なデプロイ戦略への柔軟な対応
- デプロイメントと環境の可視化
-
- デプロイメントとKubernetesリソースの可視化
- デプロイメント履歴の表示とロールバック
- 自動的なインストールと構成
-
- OperatorHubを使った自動的なインストール・構成・アップグレード
Argo CDのカスタムリソース
Application
- デプロイ先クラスタ、NameSpaceを指定
- 同期(Sync)するGitリポジトリを登録
- 180秒ごとにリポジトリの状態をチェック、新たなcommitがあればそれを自動デプロイ
- ❶
- Gitでリソースが削除されたらクラスタからも削除
- ❷
- クラスタに直接加えられた変更を検知し、リポジトリの状態に合わせ修正
apiVersion:argoproj.io/v1alpha1 kind:Application metadata:name:app-develop namespace:サッカーベット-gitops labels:app:node-build-config-サッカーベット environment:dev spec:destination:namespace:app-develop server:https://kubernetes.default.svc project:dev-health source:kustomize:path:deploy/overlays/dev repoURL:https://gitlab.com/.../... targetRevision:main syncPolicy:automated:prune:true selfHeal:true syncOptions: -ApplyOutOfSyncOnly=true - CreateNamespace=true
