технический вопрос: Gitlab, Terraform, AWS
технический вопрос: Gitlab, Terraform, AWS
не знаю, принято ли тут задавать технические вопросы, или тут толко стеб. Но вроде тут много умных людей, или они просто себя так выдают
Дано: есть 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 марта идет на выход.
Дано: есть 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: 1536
- Сообщения: 8052
- Зарегистрирован: Пн июн 13, 2022 7:22 am
-
- Reactions: 627
- Сообщения: 1734
- Зарегистрирован: Вт июн 14, 2022 7:57 pm
Re: технический вопрос: Gitlab, Terraform, AWS
Ну так прищурившись на вскидку, ваш IT должен настроить TransitGateway (120 дол/в месяц), Route53 Resolver (180 дол/месяц), чтобы связать ваш корпоративный GitLab и AWS VPC. PrivateLink вам не поможет никак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. но что-то я такого нагуглить не смог.
Есть кого-то идеи, предлоджения, размышления, рекомендации, как это все лучше сделать?
Ну или просто может поделитесь, как у вас это реализовано.
Вам не AWS Lambda нужна, но AWS CodeBuild для вашего сценария подходит, EC2 не надо.не пинайте, я в этих сетях и девопсе не особо пока разбираюсь, но приходится это делать.
тут еще ситуация: что ночальница хочет чтобы мыв сделали простую лямбду, которая запускает terraform скрипт и хранит стейт в dynamo и чтобы никаких ec2. Надо ей как-то доказать, что у лямбды таймаут 15 мин и стоит это дорого и все равно надо ec2 чтобы запускать скрипт там или в докере. поправьте, если я не прав. спорить с ней сильно нельзя. один поспорил, 31 марта идет на выход.
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: 1536
- Сообщения: 8052
- Зарегистрирован: Пн июн 13, 2022 7:22 am
-
- Reactions: 627
- Сообщения: 1734
- Зарегистрирован: Вт июн 14, 2022 7:57 pm
Re: технический вопрос: Gitlab, Terraform, AWS
а можете запостить здесь? Я на днях пытался найти ссылки на законопроекты в Конгрессе - выдаёт ахинею. Легче самому было найти
Re: технический вопрос: Gitlab, Terraform, AWS
А ты сделай ей эту блямбду.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 марта идет на выход.
Ну хочет тетка блямбду. Ну сделай ей.
Может у блямбды можно таймаут удлинить как-то. Я в этом всем ниразбираюс никак.
Я тока знаю шо у нас в омереге кто ноцалнег тот умни, а кто не нацалнег тот дурак.
Re: технический вопрос: Gitlab, Terraform, AWS
дак уже отполировано, не особо кто хочет меня
спасибо! Надо узнать, есть уже такое у нас или нет. PrivateLink между AWS и Confluent, он уже есть и надо через него с Kafka общаться. Еслм бы был MSK, то таких бы проблем не было, но есть, что естьAlexander Troyansky писал(а): ↑Ср мар 06, 2024 11:21 am Ну так прищурившись на вскидку, ваш IT должен настроить TransitGateway (120 дол/в месяц), Route53 Resolver (180 дол/месяц), чтобы связать ваш корпоративный GitLab и AWS VPC. PrivateLink вам не поможет никак
вот я в эту сторону тоже хотел покопать, спасибо за совет!Alexander Troyansky писал(а): ↑Ср мар 06, 2024 11:21 am но AWS CodeBuild для вашего сценария подходит, EC2 не надо.
в нынешнее время с выбором начальников немного туговато, особенно когда в прошлом году сократили
- Mad Hatter
- ⭐ Top 5 most interesting users
- Reactions: 1536
- Сообщения: 8052
- Зарегистрирован: Пн июн 13, 2022 7:22 am
Re: технический вопрос: Gitlab, Terraform, AWS
To run a Terraform script in GitLab CI/CD and access resources in a private AWS VPC, you would typically follow these steps:Alexander Troyansky писал(а): ↑Ср мар 06, 2024 11:32 amа можете запостить здесь? Я на днях пытался найти ссылки на законопроекты в Конгрессе - выдаёт ахинею. Легче самому было найти
### 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/).
Re: технический вопрос: Gitlab, Terraform, AWS
чатГПТ дает какую-то фигню или то, что я знаю. а вот как запустить гитлабу CI/CD запустить изнутри AWS на 3rd сервис скрипт не знает
- Mad Hatter
- ⭐ Top 5 most interesting users
- Reactions: 1536
- Сообщения: 8052
- Зарегистрирован: Пн июн 13, 2022 7:22 am
Re: технический вопрос: Gitlab, Terraform, AWS
Так напрямую и не может. А если бы смог, то это извините полная жопа, так у вас кто угодно и что угодно запускать смог бы.
- Mad Hatter
- ⭐ Top 5 most interesting users
- Reactions: 1536
- Сообщения: 8052
- Зарегистрирован: Пн июн 13, 2022 7:22 am
Re: технический вопрос: Gitlab, Terraform, AWS
Размышляя: у вас или должен быть облачный сервис, который реализует такой use case, или ставьте внутри своего VPC git server который тянет апдейты с Gitlab, и дальше запускает скрипты. Как-то так.
Последний раз редактировалось Mad Hatter Ср мар 06, 2024 11:55 am, всего редактировалось 1 раз.
-
- Reactions: 627
- Сообщения: 1734
- Зарегистрирован: Вт июн 14, 2022 7:57 pm
Re: технический вопрос: Gitlab, Terraform, AWS
Ну да, я в общем-то согласен с ТС, ChapGPT выдаёт я бы сказал бесполезную/вредную фигню с вкраплением правильных фрагментов. Но со стороны выглядит, как, ого-го, круто.Mad Hatter писал(а): ↑Ср мар 06, 2024 11:48 amTo run a Terraform script in GitLab CI/CD and access resources in a private AWS VPC, you would typically follow these steps:Alexander Troyansky писал(а): ↑Ср мар 06, 2024 11:32 am
а можете запостить здесь? Я на днях пытался найти ссылки на законопроекты в Конгрессе - выдаёт ахинею. Легче самому было найти
### 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/).
Re: технический вопрос: Gitlab, Terraform, AWS
дак вот и вопрос, как сделать так, чтобы смог?Mad Hatter писал(а): ↑Ср мар 06, 2024 11:51 am Так напрямую и не может. А если бы смог, то это извините полная жопа, так у вас кто угодно и что угодно запускать смог бы.
- Mad Hatter
- ⭐ Top 5 most interesting users
- Reactions: 1536
- Сообщения: 8052
- Зарегистрирован: Пн июн 13, 2022 7:22 am
Re: технический вопрос: Gitlab, Terraform, AWS
Думайте. Я выше написал, или что-то готовое облачное (я так понимаю, что такого нет) или городить свое внутри VPC.Stantmn писал(а): ↑Ср мар 06, 2024 11:56 amдак вот и вопрос, как сделать так, чтобы смог?Mad Hatter писал(а): ↑Ср мар 06, 2024 11:51 am Так напрямую и не может. А если бы смог, то это извините полная жопа, так у вас кто угодно и что угодно запускать смог бы.
Предложение CGT хранить внутри Gitlab ключи, как то не очень хорошо выглядит.
-
- Reactions: 627
- Сообщения: 1734
- Зарегистрирован: Вт июн 14, 2022 7:57 pm
Re: технический вопрос: Gitlab, Terraform, AWS
тут слово "напрямую" - оно какое-то неодназначное. С помощью TGW, Route 53 Resolver, CodeBuild этого можно добиться, но оно для человека, который задаёт такой вопрос, и его начальницы - дело нетривиальное.Mad Hatter писал(а): ↑Ср мар 06, 2024 11:51 amТак напрямую и не может. А если бы смог, то это извините полная жопа, так у вас кто угодно и что угодно запускать смог бы.
-
- Reactions: 627
- Сообщения: 1734
- Зарегистрирован: Вт июн 14, 2022 7:57 pm
Re: технический вопрос: Gitlab, Terraform, AWS
... в связи этим мне так подумалось, что люди, остро озаботившиеся своей job security, начали в ChatGPT вбрасывать какое-то отстойное гумно. Чувствуется, что ДевОпсы тоже зря время не теряли...
Re: технический вопрос: Gitlab, Terraform, AWS
да, особенно, когда всегда были девопсы рядомAlexander Troyansky писал(а): ↑Ср мар 06, 2024 12:02 pm С помощью TGW, Route 53 Resolver, CodeBuild этого можно добиться, но оно для человека, который задаёт такой вопрос, и его начальницы - дело нетривиальное.
тут, ни девопсов, ни тестеров. все сами. но выбора пока нет
Re: технический вопрос: Gitlab, Terraform, AWS
Еще у нас 4 проекта 2 apps, npm package и терраформ в одном репо. Разделять нельзя
Re: технический вопрос: Gitlab, Terraform, AWS
А как в гопоту вбросить?Alexander Troyansky писал(а): ↑Ср мар 06, 2024 12:11 pm ... в связи этим мне так подумалось, что люди, остро озаботившиеся своей job security, начали в ChatGPT вбрасывать какое-то отстойное гумно. Чувствуется, что ДевОпсы тоже зря время не теряли...
Без доступа к его трейнинг интерфейсу.
-
- Reactions: 627
- Сообщения: 1734
- Зарегистрирован: Вт июн 14, 2022 7:57 pm
Re: технический вопрос: Gitlab, Terraform, AWS
@Stantmn, благодаря @elpresidente*, вот здесь можно получить более качественные ответы на ваши вопросы: viewtopic.php?t=4069. Можно корректировать ваш запрос, добавляя больше деталей.
Однако хочу отметить, что реализация стратегии займёт значительные усилия даже у специально подготовленного персонала, который в вашей конторе несомненно был/есть. Например, в вашем случае, когда нужно сделать "CodeBuild running a terraform script" это означает, что нужен ыщё один терраформ, который создаст этот самый CodeBuild, а также сопутствующие детальки типа CodePipeline, ECR для хранения вашего кастомизированного имиджа, Cloudwatch, IAM Roles и т.п. Запилить всё этого за три недели или сколько там у вас времени есть - мне каэцо нереально. Или дедлайн только для тех, кто любить спорить с начальницей?
Однако хочу отметить, что реализация стратегии займёт значительные усилия даже у специально подготовленного персонала, который в вашей конторе несомненно был/есть. Например, в вашем случае, когда нужно сделать "CodeBuild running a terraform script" это означает, что нужен ыщё один терраформ, который создаст этот самый CodeBuild, а также сопутствующие детальки типа CodePipeline, ECR для хранения вашего кастомизированного имиджа, Cloudwatch, IAM Roles и т.п. Запилить всё этого за три недели или сколько там у вас времени есть - мне каэцо нереально. Или дедлайн только для тех, кто любить спорить с начальницей?