4.5. 初めてのイメージのデプロイ
OpenShift Container Platform でアプリケーションをデプロイする最も簡単な方法は、既存のコンテナーイメージを実行することです。以下の手順では、national-parks-app
という名前のアプリケーションのフロントエンドコンポーネントをデプロイします。Web アプリケーションは対話型のマップを表示します。マップには、全世界の主要な 国立公園の場所が表示されます。
前提条件
- OpenShift Container Platform クラスターへのアクセス。
-
OpenShift CLI (
oc
) がインストールされている。
手順
アプリケーションをデプロイするには、以下のコマンドを入力します。
$ oc new-app quay.io/openshiftroadshow/parksmap:latest --name=parksmap -l 'app=national-parks-app,component=parksmap,role=frontend,app.kubernetes.io/part-of=national-parks-app'
出力例
--> Found container image 0c2f55f (12 months old) from quay.io for "quay.io/openshiftroadshow/parksmap:latest" * An image stream tag will be created as "parksmap:latest" that will track this image --> Creating resources with label app=national-parks-app,app.kubernetes.io/part-of=national-parks-app,component=parksmap,role=frontend ... imagestream.image.openshift.io "parksmap" created deployment.apps "parksmap" created service "parksmap" created --> Success
関連情報
4.5.1. ルートの作成
外部クライアントは、ルーティング層を使用して OpenShift Container Platform で実行されているアプリケーションにアクセスできます。その背後にあるデータオブジェクトは ルート です。デフォルトの OpenShift Container Platform ルーター (HAProxy) は、受信リクエストの HTTP ヘッダーを使用して、接続をプロキシー処理する場所を決定します。
オプションとして、ルートに TLS などのセキュリティーを定義できます。
前提条件
- OpenShift Container Platform クラスターへのアクセス。
-
OpenShift CLI (
oc
) がインストールされている。 - イメージがデプロイされている。
-
cluster-admin
またはproject-admin
権限がある。
手順
作成したアプリケーションサービスを取得するには、以下のコマンドを入力します。
$ oc get service
出力例
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE parksmap ClusterIP <your-cluster-IP> <123.456.789> 8080/TCP 8m29s
ルートを作成するには、以下のコマンドを入力します。
$ oc create route edge parksmap --service=parksmap
出力例
route.route.openshift.io/parksmap created
作成したアプリケーションのルートを取得するには、以下のコマンドを入力します。
$ oc get route
出力例
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD parksmap parksmap-user-getting-started.apps.cluster.example.com parksmap 8080-tcp edge None
4.5.2. Pod の検証
OpenShift Container Platform は、Pod の Kubernetes の概念を活用しています。これはホスト上に共にデプロイされる 1 つ以上のコンテナーであり、定義、デプロイ、管理される最小のコンピュート単位です。Pod は、コンテナーに対して、 (物理または仮想) マシンインスタンスとほぼ同等のものです。
クラスターの Pod を表示し、それらの Pod およびクラスター全体としての正常性を判別できます。
前提条件
- OpenShift Container Platform クラスターへのアクセス。
-
OpenShift CLI (
oc
) がインストールされている。 - イメージがデプロイされている。
手順
ノード名と共にすべての Pod をリスト表示するには、以下のコマンドを入力します。
$ oc get pods
出力例
NAME READY STATUS RESTARTS AGE parksmap-5f9579955-6sng8 1/1 Running 0 77s
すべての Pod の詳細をリスト表示するには、以下のコマンドを入力します。
$ oc describe pods
出力例
Name: parksmap-848bd4954b-5pvcc Namespace: user-getting-started Priority: 0 Node: ci-ln-fr1rt92-72292-4fzf9-worker-a-g9g7c/10.0.128.4 Start Time: Sun, 13 Feb 2022 14:14:14 -0500 Labels: app=national-parks-app app.kubernetes.io/part-of=national-parks-app component=parksmap deployment=parksmap pod-template-hash=848bd4954b role=frontend Annotations: k8s.v1.cni.cncf.io/network-status: [{ "name": "openshift-sdn", "interface": "eth0", "ips": [ "10.131.0.14" ], "default": true, "dns": {} }] k8s.v1.cni.cncf.io/networks-status: [{ "name": "openshift-sdn", "interface": "eth0", "ips": [ "10.131.0.14" ], "default": true, "dns": {} }] openshift.io/generated-by: OpenShiftNewApp openshift.io/scc: restricted Status: Running IP: 10.131.0.14 IPs: IP: 10.131.0.14 Controlled By: ReplicaSet/parksmap-848bd4954b Containers: parksmap: Container ID: cri-o://4b2625d4f61861e33cc95ad6d455915ea8ff6b75e17650538cc33c1e3e26aeb8 Image: quay.io/openshiftroadshow/parksmap@sha256:89d1e324846cb431df9039e1a7fd0ed2ba0c51aafbae73f2abd70a83d5fa173b Image ID: quay.io/openshiftroadshow/parksmap@sha256:89d1e324846cb431df9039e1a7fd0ed2ba0c51aafbae73f2abd70a83d5fa173b Port: 8080/TCP Host Port: 0/TCP State: Running Started: Sun, 13 Feb 2022 14:14:25 -0500 Ready: True Restart Count: 0 Environment: <none> Mounts: /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-6f844 (ro) Conditions: Type Status Initialized True Ready True ContainersReady True PodScheduled True Volumes: kube-api-access-6f844: Type: Projected (a volume that contains injected data from multiple sources) TokenExpirationSeconds: 3607 ConfigMapName: kube-root-ca.crt ConfigMapOptional: <nil> DownwardAPI: true ConfigMapName: openshift-service-ca.crt ConfigMapOptional: <nil> QoS Class: BestEffort Node-Selectors: <none> Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s node.kubernetes.io/unreachable:NoExecute op=Exists for 300s Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 46s default-scheduler Successfully assigned user-getting-started/parksmap-848bd4954b-5pvcc to ci-ln-fr1rt92-72292-4fzf9-worker-a-g9g7c Normal AddedInterface 44s multus Add eth0 [10.131.0.14/23] from openshift-sdn Normal Pulling 44s kubelet Pulling image "quay.io/openshiftroadshow/parksmap@sha256:89d1e324846cb431df9039e1a7fd0ed2ba0c51aafbae73f2abd70a83d5fa173b" Normal Pulled 35s kubelet Successfully pulled image "quay.io/openshiftroadshow/parksmap@sha256:89d1e324846cb431df9039e1a7fd0ed2ba0c51aafbae73f2abd70a83d5fa173b" in 9.49243308s Normal Created 35s kubelet Created container parksmap Normal Started 35s kubelet Started container parksmap
4.5.3. アプリケーションのスケーリング
Kubernetes では、Deployment
オブジェクトはアプリケーションのデプロイメント方法を定義します。ほとんどの場合、ユーザーは Pod
、Service
、ReplicaSets
、および Deployment
リソースを共に使用します。ほとんどの場合、OpenShift Container Platform は必要なリソースを作成します。
national-parks-app
イメージをデプロイすると、デプロイメントリソースが作成されます。以下の例では、1 つの Pod
のみがデプロイされます。
以下の手順では、2 つのインスタンスを使用するように national-parks-image
をスケーリングします。
前提条件
- OpenShift Container Platform クラスターへのアクセス。
-
OpenShift CLI (
oc
) がインストールされている。 - イメージがデプロイされている。
手順
アプリケーションを 1 つの Pod インスタンスから 2 つの Pod インスタンスにスケーリングするには、以下のコマンドを入力します。
$ oc scale --current-replicas=1 --replicas=2 deployment/parksmap
出力例
deployment.apps/parksmap scaled
検証
アプリケーションが適切にスケーリングされていることを確認するには、以下のコマンドを入力します。
$ oc get pods
出力例
NAME READY STATUS RESTARTS AGE parksmap-5f9579955-6sng8 1/1 Running 0 7m39s parksmap-5f9579955-8tgft 1/1 Running 0 24s
アプリケーションを以前の 1 つの Pod インスタンスにスケールダウンするには、以下のコマンドを入力します。
$ oc scale --current-replicas=2 --replicas=1 deployment/parksmap
関連情報