Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

スタートガイド

OpenShift Container Platform 3.11

OpenShift Container Platform 3.11 のスタートガイド

Red Hat OpenShift Documentation Team

概要

開発者の場合でも、プラットフォームの管理者の場合でも、本書のトピックを使用して、Openshift の使用を開始することができます。管理者は、インストールユーティリティーや対話式の CLI ツールを使用して、複数のホストに新しい OpenShift インスタンスをすばやくインストールし、設定できます。また、開発者は OpenShift CLI または Web コンソールを使用して、既存の OpenShift インスタンスにログインしてアプリケーションの作成を開始できます。

第1章 概要

1.1. はじめに

OpenShift Container Platform は、Docker と Kubernete を組み合わせ、API を提供してこれらのサービスを管理します。OpenShift Container Platform を使用すると、コンテナーを作成し、管理できます。

1.1.1. OpenShift を使用する理由

コンテナーは、独自の環境内で実行されるスタンドアロンのプロセスで、オペレーティングシステムや下層のインフラストラクチャーからは独立しています。OpenShift を使用すると、コンテナーベースのアプリケーションを開発、デプロイ、管理しやすくなります。また、セルフサービスのプラットフォームが提供されるので、オンデマンドでアプリケーションを作成、修正、デプロイできるため、開発やリリースのライフサイクルを加速化することができます。

イメージはクッキーの抜き型で、またコンテナーは実際のクッキーであると 考えてみてください

また、OpenShift はオペレーティングシステムと、イメージはオペレーティングシステム上で実行するアプリケーションと、コンテナーはこれらのアプリケーションを実際に実行するインスタンスと 考えてみてください

ロールに関連するトピックを見つけ、スタートしましょう。

担当内容適切なトピックへのリンク

プラットフォームの管理者

基本的な OpenShift Container Platform 環境のインストール」または「実稼働の OpenShift Container Platform 環境のインストール

開発者

Web コンソールを使用したイメージの作成およびビルド」や、初めてのプロジェクトおよびアプリケーション作成の基本的な手順

第2章 OpenShift Container Platform のインストール

2.1. 概要

本書は OpenShift Container Platform に関する基本的な概念を紹介し、基本的なアプリケーションのインストールに役立ちます。本書は、OpenShift Container Platform の実稼働環境のデプロイや、インストールには適していません。

2.1.1. 前提条件

OpenShift Container Platform のインストールには、以下が必要です。

  • 最低でも RHEL 7 以降の物理または仮想マシン 2 台。このマシンには、完全修飾ドメイン名 (物理的またはネットワーク上) および、各マシン同士でパスワードなしで SSH 経由でアクセスできるように設定しておく必要があります。本書では master.openshift.example.com および node.openshift.example.com を使用します。これらのマシンでは、ドメイン名を使用して相互に ping を送信できる必要があります。IBM POWER サーバーを使用する場合、クラスター内のすべてのサーバーは IBM POWER サーバーである必要があります。
  • 有効な Red Hat サブスクリプション
  • ワイルドカードを指定した DNS 解決。お使いのドメインがノードの IP に対して解決できるようにしておきます。つまり、DNS サーバーに以下のようなエントリーを設定します。

    master.openshift.example.com. 300 IN A <master_ip>
    node.openshift.example.com. 300 IN A <node_ip>
    *.apps.openshift.example.com. 300 IN A <node_ip>
ドメイン名の apps にワイルドカードのエントリーを指定する理由

OpenShift Container Platform を使用してアプリケーションをデプロイする場合は、内部ルーターにより、受信要求を適切なアプリケーション Pod にプロキシーする必要があります。アプリケーションドメインの一部として apps を使用して、アプリケーショントラフィックを適切な Pod にマークします。

apps 以外のいずれの値も使用することができます。

*.cloudapps.openshift.example.com. 300 IN A <node_ip>

上記を設定したら、以下の手順を使用して 2 台のマシンに OpenShift Container Platform のインストール設定を行います。

2.1.2. OpenShift Container Platform サブスクリプションのアタッチ

  1. ターゲットマシンで (マスターとノード両方)、root として subscription-manager を使用し、Red Hat にシステムを登録します。

    # subscription-manager register
  2. 最新のサブスクリプションデータを Red Hat Subscription Manager (RHSM) からプルします。

    # subscription-manager refresh
  3. 利用可能なサブスクリプションを一覧表示します。

    # subscription-manager list --available
  4. OpenShift Container Platform サブスクリプションを提供するプール ID を検索してアタッチします。

    # subscription-manager attach --pool=<pool_id>
  5. <pool_id> の文字列は、OpenShift Container Platform を提供するプール ID に置き換えます。プール ID は、長い英数字の文字列となっています。

これらの RHEL システムには、OpenShift Container Platform をインストールできるようになりました。次に、これらのシステムに対して、OpenShift Container Platform をどこから入手するかを指示する必要があります。

2.1.3. リポジトリーの設定

マスターとノード上の両方で、subscription-manager を使用して、OpenShift Container Platform のインストールに必要なリポジトリーを有効にします。この例の最初の 2 つのリポジトリーはすでに有効にされている場合があります。

  • x86_64 サーバーでのクラウドインストールおよびオンプレミスインストールの場合は、以下のコマンドを実行します。

    # subscription-manager repos --enable="rhel-7-server-rpms" \
        --enable="rhel-7-server-extras-rpms" \
        --enable="rhel-7-server-ose-3.11-rpms" \
        --enable="rhel-7-server-ansible-2.9-rpms"
  • IBM POWER8 サーバーでのオンプレミスインストールの場合は、以下のコマンドを実行します。

    # subscription-manager repos \
        --enable="rhel-7-for-power-le-rpms" \
        --enable="rhel-7-for-power-le-extras-rpms" \
        --enable="rhel-7-for-power-le-optional-rpms" \
        --enable="rhel-7-server-ansible-2.9-for-power-le-rpms" \
        --enable="rhel-7-server-for-power-le-rhscl-rpms" \
        --enable="rhel-7-for-power-le-ose-3.11-rpms"
  • IBM POWER9 サーバーでのオンプレミスインストールの場合は、以下のコマンドを実行します。

    # subscription-manager repos \
        --enable="rhel-7-for-power-9-rpms" \
        --enable="rhel-7-for-power-9-extras-rpms" \
        --enable="rhel-7-for-power-9-optional-rpms" \
        --enable="rhel-7-server-ansible-2.9-for-power-9-rpms" \
        --enable="rhel-7-server-for-power-9-rhscl-rpms" \
        --enable="rhel-7-for-power-9-ose-3.11-rpms"

このコマンドでは、RHEL システムに対して、OpenShift Container Platform をインストールするのに必要なツールが上記のリポジトリーから入手できることを指示しています。次に、Ansible をベースにする OpenShift Container Platform インストーラーが必要です。

注記

古いバージョンの OpenShift Container Platform 3.11 は Ansible 2.6 のみをサポートしていました。最新バージョンの Playbook は Ansible 2.9 をサポートしており、このバージョンを使用することをお勧めします。

2.1.4. OpenShift Container Platform パッケージのインストール

OpenShift Container Platform のインストーラーは、openshift-ansible パッケージで提供されます。マスターで、yum update を実行してから yum を使用してインストールしてください。

# yum -y install wget git net-tools bind-utils iptables-services bridge-utils bash-completion kexec-tools sos psacct
# yum -y update
# reboot
# yum -y install openshift-ansible

ここでコンテナーエンジンをインストールします。

  • CRI-O をインストールするには、以下を実行します。

    # yum -y install cri-o
  • Docker をインストールするには、以下を実行します。

    # yum -y install docker

2.1.5. パスワードなしの SSH アクセスの設定

マスターでインストーラーを実行する前に、パスワードなしの SSH アクセスを設定します。インストーラーがこれらのマシンにアクセスできるようにするために、この作業は必要です。マスターで以下のコマンドを実行します。

$ ssh-keygen

プロンプトの指示に従い、パスフレーズを求められたら Enter を押してください。

SSH キーを配布する簡単な方法として、bash ループを使用できます。

$ for host in master.openshift.example.com \
    node.openshift.example.com; \
    do ssh-copy-id -i ~/.ssh/id_rsa.pub $host; \
    done

2.1.6. インストール Playbook の実行

  1. インベントリーファイルの例」を参照して、必要なクラスター設定に最も近いサンプルを選択します。

    重要

    Ansible Playbook を --tags または --check オプションを使用して実行することを、Red Hat ではサポートしていません。

注記

他のホストファイルの例は、参考として /usr/share/doc/openshift-ansible-docs-3.11.<version>/docs/example-inventories/ ディレクトリーから入手できます (<version> は、openshift-ansible-docs パッケージでインストールしている最新のバージョンに置き換えます。これで openshift-ansible の親パッケージがアップグレードされるたびに更新されます)。利用可能なインベントリー変数に関する詳細なドキュメントについては、「インベントリーファイルの設定」を参照してください。

  1. お使いのホスト名を使用するには、インベントリー例を編集して、ファイルに保存します (デフォルトの場所は /etc/ansible/hosts です)。
  2. Playbook ディレクトリーに切り替え、ご自身のイベントリーファイルを使用して、prerequisites.yml Playbook を実行します。

    $ cd /usr/share/ansible/openshift-ansible
    $ ansible-playbook -i <inventory_file> playbooks/prerequisites.yml
  3. Playbook ディレクトリーに切り替え、ご自身のインベントリーファイルを使用して、deploy_cluster.yml Playbook を実行します。

    $ cd /usr/share/ansible/openshift-ansible
    $ ansible-playbook -i <inventory_file> playbooks/deploy_cluster.yml

正常にインストールを完了してから、新規プロジェクトを追加する前に、基本的な認証、ユーザーアクセス、ルートを設定する必要があります。

2.2. OpenShift Container Platform との対話

OpenShift Container Platform では、対話用に以下の 2 つのコマンドラインユーティリティーがあります。

  • oc: 通常のプロジェクトおよびアプリケーション管理用
  • oc adm: 管理者タスク用

    oc adm コマンドの実行時は、Ansible ホストのインベントリーファイルに記載されている最初のマスターからのみ実行してください。デフォルトは、/etc/ansible/hosts です。

oc --help および oc adm --help を使用して、利用可能なすべてのオプションを表示します。

また、Web コンソールを使用してプロジェクトとアプリケーションを管理することもできます。Web コンソールは、https://<master_fqdn>:8443/console から利用できます。次のセクションでは、コンソールにアクセスするためのユーザーアカウントを作成する方法を記載しています。

注記

リモートのシステムだけでなく、これらのコマンドラインユーティリティーを使用して、OpenShift Container Platform インスタンスと対話できます。『CLI リファレンス』で説明されているように、OpenShift CLI としてバンドルされており、Windows、Mac または Linux 環境用のユーティリティーをダウンロードできます。

2.3. ロールおよび認証について

デフォルトでは、初回インストール時には OpenShift Container Platform にロールやユーザーアカウントが作成されないので、作成する必要があります。オプションとして、(最初に) 新規ロールを作成するか、誰でもログインできるようにポリシーを定義する方法があります。

最初に、デフォルトの system:admin ユーザーで最低でも 1 回ログインして、マスターで以下のコマンドを実行します。

$ oc login -u system:admin
注記

これ以降、別途記載がない限り、コマンドはマスターで実行してください。

このアカウントで最低でも 1 回ログインして、system:admin ユーザーの設定ファイルを作成します。このファイルがあれば、以降ログインができるようになります。

このシステムアカウントにはパスワードはありません。

以下のコマンドを実行して、OpenShift Container Platform が正常にインストールし、起動したことを確認します。マスターとノードが Ready ステータスで表示されます。

$ oc get nodes

基本的な OpenShift Container Platform 環境の設定を続行するには、「OpenShift Container Platform の設定」に記載の手順に従います。

第3章 OpenShift Container Platform の設定

3.1. 概要

本書は、OpenShift Container Platform に関する基本的な概念を紹介し、基本的なアプリケーションの設定に役立ちます。本書は、「OpenShift Container Platform の基本環境のインストール」に沿った設定手順であるため、OpenShift の実稼働環境のデプロイやインストールには適していません。

3.2. ログイン ID プロバイダーの変更

OpenShift Container Platform インスタンスを新規インストールした場合のデフォルトの動作として、全ユーザーのログインを拒否します。この認証方法を HTPasswd に変更するには、以下を実行します。

  1. /etc/origin/master/master-config.yaml ファイルを編集モードで開きます。
  2. identityProviders のセクションを検索します。
  3. DenyAllPasswordIdentityProviderHTPasswdPasswordIdentityProvider プロバイダーに変更します。
  4. 名前ラベルの値を htpasswd_auth に変更し、プロバイダーセクションに file: /etc/origin/master/htpasswd の新しい行を追加します。

    identityProviders セクションに HTPasswdPasswordIdentityProvider を指定した例は、以下のようになります。

    oauthConfig:
      ...
      identityProviders:
      - challenge: true
        login: true
        name: htpasswd_auth provider
        provider:
          apiVersion: v1
          kind: HTPasswdPasswordIdentityProvider
          file: /etc/origin/master/htpasswd
  5. ファイルを保存します。

3.3. ユーザーアカウントの作成

HTPasswdPasswordIdentityProvider プロバイダーを使用できるようになったので、これらのユーザーアカウントを作成する必要があります。

  1. httpd-tools パッケージを使用して、これらのアカウントを生成可能な htpasswd バイナリーを取得できます。

    # yum -y install httpd-tools
  2. ユーザーアカウントを作成します。

    # touch /etc/origin/master/htpasswd
    # htpasswd -b /etc/origin/master/htpasswd admin redhat

    パスワードが redhatadmin というユーザーを作成しました。

  3. 続行する前に OpenShift を再起動します。

    # master-restart api
    # master-restart controllers
  4. このユーザーアカウントに cluster-admin の特権を指定して、あらゆる操作ができるようにします。

    $ oc adm policy add-cluster-role-to-user cluster-admin admin

    oc adm コマンドの実行時は、Ansible ホストのインベントリーファイルに記載されている最初のマスターからのみ実行してください。デフォルトは、/etc/ansible/hosts です。

  5. Web コンソールやコマンドラインから、このユーザー名/パスワードの組み合わせを使用してログインします。これをテストするには、以下のコマンドを実行します。

    $ oc login -u admin

default プロジェクトに変更してから、次に進みます。

$ oc project default

詳細は、「ロール」および「認証」を参照してください。

3.4. OpenShift ルーターのデプロイ

OpenShift ルーターは、OpenShift サービスが宛先の外部ネットワークトラフィックのエントリーポイントとなります。SNI を使用する HTTP、HTTPS および TLS トラフィックをサポートし、ルーターが正しいサービスにトラフィックを送信できるようにします。

ルーターなしでは、OpenShift サービスと Pod は、OpenShift インスタンスの外部にあるリソースと通信できません。

インストーラーにより、デフォルトのルーターが作成されます。

  1. 以下のコマンドを使用してデフォルトのルーターを削除します。

    $ oc delete all -l router=router
  2. 新しいデフォルトのルーターを作成します。

    $ oc adm router --replicas=1 --service-account=router

OpenShift ドキュメントには、ルーターの概要に関する詳細情報が記載されています。

3.5. 内部レジストリーのデプロイ

Openshift は、内部の統合 Docker レジストリーを提供し、このレジストリーをデプロイして、イメージをローカルで管理できます。また、OpenShift は docker-registry を使用して、イメージの保存、取得、ビルドだけでなく、ライフサイクル全体でイメージをデプロイし、管理します。

インストーラーは、デフォルトのレジストリーを作成します。

第4章 Web コンソールを使用したイメージの作成およびビルド

4.1. 概要

このスタートガイドでは、最もシンプルな方法で、OpenShift Container Platform でサンプルプロジェクトを稼働させる手順を説明しています。プロジェクトでイメージを起動する方法は複数ありますが、このトピックでは、最もすばやく簡単に起動する方法に焦点を当てていきます。

本書から読み始めており、OpenShift Container Platform バージョン 3 (v3) のコアとなる概念に慣れていない場合には、「What's New」に先に目を通してください。本バージョンの OpenShift Container Platform は、バージョン 2 (v2) とは大きく異なります。

OpenShift Container Platform 3 では、開発者向けに、すぐにアプリケーション開発を開始していただけるように、適切な実装およびチュートリアルと、追加設定なしに使用できる一連の言語およびデータベースを提供しています。言語サポートは、クイックスタートテンプレートを軸として展開されており、このテンプレートは、ビルダーイメージを活用します。

言語実装およびチュートリアル

Ruby

Rails

Python

Django

Node.js

Node.js

PHP

CakePHP

Perl

Dancer

Java

 

OpenShift Container Platform が提供する他のイメージには以下が含まれます。

さらに、JBoss Middleware では広範囲に及ぶ OpenShift Container Platform テンプレートを利用できます。

特に xPaaS サービスで利用可能な技術は以下のとおりです。

  • JBoss EAP 6 が提供する Java EE 6 Application Server
  • JBoss Fuse および JBoss A-MQ が提供する統合およびメッセージサービス
  • JBoss Data Grid が提供する Data Grid サービス
  • JBoss BRMS が提供する Real Time Decision Service
  • Tomcat 7 および Tomcat 8 が提供する Java Web Server 3.0

上記の各オファリングについては、一連の組み合わせが提供されます。

  • HTTP のみ vs HTTP および HTTPS
  • データベースを必要としない場合や、MongoDB、PostgreSQL または MySQL のいずれかを使用する場合
  • A-MQ との統合 (必要な場合)

このようなアプリケーションの構築を例示するために、以下のセクションではプロジェクトの作成について説明します。このプロジェクトには、Welcome ページや現在の訪問者数 (データベースに保存) を提供するサンプルの Node.js アプリケーションが含まれています。

注記

このトピックでは、クイックスタートインスタントアプリのテンプレートとアプリケーションの両方について説明します。クイックスタートは、アプリケーション開発のスタート地点ではありますが、便利なアプリケーションを作成するには開発作業が必要です。これとは対照的に、Jenkins などのインスタントアプリは即座に利用できます。

4.1.1. ブラウザーの要件

ブラウザーのバージョンとオペレーティングシステムを使用して、Web コンソールにアクセスできることを確認します。

4.2. 作業を開始する前に

作業を開始する前に、以下を確認してください。

4.3. サンプルリポジトリーのフォーク

  1. GitHub にログインした状態で「Ruby の例」のページに移動します。

    注記

    以下のトピックは、Ruby の例に沿っていますが、OpenShift Container Platform GitHub プロジェクトで提供される言語であればどれでも使用できます。

  2. リポジトリーをフォークします。

    新規のフォークにリダイレクトされます。

  3. フォーク用のクローン URL をコピーします。
  4. ローカルのマシンにリポジトリーをクローンします。

4.4. プロジェクトの作成

アプリケーションを作成するには、最初に新規プロジェクトを作成してから、InstantApp テンプレートを選択します。そこから、OpenShift Container Platform はビルドプロセスを開始し、新規デプロイメントを作成します。

  1. ブラウザーから OpenShift Container Platform の Web コンソールに移動します。Web コンソールは、自己署名証明書を使用するので、プロンプトが表示されたら、ブラウザーの警告を OK にして進みます。
  2. 管理者が推奨するユーザー名とパスワードを使用してログインします。
  3. 新規プロジェクトを作成するには、New Project をクリックします。
  4. 新規プロジェクトの一意の名前、表示名および説明を入力します。
  5. Create をクリックします。

    Web コンソールの welcome 画面が読み込まれます。

4.5. アプリケーションの作成

「Select Image」または「Template」ページでは、公開されている git リポジトリーか、またはテンプレートのどちらを基に作成するかのオプションが表示されます。

  1. 新規プロジェクトを作成しても、「Select Image」または「Template」ページに自動的にリダイレクトされない場合には、「Add to Project」をクリックする必要がある場合があります。
  2. Browse」をクリックしてから、ドロップダウンリストから「ruby」を選択します。
  3. ruby:latest ビルダーイメージをクリックします。
  4. アプリケーションの「名前」を入力して、「Git リポジトリーの URL」を入力します。Git リポジトリーの URL は https://github.com/<your_github_username>/ruby-ex.git です。
  5. オプションで、「Show advanced routing, build, and deployment options」をクリックします。ただし、デフォルトでは、このアプリケーション例では自動的にルート、Webhook トリガー、ビルド変更トリガーが作成されます。
  6. Create をクリックします。

    注記

    作成後に、Web コンソールからこれらの設定の一部を変更できます。手順は、「Browse」、「Builds」をクリックしてビルドを選択してから、「Actions」をクリックして「Edit」または「Edit YAML」を選択します。

アプリケーションの作成には時間がかかる可能性があります。Web コンソールの「Overview」ページでは、作成した新規リソースを表示し、ビルドやデプロイメントの進捗を確認できます。

Ruby Pod が作成されても、Pod のステータスは保留中と表示されます。次に、Ruby Pod が起動し、新たに割り当てられた IP アドレスが表示されます。Ruby Pod が実行されると、ビルドが完了します。

4.6. アプリケーションの実行の確認

DNS が正しく設定されている場合には、新規アプリケーションは Web ブラウザーからアクセスできます。アプリケーションにアクセスできない場合には、システム管理者にお問い合わせください。

新規アプリケーションを表示するには以下を実行します。

4.7. 自動化ビルドの設定

OpenShift Container Platform GitHub リポジトリー からこのアプリケーションのソースコードをフォークしたので、フォークしたリポジトリーにコードの変更がプッシュされるたびに、Webhook を使用して自動的にアプリケーションのリビルドをトリガーできます。

アプリケーションの Webhook を設定するには以下を実行します。

  1. Web コンソールで、作成したアプリケーションが含まれるプロジェクトに移動します。
  2. Browse」タブをクリックしてから「Builds」をクリックします。
  3. ビルド名をクリックしてから、「Configuration」タブをクリックします。
  4. GitHub webhook URL」の横にある「 Copy 」をクリックして、webhook ペイロード URL をコピーします。
  5. GitHub のフォークされたリポジトリーに移動してから「Settings」をクリックします。
  6. Webhooks & Services」をクリックします。
  7. Add webhook をクリックします。
  8. webhook URL を「Payload URL」フィールドに貼り付けます。
  9. Content Typeapplication/json に設定します。
  10. Add webhook」をクリックして保存します。

GitHub は、ping のペイロードを OpenShift Container Platform サーバーに送信して、通信が成功したことを確認します。Webhook URL の横に緑のチェックマークが表示された場合には、正しく設定されています。チェックマークの上にマウスをかざして、最終配信のステータスを表示します。

フォークされたリポジトリーにコード変更をプッシュする次回のタイミングで、アプリケーションが自動的に再ビルドされます。

4.8. コード変更の記述

ローカルで作業して、アプリケーションに変更をプッシュするには、以下を実行します。

  1. ローカルマシンで、テキストエディターを使用して、ruby-ex/config.ru ファイルのサンプルアプリケーションのソースを変更します。
  2. コードの変更をアプリケーション内から表示できるようにします。 たとえば、行 229 で、タイトルを Welcome to your Ruby application on OpenShift から This is my Awesome OpenShift Application に変更してから、変更を保存します。
  3. Git に変更をコミットして、フォークに変更をプッシュします。

    webhook が正しく設定されている場合には、変更を基に、アプリケーションは即座にリビルドされます。リビルドに成功した場合には、先に作成したルートを使用して更新されたアプリケーションを表示します。

その後は、必要な作業はコードの更新をプッシュするだけで、OpenShift Container Platform が残りを行います。

4.8.1. イメージの手動リビルド

Webook が機能しない場合や、ビルドに失敗して、コードを変更せずにビルドを再起動する場合には、イメージを手動でリビルドすると便利です。直近にコミットされた変更を基にイメージを手動でリビルドするには、フォークしたリポジトリーに移動します。

  1. Browse」タブをクリックしてから「Builds」をクリックします。
  2. ビルドを探し出して、Start Build をクリックします。

第5章 CLI を使用したイメージの作成およびビルド

5.1. 概要

このスタートガイドでは、最もシンプルな方法で、OpenShift Container Platform でサンプルプロジェクトを稼働させる手順を説明しています。プロジェクトでイメージを起動する方法は複数ありますが、このトピックでは、最もすばやく簡単に起動する方法に焦点を当てていきます。

本書から読み始めており、OpenShift Container Platform バージョン 3 (v3) のコアとなる概念に慣れていない場合には、「What's New」に先に目を通してください。本バージョンの OpenShift Container Platform は、バージョン 2 (v2) とは大きく異なります。

OpenShift Container Platform 3 では、開発者向けに、すぐにアプリケーション開発を開始していただけるように、適切な実装およびチュートリアルと、追加設定なしに使用できる一連の言語およびデータベースを提供しています。言語サポートは、クイックスタートテンプレートを軸として展開されており、このテンプレートは、ビルダーイメージを活用します。

言語実装およびチュートリアル

Ruby

Rails

Python

Django

Node.js

Node.js

PHP

CakePHP

Perl

Dancer

Java

 

OpenShift Container Platform が提供する他のイメージには以下が含まれます。

さらに、JBoss Middleware では広範囲に及ぶ OpenShift Container Platform テンプレートを利用できます。

特に xPaaS サービスで利用可能な技術は以下のとおりです。

  • JBoss EAP 6 が提供する Java EE 6 Application Server
  • JBoss Fuse および JBoss A-MQ が提供する統合およびメッセージサービス
  • JBoss Data Grid が提供する Data Grid サービス
  • JBoss BRMS が提供する Real Time Decision Service
  • Tomcat 7 および Tomcat 8 が提供する Java Web Server 3.0

上記の各オファリングについては、一連の組み合わせが提供されます。

  • HTTP のみ vs HTTP および HTTPS
  • データベースを必要としない場合や、MongoDB、PostgreSQL または MySQL のいずれかを使用する場合
  • A-MQ との統合 (必要な場合)

このようなアプリケーションの構築を例示するために、以下のセクションではプロジェクトの作成について説明します。このプロジェクトには、Welcome ページや現在の訪問者数 (データベースに保存) を提供するサンプルの Node.js アプリケーションが含まれています。

注記

このトピックでは、クイックスタートインスタントアプリのテンプレートとアプリケーションの両方について説明します。クイックスタートは、アプリケーション開発のスタート地点ではありますが、便利なアプリケーションを作成するには開発作業が必要です。これとは対照的に、Jenkins などのインスタントアプリは即座に利用できます。

5.2. 作業を開始する前に

作業を開始する前に、以下を確認してください。

5.3. サンプルリポジトリーのフォーク

  1. GitHub にログインした状態で「Ruby の例」のページに移動します。

    注記

    以下のトピックは、Ruby の例に沿っていますが、OpenShift Container Platform GitHub プロジェクトで提供される言語であればどれでも使用できます。

  2. リポジトリーをフォークします。

    新規のフォークにリダイレクトされます。

  3. フォーク用のクローン URL をコピーします。
  4. ローカルのマシンにリポジトリーをクローンします。

5.4. プロジェクトの作成

アプリケーションを作成するには、新規プロジェクトを作成して、ソースの場所を指定する必要があります。ここから、OpenShift Container Platform はビルドプロセスを開始して、新規デプロイメントを作成します。

  1. CLI で OpenShift Container Platform にログインします。

    • ユーザー名とパスワードを使用してログインする場合:

      $ oc login -u=<username> -p=<password> --server=<your-openshift-server> --insecure-skip-tls-verify
    • oauth トークンを使用してログインする場合:

      $ oc login <https://api.your-openshift-server.com> --token=<tokenID>
  2. 新規プロジェクトを作成するには、以下を実行します。

    $ oc new-project <projectname> --description="<description>" --display-name="<display_name>"

新規プロジェクトの作成後、新規プロジェクトの namespace に自動的に切り替えられます。

5.5. アプリケーションの作成

フォークしたリポジトリーにあるコードを基に新規アプリケーションを作成するには、以下を実行します。

  1. コードのソースを指定してアプリケーションを作成します。

    $ oc new-app openshift/ruby-20-centos7~https://github.com/<your_github_username>/ruby-ex

    OpenShift Container Platform は一致するビルダーイメージを検索して (この場合は ruby-20-centos7)、アプリケーションのリソース (イメージストリーム、ビルド設定、デプロイメント設定、サービス) を作成します。また、ビルドのスケジューリングも行います。

  2. ビルドの進捗を追跡します。

    $ oc logs -f bc/ruby-ex
  3. ビルドが完了し、作成されたイメージがレジストリーに正常にプッシュされたら、アプリケーションのステータスを確認します。

    $ oc status

    または、Web コンソールからビルドを表示できます。

アプリケーションの作成には時間がかかる可能性があります。Web コンソールの「Overview」ページでは、作成した新規リソースを表示し、ビルドやデプロイメントの進捗を確認できます。oc get pods コマンドでは、Pod がいつ稼働しているかを確認し、oc get builds では、ビルドの統計を表示します。

Ruby Pod が作成されても、Pod のステータスは保留中と表示されます。次に、Ruby Pod が起動し、新たに割り当てられた IP アドレスが表示されます。Ruby Pod が実行されると、ビルドが完了します。

oc status コマンドでは、サービスが実行されている IP アドレスを表示します。デプロイ先のデフォルトのポートは、8080 です。

5.6. ルートの作成

OpenShift Container Platform ルートがホスト名でサービスを公開するので、外部クライアントは名前を使用してこれに到達できます。新規アプリケーションへのルートを作成するには、以下を実行します。

  1. ruby-ex のサービスを公開します。

    $ oc expose service ruby-ex
  2. 新規ルートを表示します。

    $ oc get route

5.7. アプリケーションの実行の確認

新規アプリケーションを表示するには、(前のセクションで) コピーしたルートの場所を Web ブラウザーのアドレスバーに貼り付けて、Enter を押します。

サンプルの ruby-ex アプリケーションは、単純な Welcome 画面となっており、コード変更のデプロイ、アプリケーションや他の開発リソースの管理方法に関する詳細が含まれます。

次に、GitHub Webhook トリガーを使用した自動化ビルドを設定し、フォークしたリポジトリーのコードが変更されると、アプリケーションがリビルドされます。

5.8. 自動化ビルドの設定

OpenShift Container Platform GitHub リポジトリー からこのアプリケーションのソースコードをフォークしたので、フォークしたリポジトリーにコードの変更がプッシュされるたびに、Webhook を使用して自動的にアプリケーションのリビルドをトリガーできます。

アプリケーションの Webhook を設定するには以下を実行します。

  1. BuildConfig のトリガーセクションを表示して、GitHub webhook トリガーが存在することを確認します。

    $ oc edit bc/ruby-ex

    以下のような内容が表示されているはずです。

    triggers
    - github:
        secret: Q1tGY0i9f1ZFihQbX07S
        type: GitHub

    シークレットは、ユーザー自身およびリポジトリーのみがビルドをトリガーできるようにします。

  2. 以下のコマンドを実行して、BuildConfig に関連付けられている Webhook URL を表示します。

    $ oc describe bc ruby-ex
  3. 上記のコマンドで表示された GitHub webhook ペイロード URL の出力をコピーします。
  4. GitHub のフォークされたリポジトリーに移動してから「Settings」をクリックします。
  5. Webhooks & Services」をクリックします。
  6. Add webhook をクリックします。
  7. webhook URL を「Payload URL」フィールドに貼り付けます。
  8. Content Typeapplication/json に設定します。
  9. Add webhook」をクリックして保存します。

GitHub は、ping のペイロードを OpenShift Container Platform サーバーに送信して、通信が成功したことを確認します。Webhook URL の横に緑のチェックマークが表示された場合には、正しく設定されています。チェックマークの上にマウスをかざして、最終配信のステータスを表示します。

フォークされたリポジトリーにコード変更をプッシュする次回のタイミングで、アプリケーションが自動的に再ビルドされます。

5.9. コード変更の記述

ローカルで作業して、アプリケーションに変更をプッシュするには、以下を実行します。

  1. ローカルマシンで、テキストエディターを使用して、ruby-ex/config.ru ファイルのサンプルアプリケーションのソースを変更します。
  2. コードの変更をアプリケーション内から表示できるようにします。 たとえば、行 229 で、タイトルを Welcome to your Ruby application on OpenShift から This is my Awesome OpenShift Application に変更してから、変更を保存します。
  3. Git に変更をコミットして、フォークに変更をプッシュします。

    webhook が正しく設定されている場合には、変更を基に、アプリケーションは即座にリビルドされます。リビルドに成功した場合には、先に作成したルートを使用して更新されたアプリケーションを表示します。

その後は、必要な作業はコードの更新をプッシュするだけで、OpenShift Container Platform が残りを行います。

5.9.1. イメージの手動リビルド

Webook が機能しない場合や、ビルドに失敗して、コードを変更せずにビルドを再起動する場合には、イメージを手動でリビルドすると便利です。直近にコミットされた変更を基にイメージを手動でリビルドするには、フォークしたリポジトリーに移動します。

$ oc start-build ruby-ex

5.10. トラブルシューティング

プロジェクトの変更

oc new-project コマンドは現行プロジェクトを先に作成したプロジェクトに自動的に設定しますが、以下を実行することでいつでもプロジェクトを変更できます。

$ oc project <project-name>

プロジェクトの一覧を表示するには、以下を実行します。

$ oc get projects

ビルドの手動トリガー

ビルドが自動的に開始されない場合には、ビルドを開始して、ログをストリームします。

$ oc start-build ruby-ex --follow

または、上記のコマンドに --follow を追加せずに、ビルドのトリガー後に以下のコマンドを実行します。n は追跡するビルドの数に置き換えます。

$ oc logs -f build/ruby-ex-n

法律上の通知

Copyright © 2019 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version. Modified versions must remove all Red Hat trademarks.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Portions adapted from https://github.com/kubernetes-incubator/service-catalog/ with modifications by Red Hat. Licensed under the Apache License 2.0.
Red Hat, Red Hat Enterprise Linux, the Red Hat logo, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.