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 の機能を確認するのに役立つシンプルな Node.js アプリケーションです。このアプリケーションを ROSA クラスターにデプロイします。このアプリケーションのユーザーインターフェイスから、以下を実行できます。
- メッセージをログ (stdout/stderr) に書き込む。
- アプリケーションを意図的にクラッシュして自己修復を確認する。
- liveness プローブを切り替えて、OpenShift の動作を監視する。
- config map、シークレット、および環境変数を読み取る。
- 共有ストレージに接続されている場合にファイルの読み取りと書き込みを行う。
- ネットワーク接続、クラスター内 DNS、および含まれるマイクロサービスとの内部通信を確認する。
- 負荷を増やし、Horizontal Pod Autoscaler を使用して負荷を処理する Pod の自動スケーリングを確認する。
- オプション: AWS S3 バケットに接続して、オブジェクトの読み取りと書き込みを行う。
18.3.1.3. OSToy アプリケーションの図
18.3.1.4. OSToy の UI について
- ブラウザーにページを提供した Pod 名が表示されます。
- Home: アプリケーションのメインページです。このラボで確認する機能の一部を実行できます。
- Persistent Storage: このアプリケーションにバインドされた永続ボリュームにデータを書き込むことができます。
- Config Maps: アプリケーションで使用可能な設定マップの内容とキーと値のペアが表示されます。
- Secrets: アプリケーションで使用可能なシークレットの内容とキーと値のペアが表示されます。
- ENV Variables: アプリケーションで使用可能な環境変数が表示されます。
- Networking: アプリケーション内のネットワークを説明するツール。
- Pod Auto Scaling: Pod の負荷を増やし、HPA をテストするツール。
ACK S3: (オプション) AWS S3 と統合して、バケットへのオブジェクトの読み取りおよび書き込みを行います。
注記OSToy の "ACK S3" セクションを表示するには、このワークショップの ACK セクションを完了する必要があります。このセクションを完了しなくても、OSToy アプリケーションは機能します。
- About: アプリケーションに関する詳細情報が表示されます。