GitLab核心是集成管理Git存储库的工具。好比你但愿建立一个提供服务的平台,那么GitLab将提供强大的身份验证和受权机制、工做组、问题跟踪、wiki和片断,除此以外还有公有、内部和私有存储库。nginx
GitLab强大之处在于,它包含强大的持续集成(CI)引擎和Docker容器镜像仓库,让使用者从开发到发布都使用相同的实用工具。它还有两个更强大的开源软件实用工具:Prometheus负责监控,Mattermost负责和团队沟通。该平台有着坚实的API并能和多个现有第三方系统集成,如:JIRA,Bugzilla,Pivotal,Slack,HipChat,Bamboo等。git
这里就有这样一个疑问:为何使用GitLab而不是直接使用SaaS 服务?答案只是我的品味而已。对大多数人来讲,向SaaS提供商购买其提供的服务是一个很好的解决方案。你能够专一于搭建你的应用程序,让他们去操心维护这些工具。而若是你已拥有的基础设施有备用容量怎么办?若是你只想私有化存储库而不想为该权限付费时该怎么办?若是你想运用你的数学头脑由本身托管来省钱该怎么办?若是你只想拥有你本身的数据该怎么办?shell
由内部提供服务可让你有更多的时间管理它们并让它们之间相互通讯来消除风险,这就是GitLab的出众之处。仅须要一次点击和几分钟的配置,你就能够启动并运行一个完整的解决方案。api
Rancer的Catalog包含了安装最新版GitLab CE的条目。它假设你有一个主机,但愿为HTTP/HTTPS直接打开80和443端口,而且打开一个端口映射到容器内的22端口。浏览器
Catalog条目会根据你提供的值设置环境变量GITLAB_OMNIBUS_CONFIG。而后GitLab在发布时将这些值并入配置。对于很是基本的GitLab部署,Catalog提供的选择是彻底足够的,不过我仍但愿向你展现更多的内容…安全
在本教程中,咱们将部署GitLab CE,不过咱们不会打开任何端口。主机端口很是昂贵,所以稍后咱们会使用一个负载均衡器。咱们将配置HTTPS和Docker Registry,并将其与Rancher配合使用。负载均衡
1.建立一个名为gitlab的新应用
2.向gitlab应用添加一个服务dom
Volumes:ssh
Networkingide
Health Check
3.向postfix服务中添加一个配对
Environment:
Volumes:
Health Check:
运行以前,你还需完成几个选项来配置GitLab:
对于首次使用的用户来讲,我建议选择第二项。GitLab提供的gitlab.rb文件在默认设置下文档已经很丰富,若是你以前没有接触过GitLab,参考这份文件就能够获得大量功能的说明介绍。
接着,单击Launch键,Rancher将抓取镜像并呈现给你。
Rancher在抓取镜像的时候,咱们来用HTTPS添加一个负载均衡器。为此,咱们首先要建立一个LetsEncrypt容器,而后将其添加到负载均衡器中,等待证书注册。注册完成后,将GitLab的配置添加到负载均衡器上。
在这个例子中,我将使用域名“example.com”,GitLab的主机名设置为“git”,Docker Registry的主机名设置为“regitstry”。在执行下一步前需确保你已经将相应的记录添加到DNS区域文件中,且这些记录均指向运行均衡器的主机。(PS:这里须要签的域名必须是公网可解析)
从Rancher社区Catalog中,选择LetsEncrypt服务。接受第一个下拉列表中的TOS,而后按如下设置准备HTTP验证:
在gitlab栈中,单击“添加服务”旁边的下拉菜单,而后选择添加负载均衡器。给它取个名字,接着添加下面的服务选择器。另外,若是你已经有了一个负载均衡器的环境,编辑它,添加下面的服务。
监控LetsEncryt容器的日志,两分钟后,就能够得到它已经注册了两个域的证书的报告。若是你收到状态403或503的错误报告,那么须要检查负载均衡器配置,确认设置无误。LetsEncrypt容器将从新启动并继续尝试注册证书。注册成功后,你就能够在Rancher界面中的基础设施选项卡中找到该证书。
到这为止咱们已经准备好经过负载均衡器向GitLab添加SSL支持:
1.编辑负载均衡器
2.添加如下服务规则:
Public / HTTP
Public / HTTPS
Public / HTTPS
Public / TCP
3.单击“编辑”保存你所作的更改。
GitLab的配置保存在容器中的/etc/gitlab/gitlab.rb下。当咱们启动服务时,咱们建立了一个Docker卷用于持久化存储这些数据。在Rancher中,找到你的GitLab容器,使用Execute Shell登陆。将存储地址改成/etc/gitlab,而后编辑gitlab.rb。
在gitlab.rb中有不少变量能够调整GitLab的行为。这里每个部分都包含了一个指向GitLab文档的连接,文档描述了该服务的功能以及每一个变量的调整。
在本教程中,须要找到如下变量,更改或者取消它们的注释:
external_url ‘https://git.example.com’ gitlab_rails['gitlab_ssh_host'] = 'git.example.com’ gitlab_rails['gitlab_email_enabled'] = true gitlab_rails['gitlab_email_from'] = 'git@example.com' gitlab_rails['gitlab_email_display_name'] = 'Gitlab' gitlab_rails['gitlab_email_reply_to'] = 'noreply@example.com' gitlab_rails['gravatar_plain_url'] = 'https://secure.gravatar.com/avatar/%{hash}?s=%{size}&d=identicon' gitlab_rails['gravatar_ssl_url'] = 'https://secure.gravatar.com/avatar/%{hash}?s=%{size}&d=identicon' gitlab_rails['gitlab_shell_ssh_port'] = 2222 gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = 'postfix' gitlab_rails['smtp_port'] = 25 gitlab_rails['smtp_domain'] = 'yourdomain.com' gitlab_rails['smtp_authentication'] = false gitlab_rails['smtp_enable_starttls_auto'] = false gitlab_rails['manage_backup_path'] = true gitlab_rails['backup_path'] = '/var/opt/gitlab/backups' gitlab_rails['backup_archive_permissions'] = 0644 gitlab_rails['backup_pg_schema'] = 'public' gitlab_rails['backup_keep_time'] = 604800 registry_external_url 'https://registry.example.com’ gitlab_rails['registry_enabled'] = true gitlab_rails['registry_host'] = 'registry.example.com' gitlab_rails['registry_api_url'] = 'http://localhost:5000' gitlab_rails['registry_key_path'] = '/var/opt/gitlab/gitlab-rails/certificate.key' gitlab_rails['registry_path'] = '/var/opt/gitlab/gitlab-rails/shared/registry' gitlab_rails['registry_issuer'] = 'omnibus-gitlab-issuer' registry['enable'] = true registry['token_realm'] = 'https://git.example.com' nginx['listen_port'] = 80 nginx['listen_https'] = false nginx['proxy_set_headers'] = { 'Host' => '$http_host_with_default', 'X-Real-IP' => '$remote_addr', 'X-Forwarded-For' => '$proxy_add_x_forwarded_for', 'X-Forwarded-Proto' => 'https', 'X-Forwarded-Ssl' => 'on', 'Upgrade' => '$http_upgrade', 'Connection' => '$connection_upgrade' } registry_nginx['enable'] = true registry_nginx['listen_port'] = 80 registry_nginx['listen_https'] = false registry_nginx['proxy_set_headers'] = { 'Host' => '$http_host', 'X-Real-IP' => '$remote_addr', 'X-Forwarded-For' => '$proxy_add_x_forwarded_for', 'X-Forwarded-Proto' => 'https', 'X-Forwarded-Ssl' => 'on' } registry_nginx['custom_gitlab_server_config'] = 'proxy_cache_convert_head off;'
在这些变量变动以后,意味着如下工做你已经完成了:
保存此文件,接着输入gitlab-ctl reconfigure,按Enter键从新配置GitLab。GitLab将重建它的配置,重启那些须要的服务。
如今你已经准备好了!在你的浏览器中输入https://git.example.com,会出现一个要求你输入密码的界面。这里默认用户是root,若是你设置了密码,系统将要求你从新登陆。
恭喜你!你有了一个正在运行的GitLab实例!
如今还有一些须要咱们从GitLab内部作的工做来巩固它,请你接着读下去。
我建议你去作如下变动操做:
以root身份登陆任何内容都是不安全的,由于该用户名是一个众所周知的目标。如今你是以惟一的用户身份登陆进来的,那么第一件事就是更改你的用户名。
管理员帐户的旧邮箱地址是admin@example.com,更改此信息只是尝试向该帐户发送电子邮件来通知这些更改。我敢相信example.com邮箱的人会吃惊于他们收到的电子邮件数。
下一步的更改将使Internet再也不接管你的新GitLab实例,也不能再将其用于恶意的目的。
在这个例子中,咱们使用了80、44三、2222端口。GitLab不须要主机上的其余端口,不过2222端口并非通用端口。你须要确认你已经在防火墙中打开了它(2222端口)。
这会有一个很棒的GitLab安装过程。你能够当即为你的项目启动它。是的,在GitLab中还有不少事情要作!
尽管你能够经过HTTPS使用GitLab,然而使用SSH指令执行则更为常见。在执行此操做以前,须要将你的SSH公钥添加到GitLab,这样它会识别你的身份。若是你没有SSH密钥,你能够用下列代码制做一个(Linux或Mac系统上):
ssh-keygen -b 2048
尽量使用密码口令确保安全——你的密钥有以特权用户身份登陆的权限,若是笔记本电脑遭到入侵,你也不肯为攻击者提供访问级别。(若是你不想使用密码口令或处理SSH代理,请访问https://krypt.co上优秀的Kryptonite项目)
使用默认值(或选择新的密钥名称)保存,接着在GitLab中:
很快咱们将发布该系列的第二部分,其中将介绍如何使用GitLab CI Multi-Runner构建容器,以及如何使用GitLab容器registry配置项目。除此以外,咱们还将涉及如何用GitLab CI创建容器并部署到Rancher上。
9月27日,北京海航万豪酒店,容器技术大会Container Day 2017即将举行。
CloudStack之父、海航科技技术总监、华为PaaS部门部长、恒丰银行科技部总经理、阿里云PaaS工程总监、民生保险CIO······均已加入豪华讲师套餐!
11家已容器落地企业,15位真·云计算大咖,13场纯·技术演讲,结合实战场景,聚焦落地经验。免费参会+超高规格,详细议程及注册连接请戳