технический вопрос: Gitlab, Terraform, AWS

Stantmn
Reactions: 8
Сообщения: 19
Зарегистрирован: Пт ноя 17, 2023 4:09 pm
Откуда: LA

технический вопрос: Gitlab, Terraform, AWS

Сообщение Stantmn »

не знаю, принято ли тут задавать технические вопросы, или тут толко стеб. Но вроде тут много умных людей, или они просто себя так выдают :)
Дано: есть gitlab с со своей CI/CD, AWS и сторонний cloud(Confluent Kafka если это имеет значение), связанный с амазоном через privatelink. Есть еще Terraform, который должен управлять всеми ресурсами.
В gitlab можно запускать tf скрипт, он создает ресурсы на AWS, Kafka кластер в Confluent, но проблема в том, что управлять топиками и другими вещами можно только через privatelink. т.е. должно быть запущено внутри нашего vpc а не из gitlab.
вроде как есть 2 решения:
1. создать proxy c публичным ip и слать все что связанное с confluent через него и privatelink вроде как не очень секурно и надо все согласовывать с другими командами и их менеджерами
2. сделать vpc peering  между гитлаб и нашим aws vpc. но что-то я такого нагуглить не смог.
Есть кого-то идеи, предлоджения, размышления, рекомендации, как это все лучше сделать?
Ну или просто может поделитесь, как у вас это реализовано.

не пинайте, я в этих сетях и девопсе не особо пока разбираюсь, но приходится это делать.
тут еще ситуация: что ночальница хочет чтобы мыв сделали простую лямбду, которая запускает terraform скрипт и хранит стейт в dynamo и чтобы никаких ec2. Надо ей как-то доказать, что у лямбды таймаут 15 мин и стоит это дорого и все равно надо ec2 чтобы запускать скрипт там или в докере. поправьте, если я не прав. спорить с ней сильно нельзя. один поспорил, 31 марта идет на выход.
Аватара пользователя
Mad Hatter
⭐ Top 5 most interesting users
Reactions: 1481
Сообщения: 7826
Зарегистрирован: Пн июн 13, 2022 7:22 am

Re: технический вопрос: Gitlab, Terraform, AWS

Сообщение Mad Hatter »

Ну всё, полируй резюме 🤣
Alexander Troyansky
Reactions: 626
Сообщения: 1724
Зарегистрирован: Вт июн 14, 2022 7:57 pm

Re: технический вопрос: Gitlab, Terraform, AWS

Сообщение Alexander Troyansky »

Stantmn писал(а): Ср мар 06, 2024 11:01 am не знаю, принято ли тут задавать технические вопросы, или тут толко стеб. Но вроде тут много умных людей, или они просто себя так выдают :)
Дано: есть gitlab с со своей CI/CD, AWS и сторонний cloud(Confluent Kafka если это имеет значение), связанный с амазоном через privatelink. Есть еще Terraform, который должен управлять всеми ресурсами.
В gitlab можно запускать tf скрипт, он создает ресурсы на AWS, Kafka кластер в Confluent, но проблема в том, что управлять топиками и другими вещами можно только через privatelink. т.е. должно быть запущено внутри нашего vpc а не из gitlab.
вроде как есть 2 решения:
1. создать proxy c публичным ip и слать все что связанное с confluent через него и privatelink вроде как не очень секурно и надо все согласовывать с другими командами и их менеджерами
2. сделать vpc peering  между гитлаб и нашим aws vpc. но что-то я такого нагуглить не смог.
Есть кого-то идеи, предлоджения, размышления, рекомендации, как это все лучше сделать?
Ну или просто может поделитесь, как у вас это реализовано.
Ну так прищурившись на вскидку, ваш IT должен настроить TransitGateway (120 дол/в месяц), Route53 Resolver (180 дол/месяц), чтобы связать ваш корпоративный GitLab и AWS VPC. PrivateLink вам не поможет никак
не пинайте, я в этих сетях и девопсе не особо пока разбираюсь, но приходится это делать.
тут еще ситуация: что ночальница хочет чтобы мыв сделали простую лямбду, которая запускает terraform скрипт и хранит стейт в dynamo и чтобы никаких ec2. Надо ей как-то доказать, что у лямбды таймаут 15 мин и стоит это дорого и все равно надо ec2 чтобы запускать скрипт там или в докере. поправьте, если я не прав. спорить с ней сильно нельзя. один поспорил, 31 марта идет на выход.
Вам не AWS Lambda нужна, но AWS CodeBuild для вашего сценария подходит, EC2 не надо.

P.S. Н(о)ачальница у вас - бестолочь, но со своей стороны в резюме напишет "put appropriate pressure on the team to come with innovative ideas to cut costs and deliver on time"
Последний раз редактировалось Alexander Troyansky Ср мар 06, 2024 11:29 am, всего редактировалось 1 раз.
Аватара пользователя
Mad Hatter
⭐ Top 5 most interesting users
Reactions: 1481
Сообщения: 7826
Зарегистрирован: Пн июн 13, 2022 7:22 am

Re: технический вопрос: Gitlab, Terraform, AWS

Сообщение Mad Hatter »

ChatGPT даёт подробный ответ на вопрос TC
Alexander Troyansky
Reactions: 626
Сообщения: 1724
Зарегистрирован: Вт июн 14, 2022 7:57 pm

Re: технический вопрос: Gitlab, Terraform, AWS

Сообщение Alexander Troyansky »

Mad Hatter писал(а): Ср мар 06, 2024 11:27 am ChatGPT даёт подробный ответ на вопрос TC
а можете запостить здесь? Я на днях пытался найти ссылки на законопроекты в Конгрессе - выдаёт ахинею. Легче самому было найти
1 Изображение
Bobeg
Reactions: 1734
Сообщения: 12586
Зарегистрирован: Ср июн 15, 2022 4:01 am

Re: технический вопрос: Gitlab, Terraform, AWS

Сообщение Bobeg »

Stantmn писал(а): Ср мар 06, 2024 11:01 am не знаю, принято ли тут задавать технические вопросы, или тут толко стеб. Но вроде тут много умных людей, или они просто себя так выдают :)
Дано: есть gitlab с со своей CI/CD, AWS и сторонний cloud(Confluent Kafka если это имеет значение), связанный с амазоном через privatelink. Есть еще Terraform, который должен управлять всеми ресурсами.
В gitlab можно запускать tf скрипт, он создает ресурсы на AWS, Kafka кластер в Confluent, но проблема в том, что управлять топиками и другими вещами можно только через privatelink. т.е. должно быть запущено внутри нашего vpc а не из gitlab.
вроде как есть 2 решения:
1. создать proxy c публичным ip и слать все что связанное с confluent через него и privatelink вроде как не очень секурно и надо все согласовывать с другими командами и их менеджерами
2. сделать vpc peering  между гитлаб и нашим aws vpc. но что-то я такого нагуглить не смог.
Есть кого-то идеи, предлоджения, размышления, рекомендации, как это все лучше сделать?
Ну или просто может поделитесь, как у вас это реализовано.

не пинайте, я в этих сетях и девопсе не особо пока разбираюсь, но приходится это делать.
тут еще ситуация: что ночальница хочет чтобы мыв сделали простую лямбду, которая запускает terraform скрипт и хранит стейт в dynamo и чтобы никаких ec2. Надо ей как-то доказать, что у лямбды таймаут 15 мин и стоит это дорого и все равно надо ec2 чтобы запускать скрипт там или в докере. поправьте, если я не прав. спорить с ней сильно нельзя. один поспорил, 31 марта идет на выход.
А ты сделай ей эту блямбду.
Ну хочет тетка блямбду. Ну сделай ей.
Может у блямбды можно таймаут удлинить как-то. Я в этом всем ниразбираюс никак.
Я тока знаю шо у нас в омереге кто ноцалнег тот умни, а кто не нацалнег тот дурак.
Stantmn
Reactions: 8
Сообщения: 19
Зарегистрирован: Пт ноя 17, 2023 4:09 pm
Откуда: LA

Re: технический вопрос: Gitlab, Terraform, AWS

Сообщение Stantmn »

Mad Hatter писал(а): Ср мар 06, 2024 11:19 am Ну всё, полируй резюме 🤣
дак уже отполировано, не особо кто хочет меня :)
Alexander Troyansky писал(а): Ср мар 06, 2024 11:21 am Ну так прищурившись на вскидку, ваш IT должен настроить TransitGateway (120 дол/в месяц), Route53 Resolver (180 дол/месяц), чтобы связать ваш корпоративный GitLab и AWS VPC. PrivateLink вам не поможет никак
спасибо! Надо узнать, есть уже такое у нас или нет. PrivateLink между AWS и Confluent, он уже есть и надо через него с Kafka общаться. Еслм бы был MSK, то таких бы проблем не было, но есть, что есть
Alexander Troyansky писал(а): Ср мар 06, 2024 11:21 am но AWS CodeBuild для вашего сценария подходит, EC2 не надо.
вот я в эту сторону тоже хотел покопать, спасибо за совет!
Alexander Troyansky писал(а): Ср мар 06, 2024 11:21 am Н(о)ачальница у вас - бестолочь
в нынешнее время с выбором начальников немного туговато, особенно когда в прошлом году сократили
Аватара пользователя
Mad Hatter
⭐ Top 5 most interesting users
Reactions: 1481
Сообщения: 7826
Зарегистрирован: Пн июн 13, 2022 7:22 am

Re: технический вопрос: Gitlab, Terraform, AWS

Сообщение Mad Hatter »

Alexander Troyansky писал(а): Ср мар 06, 2024 11:32 am
Mad Hatter писал(а): Ср мар 06, 2024 11:27 am ChatGPT даёт подробный ответ на вопрос TC
а можете запостить здесь? Я на днях пытался найти ссылки на законопроекты в Конгрессе - выдаёт ахинею. Легче самому было найти
To run a Terraform script in GitLab CI/CD and access resources in a private AWS VPC, you would typically follow these steps:

### 1. Prepare Your AWS Environment

- Ensure that your AWS environment is set up correctly, including the private VPC and any resources you want to manage with Terraform.
- Create an IAM role or user with sufficient permissions to manage the resources through Terraform.

### 2. Store AWS Credentials Securely in GitLab

- In GitLab, store your AWS credentials securely using CI/CD environment variables. This is crucial for maintaining the security of your AWS account.
- Go to your GitLab project's `Settings` > `CI / CD` > `Variables` section.
- Add variables for `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` with the values of your IAM user or role's credentials. Optionally, add `AWS_DEFAULT_REGION` to specify your AWS region.

### 3. Configure Terraform Script in Your GitLab Repository

- Ensure your Terraform script is correctly configured to manage resources in your AWS VPC. This might include specifying the AWS provider and any required configurations specific to your VPC.

### 4. Create a `.gitlab-ci.yml` File

- This YAML file defines the CI/CD pipeline in GitLab. Here's a simple example of what the `.gitlab-ci.yml` file might look like for running Terraform scripts:

```yaml
stages:
- validate
- apply

terraform-validate:
stage: validate
image: hashicorp/terraform:light
script:
- terraform init
- terraform validate

terraform-apply:
stage: apply
image: hashicorp/terraform:light
script:
- terraform init
- terraform apply -auto-approve
only:
- master
```

### 5. Access Private VPC Resources

To access resources within a private VPC, you might need to configure a VPN or Direct Connect (for persistent connections) or use a bastion host/jump server with SSH access. This is because your GitLab CI/CD runners won't have direct access to private networks in AWS by default.

### 6. Use GitLab Runners

- Consider using GitLab's shared runners, or set up a self-hosted runner within your AWS environment that has access to the VPC. Self-hosted runners can be more secure and provide better access control when dealing with private resources.

### 7. Execute Pipeline

- With the `.gitlab-ci.yml` file in place and your AWS credentials securely stored in GitLab, push the changes to your repository. This will trigger the CI/CD pipeline to run your Terraform scripts.

### Security Considerations

- Always use IAM roles and policies that follow the principle of least privilege.
- Regularly rotate your AWS credentials.
- Review Terraform plans before applying, especially in production environments.

### Additional Resources

For more detailed information, consult the official documentation for [Terraform](https://www.terraform.io/docs), [AWS](https://docs.aws.amazon.com/), and [GitLab CI/CD](https://docs.gitlab.com/ee/ci/).
Stantmn
Reactions: 8
Сообщения: 19
Зарегистрирован: Пт ноя 17, 2023 4:09 pm
Откуда: LA

Re: технический вопрос: Gitlab, Terraform, AWS

Сообщение Stantmn »

Mad Hatter писал(а): Ср мар 06, 2024 11:27 am ChatGPT даёт подробный ответ на вопрос TC
чатГПТ дает какую-то фигню или то, что я знаю. а вот как запустить гитлабу CI/CD запустить изнутри AWS на 3rd сервис скрипт не знает
Аватара пользователя
Mad Hatter
⭐ Top 5 most interesting users
Reactions: 1481
Сообщения: 7826
Зарегистрирован: Пн июн 13, 2022 7:22 am

Re: технический вопрос: Gitlab, Terraform, AWS

Сообщение Mad Hatter »

Stantmn писал(а): Ср мар 06, 2024 11:49 am
Mad Hatter писал(а): Ср мар 06, 2024 11:27 am ChatGPT даёт подробный ответ на вопрос TC
чатГПТ дает какую-то фигню или то, что я знаю. а вот как запустить гитлабу CI/CD запустить изнутри AWS на 3rd сервис скрипт не знает
Так напрямую и не может. А если бы смог, то это извините полная жопа, так у вас кто угодно и что угодно запускать смог бы.
Аватара пользователя
Mad Hatter
⭐ Top 5 most interesting users
Reactions: 1481
Сообщения: 7826
Зарегистрирован: Пн июн 13, 2022 7:22 am

Re: технический вопрос: Gitlab, Terraform, AWS

Сообщение Mad Hatter »

Размышляя: у вас или должен быть облачный сервис, который реализует такой use case, или ставьте внутри своего VPC git server который тянет апдейты с Gitlab, и дальше запускает скрипты. Как-то так.
Последний раз редактировалось Mad Hatter Ср мар 06, 2024 11:55 am, всего редактировалось 1 раз.
Alexander Troyansky
Reactions: 626
Сообщения: 1724
Зарегистрирован: Вт июн 14, 2022 7:57 pm

Re: технический вопрос: Gitlab, Terraform, AWS

Сообщение Alexander Troyansky »

Mad Hatter писал(а): Ср мар 06, 2024 11:48 am
Alexander Troyansky писал(а): Ср мар 06, 2024 11:32 am
а можете запостить здесь? Я на днях пытался найти ссылки на законопроекты в Конгрессе - выдаёт ахинею. Легче самому было найти
To run a Terraform script in GitLab CI/CD and access resources in a private AWS VPC, you would typically follow these steps:

### 1. Prepare Your AWS Environment

- Ensure that your AWS environment is set up correctly, including the private VPC and any resources you want to manage with Terraform.
- Create an IAM role or user with sufficient permissions to manage the resources through Terraform.

### 2. Store AWS Credentials Securely in GitLab

- In GitLab, store your AWS credentials securely using CI/CD environment variables. This is crucial for maintaining the security of your AWS account.
- Go to your GitLab project's `Settings` > `CI / CD` > `Variables` section.
- Add variables for `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` with the values of your IAM user or role's credentials. Optionally, add `AWS_DEFAULT_REGION` to specify your AWS region.

### 3. Configure Terraform Script in Your GitLab Repository

- Ensure your Terraform script is correctly configured to manage resources in your AWS VPC. This might include specifying the AWS provider and any required configurations specific to your VPC.

### 4. Create a `.gitlab-ci.yml` File

- This YAML file defines the CI/CD pipeline in GitLab. Here's a simple example of what the `.gitlab-ci.yml` file might look like for running Terraform scripts:

```yaml
stages:
- validate
- apply

terraform-validate:
stage: validate
image: hashicorp/terraform:light
script:
- terraform init
- terraform validate

terraform-apply:
stage: apply
image: hashicorp/terraform:light
script:
- terraform init
- terraform apply -auto-approve
only:
- master
```

### 5. Access Private VPC Resources

To access resources within a private VPC, you might need to configure a VPN or Direct Connect (for persistent connections) or use a bastion host/jump server with SSH access. This is because your GitLab CI/CD runners won't have direct access to private networks in AWS by default.

### 6. Use GitLab Runners

- Consider using GitLab's shared runners, or set up a self-hosted runner within your AWS environment that has access to the VPC. Self-hosted runners can be more secure and provide better access control when dealing with private resources.

### 7. Execute Pipeline

- With the `.gitlab-ci.yml` file in place and your AWS credentials securely stored in GitLab, push the changes to your repository. This will trigger the CI/CD pipeline to run your Terraform scripts.

### Security Considerations

- Always use IAM roles and policies that follow the principle of least privilege.
- Regularly rotate your AWS credentials.
- Review Terraform plans before applying, especially in production environments.

### Additional Resources

For more detailed information, consult the official documentation for [Terraform](https://www.terraform.io/docs), [AWS](https://docs.aws.amazon.com/), and [GitLab CI/CD](https://docs.gitlab.com/ee/ci/).
Ну да, я в общем-то согласен с ТС, ChapGPT выдаёт я бы сказал бесполезную/вредную фигню с вкраплением правильных фрагментов. Но со стороны выглядит, как, ого-го, круто.
1 Изображение
Stantmn
Reactions: 8
Сообщения: 19
Зарегистрирован: Пт ноя 17, 2023 4:09 pm
Откуда: LA

Re: технический вопрос: Gitlab, Terraform, AWS

Сообщение Stantmn »

Mad Hatter писал(а): Ср мар 06, 2024 11:51 am Так напрямую и не может. А если бы смог, то это извините полная жопа, так у вас кто угодно и что угодно запускать смог бы.
дак вот и вопрос, как сделать так, чтобы смог?
Аватара пользователя
Mad Hatter
⭐ Top 5 most interesting users
Reactions: 1481
Сообщения: 7826
Зарегистрирован: Пн июн 13, 2022 7:22 am

Re: технический вопрос: Gitlab, Terraform, AWS

Сообщение Mad Hatter »

Stantmn писал(а): Ср мар 06, 2024 11:56 am
Mad Hatter писал(а): Ср мар 06, 2024 11:51 am Так напрямую и не может. А если бы смог, то это извините полная жопа, так у вас кто угодно и что угодно запускать смог бы.
дак вот и вопрос, как сделать так, чтобы смог?
Думайте. Я выше написал, или что-то готовое облачное (я так понимаю, что такого нет) или городить свое внутри VPC.
Предложение CGT хранить внутри Gitlab ключи, как то не очень хорошо выглядит.
Alexander Troyansky
Reactions: 626
Сообщения: 1724
Зарегистрирован: Вт июн 14, 2022 7:57 pm

Re: технический вопрос: Gitlab, Terraform, AWS

Сообщение Alexander Troyansky »

Mad Hatter писал(а): Ср мар 06, 2024 11:51 am
Stantmn писал(а): Ср мар 06, 2024 11:49 am

чатГПТ дает какую-то фигню или то, что я знаю. а вот как запустить гитлабу CI/CD запустить изнутри AWS на 3rd сервис скрипт не знает
Так напрямую и не может. А если бы смог, то это извините полная жопа, так у вас кто угодно и что угодно запускать смог бы.
тут слово "напрямую" - оно какое-то неодназначное. С помощью TGW, Route 53 Resolver, CodeBuild этого можно добиться, но оно для человека, который задаёт такой вопрос, и его начальницы - дело нетривиальное.
Alexander Troyansky
Reactions: 626
Сообщения: 1724
Зарегистрирован: Вт июн 14, 2022 7:57 pm

Re: технический вопрос: Gitlab, Terraform, AWS

Сообщение Alexander Troyansky »

... в связи этим мне так подумалось, что люди, остро озаботившиеся своей job security, начали в ChatGPT вбрасывать какое-то отстойное гумно. Чувствуется, что ДевОпсы тоже зря время не теряли...
1 Изображение
Stantmn
Reactions: 8
Сообщения: 19
Зарегистрирован: Пт ноя 17, 2023 4:09 pm
Откуда: LA

Re: технический вопрос: Gitlab, Terraform, AWS

Сообщение Stantmn »

Alexander Troyansky писал(а): Ср мар 06, 2024 12:02 pm С помощью TGW, Route 53 Resolver, CodeBuild этого можно добиться, но оно для человека, который задаёт такой вопрос, и его начальницы - дело нетривиальное.
да, особенно, когда всегда были девопсы рядом :)
тут, ни девопсов, ни тестеров. все сами. но выбора пока нет
Stantmn
Reactions: 8
Сообщения: 19
Зарегистрирован: Пт ноя 17, 2023 4:09 pm
Откуда: LA

Re: технический вопрос: Gitlab, Terraform, AWS

Сообщение Stantmn »

Еще у нас 4 проекта 2 apps, npm package и терраформ в одном репо. Разделять нельзя
Bobeg
Reactions: 1734
Сообщения: 12586
Зарегистрирован: Ср июн 15, 2022 4:01 am

Re: технический вопрос: Gitlab, Terraform, AWS

Сообщение Bobeg »

Alexander Troyansky писал(а): Ср мар 06, 2024 12:11 pm ... в связи этим мне так подумалось, что люди, остро озаботившиеся своей job security, начали в ChatGPT вбрасывать какое-то отстойное гумно. Чувствуется, что ДевОпсы тоже зря время не теряли...
А как в гопоту вбросить?
Без доступа к его трейнинг интерфейсу.
Alexander Troyansky
Reactions: 626
Сообщения: 1724
Зарегистрирован: Вт июн 14, 2022 7:57 pm

Re: технический вопрос: Gitlab, Terraform, AWS

Сообщение Alexander Troyansky »

@Stantmn, благодаря @elpresidente*, вот здесь можно получить более качественные ответы на ваши вопросы: viewtopic.php?t=4069. Можно корректировать ваш запрос, добавляя больше деталей.

Однако хочу отметить, что реализация стратегии займёт значительные усилия даже у специально подготовленного персонала, который в вашей конторе несомненно был/есть. Например, в вашем случае, когда нужно сделать "CodeBuild running a terraform script" это означает, что нужен ыщё один терраформ, который создаст этот самый CodeBuild, а также сопутствующие детальки типа CodePipeline, ECR для хранения вашего кастомизированного имиджа, Cloudwatch, IAM Roles и т.п. Запилить всё этого за три недели или сколько там у вас времени есть - мне каэцо нереально. Или дедлайн только для тех, кто любить спорить с начальницей?
1 Изображение
Ответить