# auto-install-gitlab-k3s **Repository Path**: hansont/auto-install-gitlab-k3s ## Basic Information - **Project Name**: auto-install-gitlab-k3s - **Description**: 一键部署企业级DevOps环境:GitLab+SonarQube+Runner+K3S全栈解决方案 - **Primary Language**: Shell - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-07-04 - **Last Updated**: 2026-04-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 一键部署DevOps环境:GitLab + SonarQube + GitLab Runner + K3S > 本系统提供了一套完整的自动化脚本解决方案,帮助您快速搭建企业级DevOps环境,包含代码托管、代码质量检查、CI/CD执行器和轻量级Kubernetes集群。 ## 环境核心组件 - **GitLab**:企业级代码托管平台 - **SonarQube**:代码质量检测工具 - **GitLab Runner**:CI/CD流水线执行器 - **K3S**:轻量级Kubernetes发行版 - **Docker Registry**:私有镜像仓库 - **Prometheus+Grafana**:集群监控系统 - **Loki+Promtail**:日志收集系统 ## 环境要求 1. CentOS 7/8或Ubuntu 18.04+系统 2. 8核CPU/16GB内存/40GB磁盘空间(最低配置) 3. 开放端口:80, 443, 2222, 5000, 8080, 9000, 30000, 30900 ## 自动化部署脚本 ### 1. K3S集群安装脚本 (`k3s-offline-installer.sh`) ```bash #!/bin/bash # K3s离线安装脚本(含监控与日志组件) # 功能:一键安装K3s集群及监控日志组件 # 特点: # - 支持离线安装 # - 自动配置私有镜像仓库 # - 集成Prometheus+Grafana监控 # - 集成Loki+Promtail日志收集 # 使用示例: sudo ./k3s-offline-installer.sh ``` **主要功能**: - 离线安装K3s集群 - 自动配置私有镜像仓库 - 部署监控系统(Prometheus+Grafana) - 部署日志系统(Loki+Promtail) - 创建GitLab服务账号 - 生成Kubernetes访问凭证 ### 2. DevOps环境安装脚本 (`auto-register-runner.sh`) ``` K3S安装完成后,脚本自动调用auto-register-runner.sh执行安装程序以及环境配置 ``` **主要功能**: - 自动安装Docker环境 - 配置镜像加速器和私有仓库 - 部署GitLab、SonarQube、GitLab Runner - 配置私有Docker Registry - 集成SonarQube与GitLab - 自动注册GitLab Runner - 配置Kubernetes集群集成 ### 3. Docker Compose配置文件 (`docker-compose.yml`) ```yaml services: gitlab: image: gitlab/gitlab-ce:latest container_name: gitlab ports: - "80:80" - "2222:22" volumes: - ./gitlab/config:/etc/gitlab - ./gitlab/logs:/var/log/gitlab - ./gitlab/data:/var/opt/gitlab sonarqube: image: sonarqube:community container_name: sonarqube ports: - "9000:9000" gitlab-runner: image: gitlab/gitlab-runner:latest container_name: gitlab-runner volumes: - /var/run/docker.sock:/var/run/docker.sock - ./gitlab-runner/config:/etc/gitlab-runner registry: image: registry:2 container_name: registry ports: - "5000:5000" registry-ui: image: joxit/docker-registry-ui:latest container_name: registry-ui ports: - "8080:80" ``` ## 使用步骤 ### 第一步:下载脚本文件 将以下三个文件保存在同一目录: 1. `k3s-offline-installer.sh` 2. `auto-register-runner.sh` 3. `docker-compose.yml` ### 第二步:安装K3S集群 ```bash # 添加执行权限 chmod +x k3s-offline-installer.sh # 执行安装 sudo ./k3s-offline-installer.sh ``` 安装过程将自动完成: 1. 环境检查 2. 旧版本卸载 3. K3S集群安装 4. 监控系统部署 5. 日志系统部署 6. GitLab服务账号创建 ### 第三步:部署DevOps环境 ``` K3S安装完成后,脚本自动调用auto-register-runner.sh执行安装程序以及环境配置 ``` 安装过程将自动完成: 1. Docker环境安装 2. GitLab+SonarQube+Runner部署 3. 私有仓库配置 4. 服务集成配置 5. Runner自动注册 ## 验证安装 ### 1. 访问服务 | 服务 | 访问地址 | 默认账号 | |--------------|------------------------------|---------------| | GitLab | http://your-domain.com | root/Ad@123456789 | | SonarQube | http://your-domain.com:9000 | admin/Ad@123456789 | | Registry UI | http://your-domain.com:8080 | 无需登录 | | Grafana | http://your-domain.com:30000 | admin/admin | ### 2. 检查集群状态 ```bash # 检查K3s节点 kubectl get nodes # 检查监控组件 kubectl get pods -n monitoring # 检查日志组件 kubectl get pods -n logging ``` ### 3. 验证CI/CD流程 在GitLab创建测试项目,添加`.gitlab-ci.yml`文件: ```yaml stages: - test - build sonarqube-check: stage: test image: sonarsource/sonar-scanner-cli:latest script: - sonar-scanner -Dsonar.projectKey=${CI_PROJECT_NAME} -Dsonar.host.url=${SONAR_HOST_URL} -Dsonar.login=${SONAR_TOKEN} docker-build: stage: build image: docker:latest services: - docker:dind script: - docker build -t ${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHORT_SHA} . - docker push ${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHORT_SHA} ``` ## 常见问题解决 ### 1. 端口冲突问题 如果遇到端口冲突,脚本会自动检测并提供解决方案: ``` 检测到端口冲突: - 主机端口 80 被容器 [gitlab] 占用 请选择操作: 1) 删除所有容器 2) 选择要删除的容器 3) 尝试停止占用端口的进程 4) 跳过并继续 ``` ### 2. GitLab启动缓慢 首次启动GitLab可能需要5-10分钟,可通过以下命令查看状态: ```bash docker logs gitlab -f ``` ### 3. SonarQube启动失败 确保服务器至少有8GB内存,可通过修改配置减少资源占用: ```yaml environment: SONARQUBE_WEB_JAVAOPTS: "-Xmx512m -Xms128m" ``` ## 技术要点解析 ### 1. 私有镜像仓库配置 ```bash # k3s-offline-installer.sh中配置私有仓库 cat > /etc/rancher/k3s/registries.yaml <