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

A_cloud_engineer_who_likes_Azure_tried_ARO_with_Metaverse__but.pdf

 A_cloud_engineer_who_likes_Azure_tried_ARO_with_Metaverse__but.pdf

Hiroki Matsueda

May 27, 2022
Tweet

Other Decks in Technology

Transcript

  1. 2022年5月26日
    株式会社FIXER 松枝宏樹
    Azure好きなクラウドエンジニアが
    メタバースでAROに⼿を出してみたが
    しかし

    View Slide

  2. 1
    © COPYRIGHT 2022 FIXER inc.
    アジェンダ
    • 自己紹介
    • メタバースが提供する仕組みについて
    • AROを使用する動機
    • 検証の強い味方、Visual Studioサブスクリプションの特典
    • 作って壊して、を繰り返す
    • ⼿順化に向けた追加検証
    • 整理した⼿順の紹介
    • OpenShiftを触ってみた – Operatorにチャレンジ
    • 触ってみた感想

    View Slide

  3. 2
    © COPYRIGHT 2022 FIXER inc.
    自己紹介
    松枝 宏樹
    • ギリギリ昭和生まれ、愛知県出身の一児の父です
    • 子供の頃はVisual Basic 6.0で遊んでいた元アプリエンジニアです
    • 現在はクラウドエンジニアをやっていますが、C#が好きです
    • 最近はterraformでAzureリソースの構築をするのが得意です
    • Kubernetesも若⼿メンバーに助けられながら頑張っています
    中3の頃は夏休みに
    こんなゲームを作ってました

    View Slide

  4. 3
    © COPYRIGHT 2022 FIXER inc.
    メタバースが提供する仕組みについて
    • メタバースが提供する仕組みは何か?→現在のところ具体的な定義はこれから整っていく認識である
    • 必要な仕組みは例えば・・・
    • Webブラウザ等で基本的な操作ができる=従来のWebの仕組みが使用できる
    • 3D空間等で相互にコミュニケーションがとれる=リアルタイム通信ができる
    • 非中央集権的な仕組みで取引が行える=ブロックチェーンを用いたNFTなどが利用できる
    • そして、上記のような仕組みが、(極端な話をすると)全人類が安定して使用可能である必要が出てくる
    • ブロックチェーンのインフラは非中央集権≒企業で用意しないので、ブロックチェーン以外の部分をどう用意する?
    大量の
    Webクライアント
    メタバース
    リアルタイム通信の仕組み
    (音声、空間上の位置情報など)
    従来のWebの仕組み
    (HTML、画像、APIの提供)
    スケーラブルで安定して
    使用可能なインフラ
    まだ具体的に定義不可能な
    インターフェース
    ブロックチェーンのインフラ
    活用?
    NFT等の提供?

    View Slide

  5. 4
    © COPYRIGHT 2022 FIXER inc.
    AROを使用する動機 – 具体的に定義不可能なI/FにはKubernetesが適している
    • 具体的に定義できないインターフェースが必要であれば、マイクロサービスの形が適している
    • マイクロサービスのAPIをPaaSで動かそうとすると、例えばAzureのAppServiceをAPIごとに構築することになる
    • 非常に手間がかかるし、APIが増えた際の追加構築のサポートなども大変
    • K8sなら、クラスタを用意しておけばあとはマニフェストファイルで完結するので、インフラ面の調整が容易である
    API_A
    API_B
    API_C
    PaaSでマイクロサービスを実現しようとすると、APIごとにWebApps
    を用意しなければならない

    - インフラの構築 (職人技のterraform)
    - 設定調整(Azure CLI、自動化するなら場合によってREST API)
    - リリースパイプラインの実装(Azure DevOps等)
    API_A
    API_B
    API_C
    Kubernetesでマイクロサービスを実現しようとすると、Kubernetesクラスタがあ
    ればインフラの追加構築は不要。
    リソースの割り当てや設定やマニフェストファイルで実施できる。
    OpenShiftならCI/CDパイプラインもyamlで書ける?
    入口の仕組み
    with PaaS
    入口の仕組み
    (PaaSでもK8sでもどうぞ)
    構成図は一見簡単だが、
    自動化や運用の面では
    なかなかの努力が…
    一度構築すれば基本的
    に残りはyamlファイル
    で設定できるし、
    Operatorで運用の自動
    化も期待できる

    View Slide

  6. 5
    © COPYRIGHT 2022 FIXER inc.
    AROを使用する動機 – 安定して使用可能なインフラにはOpenShiftが適している
    • Kubernetesを使用したいが、安定運用のためにはミドルウェアの運用自動化がポイントになる
    • OpenShiftでKubernetesのインフラ運用について楽になりたい
    • RedHat認証済みのOperatorによる、ミドルウェアの安定した運用自動化にも期待している
    • Azureに慣れているので、AzureでOpenShiftを簡単にデプロイできそうなAROを使ってみよう
    • クラウドなら構築が楽で、失敗したら作り直せばいいはず!
    自分でSlackに残した呟きをベースに、
    上⼿くいったりいかなかったりしたことをご紹介します。

    View Slide

  7. 6
    © COPYRIGHT 2022 FIXER inc.
    検証の強い味方、Visual Studioサブスクリプションの特典
    • AROは最低でもD8s_v3のノードが6台も必要?検証でそんな出費は厳しい・・・
    • とりあえずVisual Studioサブスクリプションの特典で付いてくるAzureクレジットで試してすぐ壊してをやってみよう
    • ・・・あ、サブスクリプションのクォータが。。デフォルトのクォータだと20vCPUしか使えないからクォータを上げて、
    さあスタート!
    • 「Standard DSv3 ファミリ vCPUs」のクォータ引き上げ依頼しましょう

    View Slide

  8. 7
    © COPYRIGHT 2022 FIXER inc.
    ポータルから作ってみよう!
    エラー: ワーカーノード数のケチりすぎ
    (ドキュメントをちゃんと読まない病?)
    ワーカーノード数を変更してリトライ!
    エラー: サービスプリンシパルの権限不足
    (ドキュメントをちゃんと読まない病?)
    作って壊して、を繰り返す(Azureポータルから作れない?)
    ドキュメントを読まなかった影響により、
    Azureポータルから作れなかった。
    多分これを読んでない

    View Slide

  9. 8
    © COPYRIGHT 2022 FIXER inc.
    作って壊して、を繰り返す(ケチすぎて時間がかかる)
    ドキュメントを読まないとダメだ、チュートリアルのドキュメントがあるので、これで試しましょう
    https://docs.microsoft.com/ja-jp/azure/openshift/tutorial-create-cluster
    最低でStandard_D8s_v3はキツいので、Standard_D4s_v3で・・・
    はい、エラーです。
    パラメータを変えて途中でコケたりしつつも、何とか構築成功!
    最後にログインしてみてすぐに削除したら、構築⼿順を安く検証できました。
    (元のAzureクレジット¥17,000 - 削除後のAzureクレジット¥14,914 = ¥2,086の消費) ARO 4系の最小構成は、
    マスターノードサイズはD8s_v3
    ワーカーノードサイズはD4s_v3
    でした。
    ちなみに、さらにケチって
    CodeReady ContainersをPCに入れよ
    うとしましたが、起動に必要な80番
    ポートを解放できず断念…

    View Slide

  10. 9
    © COPYRIGHT 2022 FIXER inc.
    ⼿順化に向けた追加検証 – Pull Secretの利用
    az aro create実行時にPull Secretを指定しないとOperatorHubに繋がらない=運用が楽にならない!!!!
    パラメータ--pull-secretを指定する必要がある
    ・・・が、ドキュメント読まない病により無駄に苦戦・・
    ファイル名の頭に「@」を書く必要があるので要注意。
    (エラーメッセージが「Invalid --pull-secret.」のような出力だったので
    なかなか原因が分からなかった)
    OperatorHubに繋ぐにはPull Secret
    が必要です。
    ドキュメントに記載の--pull-secret
    パラメータを指定しましょう。

    View Slide

  11. 10
    © COPYRIGHT 2022 FIXER inc.
    ⼿順化に向けた追加検証 – 欲張ってAzure AD連携の実施
    AAD連携してユーザー認証したい!と思い立ったので欲張って下記⼿順を検証
    https://docs.microsoft.com/ja-jp/azure/openshift/configure-azure-ad-ui
    ほぼドキュメント通りに実施成功!
    ただし、ドキュメント通りだと認証に使用するAADアプリのシークレット期限が6か月になるので、必要に応じて長い期限
    のシークレットを発行すると良いはず。
    例) AADアプリ作成後、 `ad sp credential reset --name --append --years 999` を実行

    View Slide

  12. 11
    © COPYRIGHT 2022 FIXER inc.
    整理した⼿順の紹介(1)
    PowerShellを想定した手順です
    各パラメータを変数定義して別環境の
    構築にも流用しやすく

    View Slide

  13. 12
    © COPYRIGHT 2022 FIXER inc.
    整理した⼿順の紹介(2)
    ワーカーノードのVMサイズを最低サイ
    ズにして検証費用の削減

    View Slide

  14. 13
    © COPYRIGHT 2022 FIXER inc.
    整理した⼿順の紹介(3)
    AAD認証用のAADアプリのシークレッ
    ト期限を延ばして長く使えるように

    View Slide

  15. 14
    © COPYRIGHT 2022 FIXER inc.
    OpenShiftを触ってみた - Operatorにチャレンジ – 素のKubernetesに入れてみる
    恥ずかしながら、「Operatorを使うと運用が楽になる」というレベルの知見。
    OperatorはOpenShiftの概念では無くてKubernetesの概念なので、
    まずは素のKubernetesを使った場合のOperatorを試してみる。
    まずはテキトウにAKSを立てて・・・
    OperatorHubの⼿順に沿ってインストール。あ、Operator Lifecycle Managerが最初に必要で・・・
    何とか成功?

    View Slide

  16. 15
    © COPYRIGHT 2022 FIXER inc.
    OpenShiftを触ってみた - Operatorにチャレンジ – 素のKubernetesに入れてみる
    Operatorを入れただけではGrafanaは入らないので、
    https://github.com/grafana-operator/grafana-operator/blob/master/documentation/deploy_grafana.md
    の説明を見ながらGrafanaをインストール
    ポートフォワーディングしたらGrafanaが見えました。
    素のKubernetesにOperatorを
    導入するのは比較的簡単そうではある
    ものの、
    コマンドの実行を積み上げないといけ
    ないので不安が残りました。

    View Slide

  17. 16
    © COPYRIGHT 2022 FIXER inc.
    OpenShiftを触ってみた - Operatorにチャレンジ – OpenShiftで入れてみる
    OperatorHubでGrafanaを検索し・・・
    注意事項を確認して続行

    View Slide

  18. 17
    © COPYRIGHT 2022 FIXER inc.
    OpenShiftを触ってみた - Operatorにチャレンジ – OpenShiftで入れてみる
    「インストール」を押す(Operator Lifecycle Managerは既に入っている)
    あ!オプションもあったんだ、と気づかされながら「インストール」!

    View Slide

  19. 18
    © COPYRIGHT 2022 FIXER inc.
    OpenShiftを触ってみた - Operatorにチャレンジ – OpenShiftで入れてみる
    インストールの状況も見える

    View Slide

  20. 19
    © COPYRIGHT 2022 FIXER inc.
    OpenShiftを触ってみた - Operatorにチャレンジ – OpenShiftで入れてみる
    Grafanaを入れるのもGUIから実施できる
    oc loginしてポートフォワーディングしたら見えた!
    設定ポイントが明確になっていたり、
    GUIから操作を実施できるので非常に
    安心感のある作業が実施できました。
    (今回のGrafanaは違いますが)
    RedHat認証済みのOperatorを使えば
    更にOperatorの品質も安心して使え
    るのは強力なメリットに感じます。

    View Slide

  21. 20
    © COPYRIGHT 2022 FIXER inc.
    触ってみた感想
    <良かったところ>
    • 比較的簡単な⼿順でARO環境が構築できた
    • 設定値はシンプルで、ドキュメントに沿って進めれば構築成功する
    • AzureADとの連携が簡単だったのが非常に嬉しい
    • Azureの延長線上で簡単にユーザー管理できそうな期待感
    • OpenShift自体のポータル画面の安心感が凄い
    • ここから何でもできるんだという魅力と、OperatorHubで良いものが導入できそうだという期待感
    • 一つ一つの操作もGUIで分かりやすい
    <課題に感じるところ>
    • Azureヘビーユーザーの感覚だと、ドキュメントを見ずにAzureポータルから上⼿く作れない
    ⇒ハードルが高いかも?と感じてしまう
    • Azureリソースは極端な話、「設定がよく分からないけど構築できた」ができるパターンが多いので、欲を言うと
    初期導入のハードルを下げたい
    • ポータルから作成した時のエラーメッセージや入力制限等がもう少し厳密になると良いかも
    • 今回で言うと、サービスプリンシパルの生成が自動化されるとか

    View Slide

  22. View Slide