16.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-csi3 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: outposts4 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およびeffectstaint に一致する toleration を指定します。この例のようにvalueとoperatorの toleration を設定します。
次のコマンドを実行して、
Deploymentリソースを作成します。$ oc create -f <application_deployment>.yamlターゲットのエッジコンピュートノードからエッジネットワーク内で実行されるサービスに Pod を公開する
Serviceオブジェクトを設定します。Serviceマニフェストの例apiVersion: v1 kind: Service1 metadata: name: <application_name> namespace: <application_namespace> spec: ports: - port: 80 targetPort: 8080 protocol: TCP type: NodePort selector:2 app: <application_name>次のコマンドを実行して
ServiceCR を作成します。$ oc create -f <application_service>.yaml