快速教程|如何在 AWS EC2上使用 Walrus 部署 GitLab

Walrus 是一款基于平台工程理念的开源应用管理平台,致力于解决应用交付领域的深切痛点。借助 Walrus 将云原生的能力和最佳实践扩展到非容器化环境,并支持任意应用形态统一编排部署,降低使用基础设施的复杂度,为研发和运维团队提供易用、一致的应用管理和部署体验,进而构建无缝协作的软件交付流程。
 

在本篇文章中,我们将手把手带您创建 AWS GitLab 模板,并使用 Walrus 在 AWS EC2 实例上部署一个 GitLab 服务器。
 

使用前提

  1. 用于存储模板的 GitHub 或 Gitlab 仓库。

  2. 安装 Walrus(https://seal-io.github.io/docs/zh/deploy/standalone)。
     

在 GitHub 上新建仓库

  1. 在 GitHub 上新建一个仓库,这里我们使用的是 demo 版本库。

  2. 将版本库克隆到本地。

 

git clone git@gitlab.com:seal-eyod/gitlab-on-aws.git

 

创建模板文件

打开克隆的版本库目录。

cd gitlab-on-aws

 

在该目录下创建文件,如下所示:

 - gitlab-on-aws- main.tf- outputs.tf- variables.tf- README.md

 

main.tf文件定义了要创建的资源。在这里,我们为模板定义了创建 AWS EC2 实例并在其上运行 Gitlab 服务器的资源。

 data "aws_ami" "ubuntu" {most_recent = truefilter {name   = "name"values = ["ubuntu/images/hvm-ssd/ubuntu-jammy-22.04-amd64-server-*"]}filter {name   = "virtualization-type"values = ["hvm"]}owners = ["099720109477"] # Canonical}data "aws_security_group" "selected" {name = var.security_group_name}data "aws_subnets" "selected" {filter {name   = "vpc-id"values = [data.aws_security_group.selected.vpc_id]}}resource "aws_instance" "gitlab" {ami           = data.aws_ami.ubuntu.idinstance_type = var.instance_typesubnet_id     = data.aws_subnets.selected.ids.0vpc_security_group_ids = [data.aws_security_group.selected.id]key_name      = var.key_nameuser_data     = <<-EOF#!/bin/bashset -ex;public_ip=$(curl http://169.254.169.254/latest/meta-data/public-ipv4)curl -fsSL https://get.docker.com | bash && sudo usermod -aG docker ubuntudocker run -d --privileged --restart=always -p 80:80 -p 443:443 \-e GITLAB_ROOT_PASSWORD="${var.gitlab_root_password}" \"${var.gitlab_image}"EOFtags = {"Name" = "${var.gitlab_metadata_application_instance_name}-gitlab"}root_block_device {volume_size = var.disk_size}}resource "null_resource" "gitlab_health_check" {depends_on = [aws_instance.gitlab,]triggers = {always_run = timestamp()}provisioner "local-exec" {command     = "for i in `seq 1 100`; do curl -k -s $ENDPOINT >/dev/null && exit 0 || true; sleep 5; done; echo TIMEOUT && exit 1"interpreter = ["/bin/sh", "-c"]environment = {ENDPOINT = "http://${aws_instance.gitlab.public_ip}"}}}

 

variables.tf文件定义了模板中使用的变量。Walrus 将使用这些变量生成供用户填写的表单。
 

Walrus 使用@label@group来定义变量的标签和组。可选的 @options用于定义变量的下拉选项,如果未定义 @options ,变量将在表单中显示为文本框。
 

在本示例中,我们定义了两个组: Basic组和 AWS 组。使用此模板创建服务时,表单中将显示为两个选项卡。
 

# @group "Basic"
variable "gitlab_image" {type        = stringdescription = "gitlab image"default     = "gitlab/gitlab-ce"
}# @group "Basic"
variable "gitlab_root_password" {type        = stringdescription = "gitlab root password"default     = "seal123456"sensitive   = true
}# @group "AWS"
# @options ["t3.medium", "c5.xlarge"]
variable "instance_type" {type        = stringdescription = "Instance type"default     = "t3.medium"
}# @group "AWS"
variable "disk_size" {type        = numberdescription = "Root disk size in GiB"default     = 50
}# @group "AWS"
variable "key_name" {type        = stringdescription = "AWS key name"default     = "xueying"
}# @group "AWS"
variable "security_group_name" {type        = stringdescription = "Security group Name"default     = "all-open"
}# @hidden
variable "gitlab_metadata_application_instance_name" {type        = stringdescription = "gitlab metadata application instance name."default     = "bar"
}

 

outputs.tf文件定义了服务创建后将显示给用户的模板输出。服务模板的输出也可以被其他服务引用。在本例中,我们定义了输出 gitlab_url,它是 Gitlab 实例的 URL。

output "gitlab_url" {description = "The URL of the GitLab instance"value = "http://${aws_instance.gitlab.public_ip}"}

 

README.md文件是对模板的描述。在使用该模板创建服务时,它将显示给用户。
 

在此,我们可以使用 terraform-docs 工具生成模板说明。你需要根据项目文档在笔记本电脑上安装该工具,然后运行以下命令为模板生成 README.md 文件。

 terraform-docs markdown . > README.md

 

生成的 README.md 文件内容如下:

# Gitlab on AWSThis is a terraform module that will create a Gitlab instance on AWS.## Providers| Name | Version |
|------|---------|
| aws  | n/a     |## Inputs| Name                                      | Description                                |   Type   |       Default        | Required |
|-------------------------------------------|--------------------------------------------|:--------:|:--------------------:|:--------:|
| gitlab_image                              | Gitlab image                               | `string` | `"gitlab/gitlab-ce"` |    no    |
| gitlab_root_password                      | Gitlab root password                       | `string` |    `"seal123456"`    |    no    |
| instance\_type                            | Instance type                              | `string` |    `"t3.medium"`     |    no    |
| disk\_size                                | Root disk size in GiB                      | `number` |         `50`         |    no    |
| security\_group\_name                     | Security group Name                        | `string` |     `"all-open"`     |    no    |
| gitlab_metadata_application_instance_name | gitlab metadata application instance name. | `string` |       `"bar"`        |    no    |## Outputs| Name       | Description |
|------------|-------------|
| gitlab_url | Gitlab URL  |

 

提交和标记版本

git add .git commit -m "add template files"git push -u origin main

 

为模板版本创建一个标签。

git tag v0.0.1git push --tags

 

在 Walrus 上创建一个模板

  1. 在浏览器中打开 Walrus 并登录。

  2. 选择 Operations Hub 中的 Template ,然后选择我们最近创建的模板来制作一个新模板。这里我们将此模板命名为 gitlab-on-aws
     


 

Walrus 同步模板后,可以在 Operations Hub 中看到此模板。

 

导入任务完成后,可以发现模板显示在列表中。需要注意的是该模板有两个版本:v0.0.1v0.0.2


 

在 AWS 上部署 Gitlab 服务器

Operations HubConnectors 中添加 AWS。


 

在环境中添加 connector。

 

利用 gitlab-on-aws 模板创建服务。UI 表单中的分组和标签是根据我们之前定义的模板变量中对应的注释动态生成的。输入变量在模板的 variables.tf 文件中列出。为确保网络流量管理,EC2 实例需要一个安全组。我们可以创建一个名为all-open的安全组来允许所有网络流量,为了增强安全性,可以根据需要自定义规则。
 


 

在 AWS 目标区域创建安全组后,就可以保存和应用服务了。


 

部署完成后,Gitlab 实例就能在 AWS 上成功配置了。

 

GitLab URL 将显示在输出结果中。获得 URL 后,就可以访问 GitLab 服务器了。

 

总 结

以上就是在 Walrus 中创建模板的全步骤,我们借助 Walrus 大大简化了部署流程。此外,Walrus 还兼容 Terraform 社区的大量成熟模板,只需轻轻一点,即可轻松采用最佳实践。
 

欢迎小伙伴们试用 Walrus,如果您喜欢我们的项目,可以在 GitHub 上为我们点亮星星🌟
 

项目地址:https://github.com/seal-io/walrus
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/139571.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

459. 重复的子字符串

459. 重复的子字符串 原题链接&#xff1a;完成情况&#xff1a;解题思路&#xff1a;参考代码&#xff1a;__459重复的子字符串_枚举__459重复的子字符串_字符串匹配__459重复的子字符串_KMP算法__459重复的子字符串_优化的KMP算法 错误经验吸取 原题链接&#xff1a; 459. …

酷开科技持续推动智能投影行业创新发展

近年来&#xff0c;投影仪逐渐成为年轻人追捧的家居时尚单品。据国际数据公司&#xff08;IDC&#xff09;报告显示&#xff0c;2022年中国投影机市场总出货量505万台&#xff0c;超80%为家用投影仪。相比于电视&#xff0c;投影仪外观小巧、屏幕大小可调节&#xff0c;无论是卧…

OpenCV:图像旋转与缩放

人工智能的学习之路非常漫长&#xff0c;不少人因为学习路线不对或者学习内容不够专业而举步难行。不过别担心&#xff0c;我为大家整理了一份600多G的学习资源&#xff0c;基本上涵盖了人工智能学习的所有内容。点击下方链接,0元进群领取学习资源,让你的学习之路更加顺畅!记得…

从白日梦到现实:推出 Elastic 的管道查询语言 ES|QL

作者&#xff1a;George Kobar, Bahubali Shetti, Mark Settle 今天&#xff0c;我们很高兴地宣布 Elastic 的新管道查询语言 ES|QL&#xff08;Elasticsearch 查询语言&#xff09;的技术预览版&#xff0c;它可以转换、丰富和简化数据调查。 ES|QL 由新的查询引擎提供支持&am…

vmware16.2内部win7联网

1、主机配置 前置条件&#xff1a;DHCP和NAT服务已启动 设置无线IP与虚拟机IP为自动获取 二者都是&#xff1a;右键-属性 选择IPv4 自动获取 2、虚拟机配置 设置虚拟机上网方式为NAT 菜单栏-虚拟机-设置 NMnet8改为NAT模式 菜单栏-编辑-虚拟网络编辑器 win7系统内部网…

13. 高精度延时

13. 高精度延时 GPT 定时器简介GPT 定时器结构GPT 定时器工作模式 GPT 定时器相关寄存器GPTx_CRGPTx_PRGPTx_SRGPTx_CNTGPTx_OCR GPT 配置步骤程序编写bsp_delay.hbsp_delay.cmain GPT 定时器简介 GPT 定时器是一个 32 位向上定时器&#xff0c;也就是从0x00000000 开始向上递…

【算法与数据结构】93、LeetCode复原 IP 地址

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;参照【算法与数据结构】131、LeetCode分割回文串的思路&#xff0c;需要将IP字符串进行分割&#xff0…

No181.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

k8s-实验部署 1

1、k8s集群部署 更改所有主机名称和解析 开启四台实验主机&#xff0c;k8s1 仓库&#xff1b;k8s2 集群控制节点&#xff1b; k8s3 和k8s4集群工作节点&#xff1b; 集群环境初始化 使用k8s1作为仓库&#xff0c;将所有的镜像都保存在本地&#xff0c;不要将集群从外部走 仓库…

班级新闻管理系统asp.net+sqlserver

班级新闻管理系统 附加功能 新闻图片&#xff0c;点击次数访问自增&#xff0c;每个人都只能增删改查自己发布的新闻&#xff0c;并可以看到所有人发布的新闻 运行前附加数据库.mdf&#xff08;或sql生成数据库&#xff09; 主要技术&#xff1a; 基于asp.net架构和sql serve…

剑指JUC原理-16.读写锁

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码&#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44d;三连支持&…

利用百度地图api获取经纬度和uniapp定位计算距离

获取百度地图api&#xff0c;成为开发者&#xff0c;去控制台创建应用得到一个ak就可以了 百度地图开放平台网址&#xff1a;百度地图开放平台 | 百度地图API SDK | 地图开发 后端是node // 根据百度api地址获取经纬度 https://lbsyun.baidu.com/async getLocation(val) {try …

【修车案例】一波形一案例(9)

故障车型&#xff1a;捷豹X-Type 故障现象&#xff1a;发动机故障指示灯点亮&#xff0c;加速时动力不足&#xff0c;扫描工具显示EGR阀和涡轮增压器增压控制位置传感器电路故障 示波器诊断&#xff1a;检测增压控制位置传感器电路的完整性 A通道 - 增压控制执行电机电源电压B通…

【SoC基础】DMA的工作原理

&#x1f4e2;&#xff1a;如果你也对机器人、人工智能感兴趣&#xff0c;看来我们志同道合✨ &#x1f4e2;&#xff1a;不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 &#x1f4e2;&#xff1a;文章若有幸对你有帮助&#xff0c;可点赞 &#x1f44d;…

Technology Strategy Patterns 学习笔记8- Communicating the Strategy-Decks(ppt模板)

1 Ghost Deck/Blank Deck 1.1 It’s a special way of making an initial deck that has a certain purpose 1.2 you’re making sure you have figured out what all the important shots are before incurring the major expense of shooting them 1.3 需要从技术、战略、产…

详解数据仓库之拉链表(原理、设计以及在Hive中的实现)

最近发现一本好书&#xff0c;读完感觉讲的非常好&#xff0c;首先安利给大家&#xff0c;国内第一本系统讲解数据血缘的书&#xff01;点赞&#xff01;近几天也会安排朋友圈点赞赠书活动(ง•̀_•́)ง 0x00 前言 本文将会谈一谈在数据仓库中拉链表相关的内容&#xff0c;包…

PanNet: A deep network architecture for pan-sharpening(ICCV 2017)

文章目录 AbstractIntroduction过去方法存在的问题我们提出新的解决方法Related work PanNet: A deep network for pan-sharpening&#xff08;PanNet:用于泛锐化的深度网络&#xff09;Background and motivationPanNet architectureSpectral preservationStructural preserva…

在任何机器人上实施 ROS 导航堆栈的指南

文章目录 路径规划参考 路径规划 路径规划是导航的最终目标。这允许用户向机器人给出目标姿势&#xff0c;并让它在给定的环境中自主地从当前位置导航到目标位置。这是我们迄今为止所做的一切&#xff08;地图绘制和本地化&#xff09;的汇集点。ROS 导航堆栈已经为我们完成了…

【Delphi】 各个平台使用 ntfy 效果说明

目录 一、Delphi 中使用 ntfy 库下载地址 二、各个平台使用效果说明 1. android 平台 2. ios 平台 3. windows 平台 三、总结 一、Delphi 中使用 ntfy 库下载地址 官方的文档地址&#xff1a;ntfyDelphi 接口库地址&#xff1a;GitHub - hazzelnuts/ntfy-for-delphi at …

智能AI系统ChatGPT系统源码+支持GPT4.0+支持ai绘画(Midjourney)/支持OpenAI GPT全模型+国内AI全模型

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如…