第3章 OpenShift Container Platform の設定
3.1. 概要
本書では、OpenShift Container Platform に関する基本的な概念を紹介し、基本的なアプリケーションを設定できるようになります。本書は、「OpenShift Container Platform の基本環境のインストール」に沿った設定手順であるため、OpenShift の実稼働環境のデプロイやインストールには適していません。
3.2. ログイン ID プロバイダーの変更
OpenShift Container Platform インスタンスを新規インストールした場合のデフォルトの動作は、全ユーザーのログインを拒否します。この認証方法を HTPasswd に変更するには、以下を実行します。
- /etc/origin/master/master-config.yaml ファイルを編集モードで開きます。
-
identityProviders
のセクションを検索します。 -
DenyAllPasswordIdentityProvider
をHTPasswdPasswordIdentityProvider
プロバイダーに変更します。 名前ラベルの値を
htpasswd_auth
に変更し、プロバイダーセクションにfile: /etc/origin/openshift-passwd
の新しい行を追加します。identityProviders
セクションにHTPasswdPasswordIdentityProvider
を指定した例は、以下のようになります。oauthConfig: ... identityProviders: - challenge: true login: true name: htpasswd_auth provider provider: apiVersion: v1 kind: HTPasswdPasswordIdentityProvider file: /etc/origin/openshift-passwd
- ファイルを保存します。
3.3. ユーザーアカウントの作成
HTPasswdPasswordIdentityProvider
プロバイダーを使用できるようになったので、これらのユーザーアカウントを作成する必要があります。
httpd-tools パッケージを使用して、これらのアカウントを生成可能な htpasswd バイナリーを取得できます。
# yum -y install httpd-tools
ユーザーアカウントを作成します。
# touch /etc/origin/openshift-passwd # htpasswd -b /etc/origin/openshift-passwd admin redhat
パスワードが
redhat
のadmin
というユーザーを作成しました。続行する前に OpenShift を再起動します。
# systemctl restart atomic-openshift-master-api atomic-openshift-master-controllers
このユーザーアカウントに
cluster-admin
の特権を指定して、あらゆる操作ができるようにします。$ oc adm policy add-cluster-role-to-user cluster-admin admin
oc adm
コマンドの実行時は、Ansible ホストのインベントリーファイルに記載されている最初のマスターからのみ実行する必要があります。デフォルトは、/etc/ansible/hosts です。Web コンソールやコマンドラインから、このユーザー名/パスワードの組み合わせを使用してログインします。これをテストするには、以下のコマンドを実行します。
$ oc login -u admin
default
プロジェクトに変更してから、次に進みます。
$ oc project default
詳細は、「roles」および「authentication」を参照してください。
3.4. OpenShift ルーターのデプロイ
OpenShift ルーターは、OpenShift サービスが宛先の外部ネットワークトラフィックのエントリーポイントとなります。SNI を使用する HTTP、HTTPS および TLS トラフィックをサポートし、ルーターが正しいサービスにトラフィックを送信できるようにします。
ルーターなしでは、OpenShift サービスと pod は、OpenShift インスタンスの外部にあるリソースと通信できません。
インストーラーにより、デフォルトのルーターが作成されます。
以下のコマンドを使用してデフォルトのルーターを削除します。
$ oc delete all -l router=router
新しいデフォルトのルーターを作成します。
$ oc adm router --replicas=1 --service-account=router
OpenShift ドキュメントには、「Router Overview」に関する詳細情報が含まれます。
3.5. 内部レジストリーのデプロイ
Openshift には、内部の「integrated Docker registry」がある、このレジストリーをデプロイして、イメージをローカルで管理できます。また、OpenShift は docker-registry を使用して、Docker イメージの保存、取得、ビルドだけでなく、ライフサイクル全体でイメージをデプロイ、管理します。
インストーラーは、デフォルトのレジストリーを作成します。
以下のコマンドを使用して、デフォルトのレジストリーを削除します。
$ oc delete all -l docker-registry=default
registry サービスアカウントを使用して、default プロジェクトに docker-registry サービスを作成します。
$ oc adm registry
3.6. レジストリー用の永続ストレージの作成
以前の手順で作成したレジストリーは、イメージとメタデータを保存し、永続ストレージが設定されていない場合には pod のデプロイメント用に一時ボリュームを使用します。この一時ボリュームは、pod が終了した時点で破棄され、レジストリーにビルドまたはプッシュされたイメージなど、すべてのデータが失われます。
レジストリー用に永続ストレージを設定するには、以下を実行します。
- お使いのネットワーク上にあるストレージサーバーを参照するボリュームをプロビジョニングします (ここではマスターにボリュームを作成します)。
- Volume Claim (ボリューム要求) を作成します。
- レジストリーサービスに要求を手動で追加します。
レジストリー用の永続ストレージのを設定する以下の手順は、レジストリーだけでなく、永続データ必要とするイメージ用のストレージにも該当します。レジストリーは、OpenShift 環境ではイメージの 1 つにすぎません。
3.6.1. 永続ボリュームのプロビジョニング
ここで記載されているように、レジストリーのボリュームファイルを作成して、registry-volume.yaml という名前を指定します。
apiVersion: v1 kind: PersistentVolume metadata: name: registry-volume spec: capacity: storage: 3Gi accessModes: - ReadWriteMany nfs: path: /root/storage server: master.openshift.example.com
/root/storage というフォルダーは、必要です。サーバーエントリーがマスターを参照するように変更してください。
OpenShift でレジストリーの永続ボリュームを作成します。
$ oc create -f registry-volume.yaml
3.6.2. Persistent Volume Claim (永続ボリューム要求) の作成
さきほど作成した永続ボリュームをバインドするための要求を作成します。この要求を使用して、レジストリーサービスと永続ボリュームをリンクします。
registry-volume-claim.yaml と呼ばれる別のファイルを作成します。
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: registry-volume-claim spec: accessModes: - ReadWriteMany resources: requests: storage: 3Gi
要求を作成します。
$ oc create -f registry-volume-claim.yaml
永続ボリュームと Persistent Volume Claim (永続ボリューム要求) が作成されましたので、この要求をレジストリーに追加する必要があります。
3.6.3. Persistent Volume Claim (永続ボリューム要求) のレジストリーへの追加
$ oc volume dc/docker-registry \
--add --overwrite -t persistentVolumeClaim \
--claim-name=registry-volume-claim \
--name=registry-storage
これで、docker-registry は、イメージとメタデータの保存用に作成した 3 GB の永続ボリュームを使用するようになります。