Skip to content

DNET_OpenShift

nishi_74322014 edited this page Sep 11, 2026 · 1 revision

OpenShift

概要

  • コンテナベースのソフトウェアの配備・管理の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を公開。

  • OpenShift v3のコアはKubernetes

    • Kubernetesの概念をそのまま取り入れている。
    • コアにKubernetesを据えることで、進化が著しい。

アーキテクチャ

v2以前

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

Broker

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

Node

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

  • Webブラウザなどからのアプリケーションへのアクセスは、
    Nodeごとのリバースプロキシを経由し、各Gearに分配される。

  • Cartridgeと呼ばれる、各種実行環境のテンプレートが用意されており、
    それを基にGearと呼ばれるアプリケーションの実行単位を構成する。

    • データベースもCartridgeの1つとして用意され、
      アプリケーションごとにGearとして動作する仕組み。

    • 対応言語、フレームワーク、データベースを追加したい場合、Cartridgeを追加する。

v3以降

  • 2015年、OpenShift v3のKubernetesDocker PaaSとして産まれ変わった。
  • Broker / Node -> マスター / ノード / ポッドのアーキテクチャ(Kubernetesの該当節を参照)へ変更された。
  • Kubernetesの開発にはRed Hatが深く関わっている。

Docker関連

Dockerファイル

Dockerの該当節を参照。

Dockerデーモン

OpenShiftがノードのDockerデーモン(Dockerの該当節を参照)に実行を要求する。

Dockerイメージ

ベストプラクティスに従うすべてのDockerイメージ(Dockerの該当節を参照)で機能する。

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

Dockerコンテナ

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

Dockerレジストリ

Dockerの該当節を参照。

OpenShift用語

グループ化

プロジェクト

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

  • ユーザーが他のユーザーとは別に、
    コンテンツを整理して管理することができる。

  • 各プロジェクトには、独自の

    • リソース、ポリシー(アクションを実行できるかどうか)
    • 制約(リソースのクォータと制限など)

    などがある。

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

サービス

  • 抽象レイヤを提供しポッド(Kubernetesの該当節を参照)をグループ化する。

  • 外部アクセスのため一意の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とタグ名

      • 出発点とするイメージが登録されたImage Streamとタグ名
      • 完成したイメージを登録するImage Streamと付与するタグ名
  • 別の説明

    • 最低限、ビルド・チェーンには次のものが必要。

      • ビルド・イメージのビルド設定
      • ランタイム・イメージのビルド設定
      • ランタイム・イメージ用のインラインドッカーファイル
      • ランタイム・イメージを使用するデプロイメント設定
    • 次のオプションが推奨されている。

      • Image Stream
      • ソースプロジェクトに基づくビルド・イメージのトリガ
      • ビルド・イメージに基づくランタイムビルドのトリガ
  • 参考

source-to-image (s2i)

レジストリ関連

Image Stream

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

  • 概要

    • 内部的にタグに対応するDockerレジストリを管理する。
    • それに追加で大きく以下の三つの機能を提供する。
      • Dockerレジストリのタグにpushされたイメージの履歴を保持する機能。
      • Image Streamのタグが更新されたら、Dockerレジストリ
        pushなどのアクションを自動的に起動できるImageChange更新トリガ機能
      • OpenShift内部レジストリとの連携・イメージキャッシュ機能
  • バージョン管理
    Image Streamによるイメージの種類は大きく次の3つに分かれる。

    • ベースイメージ = 公式RHELイメージ
      OSレベルのファイルのみが入ったイメージ

    • 開発テンプレート・イメージ = 開発環境イメージ
      開発に必要なフレームワークなどが入ったイメージ

    • アプリケーション・イメージ
      実行可能なアプリケーションが入ったイメージ

      • = 開発中アプリイメージ
      • = 開発済みアプリイメージ
      • = テスト済みアプリイメージ
  • Dockerファイルsource-to-image (s2i)の使い分け

    • ベースイメージから開発テンプレート・イメージを作る際はDockerファイルを使用
    • 開発テンプレート・イメージからアプリケーション・イメージを作る際はs2iを使用

テンプレート

概要(テンプレート)

  • 個々のコマンドを個別に実行すると、面倒でエラーが発生しやすくなる。

  • この設定はすべて1つのテンプレートにまとめることができる。

  • コレを使用して完全なリソースセットを自動的に生成できる。

  • 「KubernetesのHelm Chart」(Kubernetesの該当節、Helm Chartsを参照)に
    OpenShiftの皮を被せたモノに近いらしい。

  • 前述のイメージ関連レジストリ関連の結果を統合してコンテナを立ち上げる。

作成方法

  • 特定の値のパラメータを定義

    • 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

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>
      
  • resource

oc scale

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

ログ参照

oc logs

・・・

リモート接続

oc rsh

ポッドにRSHを確立

oc exec

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

step by step的な

ファースト・ステップ

OpenShiftファースト・ステップ

セカンド・ステップ

OpenShiftセカンド・ステップ

OpenShiftの設定画面

OpenShiftの設定画面

参考

openshift.com

OpenShift Blog

https://blog.openshift.com

OpenShift Documentation

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

CTC教育サービス

めもめも

移行メモ

  • 「抽象レイヤを提供しポッドグループ化する」→「ポッドをグループ化する」、 「Dockerファイルを使用にせずに」→「使用せずに」、 「Dockerイメージ使用してDockerを実行する準備」→「Dockerイメージを使用して〜」 に修正した。
  • 本文が無かった見出し「Dockerファイル」「Dockerレジストリ」に、 参照先(Dockerの該当節)へのポインタを補った。
  • 「概要」がページ冒頭と「テンプレート」配下で重複し、 GitHub Wiki ではアンカが衝突するため、後者に「(テンプレート)」を補った。
  • 本フェーズで新たに参照された「OpenShiftファースト・ステップ」 「OpenShiftの設定画面」を TODO.md に予約した。

Tags: 移行, OpenShift, Red Hat, PaaS, Kubernetes, Docker, Image Stream, source-to-image, s2i, ocコマンド

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally