【DevOps构筑篇】在AWS Fargate上创建SonarQube服务

2023-12-13T15:27:38+08:00 | 4分钟阅读 | 更新于 2023-12-13T15:27:38+08:00

Macro Zhao

【DevOps构筑篇】在AWS Fargate上创建SonarQube服务

@TOC

推荐超级课程:

SonarQube 是一个开源的代码质量检测工具。通常情况下,我们将其安装在一些中型实例上或在Docker中运行。在这里,我们使用的是无服务器模型,这也是具有成本效益的。我们使用公共Docker Hub镜像来创建这个服务。

先决条件

  • AWS访问权限以创建ECS服务
  • 用于存储数据的Postgres数据库

步骤1:创建ECR存储库

ECR存储库用于存储SonarQube的Docker镜像。在这里,我们使用了SonarQube lts-community 版本。我们从Docker Hub拉取这个Docker镜像,并将其放入ECR存储库中。我们也可以直接在ECS中使用Docker Hub镜像,但为了避免在Docker镜像更新时出现问题,我们使用了ECR。

我们创建了一个名为sonarqube的私有存储库

一旦我们有了ECR存储库,让我们从Docker Hub 拉取Docker镜像。

docker pull sonarqube:lts-community

拉取Docker镜像后,让我们将其推送到ECR存储库。为此,我们可以从ECR存储库获取推送命令

aws ecr get-login-password --region <region> | docker login --username AWS --password-stdin <account-id>.dkr.ecr.<region>.amazonaws.com
#since we already pulled docker image we can avoid docker build #command instead we proceed to tag image
docker tag sonarqube:lts-community <account-id>.dkr.ecr.<region>.amazonaws.com/sonarqube:latest
docker push <account-id>.dkr.ecr.<region>.amazonaws.com/sonarqube:latest

几分钟后,Docker镜像将出现在ECR存储库中

现在我们在ECR存储库中有了我们的Docker镜像,让我们继续创建任务定义。

步骤2:创建任务定义

在ECS控制台中,转到任务定义部分,可以点击创建开始创建任务定义。我们首先选择启动类型,这里是Fargate

现在,我们可以命名任务定义

接下来,为我们的任务分配vCPU和内存

接下来,我们转到设置容器定义,这里我们指定容器名称和镜像。我们在这里添加了端口9000,这是SonarQube的默认端口

为了消除一些问题,我们在命令部分添加了这个

-Dsonar.search.javaAdditionalOpts=-Dnode.store.allow_mmapfs=false

我们使用PostgreSQL数据库来存储SonarQube的数据。为了保护数据库密码,我们可以选择使用参数存储。如果使用参数存储,请确保您为ecs任务执行角色提供ssm:getParameter访问权限

现在其余部分可以设置为默认值并创建任务定义

步骤3:创建ECS集群

现在让我们创建一个仅网络的ECS集群。

步骤4:创建ECS服务

一旦我们创建了集群,让我们转到该集群中创建一个ECS服务。由于我们创建的是Fargate服务,所以在服务创建时选择启动类型为Fargate。还要选择我们创建的任务定义和集群

在下一部分指定任务数量和健康百分比。我们可以将任务数量设置为一个,并保持其他所有参数为默认值,然后转到下一步

在下一个阶段,设置服务的VPC。这里我们使用私有子网,并不会分配公共IP。请记住允许从ALB安全组到此服务安全组的流量进行健康检查。

下一步是设置负载均衡器。这里我们使用应用负载均衡器。

由于我们已经设置了HTTPS监听,因此我们将其添加到HTTPS监听器。也可以分配HTTP监听器,可以稍后通过负载均衡器进行编辑

其余部分可以保持为默认值,然后继续下一步。下一步将是该服务的自动扩缩。由于这只是一个POC,我们将这部分留空,继续下一步。最后一步是审核这个,并单击创建。

现在在负载均衡器中,我们可以将其路由指向我们的子域名

请确保您在DNS中将此添加为记录

几分钟后,服务将运行起来。

故障排除

  • 如果您的服务未处于运行状态,则任务中可能存在一些错误。您可以在已停止的任务中查看这些错误。
  • 如果服务在目标组中无法健康运行,请确保允许ALB sg在ECS sg中
  • 检查日志以查看连接DB或其他问题的错误
  • 由于SonarQube需要一些时间启动,最好允许300秒作为健康检查宽限期,在健康检查前等待300秒。

© 2011 - 2025 Macro Zhao的分享站

关于我

如遇到加载502错误,请尝试刷新😄

Hi,欢迎访问 Macro Zhao 的博客。Macro Zhao(或 Macro)是我在互联网上经常使用的名字。

我是一个热衷于技术探索和分享的IT工程师,在这里我会记录分享一些关于技术、工作和生活上的事情。

我的CSDN博客:
https://macro-zhao.blog.csdn.net/

欢迎你通过评论或者邮件与我交流。
Mail Me

推荐好玩(You'll Like)
  • AI 动·画
    • 这是一款有趣·免费的能让您画的画中的角色动起来的AI工具。
    • 支持几十种动作生成。
我的项目(My Projects)
  • 爱学习网

  • 小乙日语App

    • 这是一个帮助日语学习者学习日语的App。
      (当然初衷也是为了自用😄)
    • 界面干净,简洁,漂亮!
    • 其中包含 N1 + N2 的全部单词和语法。
    • 不需注册,更不需要订阅!完全免费!
  • 小乙日文阅读器

    • 词汇不够?照样能读日语名著!
    • 越读积累越多,积跬步致千里!
    • 哪里不会点哪里!妈妈再也不担心我读不了原版读物了!
赞助我(Sponsor Me)

如果你喜欢我的作品或者发现它们对你有所帮助,可以考虑给我买一杯咖啡 ☕️。这将激励我在未来创作和分享更多的项目和技术。🦾

👉 请我喝一杯咖啡

If you like my works or find them helpful, please consider buying me a cup of coffee ☕️. It inspires me to create and share more projects in the future. 🦾

👉 Buy me a coffee