OpenShift 3.11のRelease Note抄訳

2018/10/10(日本時間では10/11未明)にOpenShift 3.11がリリースされました。
4.0に向けて着々と新機能が投入されていますが、特に注目すべきはPrometheusのGAとOperator Frameworkです。Operator FrameworkはOpenShift内部だけでなく、Red HatのプロダクトやISV製品の基盤となる仕組みなので要注目です。

このリリースについて

このリリースはKubernetes1.11を含むOKD3.11をベースにしている。
RHEL7.4および7.5上で、CRI-O1.11およびDocker1.13を含むExtrasチャネルの最新パッケージをサポートする。
以前のバージョンからのアップグレードはドキュメント(https://docs.openshift.com/container-platform/3.11/upgrading/index.html#install-config-upgrading-index)を参照。

注) 3.10へのダウングレード

OCP3.11の初期リリースでは、3.10へのダウングレードに問題があるため行わないこと。将来のリリースで修正される予定。
https://bugzilla.redhat.com/show_bug.cgi?id=1638004

4.0で予定されている主要な変更

OCP3.11は3.xの最後のリリースで、4.0では内部アーキテクチャやインストールプロセスが大きく変更される予定であり、多くのフィーチャーが廃止される。

4.0で廃止されるフィーチャー

フィーチャー 理由
Hawkular Prometheusにリプレース
Cassandra Prometheusにリプレース
Heapster Metrics-ServerかPrometheus metrics adapterにリプレース
Atomic Host Red Hat CoreOSにリプレース
System containers Red Hat CoreOSにリプレース
projectatomic/docker-1.13 additional search registries CRI-OがRHCOSおよびRHELに対するデフォルトのコンテナランタイムに
oc adm diagnostics Operatorベースのdiagnosticsに変更
oc adm registry registry operatorにリプレース
Custom Docker Build Strategy on Builder Pods カスタムビルドの利用を継続する場合はDockerコマンドをPodmanとBuildahに置き換える必要あり。カスタムビルドストラテジは存続するが、OCP4.0では機能が大幅に変更される。
Cockpit Quayにリプレース
Standalone Registry Installations エンタープライズコンテナレジストリとしてQuayを提供
DNSmasq CoreDNSがデフォルトに
External etcd nodes 4.0ではetcdは常にクラスタ上にデプロイされる
CFME(CloudForms) OpenShift Provider and Podified CFME Prometheusにリプレース
Volume Provisioning via installer Dynamic Volumeでリプレース、ないしはNFSが必要ならNFS provisionerを利用
Blue-Greenクラスタアップグレード 4.0ではアップグレードが容易になることが目玉の一つ

OCP4.0では大幅な変更が予定されているため、ドキュメントも大幅に改廃される予定。

主なアップデート(カテゴリ別)

[TP]はTechnology Preview、すなわち、プロダクション環境ではサポートされないフィーチャーです。
開発テスト環境などの非プロダクション環境では問題なくご利用いただけます。

Operator関連

[TP]Operator Lifecycle Manager(OLM)

OLMクラスタ管理者がOperatorのインストールやアップグレード、アクセス管理などを行うのをサポートする

  • おすすめOperatorのカタログと、その他Operatorをクラスタにロードする機能
  • Operatorを新しいバージョンにローリングアップデート
  • role-based access control(RBAC)により特定のチームに特定のOperatorの利用を許可

詳細はドキュメントを参照
https://docs.openshift.com/container-platform/3.11/install_config/installing-operator-framework.html#installing-operator-framework

Operator SDK

Operator SDKはコード生成とCLIによってOperatorの実装、テスト、パブリッシュを容易にするための開発ツール

  • アプリケーションのビジネスロジックを迅速にOperatorに組み込むためのツールを提供
  • Kubernetes APIとコミュニケーションするための定型的なコードを自動生成
  • ローカル/リモートクラスタでエンドツーエンドのテスト実行を支援
  • Couchbase, MongoDB, Redisやその他のOperatorで利用されている

詳細はOKDのドキュメントを参照
https://docs.okd.io/latest/operators/osdk-getting-started.html

Service Broker関連

OpenShift Automation BrokerとAnsible Galaxyの統合

Automation Broker(Ansible Broker)が利用するAnsible Playbook Bundle(APB)をAnsible Galaxyから検索して実行できるようになった。
詳細はドキュメントを参照
https://docs.openshift.com/container-platform/3.11/architecture/service_catalog/ansible_service_broker.html#arch-ansible-service-broker

認証ありレジストリのサポート

Red Hat Container Catalogが registry.access.redhat.com から registry.redhat.io に移動し、コンテナイメージの取得時に認証が必要になった。
OCP3.11では認証ありレジストリのサポートが追加され、Brokerはレジストリの認証情報としてデフォルトでクラスタワイドの設定値(inventory fileのoreg_auth_userとoreg_auth_passwordで指定)を利用する。

Service CatalogがNamespace毎のBrokerに対応

Brokerのインストール時にkindとしてServiceBroker(Namespace毎)もしくはClusterServiceBroker(クラスタ全体)が指定可能になった。
Service Catalogは対応するBrokerによってNamespace指定ないしクラスタ全体のスコープで動作する。

インストールとアップグレード

アップグレード時の証明書有効期限チェック

openshift_certificate_expiry_warning_daysを指定すると、アップグレード時に自動生成された証明書の有効期限が指定日数より短い場合にwarningが発生する。
openshift_certificate_expiry_fail_on_warnを指定することで、有効期限が短い場合にアップグレードをfailさせることができる。
https://docs.openshift.com/container-platform/3.11/install/configuring_inventory_file.html#configuring-cluster-variables

Ansilbe2.6サポート

OCP3.11のインストールおよびOCP3.10からのアップグレードにはAnsible2.6.xが必要。
Ansible2.7はまだサポートされていない。

レジストリ認証クレデンシャルが必須に

コンテナイメージとメタデータの取得先が registry.redhat.io に変更されたため、認証が必須になった。
inventory fileで以下の設定が必須

  • openshift_deployment_type == ‘openshift-enterprise’
  • oreg_url == ‘registry.redhat.io’ or undefined
  • oreg_auth_user および oreg_auth_password

その他の認証ありレジストリ(プライベートレジストリ)からイメージを取得することも可能。詳細はドキュメントを参照。
https://docs.openshift.com/container-platform/3.11/dev_guide/managing_images.html#private-registries

デフォルトでインストールログが取得されるようになった

Ansibleのlog_pathが設定されているので、playbookの実行は /usr/share/ansible/openshift-ansible ディレクトリから行う必要あり。もしくはlog_pathを変更すること。

ストレージ関連

[TP]Container Storage Interface

CSIを実装したストレージバックエンドが利用可能。詳細はドキュメント参照。
https://docs.openshift.com/container-platform/3.11/install_config/persistent_storage/persistent_storage_csi.html#install-config-persistent-storage-persistent-storage-csi

[TP]Local Ephemeral Storageの保護

Nodeのローカルストレージが枯渇することを防止する。
デフォルトでは無効化されている。
https://docs.openshift.com/container-platform/3.11/install_config/configuring_ephemeral.html#install-config-configuring-ephemeral-storage

[TP]PVリサイズ

GlusterFSの場合はStorageClassのallowVolumeExpansionをtrueにすることで、PVCのサイズを拡張するだけで対応するPVのリサイズが行われる。
ブロックストレージ(GCE-PD,AWS-EBS,Azure Disk,Cinder, Ceph RDBなど)の場合はボリューム拡張が必要で、通常はPVを参照するPodがリスタートした際にKubernetesが自動的にファイルシステムの拡張を行う。
ネットワークファイルシステム(GlusterFS,Azure Fileなど)の場合はファイルシステムの拡張が不要なので、Podをリスタートしなくても拡張できる。
https://docs.openshift.com/container-platform/3.11/dev_guide/expanding_persistent_volumes.html#expanding_persistent_volumes

[TP]テナント駆動のストレージスナップショット

VolumeSnapshotリソースを利用して、PVCにアタッチされたPVのスナップショットを取得できる。
クラスタ管理者がexternal provisionerと、それに対応するStorageClassを登録しておく必要がある。
AWS-EBS, GCE-PD, hostPathに対応しているが、テストされているのはAWS-EBSとhostPathのみ。

スケーラビリティ関連

Masterに対する推奨事項

大きいクラスタ、ないしは高密度なクラスタに対しては、デフォルトQPS(query per second)の制限によってAPIサーバーが過負荷になる可能性があるため、/etc/origin/master/master-config.yaml を修正してQPSの制限を増やす。
Masterに対する推奨プラクティスはこちらを参照。
https://docs.openshift.com/container-platform/3.11/scaling_performance/host_practices.html#scaling-performance-capacity-host-practices-master

Cluster Monitoring Operatorのスケールアウト

OCPのメトリクスはcluster-monitoring-operatorが提供するバックエンド(PrometheusとGrafana)によって収集/格納され、参照可能になっている。
OCP3.11ではデフォルトでInfraNode(node-role.kubernetes.io/infra=true)にCluster Monitoring Operatorがインストールされるので、InfraNodeを複数台用意するか、inventory fileでインストール対象のNodeを指定(openshift_cluster_monitoring_operator_node_selector)して、Operatorが適切にスケールされるようにしておくこと。
https://docs.openshift.com/container-platform/3.11/scaling_performance/scaling_cluster_monitoring.html#scaling-performance-cluster-monitoring

メトリクスとロギング

Prometheus Cluster Monitoring

Prometheus Cluster Monitoringがフルサポートになり、デフォルトでクラスタにデプロイされる。

  • Prometheusが収集したcluster metricsに対するクエリーとプロット
  • プリパッケージのアラート通知により、修正アクションや問題判別が可能に
  • etcd, クラスタステータス, およびその他多くのクラスタヘルスを確認するためのプリパッケージのGrafanaダッシュボード

詳細はドキュメントを参照
https://docs.openshift.com/container-platform/3.11/install_config/prometheus_cluster_monitoring.html#prometheus-cluster-monitoring

[TP]Syslog Output Plug-in For Fluentd

Fluentd Syslog Output plug-inにより、OCPノードから外部のSyslogサーバーにシステムおよびコンテナのログを送信可能。
https://docs.openshift.com/container-platform/3.11/install_config/aggregate_logging.html#sending-logs-to-external-rsyslog

Elasticsearch5およびKibana5

ElasticsearchとKibanaのバージョンアップ。
Kibanaダッシュボードの保存と複数ユーザー間での共有に対応。

Developer Experience

Build Triggerの挙動を設定可能に

ImageChangeTriggerを一時停止(paused=true)することが可能になり、ビルド実行前にImage Streamに対する複数回の変更を許容できるようになった。

ビルドにConfigMapやSecretを受け渡す方法の追加

SCM以外にも様々な方法で受け渡せるようになった。
https://docs.openshift.com/container-platform/3.11/dev_guide/builds/build_inputs.html#dev-guide-build-inputs

Kubectl

oc client downloadからkubectlがダウンロード可能になるとのこと。
https://access.redhat.com/downloads/content/290
=>10/15時点では以前と変わらずocコマンドしかダウンロードできなかった。これから対応?

レジストリ

Red Hatレジストリへの接続設定

Red Hat Container Catalogが registry.access.redhat.com から registry.redhat.io に移動し、認証が必要になったので注意。
https://docs.openshift.com/container-platform/3.11/install_config/configuring_red_hat_registry.html#install-config-configuring-red-hat-registry

Quay

Red Hat Quayレジストリ

ホステッドサービス(quay.io)とソフトウェアの両方を提供。ジオレプリケーション、イメージスキャン、イメージロールバックなどの高度な機能を含む。
https://docs.openshift.com/container-platform/3.11/architecture/infrastructure_components/image_registry.html#architecture-infrastructure-components-image-registry

ネットワーク

Router(HAProxy)の拡張
  • HTTP/2対応(Routerでterminate)
  • スレッド数変更対応
  • 動的変更(Routerを再起動せずに変更を反映)
  • mTLSサポート
  • logging(EFK)によるログ収集
Namespace毎のHA Egress IP

Namespaceに対してactive/backup方式でのHA Egress IPを付与
https://docs.openshift.com/container-platform/3.11/admin_guide/managing_networking.html#enabling-static-ips-for-external-project-traffic

Namespace毎の全自動HA Egress IP

Namespaceに対して全自動HA方式で Egress IPを付与

VXLANのポートが変更可能に

OCP SDNのオーバーレイVXLANポートがデフォルトの4789から変更可能に。
VMware NSX SDN(6.2.3以上)でポートが8472から4789に変更になったため、ポートコンフリクトを回避する必要あり。

Master

Pod PriorityとPreemption

Podの相対的な優先度を指定してスケジューリングやリソース枯渇時のevictionなどの順序を制御できる。
https://docs.openshift.com/container-platform/3.11/admin_guide/scheduling/priority_preemption.html#admin-guide-priority-preemption

[TP]Descheduler

クラスタへのノード追加時などにノードのリソース利用状況の偏りが発生するのを防止するために再スケジューリングを行う
https://docs.openshift.com/container-platform/3.11/admin_guide/scheduling/descheduler.html#admin-guide-descheduler

[TP]Podman

OCIコンテナやPodを実行するためのデーモンレスツール

[TP]Node Problem Detector

Nodeレベルの問題を検出し、API Serverに報告するDaemonSet
https://docs.openshift.com/container-platform/3.11/admin_guide/node_problem_detector.html#admin-guide-node-problem-detector

クラスタオートスケーリング(AWSのみ)

ワークロードに応じてアクティブなノード数を自動調整。
https://docs.openshift.com/container-platform/3.11/admin_guide/cluster-autoscaler.html#configuring-cluster-auto-scaler-AWS

Webコンソール

クラスタ管理者向けコンソール

従来のアプリケーション開発者向けコンソールに加え、クラスタ管理者向けコンソールを提供

Nodeレベルの情報提供

ノードの管理や障害対応のために以下を提供

  • ノードステータスイベント
  • node-exporterとkube-state-metrics
  • RBACによるメトリクスの保護
  • メトリクス参照用ロール(cluster-reader)
Kubernetesオブジェクトの管理

以下のオブジェクトの参照/編集/削除が可能

  • ネットワーク
  • ストレージ
    • PV / PVC
    • StorageClass
  • 管理
    • Project / Namespace
    • Node
    • Role / RoleBinding
    • CustomResourceDefinition(CRD)
アクセスコントロール管理

クラスタのRBACのビジュアル管理が可能に

  • 特定のロールを持つユーザやサービスアカウントの検索
  • クラスタ全体およびネームスペース毎のバインディング
  • Roleのverbとobjectの可視化
クラスタワイドのイベントストリーム

権限のある全てのProject/Namespaceのイベントをフィルタリングして参照可能

セキュリティ

[TP]コンテナ間でのPID Namespaceの共有の制御
[TP]Microsoft Windows上でのSSPI接続サポート

ドメイン認証済みのWindowsマシンからのocコマンドによるシングルサインオン

マイクロサービス

[TP]Red Hat OpenShift Service Mesh

Istioベースのサービスメッシュ層を提供。
https://docs.openshift.com/container-platform/3.11/servicemesh-install/servicemesh-install.html#product-overview

Notable Technical Changes

特に重要な変更についての技術的な解説があります。
https://docs.openshift.com/container-platform/3.11/release_notes/ocp_3_11_release_notes.html#ocp-311-notable-technical-changes

推奨されるストレージドライバの変更

よりよいパフォーマンスのため、Docker engineではoverlayfs2を、CRI-OではoverlayFSを推奨。(従来はDevice Mapperを推奨していた。)