第二章:环境准备与工具安装

最后更新: 2024-01-01 作者: DevOps Team
页面目录

第二章:环境准备与工具安装

本章将帮助你搭建一个完整的 DevOps 工作环境,涵盖开发工具、容器平台、编排工具以及 CI/CD 系统的安装和配置。


2.1 开发环境准备

2.1.1 基础软件安装

Linux (Ubuntu/Debian) 环境:

# 更新系统包
sudo apt update && sudo apt upgrade -y

# 安装基础工具
sudo apt install -y \
    curl \
    wget \
    vim \
    git \
    unzip \
    tar \
    gzip \
    ca-certificates \
    gnupg \
    lsb-release

macOS 环境:

# 安装 Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# 安装基础工具
brew install git docker kubectl helm terraform ansible

Windows 环境:

推荐使用 WSL2 (Windows Subsystem for Linux):

# 在 PowerShell 中以管理员身份运行
wsl --install -d Ubuntu-22.04

# 安装 Windows 终端
winget install Microsoft.WindowsTerminal

2.1.2 Git 安装与配置

# 安装 Git
# Ubuntu/Debian
sudo apt install git

# macOS
brew install git

# 配置用户信息
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

# 配置默认分支名
git config --global init.defaultBranch main

# 启用颜色输出
git config --global color.ui auto

# 设置默认编辑器
git config --global core.editor vim

# 配置 SSH 密钥
ssh-keygen -t ed25519 -C "your.email@example.com"
cat ~/.ssh/id_ed25519.pub

2.2 Docker 安装与配置

2.2.1 Docker Engine 安装

Ubuntu/Debian 系统:

# 移除旧版本
sudo apt remove docker docker-engine docker.io containerd runc

# 安装依赖
sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release

# 添加 Docker GPG 密钥
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# 添加 Docker 仓库
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 安装 Docker Engine
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 将当前用户添加到 docker 组
sudo usermod -aG docker $USER
newgrp docker

# 验证安装
docker --version
docker run hello-world

Docker 配置优化:

// /etc/docker/daemon.json
{
  "registry-mirrors": [
    "https://mirror.ccs.tencentyun.com",
    "https://docker.mirrors.ustc.edu.cn"
  ],
  "dns": ["8.8.8.8", "8.8.4.4"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "3"
  },
  "storage-driver": "overlay2",
  "live-restore": true
}
# 重启 Docker 服务
sudo systemctl restart docker
sudo systemctl enable docker

2.2.2 Docker Compose 安装

# 下载 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 添加执行权限
sudo chmod +x /usr/local/bin/docker-compose

# 创建软链接
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

# 验证安装
docker-compose --version

2.3 Kubernetes 环境搭建

2.3.1 Minikube 单节点集群

Minikube 安装:

# 下载 Minikube
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube

# 安装 kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

# 启动 Minikube
minikube start --driver=docker --image-mirror-country=cn --registry-mirrors=https://docker.mirrors.ustc.edu.cn

常用 Minikube 命令:

# 查看集群状态
minikube status

# 访问 Kubernetes Dashboard
minikube dashboard

# 停止集群
minikube stop

# 删除集群
minikube delete

# 切换 kubectl 上下文
kubectl config use-context minikube

2.3.2 Kind (Kubernetes in Docker)

# 安装 Kind
curl -Lo kind https://github.com/kubernetes-sigs/kind/releases/download/v0.20.0/kind-$(uname)-amd64
chmod +x kind
sudo mv kind /usr/local/bin/

# 创建集群
kind create cluster --name devops-cluster

# 验证
kubectl cluster-info
kubectl get nodes

2.4 CI/CD 工具安装

2.4.1 Jenkins 安装

Docker 方式安装 Jenkins:

# 创建数据目录
mkdir -p ~/jenkins_home

# 运行 Jenkins
docker run -d \
  --name jenkins \
  -p 8080:8080 \
  -p 50000:50000 \
  -v ~/jenkins_home:/var/jenkins_home \
  -v /var/run/docker.sock:/var/run/docker.sock \
  jenkins/jenkins:lts

# 获取初始管理员密码
docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword

传统方式安装 Jenkins:

# 添加 Jenkins 仓库
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'

# 安装 Jenkins
sudo apt update
sudo apt install -y jenkins
sudo systemctl start jenkins
sudo systemctl enable jenkins

2.4.2 GitLab Runner 安装

# 添加 GitLab 仓库
curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo bash

# 安装 GitLab Runner
sudo apt-get install gitlab-runner

# 注册 Runner
sudo gitlab-runner register \
  --url "https://gitlab.com/" \
  --registration-token "YOUR_TOKEN" \
  --executor "docker" \
  --docker-image "docker:24.0.5" \
  --description "docker-runner" \
  --locked="false"

2.4.3 ArgoCD 安装

# 创建命名空间
kubectl create namespace argocd

# 安装 ArgoCD
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/notifications.yaml
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/application.yaml

# 访问 ArgoCD UI
kubectl patch svc argocd-server -n argocd -p '{"spec":{"type":"LoadBalancer"}}'

# 获取初始密码
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d

2.5 基础设施即代码工具

2.5.1 Terraform 安装

# 下载 Terraform
TERRAFORM_VERSION="1.6.6"
wget https://releases.hashicorp.com/terraform/${TERRAFORM_VERSION}/terraform_${TERRAFORM_VERSION}_linux_amd64.zip
unzip terraform_${TERRAFORM_VERSION}_linux_amd64.zip
sudo mv terraform /usr/local/bin/

# 验证安装
terraform version

# 配置插件缓存
mkdir -p ~/.terraform.d/plugin-cache
cat > ~/.terraform.rc << 'EOF'
plugin_cache_dir   = "$HOME/.terraform.d/plugin-cache"
EOF

2.5.2 Ansible 安装

# Ubuntu/Debian
sudo apt update
sudo apt install -y ansible

# macOS
brew install ansible

# 验证安装
ansible --version

# 配置 Ansible
mkdir -p ~/.ansible
cat > ~/.ansible.cfg << 'EOF'
[defaults]
inventory = ~/ansible_inventory
host_key_checking = False
retry_files_enabled = False
gathering = smart
fact_caching = jsonfile
fact_caching_connection = /tmp/ansible_facts
fact_caching_timeout = 3600

[inventory]
enable_plugins = yaml, ini, host_list
EOF

2.6 监控工具安装

2.6.1 Prometheus 安装

# 下载 Prometheus
PROMETHEUS_VERSION="2.47.0"
wget https://github.com/prometheus/prometheus/releases/download/v${PROMETHEUS_VERSION}/prometheus-${PROMETHEUS_VERSION}.linux-amd64.tar.gz
tar xvf prometheus-${PROMETHEUS_VERSION}.linux-amd64.tar.gz
cd prometheus-${PROMETHEUS_VERSION}.linux-amd64

# 移动二进制文件
sudo mv prometheus /usr/local/bin/
sudo mv promtool /usr/local/bin/

# 创建配置目录
sudo mkdir -p /etc/prometheus
sudo mv prometheus.yml /etc/prometheus/

# 创建数据目录
sudo mkdir -p /var/lib/prometheus

# 创建 systemd 服务
sudo cat > /etc/systemd/system/prometheus.service << 'EOF'
[Unit]
Description=Prometheus
After=network.target

[Service]
Type=simple
User=prometheus
ExecStart=/usr/local/bin/prometheus \
    --config.file /etc/prometheus/prometheus.yml \
    --storage.tsdb.path /var/lib/prometheus \
    --web.console.libraries=/usr/share/prometheus/console_libraries \
    --web.console.templates=/usr/share/prometheus/consoles
Restart=always

[Install]
WantedBy=multi-user.target
EOF

# 启动 Prometheus
sudo systemctl daemon-reload
sudo systemctl start prometheus
sudo systemctl enable prometheus

2.6.2 Grafana 安装

# 添加 Grafana 仓库
sudo apt install -y apt-transport-https software-properties-common
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee /etc/apt/sources.list.d/grafana.list

# 安装 Grafana
sudo apt update
sudo apt install -y grafana

# 启动服务
sudo systemctl start grafana-server
sudo systemctl enable grafana-server

2.7 集成开发环境配置

2.7.1 VS Code 推荐插件

// settings.json
{
  "extensions": {
    "recommendations": [
      "ms-azuretools.vscode-docker",
      "ms-kubernetes-tools.vscode-kubernetes-tools",
      "redhat.vscode-commons",
      "ms-vscode.powershell",
      "golang.go",
      "ms-python.python",
      "dbaeumer.vscode-eslint",
      "esbenp.prettier-vscode",
      "eamodio.gitlens",
      "GitHub.copilot"
    ]
  }
}

2.7.2 IDE 快捷键配置

# Git 常用快捷键
alias gs='git status'
alias ga='git add'
alias gc='git commit'
alias gp='git push'
alias gl='git log --oneline --graph --all'
alias gb='git branch'
alias gco='git checkout'
alias gd='git diff'
alias gsh='git stash'
alias gshp='git stash pop'

# Docker 快捷键
alias dps='docker ps'
alias dpsa='docker ps -a'
alias di='docker images'
alias dex='docker exec -it'
alias dlogs='docker logs -f'
alias dclean='docker system prune -af'

# Kubernetes 快捷键
alias k='kubectl'
alias kgp='kubectl get pods'
alias kgs='kubectl get svc'
alias kgd='kubectl get deployments'
alias kga='kubectl get all'
alias kdp='kubectl describe pod'
alias kds='kubectl describe svc'
alias kdd='kubectl describe deployment'
alias klf='kubectl logs -f'
alias kx='kubectl exec -it'

2.8 本章小结

本章完成了 DevOps 工作环境的搭建:

类别 安装内容 验证命令
基础工具 Git, curl, vim git --version
容器平台 Docker, Docker Compose docker --version
编排工具 kubectl, Minikube/Kind kubectl version
CI/CD Jenkins, GitLab Runner, ArgoCD 服务访问
IaC Terraform, Ansible terraform version
监控 Prometheus, Grafana curl localhost:9090

📌 下一章预告

下一章我们将学习 Git 版本控制基础,包括:

  • Git 基础命令
  • 分支管理策略
  • Git 工作流
  • 团队协作规范

💡 提示:建议将环境配置代码保存到 Git 仓库中,方便团队成员快速复现一致的环境。