Red Hat Solutions on Azure
の最近の動向
Interact2017 6/24
@tanaka_733
自己紹介
レッドハット株式会社勤務
◦ OpenShift
◦ .NET Core on Red Hat Enterprise Linux (RHEL)
◦ Red Hat Solutions on Azure (RHEL, OpenShift etc)
◦ など
◦ 公開された情報に基づいています
個人
◦ Microsoft MVP for VSDT
◦ C#, .NET Coreを中心に活動
◦ Build InsiderでC#関連の記事を執筆していたりします
◦ 最近では.NET Core on Linuxの連載をしています
VSDT: Visual Studio & Development Technologies
今日のGoal
◦ よくあるお問合せ
◦ OpenShift on Azure Reference Architectureを紐解く
◦ de:codeではセッションなかったので(((
◦ ITPro向けに.NET Core on RHELをお勧めしてみる
◦ SQL Server 2017 on RHEL
今日話さないこと
◦ CloudForms with Azure
◦ Ansible Tower/Ansible with Azure
◦ Gluster Storage in Azure
◦ Ceph Storage in Azure
◦ JBoss on Azure
◦ AAD/AD によるRHELの認証
(本題の前に)比較的多いお問合せ
Microsoftとの提携とは?
◦ 統合サポートとは?
Marketplace VM とBYOL
◦ サブスクリプション形態の違い
◦ 利用できる製品の違い
WALinuxAgent
◦ どうやってインストールすればよいか?
◦ ログとかは?
統合サポート
https://azure.microsoft.com/en-us/campaigns/redhat/?v=17.23h
https://www.redhat.com/en/microsoft
統合サポートについて(PDF資料)
https://openness.blob.core.windows.net/redhat-support/Redhat_flowchart.pdf
問題がどちらにあるか区別することなく、どちらにもサポートを依頼できる
◦ 適宜、両社のサポートチームが協力して問題を解決します
Marketplace VM と BYOL
Marketplace
◦ 時間課金制、Red Hatサブスクリプション相当分はMSDNなどの無料枠では利用不可
◦ subscription-manager経由の登録は不要。既定で使える一部の製品のみ利用できる。
◦ リポジトリはMS管理のRHUIを参照。リポジトリの追加は不可
◦ イメージ化してVMを再作成することもできる。その場合も課金形態は変わらず
BYOL
◦ 通常のsubscriptionをAzureに持ち込めるように設定
◦ 自前のRHELイメージ(VHD形式)をアップロードして利用
◦ subscription-manager経由でsubscriptionを管理、リポジトリも追加・削除
WALinuxAgent
インストール方法
◦ Red Hatのリポジトリからのインストールのみサポート
◦ Red Hatによるテスト後にリリースされるため、
最新バージョンが必要な場合は適宜リクエストを
役割
◦ Azureインフラ層との通信、一時ディスクマウント、SSH設定のリセットなど
ログ、設定ファイル
◦ トラブル対応時に必要です
◦ /var/log/waagent.log や /etc/waagent.conf
◦ RHEL 7.4 (sosreport 3.4)からはsosレポートで取得できる予定
資料引用元
Microsoft Ignite 2016 BRK3236
Dive into RedHat's OpenShift on Microsoft Azure
Red Hat Summit 2017
Red Hat OpenShift on Microsoft Azure demo
Microsoft Azure OpenDev
Red Hat and Microsoft: Your technology, your platform, your
way
OpenShiftとは?
“enterprise kubernetes+”
◦ エンプラ向けにkubernetesをみんなで便利に使おう
◦ kubernetesを内包している
kubernetes?
◦ dockerコンテナのオーケストレーションエンジン
◦ CICDとかルーティングとかプロジェクトといった機能がない
dockerコンテナ?
◦ インフラ+ミドルウェアをデプロイする単位でまとめて管理
◦ コード化+バージョニングetc…
Microsoft
Azure
Dev: single
VM
Dev:
container
…
Community Supported
Commercially Supported
Your choice of infra
OpenShift Online
OpenShift Dedicated
http://docs.openshift.com
containerホストから、
管理ツールまで一体としてサポート
User Experience
Containerized Service
Orchestration
Container
Container Host
xpaas openshift market
OpenShift学習ツール
https://learn.openshift.com/
http://kubernetesbyexample.com/
OpenShift Test Drive
Azure上に一時的に使えるOpenShiftをすばやく作成できる
https://testdrive.azure.com/#/test-drive/redhat.openshift-test-drive
10,000 foot overview
10,000 foot overview
10,000 foot overview
10,000 foot overview
10,000 foot overview
10,000 foot overview
10,000 foot overview
10,000 foot overview
10,000 foot overview
Reference Architecture
Deploying Red Hat OpenShift Container Platform 3 on
Microsoft Azure
◦ https://access.redhat.com/documentation/en-
us/reference_architectures/2017/html-
single/deploying_red_hat_openshift_container_platform_3_on_
microsoft_azure/
OpenShift Ansible - Azure ARM Template
◦ https://github.com/openshift/openshift-ansible-
contrib/tree/master/reference-architecture/azure-ansible
インストール概要
Azureのリソース群はARM Templateで
OpenShiftのインストールはansibleで
ansible実行までの下準備と実行そのものは、
ARM Templateのscript機能で実行される
Known Issue
MarketplaceのVMのみ対応
• subscriptionが二重課金になる
• BYOLなVMへの対応を(個人的に)書いている途中
ARM Template自体はサポート対象でない
• 問題があればGitHubのissueなどで自己解決が必要
アプリケーションドメインにnip.ioを使用
• インストール後に適宜ドメイン設定
構成図
構成図
構成図
構成図
構成図
VMの構成
オペレーション(bastion)
master 3台
infra node 3台 (router/docker registry用のnode)
nodes 最低3台 (Pod配置用のnode)
CPU Core数緩和リクエストが必要
この台数はARM Templateの作りの制約
OpenShift自体はお試しならば全部入り1台で構成可能
Azureの機能利用例
Availability Set
◦ VMのグループごとに構成
Azure Load Balancer
◦ masterのAPI/portalのエンドポイント
◦ backendはmaster群。外部LB利用はALBに限らずサポート機能
◦ アプリケーションへのルーティングエンドポイント
◦ backendはinfra node群。
infra nodeのルーターがさらに該当するPodにルーティングする
Azure VHD
◦ 永続化ストレージとして使用
◦ Dynamic provisioningも利用可能 (3.5以降)
追加で利用可能なAzure機能
Azure Active Directory Open ID Connect
◦ master API/portalへの認証にAADをOpen ID Connectで利用可能
◦ AAD DSやオンプレのADを接続して、
LDAP連携でAADを使うことも可能
Azure Blob Storage for docker registry
◦ docker registryのストレージにBlobを利用可能
◦ docker registryはobject storageであるBlobと相性◎
Azure File Storage
◦ 永続化ストレージとして利用可能
◦ 注意: Linux kernel側のSMB 3 with cifsがexperimental feature扱い
その他注意事項
Azure VHDを永続化ストレージとして使う場合…
◦ Managed Disk利用不可
◦ 元となるkubernetesのAzure VHD pluginがManaged Disk未対応なので
◦ VMの名前とホスト名は一致させること
◦ これもkubernetes plugin側の仕様
◦ Azureデフォルトの内部DNSを使うことを推奨
◦ VNET paringなどで使えない場合は、
VMがお互いにVMの名前で名前解決できるように設定すること
Windows Containerとの関連
OpenShiftとしてのroadmapは未定
◦ 製品版でも、originでも未定
(内包する)kubernetesがWindows Container管理機能も開発中
◦ ので、upstreamのソースをいじれば
//Buildのセッションのように動かすことも可能
Why .NET Core on RHEL?
Red Hat Software Collections (SCL)として提供
◦ 基本的にはRHELのサブスクリプションで利用可能 = 追加料金なし
◦ 長期サポートのRHELの中でも最新の.NET Coreをサポート
◦ .NET Coreに限らずSCLの目的の一つ
upstreamに加えてのバグ管理
◦ Red Hat版 (rh-dotnetcore)はRed HatのBugzillaからバグ起票可能
◦ お客様からのリクエストに応じて取り込む可能性あり
RHELで動くのがrh-dotnetcore?
とは限らない
◦ Red Hat提供でRed Hatからサポートが受けられるのがrh-dotnetcore
◦ Microsoftがupstreamのdaily build版をRHEL向けにも提供
https://github.com/dotnet/core-setup/blob/master/README.md
◦ 自分でソースをビルドして動かすこともできる
◦ .NET Core 1.xはハードル高いが、2.0で解消予定 (.NET Core全般の話)
独自の修正例
.NET Core 1.0 (1.1では起きない) on Linux で
NFS共有されたディレクトに File.WriteAllText メソッドで
書きこもうとすると権限あるのに、権限エラーになる!
https://github.com/dotnet/corefx/issues/16256
https://bugzilla.redhat.com/show_bug.cgi?id=1424492
upstreamではbackport未定
Red Hat版ではbackport済み
.NET Core 1.xでの注意事項
https://access.redhat.com/documentation/en-
us/net_core/1.1/html/release_notes/known_issues
csproj形式の.NET Core SDK 正式版は未サポート
 同一メジャーバージョンでの破壊的変更になってしまう
.NET Core 2.0でSDKも正式版になり、対応予定
◦ Microsoft配布の最新.NET Core SDKで作ったプロジェクトはビルドできない
◦ C# 7.0の機能は使えない
RHELで開発するか、Visual Studio 2015やPreviewバージョンの.NET Core SDK +
Visual Studio Codeなどで開発をお願いします
OpenShiftとあわせて利用
OpenShiftに.NET Coreのサポートがある
s2i buildイメージ
◦ Gitリポジトリを指定すると、docker コンテナの生成を
OpenShiftのビルド機能で行ってくれるdockerイメージ
◦ OpenShift外でも利用可能
テンプレートプロジェクト
◦ 数クリックでOpenShift上に.NET Coreアプリを配置
ASP.NET Coreの動作もサポート
◦ Getting Started .NET Core on OpenShiftの資料もどうぞ (英語)
SQL Server on RHEL update
Preview版として利用可能
◦ このドキュメントに従って利用開始
https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-setup-
red-hat
◦ subscriptionや配布形態については未発表
EAPはじまってます
◦ https://sqlservervnexteap.azurewebsites.net/
RHELに限定せず、on Linuxについてはde:codeのセッション
◦ 窓は開かれた! SQL Server on Linux で拡がる可能性
docker イメージ
正式に公開されているdockerイメージはUbuntu版
◦ https://hub.docker.com/r/microsoft/mssql-server-linux/
◦ https://github.com/Microsoft/mssql-docker
DockerfileとしてはRHEL版も公開
◦ https://github.com/Microsoft/mssql-
docker/blob/master/linux/preview/RHEL/Dockerfile
SQL Server on RHEL on OpenShift
dockerイメージにsqlcmdもあると便利なので作りました
◦ https://github.com/tanaka-takayoshi/mssql-server-rhel/tree/dev
OpenShiftはroot権限必要なdockerイメージがデフォルトで動かないので
ひと手間必要です
$ export SQLSRV_NAME=SQLSERVER_RHEL_DEV
$ oadm policy add-scc-to-user anyuid -z default
$ oc new-app https://github.com/tanaka-takayoshi/mssql-server-rhel.git#dev
--name $SQLSRV_NAME
$ oc env dc $SQLSRV_NAME ACCEPT_EULA=Y SA_PASSWORD=<PassWord>
GUI tool
Linux, Mac向けのSSMS/SSDT的な管理系のGUIツールは現状なし
Windows上のSSMSからSQL Server on RHELに接続可能
クエリの編集、結果確認のGUIツールとしてはVS Code拡張
◦ 日本語化はTransifexで誰でも参加できます
◦ https://msdn.microsoft.com/ja-jp/communitydocs/community/translate-
with-transifex-guide
◦ https://www.transifex.com/microsoft-oss/vscode-mssql/dashboard/
RHEL Cluster for Availability Group
SQL Server自身のHAに加え、RHEL側でもHA構成
◦ HA add-onが追加で必要(現状では)
HA add-onは現状public cloud上では非サポート
◦ Azure向けのfencing deviceがない
◦ 応答がなくなったnodeが悪影響を及ぼす前に強制シャットダウンさせる機能
◦ HA自体は動くはず、だがAzure上だとVIPをうまく設定する術がなさそう(実験中)
RHEL HA
(Pacemaker +
Corosync)
SQL Server
RHEL HA
(Pacemaker +
Corosync)
SQL Server
VIP
Availability
Group
pcs
resource
pcs
resource
まとめ
Red HatとMicrosoft製品では統合サポートが利用可能
OpenShiftそのものはクラウド・オンプレ問わず幅広くサポート対象
Azure上で動かすならAzureの機能を利用できる
.NET Core on RHELはupstream版とは別にRed Hatが提供およびサポート
◦ OpenShift上ならOSからコンテナ、言語ランタイム、基本ライブラリまでサポート
SQL Server on RHELは現状previewだけど、すぐに検証可能です
今日の資料のここを詳しく話してほしいとか、
実験中と書いてある部分をもっと調査してほしいなどあれば、
Twitterなどでコメントをお願いします

20170624 interact2017 open shift on azure