.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

  • コンテナベースのソフトウェアの配備・管理のRed Hat製品。
    • OpenShiftはRHELおよびFedora上で動作する。
    • Linuxカーネルの仮想化技術であるKVMを積極的に推進。
    • Kubernetesのディストリビューション。
  • 具体的には、
    • DockerコンテナDevOps?ツールを使用して、アプリケーション開発を高速化する。
    • 豊富な機能を備えたポータルとCLIを同梱し、
      デプロイされたアプリケーションを操作するためのUI/UXをユーザに提供する。

経緯

  • Red Hatが開発 2011年に発表
  • 2012年にOSSとして公開。
  • 2015年、それまでの仕組み(OpenShift v2)を捨て去り、
    Docker PaaSとして生まれ変わった OpenShift v3を公開。

アーキテクチャ

v2以前

コンポーネントは、大分すると、BrokerNodeに分けられる。

Broker

アプリケーションのデプロイ、認証・認可、各種データの保存などを担っている。

Node

アプリケーションやサービスのホスト。

  • Webブラウザなどからのアプリケーションへのアクセスは、
    Nodeごとのリバースプロキシを経由し、各Gearに分配される。
  • Cartridgeと呼ばれる、各種実行環境のテンプレートが用意されており、
    それを基にGearと呼ばれるアプリケーションの実行単位を構成する。
  • データベースもCartridgeの1つとして用意され、
    アプリケーションごとにGearとして動作する仕組み。
  • 対応言語、フレームワーク、データベースを追加したい場合、Cartridgeを追加する。

v3以降

Docker関連

Dockerファイル

Dockerデーモン

OpenShiftがノードのDockerデーモンに実行を要求する。

Dockerイメージ

ベストプラクティスに従うすべてのDockerイメージで機能する。

  • EXPOSEポートの定義
  • 開始時に実行する1つの非終了CMDなど
  • ルートユーザまたは特定のユーザ名として実行しない
    • デフォルトでrootとして実行されるDockerイメージの展開を許可していない。
    • root(または特定のユーザ)として実行されることを想定した
      Dockerイメージの展開を許可したい場合、小さな構成変更が必要になる。

Dockerコンテナ

  • コンテナは不変のインフラストラクチャとして扱われる。
  • 従って、一般的にコンテナの内容を変更しない。
  • しかし、アプリケーションをデバッグするなどの幾つかのユースケースでは、
    コンテナに入り、アプリケーションを検査することが有益になることがある。

Dockerレジストリ

OpenShift用語

グループ化

プロジェクト

展開を整理するのに役立つ最上位コンセプト。

  • ユーザーが他のユーザーとは別に、
    コンテンツを整理して管理することができる。
  • 各プロジェクトには、独自の
    • リソース、ポリシー(アクションを実行できるかどうか)
    • 制約(リソースのクォータと制限など)

などがある。

  • 各リソースの「ラッパー」として機能する。

サービス

  • 抽象レイヤを提供しポッドグループ化する。
  • 外部アクセスのため一意のIPアドレスとポートのペアが割り当てられる。
    • ただし、既定では、作成したサービスは外部に公開されない。
    • サービスIPは、サービスの生存期間中は決して変更されない。
  • また、内部プロキシ/ロード・バランサとしても機能する。
    • ポッドのルーティングとロード・バランシングを提供する。

RC/DC

ほとんどの場合、

などのリソースを一緒に作成・使用することになる。

Deployment Configuration (DC)

DCは、RCをベースに構築されており、展開方法を定義する。

  • 最も単純なケースでは、新しいRCを作成するだけで、ポッドを起動できる。
  • イメージの移行が可能になり、RCの作成前または作成後に実行されるフックも定義される。

Replication Controllers (RC)

必要な数のポッドが存在することを指定して保証する。

  • 例えば、サーバを3つのポッドに常にスケーリングする場合は、RCが必要。
  • RCは、"自己修復"する方法。RCなしでは、ポッドは自動的に再起動されない。

イメージ関連

Build Configuration

次の4つの情報を記載することで、Dockerイメージの作成を行なう。

  • めもめもの説明
    • イメージ作成方法、必要なファイルの入手先
      • イメージの作成方法(Dockerファイル、もしくは、s2i
      • イメージの作成に必要なファイルの入手先(GitHub?のリポジトリなど)
  • 別の説明
    • 最低限、ビルド・チェーンには次のものが必要。
      • ビルド・イメージのビルド設定
      • ランタイム・イメージのビルド設定
      • ランタイム・イメージ用のインラインドッカーファイル
      • ランタイム・イメージを使用するデプロイメント設定
  • 次のオプションが推奨されている。
    • Image Stream
    • ソースプロジェクトに基づくビルド・イメージのトリガ
    • ビルド・イメージに基づくランタイムビルドのトリガ
  • 参考
  • chaining-builds

source-to-image (s2i)

  • Red Hatが主催するオープンソース・プロジェクト。
  • Dockerファイルを使用にせずに、スクリプトを用いてイメージの作成を自動化する。
  • 増分ビルドによる再利用をサポート
    • 以前にダウンロードした依存関係、
    • 以前構築した成果物など

レジストリ関連

Image Stream

OpenShiftにはKubernetesに無いImage Streamというオブジェクトがある。

  • 概要
    • 内部的にタグに対応するDockerレジストリを管理する。
    • それに追加で大きく以下の三つの機能を提供する。
      • Dockerレジストリのタグにpushされたイメージの履歴を保持する機能。
      • Image Streamのタグが更新されたら、Dockerレジストリ
        pushなどのアクションを自動的に起動できるImageChange?更新トリガ機能
      • OpenShift内部レジストリとの連携・イメージキャッシュ機能
  • バージョン管理
    Image Streamによるイメージの種類は大きく次の3つに分かれる。
  • ベースイメージ = 公式RHELイメージ
    OSレベルのファイルのみが入ったイメージ
  • 開発テンプレート・イメージ = 開発環境イメージ
    開発に必要なフレームワークなどが入ったイメージ
  • アプリケーション・イメージ
    実行可能なアプリケーションが入ったイメージ
    • = 開発中アプリイメージ
    • = 開発済みアプリイメージ
    • = テスト済みアプリイメージ

テンプレート

概要

  • 個々のコマンドを個別に実行すると、面倒でエラーが発生しやすくなる。
  • この設定はすべて1つのテンプレートにまとめることができる。
  • コレを使用して完全なリソースセットを自動的に生成できる。

作成方法

  • 特定の値のパラメータを定義
    • DBのユーザ名
    • DBのパスワードなど
  • リポジトリへの登録
    • テンプレートをバージョン管理システムに保存し、
    • 外部URLからOpenShiftにロードすることもできる。

利用方法

  • 管理者は、全ユーザがポータル経由でテンプレートを利用できるようにできる。
  • ユーザはテンプレートを作成し、他のユーザと共有できる。

ocコマンド

で説明されていたコマンド。

インストール確認

  • ocコマンドを実行
    >oc
  • バージョン情報
    >oc version

ログイン

oc login

ログインする。

  • アカウント情報を入力してログイン
    oc login URL
  • トークンを使用してログイン
    oc login URL --token=XXXXX

oc logout

ログアウトする。

新規作成

oc new-project

プロジェクトを作成する。

oc new-project <projectname>

oc new-app

  • リソースをバックグラウンドで作成する。
  • サービスに一連のポッドをマップする。

oc create

  • oc create -f <file_or_dir_path>
    構成ファイルを解析し、ファイルの内容に基づいて
    1つ以上のOpenShiftオブジェクトを作成。

参照系

oc get

  • 以下のオプションを指定して取得できる。
    • 一覧
      <resources>
    • 詳細
      <resource> <name> or <resource>/<name>

oc describe

  • 以下のオプションを指定して描画できる。
    • 一覧
      <resources>
    • 詳細
      <resource> <name> or <resource>/<name>
  • resource
    • project(s)
    • service(s)
    • route(s)
    • pod(s)
    • build(s)
    • is(s) ... Image Stream

更新系

oc delete

  • project
  • pod

設定関連

oc expose service

レプリケートされたアプリケーションをサービスまたはルートとして公開する。

oc env

  • リソースの環境変数を操作する。
    • 一覧
      <resources>
    • 詳細
      <resource> <name> or <resource>/<name>

oc scale

Deployment Configuration (DC)のレプリカ数を設定しスケール。

ログ参照

oc logs

・・・

リモート接続

oc rsh

ポッドにRSHを確立

oc exec

ポッド内でコマンドを実行

step by step的な

ファースト・ステップ

セカンド・ステップ

OpenShiftの設定画面

参考

openshift.com

OpenShift Blog

https://blog.openshift.com

OpenShift Documentation

https://docs.openshift.com/index.html

CTC教育サービス

  • コラム - クラウド時代のオープンソース実践活用

めもめも

  • OpenShift OriginによるDockerイメージ管理

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-06-09 (土) 11:24:06 (520d)