<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Infrastructure on IGAAWI docs</title>
    <link>/categories/infrastructure/</link>
    <description>Recent content in Infrastructure on IGAAWI docs</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Thu, 19 Mar 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="/categories/infrastructure/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Required tools</title>
      <link>/infrastructure/tools/</link>
      <pubDate>Thu, 19 Mar 2026 00:00:00 +0000</pubDate>
      <guid>/infrastructure/tools/</guid>
      <description>&lt;p&gt;Please install the following tools:&lt;/p&gt;&#xA;&lt;h2 id=&#34;argocd-cli&#34;&gt;argocd cli&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://argo-cd.readthedocs.io/en/stable/cli_installation/&#34;&gt;https://argo-cd.readthedocs.io/en/stable/cli_installation/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;aws-cli&#34;&gt;aws cli&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html&#34;&gt;https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;aws-vault&#34;&gt;aws-vault&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/99designs/aws-vault&#34;&gt;https://github.com/99designs/aws-vault&lt;/a&gt;&lt;/p&gt;&#xA;&#xA;&#xA;&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;&#xA;&lt;h4 class=&#34;alert-heading&#34;&gt;Important&lt;/h4&gt;&#xA;&#xA;    You specifically need 7.x version. If you run previous 6.x - things may not work for you.&#xA;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h2 id=&#34;git-crypt&#34;&gt;git-crypt&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/AGWA/git-crypt&#34;&gt;https://github.com/AGWA/git-crypt&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;helm&#34;&gt;helm&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://helm.sh/docs/intro/install/&#34;&gt;https://helm.sh/docs/intro/install/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;kubectl&#34;&gt;kubectl&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/&#34;&gt;https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;pre-commit&#34;&gt;pre-commit&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://pre-commit.com/#install&#34;&gt;https://pre-commit.com/#install&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;taskfile&#34;&gt;taskfile&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://taskfile.dev/installation/&#34;&gt;https://taskfile.dev/installation/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Replaces our previous solution based on Makefile&lt;/p&gt;&#xA;&lt;h2 id=&#34;terraform&#34;&gt;terraform&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://developer.hashicorp.com/terraform/install&#34;&gt;https://developer.hashicorp.com/terraform/install&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;terragrunt&#34;&gt;terragrunt&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://terragrunt.gruntwork.io/docs/getting-started/install/&#34;&gt;https://terragrunt.gruntwork.io/docs/getting-started/install/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;tfenv&#34;&gt;tfenv&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/tfutils/tfenv&#34;&gt;https://github.com/tfutils/tfenv&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Once you have tfenv installed, you can install a required terraform 1.8.0:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#4c4f69;background-color:#eff1f5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tfenv install 1.8.0&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;h2 id=&#34;tfupdate&#34;&gt;tfupdate&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/minamijoyo/tfupdate&#34;&gt;https://github.com/minamijoyo/tfupdate&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Authentication</title>
      <link>/infrastructure/authentication/</link>
      <pubDate>Thu, 19 Mar 2026 00:00:00 +0000</pubDate>
      <guid>/infrastructure/authentication/</guid>
      <description>&lt;h2 id=&#34;aws&#34;&gt;AWS&lt;/h2&gt;&#xA;&lt;h3 id=&#34;configure-sso&#34;&gt;Configure SSO&lt;/h3&gt;&#xA;&#xA;&#xA;&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;&#xA;&lt;h4 class=&#34;alert-heading&#34;&gt;Important&lt;/h4&gt;&#xA;&#xA;    &lt;p&gt;You will need to upgrade to latest:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;aws-vault 7.2.0,&lt;/li&gt;&#xA;&lt;li&gt;aws 2.15.38&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;And then remove old &lt;strong&gt;saritasa/v2/administrators&lt;/strong&gt; profile from the &lt;code&gt;~/.aws/config&lt;/code&gt; file, otherwise you may get crashes.&lt;/p&gt;&#xA;&#xA;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#4c4f69;background-color:#eff1f5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;aws configure sso&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;SSO session name &lt;span style=&#34;color:#04a5e5;font-weight:bold&#34;&gt;(&lt;/span&gt;Recommended&lt;span style=&#34;color:#04a5e5;font-weight:bold&#34;&gt;)&lt;/span&gt;: saritasa/v2/administrators&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;SSO start URL &lt;span style=&#34;color:#04a5e5;font-weight:bold&#34;&gt;[&lt;/span&gt;None&lt;span style=&#34;color:#04a5e5;font-weight:bold&#34;&gt;]&lt;/span&gt;: https://saritasa.awsapps.com/start&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;SSO region &lt;span style=&#34;color:#04a5e5;font-weight:bold&#34;&gt;[&lt;/span&gt;None&lt;span style=&#34;color:#04a5e5;font-weight:bold&#34;&gt;]&lt;/span&gt;: us-west-2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;SSO registration scopes &lt;span style=&#34;color:#04a5e5;font-weight:bold&#34;&gt;[&lt;/span&gt;sso:account:access&lt;span style=&#34;color:#04a5e5;font-weight:bold&#34;&gt;]&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Attempting to automatically open the SSO authorization page in your default browser.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;If the browser does not open or you wish to use a different device to authorize this request, open the following URL:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;https://device.sso.us-west-2.amazonaws.com/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Then enter the code:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;LWGS-RVJX&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;There are &lt;span style=&#34;color:#fe640b&#34;&gt;3&lt;/span&gt; AWS accounts available to you.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Using the account ID &lt;span style=&#34;color:#fe640b&#34;&gt;965067289393&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;There are &lt;span style=&#34;color:#fe640b&#34;&gt;2&lt;/span&gt; roles available to you.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Using the role name &lt;span style=&#34;color:#40a02b&#34;&gt;&amp;#34;saritasa-administrators-role&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;CLI default client Region &lt;span style=&#34;color:#04a5e5;font-weight:bold&#34;&gt;[&lt;/span&gt;None&lt;span style=&#34;color:#04a5e5;font-weight:bold&#34;&gt;]&lt;/span&gt;: us-west-2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;CLI default output format &lt;span style=&#34;color:#04a5e5;font-weight:bold&#34;&gt;[&lt;/span&gt;None&lt;span style=&#34;color:#04a5e5;font-weight:bold&#34;&gt;]&lt;/span&gt;: json&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;CLI profile name &lt;span style=&#34;color:#04a5e5;font-weight:bold&#34;&gt;[&lt;/span&gt;saritasa-administrators-role-965067289393&lt;span style=&#34;color:#04a5e5;font-weight:bold&#34;&gt;]&lt;/span&gt;: saritasa/v2/administrators&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;To use this profile, specify the profile name using --profile, as shown:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;aws s3 ls --profile saritasa/v2/administrators&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;then modify your &lt;code&gt;~/aws/profile&lt;/code&gt; and change profile &lt;code&gt;saritasa-administrators-role-965067289393&lt;/code&gt; to match the following. Change it&amp;rsquo;s name &lt;strong&gt;saritasa/v2/administrators&lt;/strong&gt; and include &lt;code&gt;credential_process&lt;/code&gt; as shown below:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Terraform</title>
      <link>/infrastructure/terraform/</link>
      <pubDate>Thu, 19 Mar 2026 00:00:00 +0000</pubDate>
      <guid>/infrastructure/terraform/</guid>
      <description>&lt;h2 id=&#34;teragrunt&#34;&gt;Teragrunt&lt;/h2&gt;&#xA;&lt;p&gt;Entire implementation is implemented as terraform. In order to use it, make sure you have &lt;a href=&#34;https://terragrunt.gruntwork.io/&#34;&gt;terragrunt&lt;/a&gt; installed as per &lt;a href=&#34;/infrastructure/tools/&#34; title=&#34;Tools&#34;&gt;tools requirements&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&amp;#x1f680; Terraform repository: &lt;a href=&#34;https://github.com/saritasa-nest/igaawi-infra-aws&#34;&gt;saritasa-nest/igaawi-infra-aws&lt;/a&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#4c4f69;background-color:#eff1f5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;➜ tree -d&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;├── bin&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;├── envs&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   ├── prod&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │   ├── apps&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │   │   ├── api-backend&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │   │   └── frontend&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │   ├── aws&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │   │   ├── backups&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │   │   ├── billing&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │   │   ├── ecr&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │   │   ├── eks&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │   │   ├── elasticache&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │   │   ├── guardduty&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │   │   ├── notifications&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │   │   ├── organizations&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │   │   ├── rds&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │   │   ├── route53&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │   │   ├── ses&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │   │   ├── sso&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │   │   └── vpc&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │   └── platforms&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │       ├── airbyte&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │       ├── docs&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │       ├── github&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │       ├── keycloak&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │       ├── opsgenie&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │       ├── rattic&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │       ├── redash&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │       ├── reportportal&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │       └── sentry&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   ├── root&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │   ├── aws&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │   │   ├── organizations&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │   │   └── sso&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │   └── platforms&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │       └── terraform-state&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   └── security&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│       ├── aws&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│       │   ├── chatbot&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│       │   ├── health&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│       │   ├── inspector&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│       │   ├── organizations&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│       │   └── sso&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│       └── platforms&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│           └── statuscake&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;├── modules&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   ├── aws&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │   ├── health-forwarder&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │   └── secret-manager&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │       └── secret&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   ├── gcp&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │   └── service-account&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   ├── sentry-project&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   └── sso&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│       └── iam-assumable-role-with-saml&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;├── stacks&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   ├── apps&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │   ├── api-backend&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │   └── frontend&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   ├── aws&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │   ├── backups&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │   ├── billing&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │   ├── ecr&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │   ├── eks&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │   ├── elasticache&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │   ├── guardduty&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │   ├── notifications&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │   ├── organizations&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │   ├── rds&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │   ├── route53&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │   ├── ses&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │   ├── sso&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   │   └── vpc&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   ├── gcp&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   └── platforms&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│       ├── airbyte&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│       ├── docs&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│       ├── github&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│       ├── keycloak&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│       ├── opsgenie&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│       ├── rattic&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│       ├── redash&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│       ├── reportportal&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│       ├── sentry&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│       ├── statuscake&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│       └── terraform-state&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;└── taskfiles&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&#xA;&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;&#xA;&lt;h4 class=&#34;alert-heading&#34;&gt;Important&lt;/h4&gt;&#xA;&#xA;    &lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;apps&lt;/strong&gt; contains terraform code for business apps deployed in the infra, such as api-backend, frontend,&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;modules&lt;/strong&gt; contains terraform reusable modules used in stacks/apps,&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;stacks&lt;/strong&gt; contains infrastructure specific code, i.e. EKS, ECR, SSO, Route53 etc.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h3 id=&#34;apps&#34;&gt;Apps&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#4c4f69;background-color:#eff1f5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;aws-vault &lt;span style=&#34;color:#04a5e5&#34;&gt;exec&lt;/span&gt; igaawi/sso/administrators&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#4c4f69;background-color:#eff1f5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#04a5e5&#34;&gt;cd&lt;/span&gt; envs/prod/apps/api-backend&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#04a5e5&#34;&gt;export&lt;/span&gt; &lt;span style=&#34;color:#dc8a78&#34;&gt;ENV&lt;/span&gt;&lt;span style=&#34;color:#04a5e5;font-weight:bold&#34;&gt;=&lt;/span&gt;prod&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tg init&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tg apply&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If you want to see specific credentials generated inside the app you can do:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Backups</title>
      <link>/infrastructure/backups/</link>
      <pubDate>Thu, 19 Mar 2026 00:00:00 +0000</pubDate>
      <guid>/infrastructure/backups/</guid>
      <description>&lt;h2 id=&#34;data-backup-and-recovery-in-the-igaawi-infrastructure&#34;&gt;Data Backup and Recovery in the IGAAWI Infrastructure&lt;/h2&gt;&#xA;&lt;h3 id=&#34;s3-buckets&#34;&gt;S3 Buckets&lt;/h3&gt;&#xA;&lt;p&gt;The project uses S3 buckets for storing application data. The primary production bucket is:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Backend&lt;/strong&gt;: &lt;code&gt;igaawi-prod-api-backend-bucket&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The bucket has versioning enabled and CORS configured for &lt;code&gt;wiperinstall.rainx.com&lt;/code&gt; and &lt;code&gt;api.wiperinstall.rainx.com&lt;/code&gt;. Public read access is configured for the &lt;code&gt;public/*&lt;/code&gt; and &lt;code&gt;web/*&lt;/code&gt; prefixes (AI models and 3D wiper models).&lt;/p&gt;&#xA;&#xA;&#xA;&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;&#xA;&lt;h4 class=&#34;alert-heading&#34;&gt;Note&lt;/h4&gt;&#xA;&#xA;    S3 cross-region replication is currently &lt;strong&gt;disabled&lt;/strong&gt;. The replication account is configured as the root account (&lt;code&gt;113727184156&lt;/code&gt;) and can be enabled in terraform if needed (&lt;code&gt;s3_enable_replication = true&lt;/code&gt; in &lt;code&gt;envs/prod/apps/api-backend/prod.tfvars&lt;/code&gt;).&#xA;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;See more instruction in the &lt;a href=&#34;https://docs.aws.amazon.com/ru_ru/AmazonS3/latest/userguide/replication.html&#34;&gt;official documentation #1&lt;/a&gt; &lt;a href=&#34;https://docs.aws.amazon.com/ru_ru/AmazonS3/latest/userguide/replication-walkthrough-2.html&#34;&gt;official documentation #2&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>CI/CD</title>
      <link>/infrastructure/cicd/</link>
      <pubDate>Thu, 19 Mar 2026 00:00:00 +0000</pubDate>
      <guid>/infrastructure/cicd/</guid>
      <description>&lt;h2 id=&#34;-cicd-pipeline-overview&#34;&gt;⚙️ CI/CD Pipeline Overview&lt;/h2&gt;&#xA;&lt;p&gt;Our CI/CD pipeline is designed to provide a secure, automated, and efficient process for building and deploying applications in the &lt;code&gt;IGAAWI&lt;/code&gt; infrastructure. Here&amp;rsquo;s how it works.&lt;/p&gt;&#xA;&lt;h3 id=&#34;cicd-flow&#34;&gt;CI/CD Flow&lt;/h3&gt;&#xA;&lt;pre class=&#34;mermaid&#34;&gt;graph LR;&#xA;    A[Git Commit] --&amp;gt; B[GitHub Webhook]&#xA;    B --&amp;gt; C[EventListener - Tekton]&#xA;    C --&amp;gt; D[Pipeline]&#xA;    D --&amp;gt; E[Build and Push]&#xA;    E --&amp;gt; F[Git Update]&#xA;    F --&amp;gt; G[Argo CD Sync]&#xA;    G --&amp;gt; H[Deployment]&lt;/pre&gt;&#xA;&lt;h3 id=&#34;-gitops-in-cicd-tekton--argo-cd&#34;&gt;🚀 GitOps in CI/CD: Tekton + Argo CD&lt;/h3&gt;&#xA;&lt;p&gt;In this project, we follow the &lt;strong&gt;GitOps methodology&lt;/strong&gt;, where the &lt;strong&gt;Git repository acts as the single source of truth&lt;/strong&gt; for both infrastructure and application configurations.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Gitops</title>
      <link>/infrastructure/gitops/</link>
      <pubDate>Thu, 19 Mar 2026 00:00:00 +0000</pubDate>
      <guid>/infrastructure/gitops/</guid>
      <description>&lt;h2 id=&#34;argocd-password&#34;&gt;Argocd password&lt;/h2&gt;&#xA;&lt;p&gt;You can obtain argocd admin password from &lt;strong&gt;stacks/eks&lt;/strong&gt; outputs:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#4c4f69;background-color:#eff1f5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;aws-vault &lt;span style=&#34;color:#04a5e5&#34;&gt;exec&lt;/span&gt; igaawi/sso/administrators&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#04a5e5&#34;&gt;cd&lt;/span&gt; stacks/eks&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#04a5e5&#34;&gt;export&lt;/span&gt; &lt;span style=&#34;color:#dc8a78&#34;&gt;ENV&lt;/span&gt;&lt;span style=&#34;color:#04a5e5;font-weight:bold&#34;&gt;=&lt;/span&gt;prod&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tg output --json | jq -r .argocd.value&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#04a5e5;font-weight:bold&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#40a02b&#34;&gt;&amp;#34;password&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#40a02b&#34;&gt;&amp;#34;HIDDEN&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#40a02b&#34;&gt;&amp;#34;username&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#40a02b&#34;&gt;&amp;#34;admin&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#04a5e5;font-weight:bold&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;then proceed to &lt;a href=&#34;https://argo-cd.teleport.wiperinstall.rainx.com/applications&#34;&gt;argocd&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;You can use taskfile argocd targets:&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Command&lt;/th&gt;&#xA;          &lt;th&gt;Description&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;argocd:aas&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;turn on sync for the argocd app, task &lt;code&gt;argocd:aas -- apps backend&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;argocd:aau&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;turn off sync for the argocd app, task &lt;code&gt;argocd:aau -- apps backend&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;or you can use any &lt;a href=&#34;https://argo-cd.readthedocs.io/en/stable/cli_installation/&#34;&gt;argocd cli&lt;/a&gt; commands:&lt;/p&gt;</description>
    </item>
    <item>
      <title>DNS</title>
      <link>/infrastructure/dns/</link>
      <pubDate>Tue, 14 Oct 2025 00:00:00 +0000</pubDate>
      <guid>/infrastructure/dns/</guid>
      <description>&lt;h2 id=&#34;managing-the-domains&#34;&gt;Managing the Domains&lt;/h2&gt;&#xA;&lt;p&gt;The project uses two primary domains:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;wiperinstall.rainx.com&lt;/code&gt;&lt;/strong&gt; — main domain for API, infrastructure services (ArgoCD, Tekton, Grafana)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;wiperinstall.click&lt;/code&gt;&lt;/strong&gt; — customer-facing frontend domain&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;DNS management is handled via Amazon Route53&lt;/strong&gt;. This means that DNS configurations—such as A records, CNAMEs, and other record types—are handled and stored in &lt;strong&gt;hosted zones within Route53&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;The &lt;strong&gt;name servers (NS records)&lt;/strong&gt; provided by Route53 were configured in the domain registrar settings. This delegates DNS resolution control to &lt;a href=&#34;https://us-west-2.console.aws.amazon.com/route53/&#34;&gt;AWS Route53&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
