×

实验概述

实验资源

  • 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 对象使用单独的清单文件。

关于 OSToy 应用程序

OSToy 是一个简单的 Node.js 应用程序,您将将其部署到 ROSA 集群以帮助探索 Kubernetes 的功能。此应用程序具有一个用户界面,您可以在其中

  • 将消息写入日志 (stdout/stderr)。

  • 故意使应用程序崩溃以查看自我修复功能。

  • 切换存活性探测并监控 OpenShift 行为。

  • 读取配置映射、密钥和环境变量。

  • 如果连接到共享存储,则读取和写入文件。

  • 检查网络连接性、集群内 DNS 和与包含的微服务的集群内通信。

  • 增加负载以查看吊舱的自动扩展以使用水平吊舱自动缩放器处理负载。

  • 可选:连接到 AWS S3 桶以读取和写入对象。

OSToy 应用程序图

OSToy architecture diagram

了解 OSToy UI

Preview of the OSToy homepage
  1. 显示为您提供页面服务的 Pod 名称。

  2. 主页:应用程序的主页,您可以在其中执行我们将探讨的某些功能。

  3. 持久性存储:允许您将数据写入绑定到此应用程序的持久卷。

  4. 配置映射:显示应用程序可用的配置映射以及键值对。

  5. 密钥:显示应用程序可用的密钥以及键值对。

  6. 环境变量:显示应用程序可用的环境变量。

  7. 网络:用于说明应用程序内网络的工具。

  8. Pod 自动缩放:用于增加 Pod 负载并测试 HPA 的工具。

  9. ACK S3:可选:与 AWS S3 集成以将对象读取和写入桶。

    要查看 OSToy 的“ACK S3”部分,您必须完成本研讨会的 ACK 部分。如果您决定不完成该部分,OSToy 应用程序仍将运行。

  10. 关于:显示有关应用程序的更多信息。