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'
    Copy to Clipboard Toggle word wrap

    出力例

    --> 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
    Copy to Clipboard Toggle word wrap

4.5.1. ルートの作成

外部クライアントは、ルーティング層を使用して OpenShift Container Platform で実行されているアプリケーションにアクセスできます。その背後にあるデータオブジェクトは ルート です。デフォルトの OpenShift Container Platform ルーター (HAProxy) は、受信リクエストの HTTP ヘッダーを使用して、接続をプロキシー処理する場所を決定します。

オプションとして、ルートに TLS などのセキュリティーを定義できます。

前提条件

  • OpenShift Container Platform クラスターへのアクセス。
  • OpenShift CLI (oc) がインストールされている。
  • イメージがデプロイされている。
  • cluster-admin または project-admin 権限がある。

手順

  1. 作成したアプリケーションサービスを取得するには、以下のコマンドを入力します。

    $ oc get service
    Copy to Clipboard Toggle word wrap

    出力例

    NAME      TYPE       CLUSTER-IP         EXTERNAL-IP    PORT(S)   AGE
    parksmap  ClusterIP  <your-cluster-IP>  <123.456.789>  8080/TCP  8m29s
    Copy to Clipboard Toggle word wrap

  2. ルートを作成するには、以下のコマンドを入力します。

    $ oc create route edge parksmap --service=parksmap
    Copy to Clipboard Toggle word wrap

    出力例

    route.route.openshift.io/parksmap created
    Copy to Clipboard Toggle word wrap

  3. 作成したアプリケーションのルートを取得するには、以下のコマンドを入力します。

    $ oc get route
    Copy to Clipboard Toggle word wrap

    出力例

    NAME        HOST/PORT                                                   PATH   SERVICES   PORT       TERMINATION   WILDCARD
    parksmap    parksmap-user-getting-started.apps.cluster.example.com             parksmap   8080-tcp   edge          None
    Copy to Clipboard Toggle word wrap

4.5.2. Pod の検証

OpenShift Container Platform は、Pod の Kubernetes の概念を活用しています。これはホスト上に共にデプロイされる 1 つ以上のコンテナーであり、定義、デプロイ、管理される最小のコンピュート単位です。Pod は、コンテナーに対して、 (物理または仮想) マシンインスタンスとほぼ同等のものです。

クラスターの Pod を表示し、それらの Pod およびクラスター全体としての正常性を判別できます。

前提条件

  • OpenShift Container Platform クラスターへのアクセス。
  • OpenShift CLI (oc) がインストールされている。
  • イメージがデプロイされている。

手順

  1. ノード名と共にすべての Pod を一覧表示するには、以下のコマンドを入力します。

    $ oc get pods
    Copy to Clipboard Toggle word wrap

    出力例

    NAME                       READY   STATUS    RESTARTS   AGE
    parksmap-5f9579955-6sng8   1/1     Running   0          77s
    Copy to Clipboard Toggle word wrap

  2. すべての Pod の詳細を一覧表示するには、以下のコマンドを入力します。

    $ oc describe pods
    Copy to Clipboard Toggle word wrap

    出力例

    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
    Copy to Clipboard Toggle word wrap

4.5.3. アプリケーションのスケーリング

Kubernetes では、Deployment オブジェクトはアプリケーションのデプロイメント方法を定義します。ほとんどの場合、ユーザーは PodServiceReplicaSets、および 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
    Copy to Clipboard Toggle word wrap

    出力例

    deployment.apps/parksmap scaled
    Copy to Clipboard Toggle word wrap

検証

  1. アプリケーションが適切にスケーリングされていることを確認するには、以下のコマンドを入力します。

    $ oc get pods
    Copy to Clipboard Toggle word wrap

    出力例

    NAME                       READY   STATUS    RESTARTS   AGE
    parksmap-5f9579955-6sng8   1/1     Running   0          7m39s
    parksmap-5f9579955-8tgft   1/1     Running   0          24s
    Copy to Clipboard Toggle word wrap

  2. アプリケーションを以前の 1 つの Pod インスタンスにスケールダウンするには、以下のコマンドを入力します。

    $ oc scale --current-replicas=2 --replicas=1 deployment/parksmap
    Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat