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

OSToy 아키텍처 다이어그램

18.3.1.4. OSToy UI 이해

OSToy 홈페이지의 프리뷰
  1. 브라우저에서 페이지를 제공한 포드 이름을 표시합니다.
  2. 홈: 당사가 탐색할 기능 중 일부를 수행할 수 있는 애플리케이션의 기본 페이지입니다.
  3. 영구 스토리지: 이 애플리케이션에 바인딩된 영구 볼륨에 데이터를 쓸 수 있습니다.
  4. 구성 맵: 애플리케이션에서 사용할 수 있는 configmaps 내용과 key:value 쌍을 표시합니다.
  5. 보안: 애플리케이션에서 사용할 수 있는 보안 내용과 키:값 쌍을 표시합니다.
  6. ENV 변수: 애플리케이션에서 사용할 수 있는 환경 변수를 표시합니다.
  7. 네트워킹: 애플리케이션 내에서 네트워킹을 설명하는 툴입니다.
  8. Pod 자동 확장: Pod의 부하를 늘리고 HPA를 테스트하는 툴입니다.
  9. ACK S3: 선택 사항: AWS S3와 통합하여 오브젝트를 읽고 버킷에 씁니다.

    참고

    OSToy의 "ACK S3" 섹션을 보려면 이 워크샵의 ACK 섹션을 완료해야 합니다. 해당 섹션을 완료하지 않으려면 OSToy 애플리케이션이 계속 작동합니다.

  10. 정보: 애플리케이션에 대한 자세한 정보를 표시합니다.
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.