検索

4.5. 初めてのイメージのデプロイ

download PDF

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 権限がある。

手順

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

    $ oc get service

    出力例

    NAME      TYPE       CLUSTER-IP         EXTERNAL-IP    PORT(S)   AGE
    parksmap  ClusterIP  <your-cluster-IP>  <123.456.789>  8080/TCP  8m29s

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

    $ oc create route edge parksmap --service=parksmap

    出力例

    route.route.openshift.io/parksmap created

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

    $ 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) がインストールされている。
  • イメージがデプロイされている。

手順

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

    $ oc get pods

    出力例

    NAME                       READY   STATUS    RESTARTS   AGE
    parksmap-5f9579955-6sng8   1/1     Running   0          77s

  2. すべての 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/network-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 オブジェクトはアプリケーションのデプロイメント方法を定義します。ほとんどの場合、ユーザーは 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

    出力例

    deployment.apps/parksmap scaled

検証

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

    $ oc get pods

    出力例

    NAME                       READY   STATUS    RESTARTS   AGE
    parksmap-5f9579955-6sng8   1/1     Running   0          7m39s
    parksmap-5f9579955-8tgft   1/1     Running   0          24s

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

    $ oc scale --current-replicas=2 --replicas=1 deployment/parksmap

関連情報

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.