IBM Cloud Kubernetes関連のブログ記事 2018/3 - 2019/3
IBM CloudのBlog記事の中から、この一年間のKubernetesに関する記事を分野ごとに整理しました。これらの記事の中には、正式提供開始(GA; General Available)や他企業と連携してリリースされた機能、Howtoなど様々な内容が含まれています。
この一年、IBM の Kubernetesに対する投資は莫大で、それに伴い様々な情報が発信されており、把握して理解するだけでも大変です。そこで、私自身の勉強と頭の整理も兼ねて、もとの英語の記事名は、内容が適切に判るように意訳しました。
注意事項
これは筆者が独自に作成した勉強用メモであって、私が勤める会社の見解を代表するものではありません。もちろん、誤りや誤解を含むかもしれませんので、発見したらコメントをお願いします。
「Kubernetesを動かすなら、IBMじゃなくて本家のクラウドにするよ」と、冷たく言われることも少なくありません。しかし、IBM は Kubernetes の普及に取組み、たくさんの企業とアライアンスを進め、優良なサービスを準備して、ユーザーが苦労することなく快適に運用できるKubernetes環境を整備して、ユーザー企業様の利用を待っています。
IKS k8sサービス展開
約10ヶ月前に、それまでの ICCS (IBM Cloud Container Service)から、IKS (IBM Cloud Kubernetes Service)に、サービス名が変更になりました。ちょうど、この時期に他社もサービス名にKubernetesを加えた形で変更することが相次いでいました。このことで、コンテナオーケストレーションのメインストリームに、Kubernetesが決まったことを実感できる時期でもありました。
World Wide展開
昨年9月は、東京地域のマルチゾーン化の変更工事の影響で、夜間や早朝にヒヤヒヤすることもありましたが、なんとか無事に東京地域の3つのデータセンターがゾーンとして連携するようになりました。さらに、英国がマルチゾーン化しています。また、これまで対応していなかった地域にも、単一データセンター(シングルゾーン)によるIKSが提供を開始しました。2019/3現在で、35のデータセンターでIKSを利用することができます。
- 日本 東京 リージョン IKS MZR対応開始 2018年9月
- 英国 ロンドン リージョン IKS MZR対応開始 2018年10月
- 伊国 ミラノ k8sサービスの開始 2018年10月
- 印国 チェンナイ k8sサービスの開始 2018年12月
- メキシコ k8sサービス開始 2019年2月
k8s 新バージョン対応状況
CNCF Kubernetesプロジェクトのアップストリームk8sの新バージョンが、リリースされてから短い期間で、IKSで新バージョンを使うことができるようになっています。
- k8s v1.10の提供開始 2018年5月 (Upstream k8sのGAは2018年3月)
- k8s v1.11の提供開始 2018年8月 (Upstream k8sのGAは2018年6月)
- k8s v1.12.2の提供開始 2018年11月 (Upstream k8sのGAは2018年9月)
- k8s v1.13.2の提供開始 2019年2月 (Upstream k8sのGAは2018年12月)
k8sの新機能対応
最近の嬉しいニュースは、2019年3月にクラスタオートスケーラー(CA: Cluster Autoscaler)が正式提供になったことです。このCA機能はポッドのCPU占有時間とメモリの要求量に応じて、ノードを追加するものです。直接CPU負荷と連動するわけではないので注意が必要です。しかし、CNCF Kubernetesプロジェクトの成果を利用したもので、ベンダー独自の機能に依存することなく、オートスケールを利用できるようになりました。
また、CPU使用率と連動したオートスケールの要件に対しては、HPA(Horizontal Pod AutoScaler)とCAを組み合わせることで、CPU使用率感応型のノードレベルのオートスケールを実現できます。
それから、嬉しいことに、コンテナレジストリが、日本リージョンでも利用できるようになりました。ドメイン名は jp.icr.ioです。
Kubernetesのバージョンアップに伴い、CoreDNSやContainerdにも対応しました。
- コンテナランタイムが Docker から containerd へ置き換わる 2019年1月
- 新しいコンテナレジストリのドメイン名 2019年2月
- デフォルトのDNSがCoreDNS 2019年3月
- クラスタオートスケーラーの提供開始 2019年3月
マルチゾーン & CloudFlare(CIS)
IBM CloudにはAWSのような複数のAZが無いと言われてきました。これに追いつくべく、2018年9月に東京リージョンにおいて、昨年秋に完全に独立したデータセンター設備上にゾーンと呼ばれるAZ相当の実行環境が出来上がりました。これによって、複数のデータセンター上のゾーンにクラウドの仮想サーバーやベアメタルを配置して、連携できるようになりました。さらに、Kubernetesもマルチゾーン化の対応が進み、etcdの冗長化、ゾーン横断のロードバランシングなど機能の充実が進められてきました。
マルチゾーン
IKSでは、複数ゾーンにノードを配置することで、「etcd のゾーン間冗長性有効化」と「ゾーン横断のIngress(ALB)」が有効化され、簡単にマルチゾーンの恩恵を得ることができます。しかし、独自ドメインでHTTPSを利用するとなると、やはりマルチゾーンやCISのグローバルロードバランサーの知識が必要になります。下記のリンクは、選択可能な方法と違いについて、図をもちいて解説してくれています。
- マルチゾーンのHAマスターノードに移行する方法 2018年10月
- パターン#1 シングルゾーンでNLBとALBの活用 2018年10月
- パターン#2 マルチゾーンクラスタ ALB/Ingressの活用 2018年10月
- パターン#3 マルチゾーンクラスタ ゾーン内負荷分散 2018年10月
- パターン#4 マルチゾーンクラスタ DSRを利用可能にする方法 2018年10月
- ALB(Ingress)のバージョンアップのコマンド解説 2018年11月
- MZR構成のロードバランシング追加料金 2018年8月
Cloud Internet Service (CloudFlare)
CloudFlare社との提携により Cloud Internet Servive (CIS)が提供されました。これによって、マルチゾーン構成を、より有効に活用することができ、高い可用性や高スループットへの対応と、セキュリティ対策を実施できるようになります。
- CloudFlare社と提携、Cloud Internet Servce として提供準備 2018年5月
- CIS と MZR上のk8sクラスタの組み合わせ 2018年6月
- CIS と LB2.0 の組み合わせパターン 2018年10月
- Cloudflare社との提携とCIS提供開始 2018年10月
- CIS二つの機能追加、セキュリティ保護とフィルタの機能 2019年2月
HOWTOなど
Kubernetesのコマンドラインを直接操作するのは、面倒で運用では敬遠したいという方も少なくないと思います。IKSもRancherと連動させて操作することができます。Rancher v2 と IKSを連動させて、アプリのデプロイ、ICOS(IBM Cloud Object Storage)にアクセスするHowToを公開しています。
IKSにはデフォルトで、ポッドネットワークを構築するために、Calicoが利用されています。その上、calicoctlコマンドで直接操作して、独自のアクセスポリシーを実装することができるので、そのHowToを公開しています。
- RancherでIKSにアプリケーションをデプロイする方法 2018年7月
- RancherでIKS上コンテナからICOSに接続する方法 2018年8月
- calicoctl コマンド入門 2018年11月
セキュリティ関連
セキュリティ新機能
IKSのIngressコントローラーであるALB (Application Load Balancer)から IBM Cloud のサービスの一つである App ID と連動できます。このことにより、FacebookやTwitterを利用して、ロードバランサーのレベルで認証することができるようになります。
ポッドに対するセキュリティポリシーを設定できるようになり、特定のネームスペースに対する操作権限を制限する、例えば、特権モードが使えるポッドを起動させないと言ったポリシーを適用できるようになりました。
IKSには、KubernetesのSecretに保存した機密情報を、持込鍵で暗号化することができる鍵管理システムが実装されました。
「IBM Cloud Security Advisor」は、セキュリティー状況の表示や脆弱性の監視と検知を行うサービスです。このサービスに「NeuVector Kubernetes Security Platform」が組み込まれ、アップグレードされました。 NeuVector は、コンテナファイアウォールやトラフィックの可視化を行う NeuVector社の製品です。
- ソーシャルサインインをサポートするApp ID と ALB(Ingress Controller)が連携可能に 2018年5月
- ポッドセキュリティポリシーによって特権コンテナの作成を禁止する方法 2018年6月
- 持込鍵も利用可能な鍵管理システム(KMS)の利用法 2018年10月
- IBM Cloud Security Advisor が NeuVector Kubernetes Security Platformと統合 2018年12月
Intel SGX のメモリ保護機能
Intel SGXは、メモリー内に存在する特定アプリのコードとデータを隔離する、ハードウェア支援型のメモリー暗号化機能です。SGX は、ユーザーレベルのコードをエンクレーブと呼ばれるメモリーのプライベート領域に割り当てることで、高い特権レベルで処理が実行されるのを防ぎます。
FortanixのRuntime Encryption プラットフォームは、SGXの上で動作して、実行中のコンテナのコードやメモリを保護します。データシールドは、Fortanix社とIBMが共同開発したサービスで、ベータ版として、IKSで利用することができます。
IKSのベアメタルのワーカーノードの一つに、SGXを有効化したタイプがあります。これを利用することで、メモリレベルで保護されたコンテナを利用することができます。
- Fortanix社と提携、Data ShieldとIntel SGXによるメモリ領域の保護 2018年11月
- ベアメタルのSGX保護機能と対応コンテナで高度にデータを保護する方法 2018年11月
- 実行中コンテナのメモリとコードを保護するData Shield ベータ版発表 2019年2月
- データシールドの準備 2019年2月
IAMとIKSの連動
IBM Cloud Identity and Access Management (IAM) は、ユーザーの認証と一貫したリソースへのアクセスを制御を実行する機能で、対応が進められています。対応が完了したものは、IBM Cloudのカタログのアイコン表示に、IAM-enabledという表示を確認することができます。IBM Cloudのアカウント下にIAMで登録されたユーザーとIKSのアクセス権を連動させることで、IAMに登録されたアクセス権がユーザーが使用する名前空間のサービスアカウントに登録されるようになります。また、コンテナレジストリのアクセス権もIAMで管理できるようになりました。
- IAM,リソースグループによりk8sアクセス権をコントロール 2018年10月
- IAMによるコンテナレジストリのアクセスコントロール 2018年10月
- IAM管理とIKSのネームスペースとロールの連携 2019年2月
脆弱性
2018年末に、Kubernetesの脆弱性レポートが公開されました。マスターノードに関するものですから、ワーカーノードのバージョンを変える必要はありません。マネージドのマスターノードのバージョンを更新して対策します。
監視とログ分析
複数の会社と提携することで、使いやすく便利な運用ツールを利用できるようになった事が、大きな進歩だと思います。
LogDNA
LogDNA社と提携することで、IBM Log Analysisの機能が強化されました。
- LogDNA提携による統合ログ分析の提供 2018年10月
- k8sクラスタのログ分析のコアはLogDNAを採用 2018年10月
- IBM Log Analysis と LogDNAの提供開始 2018年11月
Sysdig
Sysdig社と提携することで、IBM Cloud Monitoringの機能が強化されました。
New Relic, Aporeto, k8s-Dashboard, Kiali, Outlyer, Splunk
コンテナを活用する先進的企業と提携を進めることで、Kubernetesに関する課題が簡単に解決できるように推進しています。
- New Relicによるk8sクラスタの監視 2018年4月
- Aporetoによるセキュリティポリシーの実装、脅威の監視の実施方法 2018年4月
- k8sダッシュボードが利用可能に 2018年5月
- サービスメッシュトポロジを視覚化 Kialiを有効化する方法 2018年8月
- マスターのログをオブジェクトストレージへ保存する方法 2018年10月
- マイクロサービスの監視にOutlyerと提携 2018年12月
- Splunkによるk8sクラスタの監視と稼働分析 2019年2月
セキュリティ監視
NeuVector社と提携して、IBM Cloud Security Advisor を強化しました。
サービスメッシュ
Kialiは、サービスメッシュの構造を視覚化して、管理を助けてくれます。
CI/CD
ICP (IBM Cloud Private)
ICP (IBM Cloud Private)は、J2EE実行環境のベストセラーであるWebSphereを手掛けた部門が開発開発を進めた Kubernetesをコアとするソフトウェア製品です。このため、Java開発に関する様々な知見とノウハウが注ぎ込まれ、新生代のJ2EEの実行環境かつ、DevOps環境です。
その上で動作する IBM Cloud Developer Toolsは、ICPで動作するJavaのコンテナを簡単に生成できる優れたツールです。
- IBM Cloud Developer Tools version 1.3.0 が ICP 2.1.0.2 をサポート 2018年5月
- ICP v2.1にIBM Cloud Developer Tools CLI のセットアップ 2018年9月
- ICP v3.1にIBM Cloud Developer Tools CLI のセットアップ 2018年12月
IKS (IBM Cloud Kubernetes Service)
Codefreshは、ビルドとデプロイを自動化するためのCI/CDツールで、Jenkinsと競合関係のツールです。これらOSSのCI/CDツールをIKSで利用することができます。
データベース & ストレージ
マルチゾーンを活かした高可用性のマネージドDBサービスと、マルチゾーン環境上Portworxを利用したSDS独自構築のデータベース利用の二つの方法がとれます。
MZR対応マネージド データベースサービス
これらの新しいマネージドデータベースのサービスは、マルチゾーンのKuberetesで構築されたサービスであり、東京リージョンも利用できます。これらのDBサービスの永続データは、ゾーン間でレプリケーションされています。そのため、ゾーンの一つが停止しても業務を継続することができます。下記以外にも、Elasticsearch, RabbitMQ, etcdが利用できます。
- MZR対応のPostgreSQLとRedis マネージドサービス提供開始 2018年10月
- PostgreSQLマネージドサービスをk8sクラスタから利用する方法 2019年1月
- MZR対応のMongoDBマネージドサービス提供開始 2019年2月
Portworx を利用した高可用性構成
Portworxは、SDS(Soft Defined Sotrage)のソフトウェアで、ベアメタルのSSDでSDSを構築して、データベースをハイパフォーマンスかつ高可用性構成で運用したいなどのニーズに答えることができます。
- Portworxによるk8sストレージとデータ管理ソリューション 2018年12月
- ベアメタルやVMのk8sノードとPortworx で Db2のHA構成を組む方法 2019年1月
- ベアメタルのk8sノードとPortworx で PostgreSQLのHA構成を組む方法 2019年2月
モダナイゼーション
パブリッククラウド
J2EEの有名なサンプルアプリケーションをコンテナ化して実行するチュートリアルの記事があります。単にコンテナ化するだけではなく、Watsonと連携させることで新しい機能を追加しています。それから、VMwareベースのモダナイゼーションをパブリッククラウド上で試すことができるオファリングが案内されています。
ハイブリッドクラウドのモダナイゼーション
ICPは、レガシーなJavaアプリケーションを、ライセンス費用と工数削減のツール側面から、モダナイゼーションやハイブリッドを支援します。
- ICP 上の WebSphere Liberty Cloud Pak の特長と評価方法 2018年10月
- J2EEアプリをコンテナ化してk8sに移行する 2018年12月
- レガシーアプリのコンテナ化ツール Transformation Advisor の機能と情報源 2019年2月
- IBM Cloud Application Platform オファリング、レガシーアプリのモダナイゼーションを支援 2019年3月
Istio
単にIstioの実行環境を提供するだけでなく、サービスメッシュを視覚化するKialiを利用して、複雑になりがちなサービスメッシュの運用の負担を軽減します。さらに、Grafana,LogDNAやSysdigなどを組み合わせて運用できます。
- Istio 1.0 の5つの特長や改善点 2018年8月
- サービスメッシュトポロジを視覚化 Kialiを有効化する方法 2018年8月
- IngressからIstioのIngress GWにサービスメッシュを移行する手順 2018年9月
- gRPCモードのIstio Mixerアダプターをk8sクラスタにデプロイする方法 2018年9月
- CFEEとIKSをIstioサービスメッシュで連携する 2018年11月
- Istio 1.1のマルチクラスタ機能サポートの機能 2019年2月
- マネージドIstioのアドオンGrafana,Kiali,JaegerとLogDNA,Sysdig 2019年2月
Knative
Kubernetesのサーバーレス環境であるKnativeは、マネージドサービス(ベータ版)として、簡単に利用を開始できます。その際には、前述のIstioと同様な運用監視やログ分析のツールを使用することができます。
- IBMとGoogleのトップエンジニア対談 2018年12月
- Istio と Knative のデプロイ方法 2019年1月
- マネージドKnativeの使用方法 2019年2月
- Kaniko を使用して Knative のアプリのビルドからデプロイをk8s上で実行する 2019年2月
- Istio と Knative の概要説明 2019年2月
マネージドサービス
マネージドの良いところは、高可用性構成やバックアップなどを、クラウド事業者にお任せして、運用を開始できる点にあります。東京DCでデータベースのサービスが開始され、遅延による性能問題も無くなりますから、適用できる範囲が広がると思います。さらに、KnativeやIstioもマネージド(ベータ版)で提供開始。ベータ版の間は無料です。
- MZR対応のPostgreSQLとRedis マネージドサービス提供開始 2018年10月
- PostgreSQLマネージドサービスをk8sクラスタから利用する方法 2019年1月
- マネージドDBサービス、マネージドIstio,Knative 2019年2月
- MZR対応のMongoDBマネージドサービス提供開始 2019年2月
IBM Cloud Private (オンプレミス&ハイブリッドクラウド ソフトウェア製品)
ICPは2018年秋にv3.1がリリースされ、さらに、年末にマルチクラウドやハイブリッドでKubernetesクラスタの構築を支援する IBM Mutlicloud Managerが発表されました。これからのIBMのソフトウェア製品やソリューションは、Kubernetesを実行環境とするようになっていきます。つまり、ICPはIBMのミドルウェアなどソフトウェア製品の標準プラットフォームになることを意味しています。
- IBM Cloud Privateのバージョン2.1.0.3のリリース 2018年5月
- ICP v3.1の5大改善点 2018年10月
- ICP用 Aspera CLI の概要 2018年10月
- ICPをAWS上で構築する方法 2018年11月
- ICP用の高可用性のAspera転送サーバーをハイブリッド環境で利用 2018年12月
- IBM Multicloud Manager 3.1.1の発表 2018年12月
- インストール不要ICP体験版にアプリをデプロイする 2019年1月
- IBM Multicloud Manager 3.1.2 と Argo CDでGitOps 2019年2月
- IBM Multicloud Manager 3.1.2 の発表 2019年2月
その他
Kubernetesが主流となったこと、コンテナ利用に関する統計などの記事もありました。