16.5. Outpost에서 사용자 워크로드 생성
AWS VPC 클러스터의 OpenShift Container Platform을 Outpost로 확장한 후 node-role.kubernetes.io/outposts 레이블이 있는 에지 컴퓨팅 노드를 사용하여 Outpost에서 사용자 워크로드를 생성할 수 있습니다.
사전 요구 사항
- AWS VPC 클러스터를 Outpost로 확장했습니다.
-
cluster-admin권한이 있는 계정을 사용하여 클러스터에 액세스할 수 있습니다. -
OpenShift CLI(
oc)가 설치되어 있습니다. - Outpost 환경과 호환되는 엣지 컴퓨팅 머신을 배포하는 컴퓨팅 머신 세트를 생성했습니다.
프로세스
에지 서브넷의 에지 컴퓨팅 노드에 배포하려는 애플리케이션에 대한
배포리소스 파일을 구성합니다.배포매니페스트 예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
- 애플리케이션의 네임스페이스를 지정합니다. 애플리케이션 네임스페이스는 애플리케이션 이름과 같을 수 있습니다.
- 3
- 스토리지 클래스 이름을 지정합니다. 엣지 컴퓨팅 구성의 경우
gp2-csi스토리지 클래스를 사용해야 합니다. - 4
- Outpost에 배포된 워크로드를 식별할 레이블을 지정합니다.
- 5
- 엣지 컴퓨팅 노드를 대상으로 하는 노드 선택기 레이블을 지정합니다.
- 6
- 엣지 컴퓨팅 머신 세트의 컴퓨팅 머신 세트의
키및효과테인트와 일치하는 허용 오차를 지정합니다. 다음과 같이값및Operator 허용오차를 설정합니다.
다음 명령을 실행하여
Deployment리소스를 생성합니다.$ oc create -f <application_deployment>.yaml대상 엣지 컴퓨팅 노드에서 에지 네트워크 내에서 실행되는 서비스에 Pod를 노출하는
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