検索

20.5. Outpost でのユーザーワークロードの作成

download PDF

AWS VPC クラスター内の OpenShift Container Platform を Outpost に拡張した後、ラベル node-role.kubernetes.io/outposts を持つエッジコンピュートノードを使用して、Outpost にユーザーワークロードを作成できます。

前提条件

  • AWS VPC クラスターを Outpost に拡張した。
  • cluster-admin 権限を持つアカウントを使用してクラスターにアクセスできる。
  • OpenShift CLI (oc) がインストールされている。
  • Outpost 環境と互換性のあるエッジコンピュートマシンをデプロイするコンピュートマシンセットを作成している。

手順

  1. エッジサブネットのエッジコンピュートノードにデプロイするアプリケーションの Deployment リソースファイルを設定します。

    Deployment マニフェストの例

    kind: Namespace
    apiVersion: v1
    metadata:
      name: <application_name> 1
    ---
    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: <application_name>
      namespace: <application_namespace> 2
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 10Gi
      storageClassName: gp2-csi 3
      volumeMode: Filesystem
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: <application_name>
      namespace: <application_namespace>
    spec:
      selector:
        matchLabels:
          app: <application_name>
      replicas: 1
      template:
        metadata:
          labels:
            app: <application_name>
            location: outposts 4
        spec:
          securityContext:
            seccompProfile:
              type: RuntimeDefault
          nodeSelector: 5
            node-role.kubernetes.io/outpost: ''
          tolerations: 6
          - key: "node-role.kubernetes.io/outposts"
            operator: "Equal"
            value: ""
            effect: "NoSchedule"
          containers:
            - image: openshift/origin-node
              command:
               - "/bin/socat"
              args:
                - TCP4-LISTEN:8080,reuseaddr,fork
                - EXEC:'/bin/bash -c \"printf \\\"HTTP/1.0 200 OK\r\n\r\n\\\"; sed -e \\\"/^\r/q\\\"\"'
              imagePullPolicy: Always
              name: <application_name>
              ports:
                - containerPort: 8080
              volumeMounts:
                - mountPath: "/mnt/storage"
                  name: data
          volumes:
          - name: data
            persistentVolumeClaim:
              claimName: <application_name>

    1
    アプリケーションの名前を指定します。
    2
    アプリケーションの namespace を指定します。アプリケーションの namespace はアプリケーション名と同じにすることができます。
    3
    ストレージクラス名を指定します。エッジコンピュート設定の場合は、gp2-csi ストレージクラスを使用する必要があります。
    4
    Outpost にデプロイされるワークロードを識別するラベルを指定します。
    5
    エッジコンピュートノードをターゲットとするノードセレクターラベルを指定します。
    6
    エッジコンピュートマシンのコンピュートマシンセット内の key および effects テイントに一致する容認を指定します。この例のように valueoperator の容認を設定します。
  2. 次のコマンドを実行して、Deployment リソースを作成します。

    $ oc create -f <application_deployment>.yaml
  3. ターゲットのエッジコンピュートノードからエッジネットワーク内で実行されるサービスに Pod を公開する Service オブジェクトを設定します。

    Service マニフェストの例

    apiVersion: v1
    kind: Service 1
    metadata:
      name:  <application_name>
      namespace: <application_namespace>
    spec:
      ports:
        - port: 80
          targetPort: 8080
          protocol: TCP
      type: NodePort
      selector: 2
        app: <application_name>

    1
    service リソースを定義します。
    2
    管理対象の Pod に適用するラベルのタイプを指定します。
  4. 次のコマンドを実行して Service CR を作成します。

    $ oc create -f <application_service>.yaml
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.