Slide 1

Slide 1 text

セルフマネージドなk8s環境を IaC駆使して⾃動構築したい。 無料で︕→ そうだOCI使おう 御⽥ 稔 SRE / KDDI株式会社

Slide 2

Slide 2 text

お前誰︖ ■ 御⽥ 稔(おんだ みのる) ■ KDDI 情シス系部⾨のSRE ■ 実務ではAWS中⼼ ■ JAWSにもよく出没します。SRE⽀部運営 ■ OCIはたまに検討に浮上。これから勉強したい ■ 好きなOCIサービス︓ Identity > Compartment @minorun365 • KDDI Cloud SAMURAI 2021認定 • KDDI Cloud Ambassador 2021認定

Slide 3

Slide 3 text

きょう紹介したいこと ■ ⾯⽩そうなOCIハンズオン記事を ⾒つけたのでやってみました。 – 無料でセルフマネージドなk8sクラスターを構築できる︕ – しかもTerraform&Ansibleで⾃動構築。IaCの勉強にもなりそう ■ 元記事では全体的にスマートにまとめてくれていたので、 今回はシロートがつまずきがちなポイントにフォーカスして紹介

Slide 4

Slide 4 text

構成イメージ ワイ IGW OCIアカウント / コンパートメント VCN(10.0.0.0/16) サブネット (10.0.0.0/24) サブネット (10.0.0.1/24) コンピュート (Master) コンピュート (Worker) ターミナル

Slide 5

Slide 5 text

構築の流れ ■ ローカルPCに各種ツール導⼊ (OCI CLI、Git、Terraform、Ansible、jq) ■ 元記事の著者様リポジトリーから資材を拝クローン ■ TerraformでOCI環境を構築(.shありがたや〜) ■ Ansibleでk8sクラスターを構築(.shありがたや〜)

Slide 6

Slide 6 text

Terraformコードの例(VCN) 結局HCL(JSONもどき) なのでAWSと同じ︕ → OSSナレッジ流⽤でき 学習コストが低い

Slide 7

Slide 7 text

シロートがつまずいたポイント

Slide 8

Slide 8 text

つまずき① OCI CLIの初期設定 ■ oci setup config で初期設定後、 CLI操作を試すと401権限エラー︕ ■ 対話形式でのリージョン選択時に、先頭にあった 「ap-chiyoda-1」を選んでしまっていた(何者!?) →「ap-tokyo-1」にコンフィグ修正すると解消

Slide 9

Slide 9 text

つまずき② Terraform OCIプロバイダー ⽤のキーペア設定 ■ Terraform初回実⾏時にSSH関連の400エラー 😂 ■ ググるとGitHubの過去Issueがヒット。 「そのRSAキーペアと別のSSHキー使うといいよ」 なるコメントを発⾒。 ■ OCI CLI⽤に⽣成したRSAキーペアとは別に、 ⼿元のMacで ssh-keygen してOpenSSHキー作ると成功︕

Slide 10

Slide 10 text

つまずき③ Ansibleを利⽤した kubeadmプロビジョニング ■ kubeadm init 終盤で k8sリソース関連のエラーがドバドバ 😂 ■ ふむふむ。指定したCNI⽤のクラスターロールが RBACリソース内に⾒つからないのね。⽇本語でおk︕ → デバッグは早々に諦め、k3s⽅式へ鞍替え

Slide 11

Slide 11 text

で、結局うまくいったの︖

Slide 12

Slide 12 text

リソース不⾜︖でノードフリーズ 😂 途中まで kubectl できてたのに…︕︕笑 クラスター作成直後に Computeインスタンスの メモリー張り付き発⽣

Slide 13

Slide 13 text

今回のまなび&感想 ■ IaCなら環境破壊&再構築がチョー簡単。 OSS使えばパブクラ変わっても学習コスト低い︕ ■ OCI Always Freeだと VM.Standard.E2.1.Micro なので 気を付けないとすぐリソース枯渇するかも!? ■ 初⼼者がちょっとつまずいた際、OCIだと 公式ドキュメント以外に分かりやすい記事が少なめ → みんなでアウトプットして盛り上げよう︕

Slide 14

Slide 14 text

詳細はQiitaにもまとめました︕ 気に⼊ったらLGTMオナシャス︕ 感想や指摘もお待ちしてます。