ニフクラ ブログ

ニフクラやクラウドの技術について、エンジニアが語るブログです。

【レポート】GitLabとニフクラでDevOpsを実践してみた~DevOpsとKubernetesとクラウドネイティブ

こんにちは。 ニフクラエンジニアミートアップ事務局の鮫島です。
2021年3月31日(水)に第35回ニフクラエンジニアミートアップを開催しました。

今回のテーマは

fujitsufjct.connpass.com

というものでした。

DevOpsといえば、クラウドネイティブの重要な要素の一つとして認識されるようになってきましたが、どこから始めたらいいのかわからないという人もまだまだ多いと思います。

そういった初心者向けに、GitLabやマネージドKubernetesサービスを用いて、DevOpsを実践してクラウドネイティブな世界への第一歩を踏み出す方法を、ニフクラやGitLab社の中の人に語ってもらうという趣旨です。

f:id:sameshima_fjct:20210409180216p:plain
DevOpsとKubernetesとGitLabでクラウドネイティブなプログラム(雑)

GitLabで始めるDevOps入門

まず、トップバッターは富士通クラウドテクノロジーズの山口純による、ニフクラ「DevOps(β)」を活用したマネジメントでプライベートなGitLab環境の構築と活用についてのセッションです。

ニフクラ「DevOps(β)」は、開発(Development)と運用(Operations)の両者が協力しあうDevOpsを実現するために必要な機能を備えたオールインワンDevOpsプラットフォームとして先日リリースされたばかりです。

DevOpsは概念でありさまざまな解釈がなされていますが、ニフクラの「DevOps(β)」はニフクラが考えるDevOpsを実現するために用意されたツールの一つです。

大変わかりにくいですか?

f:id:sameshima_fjct:20210409180719p:plain
開発と運用が協力しながら速度と品質を向上させるというDevOpsの概念

ここまでは、DevOpsを語る上で、誰もが説明する内容でしょう。
山口の解釈は下記の通りです。

開発・運用サイクルがスムーズに回るよう、ボトルネックを解消する活動の総称

実際にこれを実現するためには、単にツールを導入するだけでは難しく、CI/CDアジャイルな開発手法はもちろん、「組織」「文化」といった技術だけでは解決できない部分に踏む込まざるを得ません。

DevOpsの解釈が多岐にわたる理由はまさにここであり、かつDevOpsを実践していく上での難しさでもあります。

ここで実例として紹介されたのが、「ニフクラの中」のDevOps実践状況。

f:id:sameshima_fjct:20210409182743p:plain
開発も運用も営業も管理部門もGitLabを絶賛利用中

いわゆるマーケティング活動を行っている私の部門はもちろん様々な部門がDevOpsのサイクルで業務を行っています。
※GitLab以外のツールも利用しつつ、大きな枠組みとしてのDevOps実践といえます。

ん?GitLabだけでDevOpsが実践できるの?

こういう疑問を持たれた方もいらっしゃると思います。

GitLabは、DevOpsのライフサイクルに求められる下記の機能をオールインワンで提供できる特徴があります。

・プロジェクト管理
・コード管理
・CI/CDパイプライン
etc

えーっと、ニフクラの「DevOps(β)」って、要するにこういうこと?

ニフクラの管理画面からGitLabのイメージが入ったサーバーを立てられる

実際にGitLabを構築するのはそう簡単ではありません。

f:id:sameshima_fjct:20210409192446p:plain
ニフクラの管理画面からあっさりGitLabが構築できるメリット

GitLab.comを利用すれば簡単じゃね?

という考えもあるでしょう。
※この件は、後程QAコーナーでコメントがあります…

この後は、実際の構築手順の解説がありました。

f:id:sameshima_fjct:20210415175456p:plain
構成図です。GitLab Runnerはご自分で設定する必要があります。

詳しくは動画をご覧いただいたほうがわかりやすいので省略します。

最後に、後のQAセッションの前哨戦ともいうべき質問コーナーに山口がコメントしました。

いくつか紹介します。

f:id:sameshima_fjct:20210415180424p:plain
確かにコンテナで構築できたらよりDevOpsっぽいとは思います

山口の回答:VM、コンテナどちらでも可能。GitLab公式でもDockerで構築する手順がある。

f:id:sameshima_fjct:20210415174528p:plain
GitLabの伊藤氏によるクリティカルヒット

山口の回答:今は手動で作っているが、いずれ自動化する(汗)

f:id:sameshima_fjct:20210415165835p:plain
サクラか?と思うほど、なかなかいい質問ですね。

山口の回答:パブリック環境に自社ソースコードを上げるのに抵抗がある方も多い。先日ニュースになった「金融機関のコードが某所で公開された問題」を気にする人も安心できる。つまり、自前の環境でセキュアに使いたいというニーズに応えられる。いずれ、プライベートLAN経由でも利用できるようにする。また、ニフクラとも連携できるメリットがある。

ここまでのQAも含めた内容はこちらの動画をご覧ください。 www.youtube.com

マネージドKubernetes、「Kubernetes Service Hatoba」を使ってみよう

続いて、Kubernetes関連のエンジニアミートアップでは常連の世良によるセッションです。

先日リリースされたばかりの、「Kubernetes Service Hatoba」を紹介する前に、まずはDevOpsとKubernetesとの関係、そしてクラウドネイティブについて簡単に概要を説明つつ、クラウドネイティブな方法でDevOpsを実践するために、Kubernetesが活用されている理由について解説しました。

f:id:sameshima_fjct:20210412171934p:plain
DevOps文脈でもKubernetesはでデファクトスタンダード

クラウドネイティブをかみ砕くと、運用自動化、高度な冗長化と疎結合、可観測といった要素を持つ「いい感じ」のシステムを志向しており、その実現のためには、現時点ではKubernetesを活用するのが近道であるということです。

必ずしも、クラウドネイティブなDevOpsを実践するためにKubernetesが必須ではないが、事実上スタンダードとして活用されているのも事実です。

もうKubernetesを導入するしかない!これからはKubernetes!

というわけにいかない事情もあります。

Kubernetes難しい…

という、過去のニフクラ エンジニアミートアップでも何度も語られている課題です。

運用のために専門チームを用意しなければならないほどであり、それができるのは余程の余裕が有る企業だけでしょう。

そこで、選択肢となるのがマネージドKubernetesです(本題)。

「難しい」部分の大半をほとんどマネージド側(クラウド事業者など)にまかせられるという大きなメリットがあります。

f:id:sameshima_fjct:20210412170602p:plain
ニフクラにおけるKubernetes as a serviceがHatoba

この後、初期設定など実際の操作画面の説明が行われました。 詳しくはこちらの動画をご覧ください。

www.youtube.com

一言、重要なことを忘れていました。

Kubernetesサービスを作ってみたいという開発者の方は、ぜひ富士通クラウドテクノロジーズに!We are hiring!

GitLabのAuto DevOpsを試してみた

続いて、GitLab合同会社、シニア・ソリューション・アーキテクトの伊藤俊廷氏によるGitLabのデモが行われました。

オールインワンのDevOpsプラットフォームであり、すべての機能を紹介するのは難しいですが、今回はAuto DevOpsのデモを見せてくださいました。

f:id:sameshima_fjct:20210412173544p:plain
GitLabの豊富な機能とAutoDevOps

これから、CI/CDを始めようとする初心者の方はどこから手を付けたらいいか分からないことが多いと思いますが、Auto DevOpsを利用すると「いい感じ」のベストプラクティスを自動的に実行することができるとのこと。

f:id:sameshima_fjct:20210412173729p:plain
全自動洗濯乾燥機のようにいい感じの方法を選択できる(デプロイ直前まで)

今時二層式の洗濯機を使う人はあまりいない(でも洗浄力は高い)と思いますが、全自動洗濯乾燥機のいいところは何も考えずにボタンを押せばほどほどいい感じに仕上がる点です。

Auto DevOpsの環境要件は下記の通りです。

f:id:sameshima_fjct:20210412175153p:plain
Kubernetes Service Hatobaなどのマネージドサービスがおすすめ

やはりマネージドのKubernetesサービスを利用することで各段に環境構築が楽になるのは言うまでもありません。

Auto DevOpsならば、下記のような自動化したパイプラインを簡単に実行することができるようになります。

f:id:sameshima_fjct:20210412175910p:plain
パイプラインの視認性もいいですね

実際の詳しいデモの様子は動画をご覧ください。

www.youtube.com

QAセッション(今回も無事コンプリート)

恒例のSliDoを使用したQAセッションが登壇者全員参加で行われました。

答えにくい質問もガンガン入ってきますが、構わず進行しました。

f:id:sameshima_fjct:20210415182817p:plain
おっしゃる通りですが。。。
伊藤氏の回答:GitLab Runnerは色々な導入方法がある。WindowsサーバーやLinux、Linuxの上にDockerエンジンを入れたりと、8種類くらい存在する。よって、今のところはお客様のユースケースに応じて選んでいただく形式にした。
山口の回答:今回のデモでVMではなく、Hatobaと連携させたかったが検証する時間がなかった。

f:id:sameshima_fjct:20210415184323p:plain
現状ではYAMLファイル(定義)のみをバックアップする方式です。

世良の回答:その通りで、YAML(定義)ファイルのみをバックアップできる。PVデータ等のバックアップは開発中でいずれリリースする予定。

f:id:sameshima_fjct:20210415193207p:plain
ソースコード以外の大容量ファイルはVPNだと帯域問題が…

世良の回答:どれが多いかは把握していないが、どちらでも選択可能。
宮原氏の回答:若干話は逸れるが、ゲーム会社などデータが大きいのでGitで管理するのが大変という話もある。VPNを利用すると帯域を圧迫する。単純なソースコードだけなら問題ないと思う。

その他、こんな答えいにくい質問も含めたくさんの質問が飛び込んできました。

f:id:sameshima_fjct:20210415194636p:plain
GitHubも使っているというフォローが入りつつもGitLabのメリットが訴求される

もちろん、動画ですべてご覧いただけます!

GitLabのバックアップ方法(二次会)

QAセッションが盛り上がったため、いったん中締めを行った後、宮原氏が用意していた「GitLabをバックアップしてみた」という実践的なLTが披露されました。

f:id:sameshima_fjct:20210415195510p:plain
GitLabのバックアップで気になったところ(ディレクトリとか)

f:id:sameshima_fjct:20210415195912p:plain
転ばぬ先のバックアップは基本です…

ということで、今回もめでたくコンプリートできた怒涛のQAセッションと合わせて、宮原氏のGitLabのバックアップ方法も動画でご覧ください。

www.youtube.com

人気のテーマということもあり、たくさんの方にお越しいただきました。 本当にありがとうございます。

次回は、4月28日(水)開催です。
新人エンジニアもおさらいしたいエンジニアも必見のLinuxコマンドがテーマです。

fujitsufjct.connpass.com

またお会いしましょう!