Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GitLab x RancherによるKubernetes CI/CD in Rancher ...

GitLab x RancherによるKubernetes CI/CD in Rancher Meetup

以下のイベントにて使用した資料です。
Rancher Meetup Tokyo #13
https://rancherjp.connpass.com/event/85028/

Shingo.Kitayama

June 21, 2018
Tweet

More Decks by Shingo.Kitayama

Other Decks in Technology

Transcript

  1. 2 Introduction Shingo Kitayama Company: Red Hat K.K. Role: Solution

    Architect Product: OpenShift Interest: KPP shkitayama spchildren
  2. 7 みんな大好きKubernetes Kubernetesを使用している企業 41.1% Dockerの導入目的 アプリケーションの運用管理効率化 34.6% アプリケーションの品質/パフォーマンス向上 29.9% インフラコストの削減

    26.2% アプリケーションのリリーススピード/頻度の向上 23.4% 出展: IDC Japan/2018年 国内クラウドインフラストラクチャに関するユーザー動向調査結果 https://www.idcjapan.co.jp/Press/Current/20180614Apr.html Dockerの利用は、アプリケーションの運用管理効率化が導入目的
  3. 8 KubernetesとKubernetesサービス containerd / cri-o / docker … Any Infrastructures

    OCI CRI Kubernetes Mesos Cloud Foundry DC/OS Pivotal CF Bluemix Docker OpenShift GKE AKS EKS Swarm Kubernetesサービスも拡充 × 何を選ぶのか ◦ 何がしたいのか Kubernetesが デファクトに… Managed Cloud Public Cloud Hybrid Cloud Private Cloud RKE
  4. 9 Kubernetesがやってくれること マルチクラウド 複数のホストにわたるコンテナのオーケストレーション リソースの利用効率 エンタープライズ・アプリケーションの実行に必要なリソースを最大限活用できるようにハードウェアを効 率よく使用する サービスディスカバリ アプリケーションのデプロイとアップデートを制御し自動化する リソースのオートスケール

    コンテナ化されたアプリケーションとそのリソースをオンザフライでスケールする サービスの宣言的管理 デプロイ済みアプリケーションが常にデプロイ方法に従って実行される 自己回復 自動再起動、自動複製、自動スケーリングにより、アプリケーションのヘルスチェックと自己治療を行う Kubernetesの主な機能
  5. 10 Cloud Native Application開発に必要なもの Container Registry QuayやDocker Trusted registryなどのコンテナイメージの管理 Network

    OpenvSwitchなどのプロジェクト/サービス間のインテリジェントなルーティング Telemetry Heapster / Kibana / Hawkularなどを利用したリソースの監視とオートスケール Security マルチテナンシーを実現するOAUTH / LDAP / RBACによるプロジェクト管理 Cluster Automation Kubernetesのインストールやクラスタのライフサイクル管理 Service Catalog アプリケーションをパッケージ化した豊富なカタログ Kubernetesだけでは実現できないあれこれは、うしとたぬきにお任せ 出展: What is Kubernetes https://www.redhat.com/ja/topics/containers/what-is-kubernetes
  6. 11 Cloud Nativeなアプリ開発フロー Build Developer Test Container Registry Helm Chart

    Repository Artifact Management Continuous Integration Version Control Continuous Integration Continuous Integration 開発したアプリケーションに対して、動的なテス トを行い、ステージング環境や本番環境にデプロイ できる成果物(Artifact)を作成する流れ。 Gitによるアプリ開発の視点で言うならば、開発者 が作成した新しいコードをマスターブランチにマー ジするプロセス。これによって、新しいコードに対 して一定の品質を担保できた成果物が作成される。 成果物の一例 ・Containerイメージ ・VMイメージ ・アプリケーションアーカイブ ・ChatやManufactures などなど
  7. 12 Cloud Nativeなアプリ開発フロー Container Registry Deploy Staging Deploy Production Release

    Monitoring Helm Chart Repository Artifact Management Continuous Delivery/Deployment Continuous Delivery / Deployment Continuous Delivery / Deployment 成果物をステージング環境にデプロイして動的テ ストを行うことや、本番環境にデプロイしリリース するまでの流れ。 厳密に言うと、”Delivery”はCIの延長上にありス テージング環境や本番環境にデプロイするまでの仕 組み。”Deployment”は利用者に対して迅速にリリー スできるまでの仕組みを示す。 デリバリ/デプロイの一例 ・Blue/Greenデプロイメント ・Canary Release ・イミュータブルデプロイメント などなど
  8. 13 Cloud Nativeなアプリ開発フロー Build Developer Test Container Registry Deploy Staging

    Deploy Production Release Monitoring Helm Chart Repository Artifact Management Continuous Integration Version Control アプリ開発の流れ Continuous Delivery/Deployment
  9. 14 Cloud Nativeなアプリ開発フロー Build Developer Test Container Registry Deploy Staging

    Deploy Production Release Monitoring Helm Chart Repository Artifact Management Continuous Integration Version Control 本日のお話ポイント Continuous Delivery/Deployment
  10. 16 GitLabのビジョン Continuous Integration Continuous Deployment Plan Create Verify Package

    Release Configure Monitor Complete DevOps “GitLab’s vision is to serve enterprise-scale, integrated software development teams that want to spend more time writing code and less time maintaining their tool chain.” GitLabによる Complete DevOpsの実現
  11. GitLab Instance 18 GitLab CI/CD GitLab CI/CDのアーキテクチャ Developer GitLab CI/CD

    GitLab Repository GitLab Project .gitlab-ci.yml Test Environment Staging Environment Production Environment gitlab-runner gitlab-runner gitlab-runner Kubernetes Executor KubernetesクラスターのKubernetes APIに接 続し、各GitLab CIジョブのPodを作成。 .gitlab-ci.ymlでserviceを定義することで、 Job実行コンテナとは別のコンテナも構成 できる。 その他のExecutors ・Shell Executor ・Docker Executor ・SSH Executor ・Virtualbox Executor などなど Kubernetes API Job実行のPod
  12. GitLab Instance 19 GitLab CI/CD GitLab CI/CDのアーキテクチャ Developer GitLab CI/CD

    GitLab Repository GitLab Project .gitlab-ci.yml Production Environment gitlab-runner GitLab CI/CD Job実行用のPodは、Jobが完了次第(成功し ても失敗しても)動的に削除される。そのた め、Job実行のPodと実際にデプロイする サービスPodは異なる。 → デプロイ作業はJobとして実行しなけれ ばいけない。 ※Auto DevOps機能を利用しない場合 Job実行のPod は削除される サービスPod Test Environment gitlab-runner Job実行のPod≒テストPod CI CD
  13. 21 GitLab Kubernetes Integration Developer Test Environment Staging Environment Production

    Environment Kubernetes Integration GitLabプロジェクトごとにKubernetesクラス タを作成。アプリケーションのレビューや デプロイ、パイプラインの実行などが簡単 に行える。 現在(2018/06)サポートされていIntegration ・GKE Cluster via GCP Account ・Register Existing Cluster デプロイ可能Applications(Pod) ・helm-tiller (Tillerによってデプロイ) ・gitlab-runner ・Ingress ・Prometheus ・JupyterHub などなど Kubernetes Integration gitlab-runner GitLab CI/CD GitLab Repository helm-tiller GitLab Instance GitLab Project Kubernetes Integration
  14. 23 Cloud Nativeなアプリ開発フロー Developer Deploy Staging Deploy Production Release Monitoring

    Artifact Management Continuous Integration 本日のお話ポイント Continuous Delivery/Deployment GitLab Repository Helm Chart Repository Container Registry Build GitLab Kubernetes Integration Test GitLab CI/CD
  15. 24 Cloud Nativeなアプリ開発フロー Developer Deploy Staging Deploy Production Release Monitoring

    Artifact Management Continuous Integration 本日のお話ポイント Continuous Delivery/Deployment GitLab Repository Helm Chart Repository Container Registry Build Test GitLab CI/CD GitLab Kubernetes Integration あ。今日は牛の会でした…ne。
  16. 26 Rancherのビジョン “Recognized as a leader in the industry, Rancher’s

    vision is to change the way organizations adopt Kubernetes and manage their containers in production.” RancherによるKubernetesマネジメントとコンテナマネージメント RancherによるKubernetes管理 コンテナマネージメント
  17. 30 Deploy Staging Deploy Production Release Monitoring Continuous Delivery/Deployment Rancher

    Catalog CIでできた成果物をカタログに反映し、CDではカ タログからデプロイしたいものを選択。 カタログは、配布準備が整ったアプリケーション メニューであり、実態はGitリポジトリ。そのため、 すでに用意されたカタログと、自分でカスタムでき るカタログがある。 Catalogの種類 ・Library ・Helm Stable ・Helm Incubator ・Custom Rancher Catalog Artifactをサービスメニュー化する Rancher Catalog Helm Chart Repository Container Registry
  18. 31 Helm Chartのおさらい Helmによるコンテナデプロイメント Tiller Helm Client Helm Chart Repository

    Container Registry Helm Chart Service Deployment Application Container Kubernetes gRPC REST/JSON Developer Helm Chart Commit Pull Container Image
  19. 32 Rancher Catalog Helm Stable Tiller Helm Client Helm Chart

    Repository Container Registry Helm Chart Service Deployment Application Container Kubernetes gRPC REST/JSON Developer Helm Chart Commit Pull Container Image Rancher Catalog
  20. 33 Rancher Catalog Helm Stable Rancher Chart Description app-readme.md ◦

    Rancher 2.0 UIで表示するためのReadmeファイル charts/ Chartの依存関係を含めるディレクトリ Chart.yaml Helm Chartの情報ファイル question.yml ◦ Rancher 2.0 UIに関する質問を含むファイル templates/ values.ymlと組み合わせ、コンテナを生成するテンプレートYAMLの配置 requirements.yml チャートの依存関係をリストするファイル README.md Helm Readmeファイル。[詳細説明]に表示される。 values.yaml チャートのデフォルトの設定値 Helm Chart Repository charts/<application name>/<app version>/ (例: charts/wordpress/v0.1/)
  21. 35 Cloud Nativeなアプリ開発フロー Build Developer Test Container Registry Deploy Staging

    Deploy Production Release Monitoring Helm Chart Repository Continuous Integration Version Control 本日のお話ポイント Continuous Delivery/Deployment Rancher Catalog Kubernetes Management
  22. 37 Cloud Nativeなアプリ開発フロー Build Developer Test Deploy Staging Deploy Production

    Release Monitoring Continuous Integration Version Control 本日のお話ポイント Continuous Delivery/Deployment Rancher Catalog Kubernetes Management GitLab Repository Helm Chart Repository Container Registry GitLab CI/CD GitLab Kubernetes Integration
  23. 38 Cloud Nativeなアプリ開発フロー Build Developer Test Deploy Staging Deploy Production

    Release Monitoring Continuous Integration Version Control 本日のお話ポイント Continuous Delivery/Deployment Rancher Catalog Kubernetes Management GitLab Repository Helm Chart Repository Container Registry GitLab CI/CD GitLab Kubernetes Integration なんて複雑…。
  24. 43 いろいろハマる。その1 RKEのGitLab Integrationへの登録 Developer RKE GitLab CI/CD GitLab Repository

    GitLab Instance GitLab Project (1)Kubernetes Integration GKE Kubernetes Management (2)Kubernetes Management (2)Kubernetes Integration (1)Kubernetes Management
  25. 45 いろいろハマる。その1 RKEのGitLab Integrationへの登録 Developer RKE GitLab CI/CD GitLab Repository

    GitLab Instance GitLab Project (1)Kubernetes Integration GKE Kubernetes Management (2)Kubernetes Management (2)Kubernetes Integration (1)Kubernetes Management Proxy