SlideShare ist ein Scribd-Unternehmen logo
1 von 29
Who Am I?
 Engineer<T> where T : Azure | DevOps | C#
 Microsoft® Most Valuable Professional
 Solutions Architect @ SoftServe, Inc.
 Spend time in the cloud
 More… go to https://ifesenko.com
Agenda  DNS
 Versioning
 GitOps & ArgoCD
 GitHub Actions for CI/CD
Context
DNS
It’s Always DNS
DNS. Lessons Learned
 Do NOT use {env}.{app}.company.com as a naming convention
 Do {app}.{env}.company.com
 Use {internal}.{env}.company.com DNS zone if you have resources
that are not exposed to public internet
 CNAME records will help during potential migration if you use them
Versioning
Versioning
Semantic Versioning (SemVer) & Branch Strategy
 Given a version number MAJOR.MINOR.PATCH, increment the:
 MAJOR version when you make incompatible API changes
 MINOR version when you add functionality in a backwards compatible manner
 PATCH version when you make backwards compatible bug fixes
Calendar-Based Versioning (CalVer)
 YYYY.MM.Sequence(.Patch)
 Breaking changes are for changelog
 Ship feature and fix as soon as possible
 Gregorian calendar and UTC time are only dependencies
 If you have support cycle each user can easily check if it is supported
Versioning. Lessons Learned
 Ensure calendar-based version is generated per a run and only once
 Always leave traces to correlate build number with commit id
 Git tag
 Version metadata
 You should be able to generate new version number on any platform
GitOps & ArgoCD
GitOps
GitOps. Repository Layout
 .github/
 azure/ - definitions related to policy as code
 cluster/ - all files related to AKS
 argocd/ - Application of Applications (cluster bootstrapping)
 non-prod/
 apps/
 projects/
 prod/
 apps/
 projects/
 rabbitmq/ - RabbitMQ Helm chart
 stunnel/ - stunnel Helm chart
 docs/ - runbooks, scripts, decision records, etc.
 terraform/ - Terraform files to manage infrastructure
ArgoCD. App Of Apps Pattern
 When ArgoCD is deployed
 create a new app “root”
 that consists other apps and projects
 PATH: cluster/argocd/non-prod
 Apps
 definitions of 1st party and 3rd party apps
 Projects
 we use ArgoCD projects as environments
projects/dev.yaml
apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
name: dev
spec:
clusterResourceWhitelist:
- group: "*"
kind: "*"
description: Dev Environment
destinations:
- name: "*"
namespace: "*-dev"
server: "*"
sourceRepos:
- "*"
status: {}
apps/rabbitmq.yaml
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
name: rabbitmq
spec:
generators:
- list:
elements:
- env: dev
- env: sqa
- env: uat
template:
metadata:
name: "rabbitmq-{{env}}"
spec:
project: "{{env}}"
source:
repoURL: git@github.com:org/ops-product.git
targetRevision: HEAD
path: cluster/rabbitmq
helm:
valueFiles:
- common/values-common.yaml
- variants/non-prod/values-non-prod.yaml
- "envs/{{env}}-eastus/values-settings.yaml"
- "envs/{{env}}-eastus/values-replicas.yaml"
destination:
namespace: "rabbitmq-{{env}}"
server: https://kubernetes.default.svc
syncPolicy:
syncOptions:
- CreateNamespace=true
ArgoCD. Helm Chart Layout
 common/ - configuration which is common to all envs
 envs/ - holds environment specific configuration
 templates/ - Helm chart files
 variants/ - holds characteristics between similar envs
GitHub Actions for CI/CD
GitHub Actions or “Count to 10”
GitHub Actions Layout
 Build
 Code Analysis
 Deploy
 PRs
 *Reusable workflows to build,
test and publish
“CommitOps” in Action
skip-ci skip-tests
“EmojiOps” in Action
 Use as a symbol system to highlight important steps
GitHub Actions & Release Management
deploy.yaml
deploy:
runs-on: ubuntu-latest
name: deploy to ${{ inputs.env-id }}
environment:
name: ${{ inputs.env-id }}
env:
VERSION_FILE_PATH: cluster/product-services/envs/${{ inputs.env-id }}-eastus/values-version.yaml
steps:
- name: Checkout org/ops-product repository
uses: actions/checkout@v3
with:
repository: org/ops-product
path: ops-product
ssh-key: ${{ secrets.OPS_PRODUCT_SSH_PRIVATE_KEY }}
- name: Update container image version to ${{ inputs.build-version }}
uses: fjogeleit/yaml-update-action@main
with:
valueFile: ${{ env.VERSION_FILE_PATH }}
propertyPath: "image.tag"
value: "${{ inputs.build-version }}"
commitChange: false
updateFile: true
workDir: ops-product
branch: deployment
masterBranchName: main
targetBranch: dev
repository: org/ops-product
- name: Commit and push changes
run: |
git config user.name "${GITHUB_ACTOR}"
git config user.email "${GITHUB_ACTOR}@users.noreply.github.com"
git add .
git commit -m "Bump image version to ${{ inputs.build-version }} for ${{ inputs.env-id }} environment"
git push
working-directory: ops-product
Keep Up To Date Your Actions & Charts
 Dependabot or Renovate
GitHub Actions. Lessons Learned
 Be careful when sharing state between Jobs via GitHub Artifacts
 Do not publish build artifacts to GitHub Artifacts
 Allow a subsequently queued workflow run to interrupt previous
runs. GitHub Docs
 Limit number of open pull requests for version updates
 Cache dependencies
 Nested workflows and secrets scope
Questions?
@ky7m | ifesenko.com

Weitere ähnliche Inhalte

Ähnlich wie "Modern DevOps & Real Life Applications. 3.0.0-devops+20230318", Igor Fesenko

Easy deployment & management of cloud apps
Easy deployment & management of cloud appsEasy deployment & management of cloud apps
Easy deployment & management of cloud apps
David Cunningham
 

Ähnlich wie "Modern DevOps & Real Life Applications. 3.0.0-devops+20230318", Igor Fesenko (20)

Kubernetes for the PHP developer
Kubernetes for the PHP developerKubernetes for the PHP developer
Kubernetes for the PHP developer
 
Docker for developers on mac and windows
Docker for developers on mac and windowsDocker for developers on mac and windows
Docker for developers on mac and windows
 
Let's build Developer Portal with Backstage
Let's build Developer Portal with BackstageLet's build Developer Portal with Backstage
Let's build Developer Portal with Backstage
 
An OpenShift Primer for Developers to get your Code into the Cloud (PTJUG)
An OpenShift Primer for Developers to get your Code into the Cloud (PTJUG)An OpenShift Primer for Developers to get your Code into the Cloud (PTJUG)
An OpenShift Primer for Developers to get your Code into the Cloud (PTJUG)
 
The App Developer's Kubernetes Toolbox
The App Developer's Kubernetes ToolboxThe App Developer's Kubernetes Toolbox
The App Developer's Kubernetes Toolbox
 
The GO Language : From Beginners to Gophers
The GO Language : From Beginners to GophersThe GO Language : From Beginners to Gophers
The GO Language : From Beginners to Gophers
 
Toolbox of a Ruby Team
Toolbox of a Ruby TeamToolbox of a Ruby Team
Toolbox of a Ruby Team
 
Easy deployment & management of cloud apps
Easy deployment & management of cloud appsEasy deployment & management of cloud apps
Easy deployment & management of cloud apps
 
Spinnaker Summit 2018: CI/CD Patterns for Kubernetes with Spinnaker
Spinnaker Summit 2018: CI/CD Patterns for Kubernetes with SpinnakerSpinnaker Summit 2018: CI/CD Patterns for Kubernetes with Spinnaker
Spinnaker Summit 2018: CI/CD Patterns for Kubernetes with Spinnaker
 
DevFest 2022 - GitHub Actions를 활용한 Flutter 배포 자동화하기
DevFest 2022 - GitHub Actions를 활용한 Flutter 배포 자동화하기DevFest 2022 - GitHub Actions를 활용한 Flutter 배포 자동화하기
DevFest 2022 - GitHub Actions를 활용한 Flutter 배포 자동화하기
 
Application Lifecycle Management in a Serverless World
Application Lifecycle Management in a Serverless WorldApplication Lifecycle Management in a Serverless World
Application Lifecycle Management in a Serverless World
 
Scaffolding for Serverless: lightning talk for AWS Arlington Meetup
Scaffolding for Serverless: lightning talk for AWS Arlington MeetupScaffolding for Serverless: lightning talk for AWS Arlington Meetup
Scaffolding for Serverless: lightning talk for AWS Arlington Meetup
 
Scaleable PHP Applications in Kubernetes
Scaleable PHP Applications in KubernetesScaleable PHP Applications in Kubernetes
Scaleable PHP Applications in Kubernetes
 
Deploying Symfony2 app with Ansible
Deploying Symfony2 app with AnsibleDeploying Symfony2 app with Ansible
Deploying Symfony2 app with Ansible
 
Docker Multi-arch All The Things
Docker Multi-arch All The ThingsDocker Multi-arch All The Things
Docker Multi-arch All The Things
 
Tutorial 1: Your First Science App - Araport Developer Workshop
Tutorial 1: Your First Science App - Araport Developer WorkshopTutorial 1: Your First Science App - Araport Developer Workshop
Tutorial 1: Your First Science App - Araport Developer Workshop
 
carrow - Go bindings to Apache Arrow via C++-API
carrow - Go bindings to Apache Arrow via C++-APIcarrow - Go bindings to Apache Arrow via C++-API
carrow - Go bindings to Apache Arrow via C++-API
 
Introduzione a GitHub Actions (beta)
Introduzione a GitHub Actions (beta)Introduzione a GitHub Actions (beta)
Introduzione a GitHub Actions (beta)
 
Solum - OpenStack PaaS / ALM - Austin OpenStack summit
Solum - OpenStack PaaS / ALM - Austin OpenStack summitSolum - OpenStack PaaS / ALM - Austin OpenStack summit
Solum - OpenStack PaaS / ALM - Austin OpenStack summit
 
Kubernetes Overview - Deploy your app with confidence
Kubernetes Overview - Deploy your app with confidenceKubernetes Overview - Deploy your app with confidence
Kubernetes Overview - Deploy your app with confidence
 

Mehr von Fwdays

Mehr von Fwdays (20)

"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y..."How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
 
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
 
"Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl..."Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl...
 
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T..."How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...
 
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ..."The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
 
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu..."[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
 
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care..."[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
 
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"..."4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
 
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout", Anast...
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout",  Anast..."Reconnecting with Purpose: Rediscovering Job Interest after Burnout",  Anast...
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout", Anast...
 
"Mentoring 101: How to effectively invest experience in the success of others...
"Mentoring 101: How to effectively invest experience in the success of others..."Mentoring 101: How to effectively invest experience in the success of others...
"Mentoring 101: How to effectively invest experience in the success of others...
 
"Mission (im) possible: How to get an offer in 2024?", Oleksandra Myronova
"Mission (im) possible: How to get an offer in 2024?",  Oleksandra Myronova"Mission (im) possible: How to get an offer in 2024?",  Oleksandra Myronova
"Mission (im) possible: How to get an offer in 2024?", Oleksandra Myronova
 
"Why have we learned how to package products, but not how to 'package ourselv...
"Why have we learned how to package products, but not how to 'package ourselv..."Why have we learned how to package products, but not how to 'package ourselv...
"Why have we learned how to package products, but not how to 'package ourselv...
 
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin..."How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
 

Kürzlich hochgeladen

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 

Kürzlich hochgeladen (20)

Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 

"Modern DevOps & Real Life Applications. 3.0.0-devops+20230318", Igor Fesenko

  • 1.
  • 2. Who Am I?  Engineer<T> where T : Azure | DevOps | C#  Microsoft® Most Valuable Professional  Solutions Architect @ SoftServe, Inc.  Spend time in the cloud  More… go to https://ifesenko.com
  • 3. Agenda  DNS  Versioning  GitOps & ArgoCD  GitHub Actions for CI/CD
  • 5. DNS
  • 7. DNS. Lessons Learned  Do NOT use {env}.{app}.company.com as a naming convention  Do {app}.{env}.company.com  Use {internal}.{env}.company.com DNS zone if you have resources that are not exposed to public internet  CNAME records will help during potential migration if you use them
  • 10. Semantic Versioning (SemVer) & Branch Strategy  Given a version number MAJOR.MINOR.PATCH, increment the:  MAJOR version when you make incompatible API changes  MINOR version when you add functionality in a backwards compatible manner  PATCH version when you make backwards compatible bug fixes
  • 11. Calendar-Based Versioning (CalVer)  YYYY.MM.Sequence(.Patch)  Breaking changes are for changelog  Ship feature and fix as soon as possible  Gregorian calendar and UTC time are only dependencies  If you have support cycle each user can easily check if it is supported
  • 12. Versioning. Lessons Learned  Ensure calendar-based version is generated per a run and only once  Always leave traces to correlate build number with commit id  Git tag  Version metadata  You should be able to generate new version number on any platform
  • 15. GitOps. Repository Layout  .github/  azure/ - definitions related to policy as code  cluster/ - all files related to AKS  argocd/ - Application of Applications (cluster bootstrapping)  non-prod/  apps/  projects/  prod/  apps/  projects/  rabbitmq/ - RabbitMQ Helm chart  stunnel/ - stunnel Helm chart  docs/ - runbooks, scripts, decision records, etc.  terraform/ - Terraform files to manage infrastructure
  • 16. ArgoCD. App Of Apps Pattern  When ArgoCD is deployed  create a new app “root”  that consists other apps and projects  PATH: cluster/argocd/non-prod  Apps  definitions of 1st party and 3rd party apps  Projects  we use ArgoCD projects as environments
  • 17. projects/dev.yaml apiVersion: argoproj.io/v1alpha1 kind: AppProject metadata: name: dev spec: clusterResourceWhitelist: - group: "*" kind: "*" description: Dev Environment destinations: - name: "*" namespace: "*-dev" server: "*" sourceRepos: - "*" status: {}
  • 18. apps/rabbitmq.yaml apiVersion: argoproj.io/v1alpha1 kind: ApplicationSet metadata: name: rabbitmq spec: generators: - list: elements: - env: dev - env: sqa - env: uat template: metadata: name: "rabbitmq-{{env}}" spec: project: "{{env}}" source: repoURL: git@github.com:org/ops-product.git targetRevision: HEAD path: cluster/rabbitmq helm: valueFiles: - common/values-common.yaml - variants/non-prod/values-non-prod.yaml - "envs/{{env}}-eastus/values-settings.yaml" - "envs/{{env}}-eastus/values-replicas.yaml" destination: namespace: "rabbitmq-{{env}}" server: https://kubernetes.default.svc syncPolicy: syncOptions: - CreateNamespace=true
  • 19. ArgoCD. Helm Chart Layout  common/ - configuration which is common to all envs  envs/ - holds environment specific configuration  templates/ - Helm chart files  variants/ - holds characteristics between similar envs
  • 21. GitHub Actions or “Count to 10”
  • 22. GitHub Actions Layout  Build  Code Analysis  Deploy  PRs  *Reusable workflows to build, test and publish
  • 24. “EmojiOps” in Action  Use as a symbol system to highlight important steps
  • 25. GitHub Actions & Release Management
  • 26. deploy.yaml deploy: runs-on: ubuntu-latest name: deploy to ${{ inputs.env-id }} environment: name: ${{ inputs.env-id }} env: VERSION_FILE_PATH: cluster/product-services/envs/${{ inputs.env-id }}-eastus/values-version.yaml steps: - name: Checkout org/ops-product repository uses: actions/checkout@v3 with: repository: org/ops-product path: ops-product ssh-key: ${{ secrets.OPS_PRODUCT_SSH_PRIVATE_KEY }} - name: Update container image version to ${{ inputs.build-version }} uses: fjogeleit/yaml-update-action@main with: valueFile: ${{ env.VERSION_FILE_PATH }} propertyPath: "image.tag" value: "${{ inputs.build-version }}" commitChange: false updateFile: true workDir: ops-product branch: deployment masterBranchName: main targetBranch: dev repository: org/ops-product - name: Commit and push changes run: | git config user.name "${GITHUB_ACTOR}" git config user.email "${GITHUB_ACTOR}@users.noreply.github.com" git add . git commit -m "Bump image version to ${{ inputs.build-version }} for ${{ inputs.env-id }} environment" git push working-directory: ops-product
  • 27. Keep Up To Date Your Actions & Charts  Dependabot or Renovate
  • 28. GitHub Actions. Lessons Learned  Be careful when sharing state between Jobs via GitHub Artifacts  Do not publish build artifacts to GitHub Artifacts  Allow a subsequently queued workflow run to interrupt previous runs. GitHub Docs  Limit number of open pull requests for version updates  Cache dependencies  Nested workflows and secrets scope

Hinweis der Redaktion

  1. Сучасний ДевОпс та Реальність Його Застосування
  2. ```mermaid sequenceDiagram participant PI as Public Internet participant CF as Cloudflare participant Prod as Azure DNS (Prod) participant NonProd as Azure DNS (Non-Prod) PI->>CF: company.com CF->>Prod: product.company.com Prod->>NonProd: dev.product.company.com Prod->>NonProd: sqa.product.company.com Prod->>NonProd: uat.product.company.com ```
  3. How it works If the current commit has a version tag: The version is used as-is If the current commit does not have a version tag: The commit history is searched for the latest commit with a version tag. If a commit with a version tag is found: If the version is a pre-release: The version is used as-is, with height added. If the version is RTM (not pre-release): The patch number is incremented. Default pre-release identifiers are added. Height is added. If no commit with a version tag is found: The default version0.0.0-preview.0 is used, with height added. Height If the current commit does not have a version tag, another number is added to the pre-release identifiers. This is the number of commits since the latest commit with a version tag or, if no commits have a version tag, since the root commit. This is known as "height". For example, if the latest version tag found is 2022.11.0-rc.1, at a height of 42 commits, the calculated version is 2022.11.0-rc.1.42. Example: 2022.11.1-preview.7+f52c82b -> 2022.11.1-rc.1+e42c32b -> 2022.11.1+9693551