在openshift上部署Gitlab

1.在OperatorHub搜索GitLab

点击install

Update approval 改为 Manual

2.Create GitLab

yaml 复制代码
kind: GitLab
apiVersion: apps.gitlab.com/v1beta1
metadata:
  name: gitlab
  namespace: gitlab-system
spec:
  chart:
    values:
      certmanager:
        install: false
      global:
        hosts:
          domain: example.com ## 这里替换成自己的
          hostSuffix: null
        ingress:
          configureCertmanager: false
          tls:
            secretName: gitlab-tls
      postgresql:
        primary:
          extendedConfiguration: max_connections = 200
    version: 8.9.1

等待安装完成即可。

3.集成LDAP用户

新增configmap

yaml 复制代码
kind: ConfigMap
apiVersion: v1
metadata:
  name: ldap-config
  namespace: gitlab-system
data:
  set-config: |-
    #!/bin/bash

    set -eo pipefail

    TEMPLATE_DIRECTORY="$1"
    CONFIG_DIRECTORY="${2:-$1}"

    if [ -z "$TEMPLATE_DIRECTORY" ]; then
      echo 'usage: set-config <template_directory> [<config_directory>]'
      exit 1
    fi

    shopt -s nullglob  # Don't enter empty for loops

    if command -v erb &> /dev/null; then
      echo "Begin parsing .erb templates from $TEMPLATE_DIRECTORY"
      for template in ${TEMPLATE_DIRECTORY}/*.erb; do
        output_file="${CONFIG_DIRECTORY}/$(basename $template '.erb')"
        echo "Writing $output_file"
        erb -U -r yaml -r json -r fileutils "$template" > "$output_file"
      done
    fi

    if command -v gomplate &> /dev/null; then
      echo "Begin parsing .tpl templates from $TEMPLATE_DIRECTORY"
      for template in ${TEMPLATE_DIRECTORY}/*.tpl; do
        output_file="${CONFIG_DIRECTORY}/$(basename $template '.tpl')"
        echo "Writing $output_file"
        gomplate --left-delim '{%' --right-delim '%}' --file "${template}" --out "${output_file}"
      done
    fi

    if [ "$CONFIG_DIRECTORY" != "$TEMPLATE_DIRECTORY" ]; then
      echo "Copying other config files found in $TEMPLATE_DIRECTORY to $CONFIG_DIRECTORY"
      for configfile in ${TEMPLATE_DIRECTORY}/*.{yml,yaml,toml,rb,json}; do
        echo "Copying $(basename $configfile) into ${CONFIG_DIRECTORY}"
        cp "$configfile" "$CONFIG_DIRECTORY/"
      done
    fi

    shopt -u nullglob

    config_file="/srv/gitlab/config/gitlab.yml"

    # 使用 sed 删除 ldap 配置中的 'enabled: false' 行
    sed -i '/ldap:/,/^$/ { /enabled: false/ { d } }' "$config_file"

    # 使用 echo 追加新的 ldap 配置
    cat <<EOL >> "$config_file"
      ldap:
        enabled: true
        servers:
          main:
            label: ldap
            host: ldap.example.com
            port: 636
            uid: 'sAMAccountName'
            encryption: 'simple_tls'
            verify_certificates: false
            base: 'xxxx'
            user_filter: ''
            bind_dn: 'xxx'
            admin_group: ''
            password: 'xxx'
    EOL

    echo "LDAP 配置已更新。"

ldap配置根据你的实际情况进行更改。

修改deployment 的yaml,把此ldap-config的set-config挂载到gitlab-webservice-default的/scripts/set-config路径上。

yaml 复制代码
kind: Deployment
apiVersion: apps/v1
metadata:
  name: gitlab-webservice-default
spec:
  template:
    metadata:
    spec:
      volumes:
        - name: ldap-config
          configMap:
            name: ldap-config 
      containers:
        - name: webservice
          volumeMounts:
            - name: ldap-config
              mountPath: /scripts/set-config
              subPath: set-config

这样gitlab就集成了ldap

相关推荐
A-刘晨阳2 天前
K8s集群中的数据库新范式:KES-Operator解锁部署、扩缩容、备份全链路自动化
运维·数据库·云原生·kubernetes·自动化
江畔柳前堤2 天前
云原生 × AI 全景图谱:从 Kubernetes 到 Agent 基础设施的一次认知跃迁
人工智能·分布式·gpt·云原生·kubernetes·原型模式·agi
极小狐2 天前
干掉流水线里的长期密钥:用 OIDC 让 CI/CD 与云以临时凭证对接
microsoft·ci/cd·gitlab·devops·ci·cd·oidc
2601_962299242 天前
云原生时代的技术进阶:从零到精通掌握Kubernetes实战
云原生·kubernetes·学习路径·技术进阶·实战指南
snow@li2 天前
服务器运维:阿里云安装软件gitlab/智能体协助安装/智能体协同运维
运维·gitlab
名字还没想好☜2 天前
Docker 数据卷实战:volume、bind mount、tmpfs 到底怎么选,数据持久化与权限坑
运维·docker·容器·kubernetes
探索云原生3 天前
Kueue + HAMi vGPU 实战:显存与算力配额管理
docker·ai·云原生·kubernetes·gpu
玉&心3 天前
通过helm在k8s上面一键部署前端和后端代码
云原生·容器·kubernetes·helm
极小狐3 天前
CI 流水线提速实战:缓存设计与依赖代理的工程实践
缓存·ci/cd·gitlab·devops
ZzzZZzzzZZZzzzz…3 天前
K8s---网络:从 Pod 网络模型到 Calico 三种模式
运维·网络·云原生·容器·kubernetes·calico·pod网络模型