「Rancher Meetup Tokyo #19(CIについて語ろう会)」で利用した資料です。 https://rancherjp.connpass.com/event/129147/
GitLab Cloud NativeCI/CD with RancherRancher Meetup Tokyo #19GitLab.JP
View Slide
2IntroductionsRed Hat K.K.
3Kubernetes実践ガイド7/12発売予定 (あくまで予定ですからねっ!「Kubernetes実践ガイド」Kubernetesの話はしますが、主にクラウドネイティブ is なに?って話の本です。※400ページくらい・Helmの展開・Operatorの活用・SpinnakerのCDパイプライン・Clairのコンテナスキャニング・Istioのサービスメッシュ などなど
AgendaGitLab Cloud Native CI/CD with Rancher4What’s GitLabGitLab Deployment through RancherGitLab CI/CD on KubernetesSummary
5What’sGitLab
6Traditional DevOpsToolchainのステージごとに異なるミドルウェアを連携しているContinuous Integration Continuous DeploymentPlan Create Verify Package Release Configure Monitor
7Complete DevOpsDevOps Toolchain for Complete DevOpsContinuous Integration Continuous DeploymentPlan Create Verify Package Release Configure MonitorComplete DevOps
8GitLab Main FeaturesTarget features[参照] https://about.gitlab.com/features/
9GitLabDeploymentthr Rancher
10Rancher CatalogCatalog ConfigurationLibraryRancher LabsがカスタマイズしたChartを使用するHelm ChartHelm公式のChartを使用するHelm Stable、HelmIncubator
11Helm Stable CatalogGitLab CatalogGitLab CEオープンソース版であり、プロプライエタリなコードを含んでないGitLab EEの機能を使用可能にするためには、ライセンスを購入する必要があります。 もしもライセンスがないGitLab EEを使用している場合は、MITライセンスの機能だけを使用するGitLab EEGitLab EEはGitLab CEと共通のコアを利用して、追加的な機能を提供しています。これはプロプライエタリなライセンスのもと配布されます
12Helm Stable CatalogGitLab CatalogGitLab CEオープンソース版であり、プロプライエタリなコードを含んでないGitLab EEの機能を使用可能にするためには、ライセンスを購入する必要があります。 もしもライセンスがないGitLab EEを使用している場合は、MITライセンスの機能だけを使用するGitLab EEGitLab EEはGitLab CEと共通のコアを利用して、追加的な機能を提供しています。これはプロプライエタリなライセンスのもと配布されますHelmのStableがステーブルだったことなんて稀だよね?(GitLabうごかねぇ…)
13Helm Stable Cataloggitlab-ceそろそろ公式Helm Chart変えたほうがいいよね
14公式の公式のHelm Chartを利用するGitLab Helm Chart
15GitLab Architecture was MonolithGitLab自体のコンポーネントが複雑化GitalyGitLab-ShellnginxGitLab-WorkhouseGitLab-Rails(unicorn)redissidekiqPostgreSQLhttp/httpsgitnfs nfs nfs・ユーザーから要求されたタスクのスケジューリング・静的コンテンツの配信・タスク情報の保持・ログインセッションの保持タスクの実行タスクの依頼タスクの依頼ユーザー情報の問い合わせタスク情報の取得GitLab
16GitLab.com is also planning to Cloud NativeMonolith to Microservicehttps://about.gitlab.com/handbook/engineering/infrastructure/production-architecture/
17GitLab Cloud Native Helm ChartNeed Some Answer Sheet for Deployment
18GitLab Cloud Native Helm ChartDeployed on Rancher
19GitLab CI/CDon k8s
GitLab InstanceGitLab CI/CD ArchitectureOn Kubernetes Executor20GitLabCI/CDGitLabRepositoryGitLab Project.gitlab-ci.ymlDevelopersGitLabRunnerExecutors- SSH- Shell- Parallels- VirtualBox- Docker- Docker Machine- KubernetesKubernetes ClusterNAMESPACE:ci-${CI_COMMIT_REF_SLUG}GitLabJob Pod- build-xxxxx- svc-xxxxxJob実行用のPodは、Jobが完了次第(成功しても失敗しても)動的に削除される。そのため、Job実行のPodと実際にデプロイするサービスPodは異なる。→ デプロイ作業はJobとして実行しなければいけない。※Auto DevOps機能を利用しない場合継続的インテグレーションサービス
GitLab CI/CD ScriptSample in .gitlab-ci.yml21stages:- build- test- deployjob 1:stage: buildscript: make build dependenciesjob 2:stage: buildscript: make build artifactsjob 3:stage: testscript: make testjob 4:stage: deployscript: make deployBuildStageTestStageDeployStage
GitLab InstanceGitLab CI/CD ArchitectureOn Kubernetes Executor22GitLabCI/CDGitLabRepositoryGitLab Project.gitlab-ci.ymlDevelopersGitLabRunnerKubernetes ClusterNAMESPACE: project-nameGitLabJob Podgitlab-managed-appsHelmTillerNginxIngressPrometheusMaster BranchTopic BranchDefault: GitLab 1 Project = Kubernetes 1 ClusterEnv: review/xxxxxEnv: productionmastertopic(リリース版)(開発版)
Installing managed applicationsgitlab-managed-apps23GitLab Instance23GitLabRunnerKubernetes ClusterNAMESPACE: project-nameGitLabJob Podgitlab-managed-appsHelmTillerNginxIngressPrometheusMaster BranchTopic BranchEnv: review/xxxxxEnv: production
Installing managed applications動的にデプロイ可能なApplicationリスト24ApplicationGitLabversionDescription Helm ChartHelm Tiller 10.2+他のアプリケーションをインストールために必要。クラスタ内の専用ポッドにTillerがインストールされ、安全な環境でhelm CLIを実行。 n/aIngress 10.2+アプリケーションのロードバランシング、SSL処理などを提供。これは、アプリケーションのWebプロキシとして機能し、Auto DevOpsでの独自のWebアプリケーションを展開。stable/nginx-ingressCert Manager 11.6+証明書の発行を支援するネイティブKubernetes証明書管理コントローラ。Let‘s Encryptによって証明書が発行され、証明書が有効で最新であることが動的に確認される。stable/cert-managerPrometheus 10.4+ 導入されたアプリケーションを監視。レビュー用のアプリケーションに対してもPrometheusで監視。 stable/prometheusGitLab Runner 10.6+CIジョブを実行し、その結果をGitLabに送り返すプロセス。アプリケーションを介してGitLab Runnerをインストールすると、デフォルトで特権モードで実行される。(*セキュリティ的に注意)runner/gitlab-runnerJupyterHub 11.0+プロジェクトチーム全体のJupyter Notebookを管理するためのマルチユーザサービス。 NurtchのRubixライブラリで構築された、すぐに使えるDevOps Runbookもご覧いただけます。 (*OAuth2経由でGitLabサーバーのユーザーに認証が有効)jupyter/jupyterhubKnative 11.5+サーバレスワークロードを作成、展開、および管理するためのプラットフォームを提供。これは、Knativeによってホストされているすべてのプログラムに外部IPアドレスを提供するためにIstioとともに使用されます。 アプリケーションが公開されるワイルドカードドメイン(DNS設定)が必要。knative/knative
Kubernetes IntegrationsAdd Existing Cluster25
Kubernetes IntegrationsNew Cluster on GKE26Googleアカウントにサインインすれば、動的にクGKEクラスターを作成してくれる。
GitLab InstanceAuto DevOps Application AccessNginx Ingress for applications2727GitLabRunnerKubernetes ClusterNAMESPACE: project-nameGitLabJob Podgitlab-managed-appsHelmTillerNginxIngressPrometheusMaster BranchTopic BranchEnv: review/xxxxxEnv: productionmastertopic(リリース版)(開発版)DevelopersDNS Record*.example.com 3600 A 1.2.3.4http://project.example.comhttp://review-project-5td1uj.example.comMonitoring動的にURL生成
Using multiple Kubernetes clustersDeploy different environments to different Kubernetes clusters28異なる環境を異なるKubernetesクラスタに展開することが可能GitLab InstanceKubernetes Cluster for ProductionNAMESPACE: project-namegitlab-managed-appsNginxIngressPrometheusMaster BranchTopic BranchEnv: review/xxxxxEnv: productionmaster(リリース版)Developershttp://project.example.comMonitoringKubernetes Cluster for ReviewNAMESPACE: project-namegitlab-managed-appsNginxIngressPrometheushttp://review-project-5td1uj.review.example.com
29Summary
Summary GitLab CI/CD PipelineGitLab supports Kubernetes worlds30CI/CDPipelinesKubernetesClusterContainerApplicationsGitLabのビジョンエンタープライズの開発チームが、Toolchainを維持する時間を短縮し、ソフトウェア開発に時間を費す環境を提供すること。
[Ad.1] GitLab Meetup Tokyo #17GitLab Contribute 2019 recap31日時2019/06/06(木)19:002019年5月に開催されるGitLabContribute 2019のレポートをMeetupTokyo #17として開催します。