投稿

AzureのARMTemplateでApplicationGatewayの静的Webサイトやってみた

AWS でも GCP でも標準の IaC やってみたのでAzureでも やらなきゃダメでしょということでAzureのIaCである ARMTemplate 試してみました。 構成としてはApplicationGateway+BlobStorageので、ついでにDNSもARMTemplateやってみました。SSL証明書は ZEROSSL で発行し、ドメインは freenom で発行しています。 ARMTemplate自体はAWSとかGCPと違ってJSON形式みたいですが、今後は Bicep とかいうやつが標準になる様です。ではいってみましょう。 ◆作業およびARMテンプレート 1.事前準備 #PowerShellインストール $ mkdir armtemplate $ cd armtemplate $ sudo apt-get update $ sudo apt-get install -y wget apt-transport-https software-properties-common $ wget -q https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb $ sudo dpkg -i packages-microsoft-prod.deb $ sudo apt-get update $ sudo apt-get install -y powershell $ pwsh #テストツールダウンロード PS /home/user/armtemplate> cd armtemplate PS /home/user/armtemplate> git clone https://github.com/Azure/arm-ttk.git 2.DNS ・ARMテンプレート $ vi dns__template.json ------------------------------------------------ { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", ...

(続)静的Webサイトホスティング二重化してみる(その4)

イメージ
前回までで おおよそ意図した構成は完成したものの。やっぱりコンテンツを二重投稿するのはイヤだということで GCSのときと同様 にGitHubActions使ってmainブランチにコンテンツをpushすると S3 と Blob に同時にコンテンツをアップロードするという構成を作ります。 AWSのIAMでS3にオブジェクトアップロードできる権限を作るとこと GitHubActions の設定やなんかは GCSのとき のを参考にシークレットとか設定します。 最終的に↓感じの構成になりました。 ◆シリーズ その1:AWSでCloudFront+S3構成を作る その2:AzureでApplicationGateway+Blob構成を作る その3:DNSでフェイルオーバー設定 その4:S3とBlobにGitHubActions使ってコンテンツ同期(今回) その5:TerraformでIaC化 ◆環境 azure-cli 2.14.0 Ubuntu20.04.4LTS ◆作業内容 1.AzureのCREDENTIALSを発行 ローカルで発行しようとしたもののエラーが発生したて解消できませんでした。どんだけあがいてもうまく行かなかったのでAzureのCloudShell上でコマンドを叩きます。 $ az ad sp create-for-rbac --name tohonokai_tk --role contributor \ --scopes /subscriptions/${SUBSCRIPTION_ID}/resourceGroups/${RESOURCE_GROUP_NAME} \ --sdk-auth The underlying Active Directory Graph API will be replaced by Microsoft Graph API in Azure CLI 2.37.0. Please carefully review all breaking changes introduced during this migration: https://docs.microsoft.com/cli/azure/microsoft-gr...

(続)静的Webサイトホスティング二重化してみる(その3)

イメージ
 前回 まででAzureのBlobによる静的サイトホスティング構成が完了しました。いよいよ今回でDNSの設定を書き替えてフェイルオーバ環境を構築します。 登録されているAWSのAliasレコードのAレコードを削除してからヘルスチェックを登録してAレコードにフェイルオーバーの設定を施してから登録を行うという内容です。 最終的にこういう構成になります。 ◆シリーズ その1:AWSでCloudFront+S3構成を作る その2:AzureでApplicationGateway+Blob構成を作る その3:DNSでフェイルオーバー設定(今回) その4:S3とBlobにGitHubActions使ってコンテンツ同期 その5:TerraformでIaC化 ◆環境 aws-cli/2.4.27 Python/3.8.8 Linux/5.4.0-104-generic exe/x86_64.ubuntu.20 prompt/off Python 3.10.3 Ubuntu20.04.4LTS ◆作業内容 コマンドラインでの作業となります # 1.Route53ヘルスチェック #・クラウドフロント情報取得 $ CLOUDFRONT_URL=$(aws cloudfront list-distributions \ --query "DistributionList.Items[].{DomainName: DomainName, OriginDomainName: Aliases.Items[0]}[? OriginDomainName == '${YOUR_DOMAIN}'] | [0].DomainName"\ --output=text \ ) && echo $CLOUDFRONT_URL #・ヘルスチェック作成 $ cat << EOF > create-health-check.json { "Type": "HTTPS_STR_MATCH", "ResourcePath": "/", "FullyQualifiedDomainName": "$CLOUDFRONT_URL...

(続)静的Webサイトホスティング二重化してみる(その2)

イメージ
  前回 はAWS-CLIでAWS上に静的サイトホスティングの構成を作るところまでを終わらせました。今回は Azure-CLI を使って、Blob+ApplicationGatewayの構成で静的Webサイトホスティングを有効化してSSL証明書をぶち込むところまでをやってみます。SSLは ZeroSSL を使用します。(自動更新の仕組みまでは作れませんでした。残念) ◆シリーズ その1:AWSでCloudFront+S3構成を作る その2:AzureでApplicationGateway+Blob構成を作る(今回) その3:DNSでフェイルオーバー設定 その4:S3とBlobにGitHubActions使ってコンテンツ同期 その5:TerraformでIaC化 ◆環境 azure-cli 2.14.0 Python 3.10.2 Ubuntu20.04.4LTS ◆作業内容 1.事前準備(SSL準備) (1)ZeroSSLでCNAME用文字列取得 ・ZeroSSLに新規登録し、[NewCertificate]で新規証明書の発行を開始する ・ドメインを入力して[NextStep]をクリックする ・[90-Day Certificate]を選択して[Next Step]をクリック ・[CSR&Contract]で[Auto-Generate CSR]が有効であることを確認し[Next Step]をクリック ・Freeを選択して[Next Step]をクリック ・[DNS(CNAME)]を選んで表示された内容をメモし[Next Step]をクリックする (2)AWSのRoute53にZeroSSLのCNAME登録 $ cat << EOF > createcnamerecode.json { "Comment": "Creating Alias resource record sets in Route 53", "Changes": [{ "Action": "CREATE", "ResourceRecordSet": { ...

(続)静的Webサイトホスティング二重化してみる(その1)

イメージ
 以前、 AWSとGCPで静的Webサイトホスティングを冗長化 していました。 けど GCP じゃなくて Azur なんだよAzureとか言われそうなところもあるのでAzureでできないものかと悶々としておりました。 そんな中Azureにも ApplicationGateway なるものが存在しバックエンドに AzureBlob の静的サイトホスティングを配置しIPアドレスも割当可能とのことから、これ行けるんじゃなかろうかと思って少し取り組んでみようと思いました。 まずは前回はマネジメントコンソールからスタートしたので、思い切って今回は AWS-CLIv2 でやってみます。なんか AWS で静的Webサイトホスティングやるの久しぶりだな。 何回かシリーズになるかどうか謎ですが、気が向いたらお付き合いいただけると幸いです。ドメインは freenom で取得しています。(お約束の無料ドメイン) ◆シリーズ その1:AWSでCloudFront+S3構成を作る(今回) その2:AzureでApplicationGateway+Blob構成を作る その3:DNSでフェイルオーバー設定 その4:S3とBlobにGitHubActions使ってコンテンツ同期 その5:TerraformでIaC化 ◆環境 aws-cli/2.4.27 Python/3.8.8 Linux/5.4.0-104-generic exe/x86_64.ubuntu.20 prompt/off Python 3.10.3 Ubuntu20.04.4LTS ◆作業内容 1.事前準備 # 1.AWS-CLIのv1系アンインストール $ pip uninstall awscli Proceed (y/n)?y Successfully uninstalled awscli-1.18.39 # 2.AWS-CLIのv2系インストール $ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" $ unzip awscliv2.zip $ sudo ./aws/install --update $ /usr/local/bin/aws --version ...

Kubernetesお勉強その7【環境構築】Istioに入門してみる

kubernetes ってやっぱり マイクロサービス で使うことを想定しているわけだからやっぱり サービスメッシュ とか大事になってくるわけで。さくっとそのサービスメッシュを管理してくれる Istio を試してみました。といってもサンプルの手順なぞっただけでほとんどコピペですが・・・。 ロギング とか、 認証 ・ 認可 とかコンテナの制御系周りでビジネスに関係ないとこは切り出して POD が ビジネスロジック に集中できるような仕組みのようなもんという理解です。(正解かどうかは知らんけど) PODがマイクロサービスを担うような感じにしたい ので、マイクロサービスとして共通のものを一々POD毎に書いてられっかというのが背景にあるのかなと、結局最後は ドメイン駆動設計 に行き着く感じなんかなぁと思いました。 けど SOA とどこが違うんすっかとモヤモヤとしつつ手を動かしました。手を動かすところはほかの先人のサイトのコピペばかりなのであまり役に立たないかもしれないです。 ◆手順 # 1.FireWall設定(FireWallを一旦リセットし内部からの通信のみ許可) $ sudo ufw reset $ sudo ufw enable $ sudo ufw allow from 192.168.0.0/24 $ sudo ufw reload # 2.Istioctlインストール $ curl -L https://istio.io/downloadIstio | sh - $ cd $ echo 'export PATH="$PATH:/home/youruser/istio-1.13.0/bin"' | tee -a .bashrc $ source .bashrc $ istioctl x precheck # 3.metallb準備(IstioでLoadBarancer使うので事前準備) $ kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.12.0/manifests/namespace.yaml $ kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/...

nginxでTestLinkを動かしてみる

 先日、 DockerでTestLinkのsamba-ad連携 してみたけど。dockerを動かすには貧弱なAzureのVMを使用しているので nginxでバーチャルホスト 切って動かしてみることにしました。 これもまた先人のお知恵を拝借してと思いましたが、Dockerで作成されているものが多数で結構、情報が少ないのかなと思ってひとまずまとめておくことにしてみました。需要あるかわかりませんが、少なくとも自分はこういう構成でやるのでまとめてくれるのがなくて困った。というよりこういうのはDockerでやれという話ですね。 ◆対象Version Ubuntu20.04.3LTS ◆手順 1.PHPインストール $ sudo apt -y install php7.4 $ sudo apt -y install php-fpm php7.4-common php7.4-mysql php7.4-gmp php7.4-curl php7.4-intl php7.4-mbstring php7.4-xmlrpc php7.4-gd php7.4-xml php7.4-cli php7.4-zip 2.データベースや添付ファイル保管用ディレクトリマウント *先にAzureファイル共有のストレージアカウントを準備しておく # 環境変数設定 $ export AZUREFILES_RGN="VirtualMachineExamination" $ export AZUREFILES_SA="testlink" $ export AZUREFILES_TESTLINK_DB_FSN="testlink-database" $ export AZUREFILES_TESTLINK_DB_MNT="/mnt/$AZUREFILES_SA/$AZUREFILES_TESTLINK_DB_FSN" $ export AZUREFILES_TESTLINK_FILE_FSN="testlink-file" $ export AZUREFILES_TESTLINK_FILE_MNT="/mnt/$AZUREFILES_SA/$AZUREFILES_TESTLINK_FILE_FSN...