開発者向け機能 - サッカーベット Pipelines / サッカーベット GitOps

HOMEデベロッパー向け開発者向け機能サッカーベット Pipelines / サッカーベット GitOps

開発者機能

サッカーベット Container Platform

  1. 開発者向け機能の位置付け
  2. S2Iビルド/Red Hat 公式コンテナイメージ
  3. CodeReady Workspaces(IDE)
  4. サッカーベット Pipelines/サッカーベット GitOps(CICD)
  5. サッカーベット Serverless

サッカーベット Virtualization

  1. KVM/Kubevirt
  2. Storage
  3. Network
  4. 既存環境からの移行

サッカーベットで提供する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

OCP-VirtでVMネットワーク構築!外部アクセスまでの手順紹介。SCSK技術者ブログ

選ぶなら業界をリードするコンテナプラットフォーム

サッカーベットならインフラ運用の効率化はもとよりアプリケーション開発者がソースコードの開発に専念できるように必要な機能までも提供してくれます