kubesphere生产环境落地实践(七)环境初始化及部署流程

本章节介绍下在使用kubesphere时,我们对环境的要求及部署流程。

环境初始化

我们采用虚拟机作为集群节点,对于虚机模板要求如下:

系统要求

  1. 版本要求
  • CentOS-7-x86_64-DVD-2009.iso

安装方式: 最小化安装

  1. 分区要求
  • /boot分区1Gi
  • /boot/efi分区200Mi
  • /根分区98Gi
  • /swap分区
  • /home分区
  • /var分区
  • /usr分区
  1. 数据盘要求
  • 容量: 100Gi
  • 挂载点: /data
  • 分区: 一个主分区

并设置开机自启动

系统配置

  1. 时钟服务器配置

检测是否已经配置

$ crontab -l

至少保证每分钟同步一次(ntp-server替换为实际ntp地址,由虚拟化厂商提供)

*/1 * * * * ntpdate ntp-server
  1. 时区配置

配置为上海时区

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  1. 关闭防火墙
systemctl disable firewalld --now
  1. 关闭selinux
setenforce 0
sed -i "s#SELINUX=enforcing#SELINUX=disabled#g" /etc/selinux/config
  1. 调整文件描述符等
cat >> /etc/pam.d/login <> /etc/security/limits.conf <> /etc/security/limits.d/20-nproc.conf< /proc/sys/fs/file-max
  1. 配置yum本地源

  2. 初始化sudo用户

  3. 配置互信

配置root用户

ssh-keygen -t rsa -b 2048 -N '' -f ~/.ssh/id_rsa
cat .ssh/id_rsa.pub > ~/.ssh/authorized_keys
chmod -R 600 ~/.ssh

安全加固

  1. ping
echo "net.ipv4.icmp_echo_ignore_all=1"  >> /etc/sysctl.conf
sysctl -p
  1. 关闭ICMP_TIMESTAMP应答
iptables -I INPUT -p ICMP --icmp-type timestamp-request -m comment --comment "deny ICMP timestamp" -j DROP
iptables -I INPUT -p ICMP --icmp-type timestamp-reply -m comment --comment "deny ICMP timestamp" -j DROP
  1. 限制root用户直接登录
sed -i "s#PermitRootLogin yes#PermitRootLogin no#g" /etc/ssh/sshd_config
systemctl restart sshd
  1. 修改允许密码错误次数
sed -i "/MaxAuthTries/d" /etc/ssh/sshd_config
echo "MaxAuthTries 3" >> /etc/ssh/sshd_config
systemctl restart sshd
  1. 关闭AgentForwardingTcpForwarding
sed -i "/AgentForwarding/d" /etc/ssh/sshd_config
sed -i "/TcpForwarding/d" /etc/ssh/sshd_config
echo "AllowAgentForwarding no" >> /etc/ssh/sshd_config
echo "AllowTcpForwarding no" >> /etc/ssh/sshd_config
systemctl restart sshd
  1. 关闭UseDNS
sed -i "/UseDNS/d" /etc/ssh/sshd_config
echo "UseDNS no" >> /etc/ssh/sshd_config
systemctl restart sshd
  1. 升级sudo版本

CVE-2021-3156

  • sudo-1.9.7-3.el7.x86_64.rpm
rpm -Uvh sudo-1.9.7-3.el7.x86_64.rpm

验证

sudo -V
  1. 设置会话超时(5分钟)
echo "export TMOUT=300" >>/etc/profile
. /etc/profile
  1. 隐藏系统版本信息
mv /etc/issue /etc/issue.bak 
mv /etc/issue.net /etc/issue.net.bak
  1. 禁止Control-Alt-Delete 键盘重启系统命令
rm -rf /usr/lib/systemd/system/ctrl-alt-del.target
  1. 密码加固
PASS_MAX_DAYS=`grep -e ^PASS_MAX_DAYS /etc/login.defs |awk '{print $2}'`
if [ $PASS_MAX_DAYS -gt 90 ];then
    echo "密码最长保留期限为:$PASS_MAX_DAYS, 更改为90天"
    sed -i "/^PASS_MAX_DAYS/d" /etc/login.defs
    echo "PASS_MAX_DAYS   90" >> /etc/login.defs
fi

PASS_MIN_DAYS=`grep -e ^PASS_MIN_DAYS /etc/login.defs |awk '{print $2}'`
if [ $PASS_MIN_DAYS -ne 0 ];then
    echo "密码最段保留期限为:$PASS_MIN_DAYS, 更改为0天"
    sed -i "/^PASS_MIN_DAYS/d" /etc/login.defs
    echo "PASS_MIN_DAYS   0" >> /etc/login.defs
fi

PASS_MIN_LEN=`grep -e ^PASS_MIN_LEN /etc/login.defs |awk '{print $2}'`
if [ $PASS_MIN_LEN -lt 8 ];then
    echo "密码最少字符为:$PASS_MIN_LEN, 更改为8"
    sed -i "/^PASS_MIN_LEN/d" /etc/login.defs
    echo "PASS_MIN_LEN   8" >> /etc/login.defs
fi
 
PASS_WARN_AGE=`grep -e ^PASS_WARN_AGE /etc/login.defs |awk '{print $2}'`
if [ $PASS_WARN_AGE -ne 7 ];then
  echo "密码到期前$PASS_MIN_LEN天提醒, 更改为7"
  sed -i "/^PASS_WARN_AGE/d" /etc/login.defs
  echo "PASS_WARN_AGE   7" >> /etc/login.defs
fi
  1. 配置系统日志
touch /var/log/secure
chown root:root /var/log/secure
chmod 600 /var/log/secure
  1. 删除其他用户定时任务
rm -f /etc/cron.deny
  1. 修改开机自启动
chmod 700 -R /etc/rc.d/init.d/*
  1. 查找并删除删除自动登录脚本
find / -name .netrc
find / -name .rhosts
  1. 查询弱密码用户
awk -F: '($2 == ""){print $1}' /etc/shadow
  1. 删除以下用户

执行两遍

users=(adm lp sync shutdown halt mail news uucp operator games gopher ftp)
for i in ${users[@]};
do
  userdel $i &>/dev/null || true
done

for i in ${users[@]};
do
  userdel $i &>/dev/null || true
done
  1. 关键文件加锁
chattr +i /etc/services
chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab
  1. 关键文件修改授权
chown root:root /etc/{passwd,shadow,group}
chmod 644 /etc/{passwd,group}
chmod 400 /etc/shadow

部署流程

部署流程主要分为以下几个部分:

  1. 部署私有镜像库harbor并导入镜像
  2. 部署keepalive+haproxy
  3. 部署kubernetes集群
  4. 部署ceph存储集群(rook方式)
  5. 部署kubepshere平台
  6. 部署应用系统
  7. 部署插件(velero、porter等)

你可能感兴趣的:(kubesphere生产环境落地实践(七)环境初始化及部署流程)