20.5. Outpost でのユーザーワークロードの作成
AWS VPC クラスター内の OpenShift Container Platform を Outpost に拡張した後、ラベル node-role.kubernetes.io/outposts
を持つエッジコンピュートノードを使用して、Outpost にユーザーワークロードを作成できます。
前提条件
- AWS VPC クラスターを Outpost に拡張した。
-
cluster-admin
権限を持つアカウントを使用してクラスターにアクセスできる。 -
OpenShift CLI (
oc
) がインストールされている。 - Outpost 環境と互換性のあるエッジコンピュートマシンをデプロイするコンピュートマシンセットを作成している。
手順
エッジサブネットのエッジコンピュートノードにデプロイするアプリケーションの
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
テイントに一致する容認を指定します。この例のようにvalue
とoperator
の容認を設定します。
次のコマンドを実行して、
Deployment
リソースを作成します。$ oc create -f <application_deployment>.yaml
ターゲットのエッジコンピュートノードからエッジネットワーク内で実行されるサービスに 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>
次のコマンドを実行して
Service
CR を作成します。$ oc create -f <application_service>.yaml