type
status
date
slug
summary
tags
category
icon
password
书籍

OpenShift コンテナプラットフォームのインストール

目標

  • OpenShiftをインストールし、クラスターを構成する。

目的

  • インストールのためにサーバーを準備する。
  • インストール手順を実行して、OpenShiftクラスターを構築および構成する。
  • インストール後の作業を実行し、クラスターの構成を確認する。

セクション

  1. インストールのためのサーバー準備(ガイド付き演習)
  1. Red Hat OpenShift Container Platformのインストール(ガイド付き演習)
  1. インストール後の作業実行(ガイド付き演習)

ラボ

なし

インストールの準備

目標

このセクションが終了した時点で、受講者はインストールのためにサーバーを準備できるようになります。

インストール概要

  • Red Hat OpenShift Container Platformは、RPMパッケージとコンテナイメージの組み合わせで提供されます。
  • RPMパッケージはRed Hatの標準リポジトリ(Yumリポジトリ)からサブスクリプションマネージャを使用してダウンロードされ、コンテナイメージはRed Hatのプライベートコンテナレジストリから取得されます。

インストールの方法

OpenShiftのインストールには2つの方法があります:
  1. クイックインストール(Quick Installation):シンプルなクラスター設定に使用されます。少数の質問に答えることでインストールが始まります。
  1. 高度なインストール(Advanced Installation):複雑なインストールに使用され、Ansible Playbooksを用いて自動化します。
OpenShift 3.9以降、クイックインストール方式は廃止され、高度なインストール方式が推奨されるようになりました。このコースでは高度なインストール方式を使用します。

Ansibleの役割

Ansibleはオープンソースの自動化プラットフォームで、複数のサーバーを一貫した方法でカスタマイズおよび構成するために使用されます。Ansible Playbooksは、サーバーの望ましい構成を宣言するために使用され、サーバーが宣言された状態にない場合に構成が調整されます。Ansibleは「冪等性(idempotence)」を持ち、何度実行しても最終的な構成が変わりません。
OpenShiftのインストールにはAnsible Playbooksとロールが使用され、これらはatomic-openshift-utilsパッケージに含まれています。

インストール前の準備

OpenShiftをインストールするには、クラスターのホストサーバーを準備する必要があります。インストールが始まる前に以下の準備を行います:
  1. パスワードレスSSHの設定: リモートの全てのマシンにおいて、ユーザーアカウントのパスワードなしSSH接続を設定します。また、リモートユーザーがrootでない場合、そのユーザーにはsudo権限を設定します。
  1. 通信確認: マスターサーバーとノードサーバー間で通信ができることを確認します。pingコマンドを使用して、ホスト間の通信ができるかどうかを確認します。
    1. ワイルドカードDNSゾーンの設定: OpenShiftルーターコンポーネントが動作するノードのIPアドレスに解決するワイルドカードDNSゾーンを設定する必要があります。pingdigコマンドで確認します。
      1. 💡
        ワイルドカードDNSゾーンとは、特定のドメインに対するすべてのサブドメインを一括して指定できるDNSの設定です。たとえば、*.example.comというワイルドカードDNSゾーンを設定すると、foo.example.combar.example.comなど、example.comのすべてのサブドメインに対して同じIPアドレスやサービスを割り当てることができます。
        OpenShiftのようなクラスタ環境では、動的に増減するサービスに対応するため、ワイルドカードDNSを使って、サブドメインをすべて一つのIPアドレス(通常はルーターのIPアドレス)に解決させることがあります。これにより、個別にDNSレコードを管理する必要がなくなり、運用が簡便になります。
         
    1. サーバーの準備: サーバーはRed Hat Enterprise Linux 7.3、7.4、または7.5である必要があります。各ホストはRed Hat Subscription Management(RHSM)を使用して登録され、OpenShift Container Platformのサブスクリプションに紐付けられます。
    1. 必須リポジトリの有効化: 必要なリポジトリが有効になっていることを確認します。rhel-7-server-rpms以外にも、rhel-7-server-extras-rpmsrhel-7-server-ansible-2.4-rpmsなどを有効にします。

    Ansibleのインストール

    1. リポジトリの有効化subscription-managerコマンドを使用して、Ansibleのリポジトリを有効化します。
      1. Ansibleのインストール: リポジトリを有効化した後、yumコマンドを使ってAnsibleをインストールします。

        Ansible Playbooksの使用

        Ansible Playbooksは、構成タスクを自動化するために使用されます。PlaybookはYAML形式で書かれ、複数のプレイ(tasksの集まり)を含みます。各プレイは指定されたホストグループに対してタスクを実行します。

        Ansible Playbookの例:

        • 最初のプレイ「Install a File」では、workstationsホストグループの各サーバーに対して/tmp/sample.txtというファイルをコピーします。
        • 2番目のプレイ「Hello OpenShift Enterprise v3.x」では、OSEv3ホストグループのサーバーにhelloロールを適用します。

        Ansibleインベントリファイル

        インベントリファイルは、実行するプレイブックに関連するホストグループを定義します。以下のように、各ホストグループを定義し、それぞれのホストに必要な設定を行います。
        1. ワークステーションホストグループの定義
            • workstations というホストグループを定義する。
            • このホストグループには workstation.lab.example.com という 1 台のホストが含まれる。
        1. ホスト変数の定義
            • ホストごとに変数(ホスト変数)を定義できる。
            • ホスト変数の値は、同じ名前のグループ変数よりも優先される。
            • 例として、master.lab.example.comhello_message 変数の値は "I am an OSEv3 master." となる。
        1. ホストグループの入れ子構造
            • ホストグループは、他のホストグループを含むことができる。
            • ホストグループ名に :children を付けると、その後のリストにあるグループがメンバーとなる。
            • 例えば、OSEv3 グループには、指定された 4 つのホストグループのいずれかに所属するホストが含まれる。
        1. グループ変数の定義
            • ホストグループ名に :vars を付けると、その後のリストがグループ変数として定義される。
            • グループに属するすべてのホストに、この変数が適用される。
            • 例えば、ある Playbook の hello ロールが hello_message 変数を使用する場合、OSEv3 グループに属する全ホストでこの変数を定義する必要がある。

        Ansible Playbook の実行

        このクラスでは、関連する Playbook のファイルはプロジェクトディレクトリ内に整理されています。シンプルな Playbook プロジェクトには、次のようなファイルやディレクトリが含まれます:
        • インベントリファイル
        • playbooks ディレクトリ(Playbook の数が少ない場合は省略可能)
        • ansible.cfg ファイル(Ansible のコマンドラインツールの動作をカスタマイズするための設定ファイル)
          • SSH の設定を定義
          • Playbook のデフォルトのインベントリファイルを指定
        このクラスでは、ansible.cfg ファイルは次のような設定になっています:
        この設定により、Ansible は各タスクの実行時に SSH を使用して student ユーザーで接続し、その後 root ユーザーに昇格 します。
        また、インベントリファイルは ansible.cfg と同じディレクトリにある inventory ファイルを使用します。

        Playbook の実行方法

        このプロジェクト構成では、Playbook の実行が簡単になります。
        ターミナルでプロジェクトのルートディレクトリに移動し、以下のコマンドを実行すると Playbook が実行されます:
        異なるインベントリファイルを使用して Playbook を実行する場合 は、-i オプションを指定します:

        環境の準備

        Playbook を実行する前に、以下の条件を満たしていることを確認してください:
        • パスワードなしの SSH 接続が設定されていること
          • すべてのリモートマシンのユーザーアカウントで、パスワードなしで SSH 接続できるように設定する必要があります。
          • リモートユーザーが root ではない場合、パスワードなしで sudo が実行できるように権限を付与する必要があります。
          • クラス環境では、student ユーザーがこの要件を満たしています。
        • マスターとノード間で通信できること
          • マスターとノードが相互に通信できることを確認してください。
          • ping コマンドを使用すると、接続が可能かどうかをテストできます:
        このようにして、環境を適切に準備したうえで Ansible Playbook を実行できます。

        ワイルドカード DNS ゾーンの設定と OpenShift の事前準備

        ワイルドカード DNS ゾーンの設定

        • OpenShift のルーターコンポーネントが動作するノードの IP アドレスに、ワイルドカード DNS ゾーンが解決される必要があります。
        • これを確認するには、ping または dig コマンドを使用し、ドメイン内に存在しないホスト名を指定して実行します。
        • 例えば、クラス環境では apps.lab.example.com というワイルドカードドメインが OpenShift 上で稼働するすべてのアプリケーションに使用されます。
          • ワイルドカード DNS ゾーンの設定について
            • RHCSA (Red Hat Certified System Administrator) または同等のスキルを持つシステム管理者であれば、サーバーの設定を行い、ほとんどの要件を満たすことができます。
            • ただし、ワイルドカード DNS ゾーンの設定には、DNS サーバー管理に関する高度な知識が必要なため、経験豊富なシステム管理者の支援が必要になる可能性があります。
            • OpenShift のルーターは OpenShift ノード上で動作するため、適切なノードの IP アドレスで DNS を設定する計画を立てる必要があります。

          OpenShift の高度なインストール方法と事前要件

          OpenShift の高度なインストール方法では、追加の事前要件が必要です。
          クラス環境では、これらの要件を満たすために Ansible Playbook が用意されています。この Playbook を実行すると、次の要件を満たすことができます。

          1. OpenShift クラスタの OS 要件

          • 各 OpenShift Container Platform クラスタのマシンは Red Hat Enterprise Linux 7.3、7.4、または 7.5 を使用すること。

          2. サブスクリプションの登録

          • 各 OpenShift クラスタホスト(マスターおよびノード)は、Red Hat Subscription Management (RHSM) に登録されている必要があります(RHN Classic は使用しない)。
            • 各ホストには、有効な OpenShift Container Platform のサブスクリプションが付与されていること。

              3. 必要なリポジトリの有効化

              • 必要なリポジトリのみを有効化 し、それ以外は無効にすること。
              • 有効にするリポジトリ:
                • 標準の RHEL リポジトリ: rhel-7-server-rpms
                • 追加のリポジトリ:
                  • これらのリポジトリは、OpenShift Container Platform のインストールに必要なパッケージを提供します。
                  • すべてのマスターおよびノードに対して、この設定を適用する必要があります。

                4. 必要なパッケージのインストール

                各 OpenShift ホストに、以下の基本パッケージをインストールします。
                • atomic-openshift-utils パッケージ
                  • 高度なインストール方法では、Ansible Playbook やその他のインストールユーティリティ を利用するため、atomic-openshift-utils をインストールする必要があります。

                5. Docker のインストールと設定

                • 各 OpenShift ホストに docker をインストールし、適切に設定すること。
                • デフォルトの Docker 設定
                  • デフォルトでは、Docker デーモンは thin pool を loopback デバイス上で使用 してコンテナイメージを保存します。
                • 本番環境での推奨設定
                  • Red Hat OpenShift の本番環境では、loopback デバイスではなく thin pool 論理ボリュームを使用する必要があります。
                  • thin pool を loopback とは?

                    1. thin pool とは?

                    thin pool(シンプロビジョニングプール) は、LVM(Logical Volume Manager) の一部として提供される シンプロビジョニング の技術です。
                    シンプロビジョニングを使用すると、実際の物理ストレージよりも大きな仮想ストレージを作成 でき、必要に応じてストレージを動的に割り当てることができます。
                    Docker では、devicemapper ストレージドライバーを使用する場合に thin pool を利用してコンテナイメージやレイヤーを管理します。
                  • thin pool を loopback で使用する → ファイルベースの仮想ディスクを使う(デフォルト・簡単だが遅い)
                  • thin pool を LVM で設定する → 物理ディスクを使う(本番環境向き・高速・安定)
                  • docker-storage-setup コマンドを使用して、適切なストレージをセットアップします。
                  • 詳細な Docker ストレージの設定方法については、Red Hat OpenShift の公式ドキュメント を参照してください。

                ホストの準備タスクの実行

                クラス環境では、OpenShift Container Platform のインストール前に必要な準備作業を 自動化する Ansible Playbook (prepare_install.yml) が提供されています。
                この Playbook を実行すると、インストールの事前準備が完了します。
                この Playbook を実行することで、Red Hat OpenShift Container Platform をインストールするための環境が整います。

                注意事項

                prepare_install.yml ファイルは、クラス環境専用に作成されたカスタム Playbook です。
                この Playbook は、公式のリポジトリやパッケージには含まれていません。
                この prepare_install.yml Playbook を実行すると、以下の処理が実行されます:
                • Docker デーモンがインストールされる。
                • Docker デーモンのストレージが適切に設定される。
                • 各ノードがプライベートレジストリの証明書を信頼できるように設定される。
                • OpenShift に必要な基本パッケージがインストールされる。

                参考資料

                 
                相关文章
                RedHat EX200 本番近い試験問題集
                Lazy loaded image
                RedHat EX200 本番試験問題集(有料版)
                Lazy loaded image
                82- 第17章:導入総復習-3:OpenShiftにマルチコンテナデプロイのラボ
                Lazy loaded image
                81- 第17章:導入総復習-2:docker,KubernetesおよびOpenShiftのラボ
                Lazy loaded image
                80- 第17章:導入総復習-1:総合レビュー
                Lazy loaded image
                79- 第16章:OpenShiftの管理と監視-8:ラボ
                Lazy loaded image
                24- 第7章:OpenShiftインストール-2:Ansibleの用意の演習22- 第6章:マルチコンテナアプリケーションの展開-2:コンテナのデプロイの演習
                Loading...
                みなみ
                みなみ
                一个普通的干饭人🍚
                最新发布
                35条書面-64問-1
                2025年6月13日
                TOKYO自習島
                2025年6月10日
                平成26年秋期 午後問1
                2025年6月6日
                令和5年秋期 午後問1
                2025年6月6日
                令和2年秋期 午後問1
                2025年6月6日
                業務上の規制-87問-1
                2025年6月4日
                公告

                🎉 欢迎访问我的博客 🎉

                🙏 感谢您的支持 🙏

                📅 本站自 2024年9月1日 建立,致力于分享在 IT・MBA・不动产中介 等领域的学习与实践,并推动 学习会 的自主开展。
                📖 博客语言使用比例
                🇯🇵 日语 90% 🇨🇳 中文 8% 🇬🇧 英语 2%

                📚 主要内容

                💻 IT・系统与开发

                • 系统管理:Red Hat 等
                • 容器与编排:Kubernetes、OpenShift
                • 云计算:AWS、IBM Cloud
                • AI 入门:人工智能基础与实践
                • 技术笔记与考证经验

                🏠 不动产 × 宅建士

                • 宅建士考试笔记

                🎓 MBA 学习笔记

                • 管理学、经济学、财务分析等

                🔍 快速查找内容(标签分类)

                由于网站目前没有专门的设计,可能会导致查找信息不便。为了更快找到你感兴趣的内容,推荐使用以下标签功能 进行搜索!
                📌 定期更新,欢迎常来看看!
                📬 有任何建议或想法,也欢迎留言交流!