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 是一个简单的 Node.js 应用程序,您将部署到 ROSA 集群,以帮助探索 Kubernetes 的功能。此应用程序有一个用户界面,您可以在其中:
- 将消息写入日志(stdout / stderr)。
- 有意使应用崩溃,以查看自我修复。
- 切换存活度探测并监控 OpenShift 行为。
- 读取配置映射、secret 和 env 变量。
- 如果连接到共享存储,读取和写入文件。
- 检查包含微服务的网络连接、集群内 DNS 和 intra-communication。
- 增加负载,以查看 pod 的自动扩展,以使用 Horizontal Pod Autoscaler 处理负载。
- 可选:连接到 AWS S3 存储桶以读取和写入对象。
18.3.1.3. OSToy Application 图表
18.3.1.4. 了解 OSToy UI
- 显示为浏览器提供页面的 pod 名称。
- Home: 执行我们将了解的一些功能的应用程序主页。
- 持久性存储: 允许您将数据写入绑定到这个应用程序的持久性卷。
- Config Map: 显示应用和 key:value 对可用的 configmaps 的内容。
- secrets: 显示应用可用的 secret 的内容,以及 key:value 对。
- ENV 变量 : 显示应用程序可用的环境变量。
- 网络: 用于说明应用程序内网络的工具。
- Pod 自动扩展: 用于增加 pod 的负载并测试 HPA 的工具。
ACK S3: 可选:与 AWS S3 集成,以读取和写入对象到存储桶。
注意要查看 OSToy 的"ACK S3"部分,您必须完成此研讨会的 ACK 部分。如果您决定不完成该部分,则 OSToy 应用程序仍将正常工作。
- 关于 : 显示应用程序的更多信息。