18.3. 튜토리얼: 애플리케이션 배포
18.3.1. 랩 개요
18.3.1.1. 랩 리소스
- OSToy 애플리케이션의 소스 코드
- OSToy 프론트 엔드 컨테이너 이미지
- OSToy 마이크로 서비스 컨테이너 이미지
배포 정의 YAML 파일:
ostoy-frontend-deployment.yaml
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: ostoy-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi --- apiVersion: apps/v1 kind: Deployment metadata: name: ostoy-frontend labels: app: ostoy spec: selector: matchLabels: app: ostoy-frontend strategy: type: Recreate replicas: 1 template: metadata: labels: app: ostoy-frontend spec: # Uncomment to use with ACK portion of the workshop # If you chose a different service account name please replace it. # serviceAccount: ostoy-sa containers: - name: ostoy-frontend securityContext: allowPrivilegeEscalation: false runAsNonRoot: true seccompProfile: type: RuntimeDefault capabilities: drop: - ALL image: quay.io/ostoylab/ostoy-frontend:1.6.0 imagePullPolicy: IfNotPresent ports: - name: ostoy-port containerPort: 8080 resources: requests: memory: "256Mi" cpu: "100m" limits: memory: "512Mi" cpu: "200m" volumeMounts: - name: configvol mountPath: /var/config - name: secretvol mountPath: /var/secret - name: datavol mountPath: /var/demo_files livenessProbe: httpGet: path: /health port: 8080 initialDelaySeconds: 10 periodSeconds: 5 env: - name: ENV_TOY_SECRET valueFrom: secretKeyRef: name: ostoy-secret-env key: ENV_TOY_SECRET - name: MICROSERVICE_NAME value: OSTOY_MICROSERVICE_SVC - name: NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace volumes: - name: configvol configMap: name: ostoy-configmap-files - name: secretvol secret: defaultMode: 420 secretName: ostoy-secret - name: datavol persistentVolumeClaim: claimName: ostoy-pvc --- apiVersion: v1 kind: Service metadata: name: ostoy-frontend-svc labels: app: ostoy-frontend spec: type: ClusterIP ports: - port: 8080 targetPort: ostoy-port protocol: TCP name: ostoy selector: app: ostoy-frontend --- apiVersion: route.openshift.io/v1 kind: Route metadata: name: ostoy-route spec: to: kind: Service name: ostoy-frontend-svc --- apiVersion: v1 kind: Secret metadata: name: ostoy-secret-env type: Opaque data: ENV_TOY_SECRET: VGhpcyBpcyBhIHRlc3Q= --- kind: ConfigMap apiVersion: v1 metadata: name: ostoy-configmap-files data: config.json: '{ "default": "123" }' --- apiVersion: v1 kind: Secret metadata: name: ostoy-secret data: secret.txt: VVNFUk5BTUU9bXlfdXNlcgpQQVNTV09SRD1AT3RCbCVYQXAhIzYzMlk1RndDQE1UUWsKU01UUD1sb2NhbGhvc3QKU01UUF9QT1JUPTI1 type: Opaque
ostoy-microservice-deployment.yaml
apiVersion: apps/v1 kind: Deployment metadata: name: ostoy-microservice labels: app: ostoy spec: selector: matchLabels: app: ostoy-microservice replicas: 1 template: metadata: labels: app: ostoy-microservice spec: containers: - name: ostoy-microservice securityContext: allowPrivilegeEscalation: false runAsNonRoot: true seccompProfile: type: RuntimeDefault capabilities: drop: - ALL image: quay.io/ostoylab/ostoy-microservice:1.5.0 imagePullPolicy: IfNotPresent ports: - containerPort: 8080 protocol: TCP resources: requests: memory: "128Mi" cpu: "50m" limits: memory: "256Mi" cpu: "100m" --- apiVersion: v1 kind: Service metadata: name: ostoy-microservice-svc labels: app: ostoy-microservice spec: type: ClusterIP ports: - port: 8080 targetPort: 8080 protocol: TCP selector: app: ostoy-microservice
ACK S3용 S3 버킷 매니페스트
s3-bucket.yaml
apiVersion: s3.services.k8s.aws/v1alpha1 kind: Bucket metadata: name: ostoy-bucket namespace: ostoy spec: name: ostoy-bucket
OSToy 애플리케이션의 배포를 단순화하기 위해 위의 배포 매니페스트에 필요한 모든 오브젝트가 함께 그룹화됩니다. 일반적인 엔터프라이즈 배포에는 각 Kubernetes 오브젝트에 대한 별도의 매니페스트 파일이 권장됩니다.
18.3.1.2. OSToy 애플리케이션 정보
OSToy는 Kubernetes의 기능을 탐색하는 데 도움이 되도록 ROSA 클러스터에 배포할 간단한 Node.js 애플리케이션입니다. 이 애플리케이션에는 다음을 수행할 수 있는 사용자 인터페이스가 있습니다.
- 로그에 메시지를 작성합니다(stdout / stderr).
- 자동 복구 보기를 위해 의도적으로 애플리케이션을 충돌합니다.
- 활성 상태 프로브를 전환하고 OpenShift 동작을 모니터링합니다.
- 구성 맵, 시크릿 및 env 변수를 읽습니다.
- 공유 스토리지에 연결된 경우 파일을 읽고 씁니다.
- 포함된 마이크로 서비스를 사용하여 네트워크 연결, 클러스터 내 DNS 및 intra-communication을 확인합니다.
- Horizontal Pod Autoscaler를 사용하여 부하를 처리하도록 Pod의 자동 스케일링을 보려면 부하를 늘립니다.
- 선택 사항: AWS S3 버킷에 연결하여 오브젝트를 읽고 씁니다.
18.3.1.3. OSToy Application Diagram
18.3.1.4. OSToy UI 이해
- 브라우저에서 페이지를 제공한 포드 이름을 표시합니다.
- 홈: 당사가 탐색할 기능 중 일부를 수행할 수 있는 애플리케이션의 기본 페이지입니다.
- 영구 스토리지: 이 애플리케이션에 바인딩된 영구 볼륨에 데이터를 쓸 수 있습니다.
- 구성 맵: 애플리케이션에서 사용할 수 있는 configmaps 내용과 key:value 쌍을 표시합니다.
- 보안: 애플리케이션에서 사용할 수 있는 보안 내용과 키:값 쌍을 표시합니다.
- ENV 변수: 애플리케이션에서 사용할 수 있는 환경 변수를 표시합니다.
- 네트워킹: 애플리케이션 내에서 네트워킹을 설명하는 툴입니다.
- Pod 자동 확장: Pod의 부하를 늘리고 HPA를 테스트하는 툴입니다.
ACK S3: 선택 사항: AWS S3와 통합하여 오브젝트를 읽고 버킷에 씁니다.
참고OSToy의 "ACK S3" 섹션을 보려면 이 워크샵의 ACK 섹션을 완료해야 합니다. 해당 섹션을 완료하지 않으려면 OSToy 애플리케이션이 계속 작동합니다.
- 정보: 애플리케이션에 대한 자세한 정보를 표시합니다.