《OpenShift / RHEL / DevSecOps 汇总目录》
说明:本文已经在 OpenShift 4.15 环境中验证。
GitLab
GitLab 是一个完整的开源 DevOps 平台,作为一个单一的应用程序交付,从根本上改变了开发、安全和运营团队协作和构建软件的方式。GitLab 帮助团队将 DevOps 周期时间从几周缩短到几分钟,降低开发流程成本,缩短上市时间,同时提高开发人员的生产力。
在 OpenShift OperatorHub 中提供了 GitLab Operator,它提供以下功能:
- 管理 OpenShift 容器平台中的 GitLab 实例的整个生命周期。
- 简化 GitLab 实例的安装和配置。
- 提供版本之间的无缝升级。
- 设置自动缩放功能。
安装 GitLab 环境
安装 cert-manager Operator
安装 GitLab 前需要先在 OpenShift 中使用缺省配置安装 cert-manager Operator for Red Hat OpenShift。
用 Operator 安装 GitLab
- 使用默认配置安装 GitLab Operator,GitLab Operator 将安装在 gitlab-system 命名空间中。
注意:在国内安装时,可能因为无法直接访问以下 gcr.io 的容器镜像而不能完成安装。
gcr.io/kubebuilder/kube-rbac-proxy:v0.5.0
此时可以进入已安装的 GitLab Operator 的 YAML 栏,将以上的镜像替换为以下镜像地址。
quay.io/coreos/kube-rbac-proxy:v0.5.0
最后确认名为 gitlab-controller-manager 的 Deployment 能够成功部署并运行 Pod。注意:在这期间使用了 Deployment 的 “暂停推出部署” 功能才让 Deployment 使用更新后的 Operator 配置,另外还需要修改下图中名为 gitlab-controller-manager 的部署的 YAML,同样像上面那样将其中的 gcr.io 镜像改为 quay.io 镜像。
- 执行以下命令,在安装好的 GitLab Operator 中使用以下配置创建 GitLab 实例。注意:需使用自己 OpenShift 集群的子域名设置以下 YAML 的 “spec.chart.values.global.hosts.domin”。
$ SUB_DOMAIN=$(oc get ingresscontroller default -n openshift-ingress-operator -o jsonpath={.status.domain})
$ oc apply -f - << EOF
apiVersion: apps.gitlab.com/v1beta1
kind: GitLab
metadata:
name: gitlab
namespace: gitlab-system
spec:
chart:
values:
certmanager:
install: false
global:
hosts:
domain: ${SUB_DOMAIN}
hostSuffix: null
ingress:
configureCertmanager: false
tls:
secretName: null
class: none
annotations:
route.openshift.io/termination: "edge"
nginx-ingress:
enabled: false
version: 8.1.1
EOF
- 在 GitLab 实例部署好后,可以在 “开发者” 视图中的 “拓扑” 页面中看到以下部署的资源。注:gitlab-prometheus-server 部署提示有权限问题,可暂时忽略。
访问 GitLab 控制台
- 由于 GitLab Opeartor 默认创建的 GitLab 控制台访问入口是 Ingress 类型,因此还需要运行以下命令创建 Route 对象。
$ oc create route edge gitlab --service=gitlab-webservice-default --port=http-workhorse -n gitlab-system
$ oc get route gitlab -n gitlab-system -o jsonpath=https://'{.spec.host}'; echo
- 获取 root 用户的缺省密码,然后用其登录以上名为 gitlab 的 route 地址。
$ oc get secret gitlab-gitlab-initial-root-password -o jsonpath="{.data.password}" -n gitlab-system | base64 --decode; echo
-
登录后可看到 GitLab 缺省页面,然后关闭黄色的提示部分即可。
-
可进入 “User Settings” 中的 “Preferences” 页面,调整 “Localization” 的 “Language”,最后 “Save changes” 后刷新页面即可。
访问 Minio 控制台
- 获取登录 Minio 控制台的 accesskey 和 secretkey。
oc get secret gitlab-minio-secret -o jsonpath="{.data.accesskey}" -n gitlab-system | base64 --decode; echo
oc get secret gitlab-minio-secret -o jsonpath="{.data.secretkey}" -n gitlab-system | base64 --decode; echo
- 创建访问 Minio 控制台的 Route,然后用浏览器访问 Route 地址,并用上一步的 accesskey 和 secretkey 登录 Minio 控制台。
oc create route edge gitlab-minio --service=gitlab-minio-svc -n gitlab-system
oc get route gitlab-minio -n gitlab-system -o jsonpath=https://'{.spec.host}'; echo
演示视频
参考
https://www.youtube.com/watch?v=nJDCUfbEmVI&ab_channel=GitLabUnfiltered
https://docs.gitlab.com/operator/openshift_ingress.html
https://gitlab.com/gitlab-org/cloud-native/gitlab-operator/-/blob/master/doc/openshift_ingress.md
https://qiita.com/JPishikawa/items/be67b02d815504a9423b