銀の光と碧い空

クラウドなインフラとC#なアプリ開発の狭間にいるエンジニアの日々

ASP.NET CoreでプロキシサーバーでSSL terminateさせるときにRequest.Schemeをhttpsにしたい

ASP.NET Coreを特にLinuxなどで動かす場合、Kestrelを使うことが多いのですが、Kestrel自体はシンプルなサーバーなのでフロントにHAProxynginxなどのプロキシーサーバーを配置することが多くなります。さらにHTTPSでアクセスするようにする場合、証明書はKestrel側ではなくてプロキシサーバー側に配置して、プロキシサーバーからKestrelまでは(プライベートネットワークだし)HTTPで通信するケースもあるかと思います。その場合、ASP.NET Core側でRequest.Scheme*1httpになります。これをhttpsにしたい場合のお話です。

*1:RequestはMicrosoft.AspNetCore.Mvc.ControllerBase クラスのプロパティ

続きを読む

Azure Container Service (AKS) でAzure Managed DiskをVolumeとして試してみる

Azureのマネージドなkubernetesサービス Azure Container Service (AKS) がpreviewとしてリリースされました。

azure.microsoft.com

デフォルトでkubernetes 1.7が使われるのですが、このバージョンからAzure Managed DiskがVolumeとして使えるはずなので試してみました*1

github.com

Azure PD (Managed/Blob) by khenidak · Pull Request #46360 · kubernetes/kubernetes · GitHub

*1:それ以前はunmanaged diskしかサポートしていないので、kubernetesをインストールする仮想マシンをunmanagedにしないと、Azure DiskをVolumeとして使えないのでした

続きを読む

ふくてん Fukuoka .NET Conf で ASP .NET Coreのセッションをしました

国内では初めて東京近郊以外の地域*1でセッションしました。資料はこちらです。

www.slideshare.net

セッションで紹介した(しようとした)サンプルコードのGitHubリンクはこちらです。

まず、最初のリモートデバッグのところですが、後でお見せしたデモ動画の中でリモート接続していたアプリはこのリポジトリです。といっても、これはdotnet new mvcで作ってソリューションファイルを追加しただけのアプリです。この素のアプリでLinux containerの上でリモートデバッグもできます。

github.com

次の設定ファイルの注入はここにサンプルアプリがあります。OpenShift上で動かしてOpenShift(kubernetes)のconfigmapと組み合わせるデモなのですが、/etc/data/appsettings.jsonに設定ファイルを置けばどこでも動きます。

github.com

ファイルパスがunix前提なので変更したい場合はここを変更します。

dotnetcore-demo-app/Startup.cs at master · tanaka-takayoshi/dotnetcore-demo-app · GitHub

appsettings.jsonはこの形式を前提にしています。

{
  "Option1": "Ignite!!",
  "Option2": "2017",
  "subsection": {
    "SubOption1": "Container is Linux"
  }
}

HTTPセッションをRedisに格納するサンプルはこちらです。以前やったデモの一部なのでサブディレクトリに格納されています。

github.com

Redisですが、今回はAzure Redis Cacheをつかっています。それ以外に普通のどこかにRedisサーバーを動かしてもよいです。Redisの接続情報は環境変数REDIS_CONNECTION_STRINGに設定するとそれを使います。ConnectionStringはStackExchange.Redisの形式ですが、Azure Redis Cacheの場合はAzure Portalからコピーできる形式です。

f:id:tanaka733:20171021153315p:plain

f:id:tanaka733:20171021153327p:plain

具体的にはこんな形式です。

<name>.redis.cache.windows.net:<port>,password=<password>,ssl=True,abortConnect=False

最後に紹介した、ASP.NET CoreのBlog Templateですが、本家のサイトはこちらです。

github.com

このプロジェクトはプロジェクトテンプレートをインストールして、テンプレートとして実際に動かすプロジェクトを生成する仕組みなのですが、Linuxで動かせるように修正した状態のプロジェクトがこちらになります。

github.com

実際に動かして使いたい場合は、SQLiteの保存先(上では/etc/data/以下)と、ブログ投稿データの保存先(./BlogFiles)を永続化しておくのがよいでしょう。

あと肝心のOpenShift宣伝タイムでいい忘れていたのですが、OpenShiftに興味あるけどいきなり弊社営業に問い合わせるのはハードルが高すぎるという場合は昨日書いた、Windows/Mac/Linuxのシングルホストで動かせるContainer Development Kitを使ってみてください。

tech.tanaka733.net

質問などあればぜひTwitterなどでお寄せください。

*1:筑波を含む