3.2. サービスの公開
3.2.1. 概要
OpenShift にデプロイした後にサービスを公開する方法は複数あります。以下のセクションでは、さまざまな方法とそれらを使用するタイミングを説明します。
3.2.2. ルート
Web アプリケーションをデプロイする場合、そのアプリケーションを公開する最も一般的な方法は ルート による方法です。ルートはサービスをホスト名として公開します。Web コンソールまたは CLI を使用してルートを作成できます。
$ oc expose svc/frontend --hostname=www.example.com
アプリケーションを作成し、これをルートで公開する完全な例は、「サンプルアプリケーションのデプロイ」セクションを参照してください。
3.2.3. NodePort サービス
公開するサービスが HTTP ベースではない場合には、NodePort サービスを作成できます。この場合、各 OpenShift ノードは、そのポートをサービスにプロキシーします。CDK 仮想マシンでこのポートにアクセスするには、type=LoadBalancer
パラメーターで oc expose
を使用して Ingress IP を設定する必要があります。
Ingress IP Self-Service の一般的なユースケースは、データベースサービスを公開する機能です。CDK を使用して MariaDB インスタンスを作成および公開する完全なワークフローの例を以下に示します。
$ minishift start $ eval $(minishift oc-env) $ oc new-app -e MYSQL_ROOT_PASSWORD=admin https://raw.githubusercontent.com/openshift/origin/master/examples/db-templates/mariadb-persistent-template.json $ oc rollout status -w dc/mariadb $ oc expose dc mariadb --type=LoadBalancer --name=mariadb-ingress $ oc export svc mariadb-ingress .... ports: - nodePort: 30907 ....
サービスが公開されると、CDK 仮想マシン IP および公開された NodePort サービスを使用して、CLI の mysql
で MariaDB にアクセスできます。
$ mysql --user=root --password=admin --host=$(minishift ip) --port=30907
3.2.4. ポート転送
3.2.4.1. oc port-forward
の使用
クラスターの特定の Pod のポートにすばやくアクセスする必要がある場合は、OpenShift CLI の oc port-forward
コマンドを使用することもできます。
$ oc port-forward POD [LOCAL_PORT:]REMOTE_PORT
3.2.4.2. VirtualBox ツールの使用
VirtualBox ドライバープラグインを使用している場合には、ポート転送に使用する別の方法があります。この方法では、永続的なポート転送だけでなく、複数のポートを同時に転送することができます。この方法では、上記のように nodePort
を設定する必要があります。
上記の例で説明する場合は、以下を行うことができます。
$ VBoxManage controlvm minishift natpf1 "mariadb,tcp,,3306,,30907"
これにより、localhost:3306
の mariadb サービスと通信できます。これは、デフォルトのポートを変更したくない場合に便利な場合があります。また、ポート転送というこの方法の重要な利点は、単一の Pod だけでなくサービスと通信できることです。