10GCPの1年の試用期間が終了、AWSと違い3万円くらいのクレジットが配布されるたので全くお金かからずに楽しめましたが、低コスト運用ばかり考えてがっつり余ってしまいました。攻めておけば良かったと反省しています。AzureAWS,GCPと触ったので次はAzureの試用期間を楽しみます。Databaseを主に触る予定です。Kubernetesはどの程度コストがかかるのか良くわかっていないので不安ながら楽しみです。今回はアカウント取得からAKSで簡単なWebページの公開までやってみます。アカウント登録とCLIツールのインストールAzureアカウントを取得、登録にはクレジットカードが必要でした。CLIツールをインストール。セットアップ手順は変わる可能性があるので公式をみてください。Regsitryの作成ブラウザからACR管理画面で作成しました。終わった後に気づきましたが、非公開イメージを作らないならACR作成しなくてもまずはdockerhubで良かった気がします。basicSKUはレジストリの性能を決めるようです、一番安いbasicを選択。場所は日本在住なら日本が良いと思います。pythonのアップデートdockerイメージをACRレジストリに登録しようとしたところ、pythonのエラーが出ました。cffiが必要とエラーが出ていたのでインストール。pythonは人それぞれ設定があるため環境によってエラーの修正内容は変わると思います。pythonインストールの正解はいまだに良くわかっていません。以下はmacデフォルトのpython2とは別にpython3を導入しているのでpython3になっています。クラスターの作成(AKS)料金シミュレーションだとB1sが非常に低コストで使えそうだったのですが・・・選択できませんでした。アカウントが試用版だからでしょうか。無料クレジットがあるのでとりあえず月額4500円くらいのStandardB2sを選択。クラスター名とDNSプレフィックスをmyaksclusterと設定。ここは西日本なかったので、Containerレジストリも東日本にした方が良かったかもしれません。認証:新規サービスプリンシパル、RBAC使用するネットワーク:HTTPアプリケーションのルーティングだけ”はい”にして他は初期値タグ:設定なしデプロイ待ち上記設定を終えて作成を押すとkubernetesクラスターのデプロイが始まります。11分程度で完了しました。dashboardに入るクラスター作成後にクラスター用の管理画面ができています。そこに入り、Kubernetesダッシュボードへアクセスというカードをクリックすると色々コマンドがコピーでき、それをローカルで実行します。ブラウザが立ち上がりローカルの8001ポートにて良く見るKubernetes画面にアクセス可能になりました。RBACを使用している場合はアクセス前に下記コマンドを使用するとpodなどを見ることができます。--serviceaccount=kube-system:kubernetes-dashboardAKSとACRAKSがACRからimageをpullするには許可が必要です。許可を入れないとpullに失敗してpodのstatusがImagePullBackOffになります。許可の入れ方は下記です。ここまでの手順で作成したAKSとACRの情報が必要です。https://docs.microsoft.com/en-us/azure/container-registry/container-registry-auth-aksこれも管理画面からできそうですが上記に従ってコマンドで行いました。実際に使ってみるkubernetesが使える状態になったので、イメージを作成して登録し、deployment.yamlとservice.yamlを登録します。今回は過去記事にあるgatsbyで作成したwebサイトとGoのファイルを扱ったdockerfileをACRに登録します。Golangのウェブサーバーで静的サイトを配信する上記で作成した構成です。main.goのポートは8080から80に変更しています。dockerfileと同じ階層にmain.goを配置してACRにイメージを登録します。下記コマンドの最後の.はdockerfileの位置で、dockerfileがある階層でコマンド打つなら.になります。.ACR_NAMEはACR作成時につけた名前です。エラーがなければイメージ登録されており、ACRダッシュボードで確認できます。deployment.yamlイメージが登録できたらkubernetesに登録するためdeployment.yamlを作成。普通にdockerhubから引っ張っても良かったような気がします。deployment.yamlService.yamlService.yamlを登録して外からアクセスできるようにします。gfront下記コマンドで登録。失敗していなければ上記手順でひとまずウェブサイトが公開できています。svcこのコマンドでEXTERNAL-IPで表示される数値をアドレスバーに入れればアクセスできます。数値が出るまで少し時間がかかります。Managerまだ名前だけでコンテンツは何もありません。何もなさすぎて寂しいので意味もなくカレンダーだけ表示しました。引っかかる場所はいくつかあったものの、1日かからないくらいでkubernetesとdockerのレジストリが作成でき、グローバルIPとはいえサイト公開までたどり着ける。サーバーレス恐るべし。AWSやGCPでkubernetes使ったことがないので他社サービスと比較した感想は出せませんが、今のところストレスなく使えておりちょっと感動しているくらいです。いつものkubernetes画面が出てしまえばAzureというよりKubernetesですしね。コスト考えるとVPSなど固定料金のサービス系が個人利用だとまだまだ強くはありますが、サーバーレスのこのアプリケーションへすぐ到達できる感じは堪りません。次はdatabaseウェブサイト以外にちょっとしたpodは立てたので、次はdatabaseと繋ぐ予定です。Databaseを使ってみます。kubernetes使いつつdatabaseだけ外に出す話を最近記事で見たのでそれを真似してみたいという理由と、最小スペックなら月額630円とか書いてあるのでAKS関係なしにこの低コストに興味津々です。hidekazooTwitterJavaScriptやPHPなどプログラム関係やDockerといった開発環境など、ITエンジニアとして興味あることを紹介しているサイトです。