Skip to content

NimTechnology

Trình bày các công nghệ CLOUD một cách dễ hiểu.

  • Kubernetes & Container
    • Docker
    • Kubernetes
      • Ingress
      • Pod
    • Helm Chart
    • OAuth2 Proxy
    • Isito-EnvoyFilter
    • Apache Kafka
      • Kafka
      • Kafka Connect
      • Lenses
    • Vault
    • Longhorn – Storage
    • VictoriaMetrics
    • MetalLB
    • Kong Gateway
  • CI/CD
    • ArgoCD
    • ArgoWorkflows
    • Argo Events
    • Spinnaker
    • Jenkins
    • Harbor
    • TeamCity
    • Git
      • Bitbucket
  • Coding
    • DevSecOps
    • Terraform
      • GCP – Google Cloud
      • AWS – Amazon Web Service
      • Azure Cloud
    • Golang
    • Laravel
    • Python
    • Jquery & JavaScript
    • Selenium
  • Log, Monitor & Tracing
    • DataDog
    • Prometheus
    • Grafana
    • ELK
      • Kibana
      • Logstash
  • BareMetal
    • NextCloud
  • Toggle search form

[Argo Workflow] Run in a test case Using a sidecar or two containers together.

Posted on May 9, 2024 By nim No Comments on [Argo Workflow] Run in a test case Using a sidecar or two containers together.

Tình huống của mình là team order DevOps run Automation test để kết nối vào Kafka.
Yêu cầu là run 1 consumer cùng chạy với container Playwright(dùng để push message lên kafka)
2 containers cũng sử dụng chung 1 folder vì consumer lấy kết quả của kafka và sẽ ghi xuống disk và Playwright sẽ đọc kết quả và tạo report.

apiVersion: argoproj.io/v1alpha1
kind: WorkflowTemplate
metadata:
  name: playwright-testing
spec:
  entrypoint: script-result
  volumeClaimTemplates:
    - metadata:
        name: workdir-playwright
      spec:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 5Gi
        storageClassName: ebs-gp3-workflow-sc
  arguments:
    parameters:
      - name: command1
        value: npx playwright test apikey --workers 4 --reporter=html
      - name: git-branch
        value: "master"
  templates:
    - name: script-result
      inputs:
        parameters:
          - name: command1
          - name: git-branch
      dag:
        tasks:
          - name: git-clone
            template: git-clone
            arguments:
              parameters:
                - name: git_branch
                  value: '{{inputs.parameters.git-branch}}'
          - name: trivy-image-scan
            template: trivy-image-scan
          - name: ls
            template: ls
            dependencies:
              - git-clone
          - name: playwright-template
            template: playwright-template
            arguments:
              parameters:
                - name: command_playwright
                  value: '{{inputs.parameters.command1}}'
            dependencies:
              - ls
    - name: git-clone
      nodeSelector:
        kubernetes.io/os: linux
      inputs:
        parameters:
        - name: git_branch
        artifacts:
        - name: argo-source
          path: /src
          git:
            repo: https://bitbucket.org/metascan/nimtechnology-automation-test.git
            singleBranch: true
            branch: "{{inputs.parameters.git_branch}}"
            usernameSecret:
              name: git-creds
              key: username
            passwordSecret:
              name: git-creds
              key: password
      container:
        name: git-clone
        image: alpine:3.17
        command:
          - sh
          - -c
        args:
          - |
            apk add --no-cache rsync
            rsync -av /src/ .
        workingDir: /workdir-playwright
        volumeMounts:
          - name: workdir-playwright
            mountPath: /workdir-playwright
    - name: ls
      nodeSelector:
        kubernetes.io/os: linux
      container:
        image: alpine:3.17
        command:
          - sh
          - -c
        args:
          - ls -la /workdir-playwright
        workingDir: /workdir-playwright
        volumeMounts:
          - name: workdir-playwright
            mountPath: /workdir-playwright
    - name: playwright-template
      nodeSelector:
        kubernetes.io/os: linux
      inputs:
        parameters:
          - name: command_playwright
      outputs:
        artifacts:
          - name: playwright-report
            path: /workdir-playwright/AutomationMDCloud/playwright-report/index.html
            s3:
              key: >-
                {{workflow.name}}/playwright-report-{{workflow.creationTimestamp}}.tgz
      container:
        name: playwright
        image: mcr.microsoft.com/playwright:v1.35.1-jammy
        env:
          - name: KAFKA_SSL_ENABLED
            value: 'true'
          - name: CI
            value: 'true'
          - name: NODE_OPTIONS
            value: '--max-old-space-size=24576'
        command:
          - /bin/bash
          - -c
        args:
          - |
            pwd
            ls -la
            npm i
            {{inputs.parameters.command_playwright}}
            ls -la
        volumeMounts:	
          - mountPath: /workdir-playwright	
            name: workdir-playwright	
        workingDir: /workdir-playwright/AutomationMDCloud
      sidecars:
        - name: consumer
          image: mcr.microsoft.com/playwright:v1.44.0-jammy          # Docker already provides an image for running a Docker daemon
          command:
            - /bin/bash
            - -c
          args:
            - |
              df -h
              npm i
              node index.js -e staging -a consume -t "apiv4-results"
          env:
            - name: KAFKA_SSL_ENABLED
              value: 'true'
          volumeMounts:	
            - mountPath: /workdir-playwright	
              name: workdir-playwright	
          workingDir: /workdir-playwright/AutomationMDCloud
    - name: trivy-image-scan
      nodeSelector:
        kubernetes.io/os: linux
      container:
        image: aquasec/trivy
        args:
          - image
          - mcr.microsoft.com/playwright:v1.44.0-jammy
      

Đây là workflow của template trên.

Có điều bạn cần để ý về pod playwright template:

ArgoWorkflows

Post navigation

Previous Post: [Laravel] This form is not secure. Autofill has been turned off
Next Post: [Chat Tool] Self-Host chat tool

More Related Articles

[Argo-Workflows] Lesson6: Output Parameter File ArgoWorkflows
[Argo-Workflows] Lesson3: Argo CLI and Input Parameters ArgoWorkflows
[ArgoWorkflows] Lesson2: Demo Steps Template and DAG Template on ArgoWorkflows ArgoWorkflows
[Argo-Workflows] Lesson10: Loop ArgoWorkflows
[Argo-Workflows] Lesson22: Reference to Workflow Templates ArgoWorkflows
[Argo-Workflows] Lesson16: Depends ArgoWorkflows

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Tham Gia Group DevOps nhé!
Để Nim có nhiều động lực ra nhiều bài viết.
Để nhận được những thông báo mới nhất.

Recent Posts

  • [AWS/EKS] Cache Docker image to accelerate EKS container deployment. July 10, 2025
  • [Laravel] Laravel Helpful June 26, 2025
  • [VScode] Hướng dẫn điều chỉnh font cho terminal June 20, 2025
  • [WordPress] Hướng dấn gửi mail trên WordPress thông qua gmail. June 15, 2025
  • [Bitbucket] Git Clone/Pull/Push with Bitbucket through API Token. June 12, 2025

Archives

  • July 2025
  • June 2025
  • May 2025
  • April 2025
  • March 2025
  • February 2025
  • January 2025
  • December 2024
  • November 2024
  • October 2024
  • September 2024
  • August 2024
  • July 2024
  • June 2024
  • May 2024
  • April 2024
  • March 2024
  • February 2024
  • January 2024
  • December 2023
  • November 2023
  • October 2023
  • September 2023
  • August 2023
  • July 2023
  • June 2023
  • May 2023
  • April 2023
  • March 2023
  • February 2023
  • January 2023
  • December 2022
  • November 2022
  • October 2022
  • September 2022
  • August 2022
  • July 2022
  • June 2022
  • May 2022
  • April 2022
  • March 2022
  • February 2022
  • January 2022
  • December 2021
  • November 2021
  • October 2021
  • September 2021
  • August 2021
  • July 2021
  • June 2021

Categories

  • BareMetal
    • NextCloud
  • CI/CD
    • Argo Events
    • ArgoCD
    • ArgoWorkflows
    • Git
      • Bitbucket
    • Harbor
    • Jenkins
    • Spinnaker
    • TeamCity
  • Coding
    • DevSecOps
    • Golang
    • Jquery & JavaScript
    • Laravel
    • NextJS 14 & ReactJS & Type Script
    • Python
    • Selenium
    • Terraform
      • AWS – Amazon Web Service
      • Azure Cloud
      • GCP – Google Cloud
  • Kubernetes & Container
    • Apache Kafka
      • Kafka
      • Kafka Connect
      • Lenses
    • Docker
    • Helm Chart
    • Isito-EnvoyFilter
    • Kong Gateway
    • Kubernetes
      • Ingress
      • Pod
    • Longhorn – Storage
    • MetalLB
    • OAuth2 Proxy
    • Vault
    • VictoriaMetrics
  • Log, Monitor & Tracing
    • DataDog
    • ELK
      • Kibana
      • Logstash
    • Fluent
    • Grafana
    • Prometheus
  • Uncategorized
  • Admin

Copyright © 2025 NimTechnology.