OKDは、RedHatのOpenShiftコンテナープラットフォームのオープンソースアップストリームコミュニティエディションです。 OKDは、DockerとKubernetesに基づくコンテナ管理およびオーケストレーションプラットフォームです。
OKDは、コンテナ化されたアプリケーションを管理、デプロイ、運用するための完全なソリューションであり、(Kubernetesが提供する機能に加えて)使いやすいウェブインターフェース、自動ビルドツール、ルーティング機能、モニタリングとログの集計機能が含まれています。
OKDは、単一または複数のマスターノード、高可用性機能、ロギング、モニタリングなど、さまざまな要件を対象としたいくつかのデプロイメントオプションを提供します。 OKDクラスターは必要なだけ小さくまたは大きく作成できます。
Linuxコンテナ
- Linuxコンテナとは何ですか?
- コンテナ用語の概要
- ダウンロード:Containers Primer
- Kubernetesオペレーター:コンテナオーケストレーションプラットフォームの自動化
- eBook:クラウドネイティブアプリを設計するためのKubernetesパターン
- Kubernetesとは何ですか?
これらの展開オプションに加えて、OKDは、 oc を使用して、自分のマシン上にローカルのオールインワンクラスターを作成する方法を提供します。 コマンドラインツール。これは、リソースをコミットせずにローカルでOKDを試して、より大きなマルチノードクラスターを作成する場合、またはワークフローまたは開発プロセスの一部としてマシンにローカルクラスターを配置する場合に最適なオプションです。この場合、アプリケーションを大規模にデプロイするために必要なものと同じAPIとインターフェースを使用して、アプリケーションをローカルで作成およびデプロイできます。このプロセスにより、開発者の環境では機能するが本番環境では機能しないアプリケーションの問題を防ぐシームレスな統合が保証されます。
このチュートリアルでは、 oc cluster upを使用してOKDクラスターを作成する方法を説明します。 Linuxボックスで。
1。 Dockerをインストールする
ocクラスターアップ コマンドは、Dockerコンテナーを使用してマシン上にローカルOKDクラスターを作成します。このコマンドを使用するには、マシンにDockerがインストールされている必要があります。 OKDバージョン3.9以降では、Docker1.13が最小推奨バージョンです。 Dockerがシステムにインストールされていない場合は、ディストリビューションパッケージマネージャーを使用してインストールしてください。たとえば、CentOSまたはRHELでは、次のコマンドを使用してDockerをインストールします。
$ sudo yum install -y docker
Fedoraでは、dnfを使用します:
$ sudo dnf install -y docker
これにより、Dockerと必要なすべての依存関係がインストールされます。
2。 Dockerの安全でないレジストリを構成する
Dockerをインストールしたら、アドレス172.30.0.0/16の安全でないレジストリとの通信を許可するようにDockerを構成する必要があります。この安全でないレジストリーは、後でローカルOKDクラスターとともにデプロイされます。
CentOSまたはRHELで、ファイル /etc/docker/daemon.jsonを編集します 次の行を追加します:
{
"insecure-registries":["172.30.0.0/16"]
}
Fedoraで、ファイル /etc/containers/registries.confを編集します 次の行を追加します:
[registries.insecure]
レジストリ=['172.30.0.0/16']
3。 Dockerを起動する
Dockerを起動する前に、 dockerという名前のシステムグループを作成します このグループをユーザーに割り当てて、rootまたはsudoアクセスを必要とせずに、自分のユーザーでDockerコマンドを実行できるようにします。これにより、独自のユーザーを使用してOKDクラスターを作成できます。
たとえば、これらはグループを作成してローカルユーザー ricardoに割り当てるコマンドです。 :
$ sudo groupadd docker
$ sudo usermod -a -G docker ricardo
新しいグループの関連付けを表示するには、ログアウトしてから再度ログインする必要があります。再度ログインした後、 idを実行します コマンドを実行し、 dockerのメンバーであることを確認します グループ:
$ id
uid =1000(ricardo)gid =1000(ricardo)groups =1000(ricardo)、10(wheel)、1001(docker)
context =unconfined_u:unconfined_r:unconfined_t:s0 -s0:c0.c1023
次に、次のようにDockerデーモンを起動して有効にします。
$ sudo systemctl start docker
$ sudo systemctl enable docker
/etc/systemd/system/multi-user.target.wants/docker.serviceから/usr/ lib /systemd/へのsymlinkを作成しましたsystem/docker.service。
Dockerが実行されていることを確認します:
$ dockerバージョン
クライアント:
バージョン:1.13.1
APIバージョン:1.26
パッケージバージョン:docker-1.13.1-75.git8633870.el7.centos。 x86_64
Goバージョン:go1.9.4
Git commit:8633870 / 1.13.1
ビルド:Fri Sep 28 19:45:08 2018
OS / Arch:linux / amd64
サーバー:
バージョン:1.13.1
APIバージョン:1.26(最小バージョン1.12)
パッケージバージョン:docker-1.13.1-75.git8633870.el7。 centos.x86_64
Goバージョン:go1.9.4
Git commit:8633870 / 1.13.1
ビルド:Fri Sep 28 19:45:08 2018
OS / Arch:linux / amd64
実験的:false
docker info を実行して、安全でないレジストリオプションが有効になっていることを確認します そしてこれらの行を探します:
$ docker info
...長い出力をスキップしています...
安全でないレジストリ:
172.30.0.0/16
127.0.0.0/8
4。ファイアウォールポートを開く
次に、ファイアウォールポートを開いて、OKDコンテナがマスターAPIと通信できることを確認します。デフォルトでは、一部のディストリビューションではファイアウォールが有効になっているため、OKDコンテナからマスターAPIへの必要な接続がブロックされます。システムでファイアウォールが有効になっている場合は、ポート 8443 / tcpでの通信を許可するルールを追加する必要があります マスターAPIと53/ udp DockerブリッジサブネットでのDNS解決用。
CentOS、RHEL、およびFedoraの場合、ファイアウォール-cmdを使用できます。 ルールを追加するためのコマンドラインツール。他のディストリビューションでは、UFWやiptablesなどの提供されているファイアウォールマネージャーを使用できます。
ファイアウォールルールを追加する前に、次のようにDockerブリッジネットワークサブネットのアドレスを取得します。
$ docker network inspect bridge | grepサブネット
「サブネット」:「172.17.0.0/16」、
このサブネットを使用してファイアウォールルールを有効にします。 CentOS、RHEL、およびFedoraの場合は、ファイアウォール-cmdを使用します 新しいゾーンを追加するには:
$ sudo Firewall-cmd --permanent --new-zone okdlocal
success
以前に取得したサブネットアドレスを新しいゾーンの送信元として含めます:
$ sudo Firewall-cmd --permanent --zone okdlocal --add-source 172.17.0.0/16
success
次に、必要なルールを okdlocalに追加します ゾーン:
$ sudo Firewall-cmd --permanent --zone okdlocal --add-port 8443 / tcp
success
$ sudo Firewall-cmd --permanent --zone okdlocal --add-port 53 / udp
success
$ sudo Firewall-cmd --permanent --zone okdlocal --add-port 8053 / udp
success
最後に、ファイアウォールをリロードして、新しいルールを有効にします。
$ sudo Firewall-cmd --reload
success
新しいゾーンとルールが設定されていることを確認します:
$ sudo Firewall-cmd --zone okdlocal --list-sources
172.17.0.0/16
$ sudo Firewall-cmd --zone okdlocal --list-ports
8443 / tcp 53 / udp 8053 / udp
システムはクラスターを開始する準備ができています。 OKDクライアントツールをダウンロードする時が来ました。
5。 OKDクライアントツールをダウンロードする
ocを使用してローカルOKDクラスターをデプロイするには 、OKDクライアントツールパッケージをダウンロードする必要があります。 CentOSやFedoraなどの一部のディストリビューションでは、このパッケージを公式リポジトリからRPMとしてダウンロードできます。これらのパッケージは配布の更新サイクルに従う可能性があり、通常は入手可能な最新バージョンではないことに注意してください。
このチュートリアルでは、公式のGitHubリポジトリからOKDクライアントパッケージを直接ダウンロードして、利用可能な最新バージョンを入手できるようにします。これを書いている時点では、これはOKDv3.11でした。
OKDダウンロードページに移動してLinux用のOKDツールへのリンクを取得し、 wgetでダウンロードします。 :
$ cd〜/ Downloads /
$ wget https://github.com/openshift/origin/releases/download/v3.11.0/openshift-origin-client-tools-v3.11.0-0cbc58b-linux -64bit.tar.gz
ダウンロードしたパッケージを解凍します:
$ tar -xzvf openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit.tar.gz
最後に、 ocを使いやすくするため システム全体でコマンドを実行し、 $ PATHに含まれているディレクトリに移動します 変数。適切な場所は/usr / local / bin :
$ sudo cp openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit/oc /usr/local/bin/
ocの最も優れた機能の1つ コマンドは、静的な単一のバイナリであるということです。使用するためにインストールする必要はありません。
oc コマンドが機能しています:
$ocバージョン
ocv3.11.0 + 0cbc58b
kubernetes v1.11.0 + d4cacc0
機能:基本認証GSSAPI Kerberos SPNEGO
6。 OKDクラスターを開始します
すべての前提条件が整ったら、次のコマンドを実行してローカルOKDクラスターを開始します:
$ oc cluster up
このコマンドは、ローカルのDockerデーモンに接続し、Docker Hubから必要なすべてのイメージをダウンロードして、コンテナーを起動します。初めて実行するときは、完了するまでに数分かかります。完了すると、次のメッセージが表示されます:
...長い出力をスキップしています...
OpenShiftサーバーが起動しました。
サーバーには、次のWebコンソールからアクセスできます:
https://127.0 .0.1:8443
次のようにログインしています:
ユーザー:開発者
パスワード:<任意の値>
管理者としてログインするには:
oc login -u system:admin
ブラウザを使用してhttps://127.0.0.1:8443:
に移動し、OKDWebコンソールにアクセスします。
コマンドラインから、次のコマンドを入力して、クラスターが実行されているかどうかを確認できます。
$ oc cluster status
WebコンソールのURL:https://127.0.0.1:8443 / console /
構成はホストディレクトリにあります
ボリュームはホストディレクトリにあります
永続ボリュームはホストディレクトリ/home/ricardo/openshift.local.clusterup/openshift.local.pvにあります
クラスターが破棄されるとデータは破棄されます
system:admin としてログインして、クラスタが機能していることを確認することもできます。 ユーザーとocを使用した利用可能なノードの確認 コマンドラインツール:
$ oc login -u system:admin
既存の資格情報を使用して、「system:admin」として「https://127.0.0.1:8443」にログインしました。
次のプロジェクトで、「oc project」を使用して切り替えることができます:
default
kube-dns
kube-proxy
kube-public
kube-system
* myproject
openshift
openshift-apiserver
openshift-controller-manager
openshift-core-operators
openshift-infra
openshift-node
openshift-service-cert-signer
openshift-web-console
プロジェクト「myproject」を使用します。
$ oc get node
名前ステータスロール年齢バージョン
localhost準備完了<なし>52mv1.11.0 + d4cacc0
これはローカルのオールインワンクラスターであるため、 localhostのみが表示されます ノードリストにあります。
7。クラスターのスモークテスト
ローカルOKDクラスターが実行されているので、スモークテストを行うためのテストアプリを作成します。 OKDを使用してサンプルアプリケーションをビルドして起動し、さまざまなコンポーネントが機能していることを確認します。
開発者としてログインすることから始めます ユーザー:
$ oc login -udeveloper
既存の資格情報を使用して「developer」として「https://127.0.0.1:8443」にログインしました。
このサーバーには、次の1つのプロジェクトがあります。 「myproject」
プロジェクト「myproject」を使用します。
myprojectという名前の新しい空のプロジェクトに自動的に割り当てられます 。次のように、既存のGitHubリポジトリに基づいてサンプルPHPアプリケーションを作成します。
$ oc new-app php:5.6〜https://github.com/rgerardi/ocp-smoke-test.git>
->画像ストリーム「openshift/」で画像92ed8b3(5か月前)が見つかりました「php:5.6」のタグ「5.6」の下にある「php」
PHP5.6を使用したApache2.4
-------------------- ---
コンテナとして利用可能なPHP5.6は、さまざまなPHP5.6アプリケーションおよびフレームワークを構築および実行するためのベースプラットフォームです。 PHPは、HTMLが埋め込まれたスクリプト言語です。 PHPは、開発者が動的に生成されたWebページを簡単に作成できるようにしようとしています。 PHPは、いくつかの商用および非商用のデータベース管理システムに組み込みのデータベース統合も提供するため、PHPを使用してデータベース対応のWebページを作成するのは非常に簡単です。 PHPコーディングの最も一般的な使用法は、おそらくCGIスクリプトの代わりです。
タグ:builder、php、php56、rh-php56
*ソースコードを使用したソースビルドhttps://github.com/rgerardi/ocp-smoke-test.gitから作成されます
*結果の画像は画像ストリームタグ「ocp-smoke-test:latest」にプッシュされます
* 'start-build'を使用して新しいビルドをトリガーします
*このイメージはデプロイメント構成「ocp-smoke-test」にデプロイされます
*ポート8080/tcp、8443/tcpはサービスによって負荷分散されます"ocp-smoke-test"
*他のコンテナは、ホスト名 "ocp-smoke-test"
->リソースの作成...
imagestreamを介してこのサービスにアクセスできます。 image.openshift.io"ocp-smoke-test"が作成されました
buildconfig.build.openshift.io"ocp-smoke-test"が作成されました
deploymentconfig.apps.openshift.io"ocp-smoke-test"作成済み
サービス「ocp-smoke-test」作成済み
->成功
ビルドがスケジュールされています。'oclogs-f bc/ocp-smokeを使用してください-進行状況を追跡するためのテスト'。
アプリケーションは公開されていません。以下のコマンドを1つ以上実行することで、サービスを外部に公開できます。
'oc export svc / ocp-smoke-test'
'oc status'を実行して、アプリを表示します。
OKDはビルドプロセスを開始します。ビルドプロセスは、提供されたGitHubリポジトリのクローンを作成し、アプリケーションをコンパイルし(必要な場合)、必要なイメージを作成します。次のコマンドを使用してログを調整することで、ビルドプロセスを追跡できます。
$ oc logs -f bc / ocp-smoke-test
Cloning "https://github.com/rgerardi/ocp-smoke-test.git" ...
コミット:391a475713d01ab0afab700bab8a3d7549c5cc27( index.phpを作成)
作成者:Ricardo Gerardi
日付:Tue Oct 2 13:47:25 2018 -0400
Using 172.30.1.1:5000/ openshift / php @ sha256:f3c95020fa870fcefa7d1440d07a2b947834b87bdaf000588e84ef4a599c7546s2iビルダーイメージとして
--->アプリケーションソースをインストールしています...
=>ソーシング20-copy-config.sh...
--->04:53:28s2iによって提供される追加の任意のhttpd設定を処理しています...
=>ソーシング00-documentroot.conf...
=>ソーシング50-mpm-tuning.conf...
=>ソーシング40-ssl-certs.sh...
プッシュイメージ172.30.1.1:5000 / myproject / ocp-smoke-test:latest ...
プッシュされた1/10レイヤー、 10%完了
プッシュ成功
ビルドプロセスが完了すると、OKDは、作成されたイメージに基づいて新しいポッドを実行することにより、アプリケーションを自動的に起動します。この新しいポッドは、次のコマンドで確認できます:
$ oc get pods
NAME READY STATUS RESTARTS AGE
ocp-smoke-test-1-build 0/1 -m -1-p 0-1 1実行中07秒
2つのポッドが作成されていることがわかります。最初のもの(ステータスは完了)は、アプリケーションのビルドに使用されるポッドです。 2番目(ステータスがRunning)は、アプリケーション自体です。
さらに、OKDはこのアプリケーションのサービスを作成します。次のコマンドを使用して確認します:
$ oc get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S)AGE
ocp-smoke-test ClusterIP 172.30.232.241最後に、ローカルブラウザからアプリケーションにアクセスできるように、OKDルートを使用してこのサービスを外部に公開します。
$ oc Exposure svc ocp-smoke-test
route.route.openshift.io / ocp-smoke-test expected
$ oc get route
NAMEホスト/ポートパスサービスポート終了ワイルドカード
ocp-smoke-testocp-smoke-test-myproject.127.0.0.1.nip.io ocp-smoke-test 8080-tWebブラウザでhttp://ocp-smoke-test-myproject.127.0.0.1.nip.ioに移動して、新しいアプリケーションが実行されていることを確認します。
OKD Webコンソールにログインして、アプリケーションのステータスを確認することもできます。
詳細h2> OKDの詳細については、公式サイトを参照してください。これには、OKDドキュメントへのリンクが含まれています。
OKD / OpenShiftを初めて使用する場合は、Interactive Learning Portalを使用して、コンテナー化されたアプリケーションの構築とデプロイの方法など、プラットフォームの基本を学ぶことができます。もう1つの優れたリソースは、公式のOpenShiftYouTubeチャンネルです。
Linux