# coding-tools **Repository Path**: masonlaw/coding-tools ## Basic Information - **Project Name**: coding-tools - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-02-20 - **Last Updated**: 2021-02-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 一、环境资源准备 ### 硬件资源 推荐配置 > cpu:16核 > 内存:64G > 系统盘:100G > 数据盘:500GB /data 配置清单最低要求: > cpu:8核 > 内存:16G > 系统盘:100G > 数据盘:200GB ### 系统、软件配置 操作系统:CentOS 7以上 openssh:版本 >= 6.7(CentOS 7以上默认自带的7.4版本) 作为部署过程的环境准备:对于集群内的每一节点系统配置,请使用以下脚本逐个节点手工修改(因安全因素不自动操作)。 为方便操作,可直接拷贝 node_provision.sh 文件到节点执行。 ``` # 1、关闭所有swap swapoff -a sed -ri 's/.*swap.*/#&/' /etc/fstab # 2、关闭当前的selinux setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config sed -i 's/SELINUX=permissive/SELINUX=disabled/g' /etc/selinux/config # 3、关闭防火墙 systemctl stop firewalld systemctl disable firewalld # 4、修改3台node机sshd服务端口为2222 sed -i 's/#Port 22/Port 2222/' /etc/ssh/sshd_config #确保公钥认证是开启的,默认是开启 #PubkeyAuthentication yes ``` ## 二、安装操作 ### 1、下载安装工具包 coding-tools curl -L "https://codingcorp-generic.pkg.coding.net/coding-private/public/coding-tools.tar.gz?version=latest" -o coding-tools.tar.gz 修改安装配置 安装前请修改配置文件,复制 coding-tools/config.sample.yaml 为 config.yaml ,并修改对应的配置,具体的配置项请参考config.sample.yaml说明 ### 2、下载物料包 物料包约33G,共分成8个文件,请在逐个下载,或使用下面脚本下载 ``` for i in {0..7} do curl -L "https://codingcorp-generic.pkg.coding.net/coding-private/public/packages.tar.gz.${i}?version=latest" -o packages.tar.gz.${i} done ``` 下载完成后,请使用sha1sum 工具核对 hash校验码,确保下载的文件是正确的,具体各文件对应的hash码在制品库文件概览里有显示,同时也可在步骤3文件列表里可看到 校验命令 ``` $ sha1sum packages.tar.gz.0 5041199e83d94a4dd6a6fa4b8d7b1b93862d8980 packages.tar.gz.0 $ sha1sum packages.tar.gz.1 42c2430d68e00261f60f828ed6359ee97a34690a packages.tar.gz.1 ... $ sha1sum packages.tar.gz.7 e0e51505b594feba75397e0cd63545cec7e596a3 packages.tar.gz.7 ``` ### 3、传输和合并包 把整个coding-tools和 packages.tar.gz 通过工具,比如u盘,ssh,传输到执行机(一般是集群里的一个节点机)上。 因物料包较大,建议放在/data/下面 形式如: ``` ls -l /data /data/coding-tools /data/packages.tar.gz.0 # sha1sum hash:5041199e83d94a4dd6a6fa4b8d7b1b93862d8980 /data/packages.tar.gz.1 # sha1sum hash:42c2430d68e00261f60f828ed6359ee97a34690a /data/packages.tar.gz.2 # sha1sum hash:2b99786fefe4f3a245c1818e9fecc412c2bdb19a /data/packages.tar.gz.3 # sha1sum hash:17c1d7de234def8aa32e2dc8df45bb97241862d2 /data/packages.tar.gz.4 # sha1sum hash:80e76ad8abb992e6459963eeb1895bf1ed72aace /data/packages.tar.gz.5 # sha1sum hash:02c840fe57e2ff18ad91a283d9b7d5cfc2bc3190 /data/packages.tar.gz.6 # sha1sum hash:2ce64399184e41b7edd100d760a691d11c2b2173 /data/packages.tar.gz.7 # sha1sum hash:e0e51505b594feba75397e0cd63545cec7e596a3 ``` 合并、解压物料包到指定目录 ``` cd /data cat packages.tar.gz.* > packages.tar.gz #合并文件 sha1sum packages.tar.gz #校验包,sha1sum hash:43937d0b35764ecf662933d8ae86cbcc0b05fc5d tar zxvf packages.tar.gz -C coding-tools/ #解压到指定目录 ``` 确保物料包路径如下 ``` ... ├── install.sh ├── node_install.sh ├── packages │   ├── docker │   │   ├── containerd │   │   ├── containerd-shim │   │   ├── ctr │   │   ├── daemon.json │   │   ├── docker │   │   ├── dockerd │   │   ├── docker-init │   │   ├── docker-proxy │   │   ├── docker.service │   │   └── runc │   ├── fio │   ├── helm │   ├── kubectl │   └── nexus.tar.gz ... ``` ### 4、安装 CODING(web界面安装方式请忽略本步骤) 开始安装 ``` cd coding-tools ./install.sh ``` 安装完成后,需要配置DNS或者在客户机配置HOST指向域名。需要配置的域名如下 #### DNS配置 需要在DNS做泛域名解析的 ``` *.{{ DOMAIN }} *.pkg.{{ DOMAIN }} *.mock.{{ DOMAIN }} *.doc.{{ DOMAIN }} ``` #### 客户机host配置 在客户机上修改 hosts 文件或修改 dns {{ EXTERNAL_IP }} 替换成暴露的ip {{ DOMAIN }} 替换成被访问的域名 ``` {{ EXTERNAL_IP }} operation.{{ DOMAIN }} {{ EXTERNAL_IP }} e-operation.{{ DOMAIN }} {{ EXTERNAL_IP }} codingcorp.{{ DOMAIN }} {{ EXTERNAL_IP }} help.{{ DOMAIN }} {{ EXTERNAL_IP }} e.{{ DOMAIN }} {{ EXTERNAL_IP }} minio.{{ DOMAIN }} {{ EXTERNAL_IP }} thumbor.{{ DOMAIN }} {{ EXTERNAL_IP }} git.{{ DOMAIN }} {{ EXTERNAL_IP }} codingcorp-api.pkg.{{ DOMAIN }} {{ EXTERNAL_IP }} codingcorp-docker.pkg.{{ DOMAIN }} {{ EXTERNAL_IP }} codingcorp-npm.pkg.{{ DOMAIN }} {{ EXTERNAL_IP }} codingcorp-pypi.pkg.{{ DOMAIN }} {{ EXTERNAL_IP }} codingcorp-generic.pkg.{{ DOMAIN }} {{ EXTERNAL_IP }} codingcorp-maven.pkg.{{ DOMAIN }} {{ EXTERNAL_IP }} codingcorp-helm.pkg.{{ DOMAIN }} {{ EXTERNAL_IP }} codingcorp-composer.pkg.{{ DOMAIN }} {{ EXTERNAL_IP }} codingcorp-nuget.pkg.{{ DOMAIN }} {{ EXTERNAL_IP }} codingcorp-conan.pkg.{{ DOMAIN }} {{ EXTERNAL_IP }} auth.pkg.{{ DOMAIN }} {{ EXTERNAL_IP }} subersion.e.{{ DOMAIN }} {{ EXTERNAL_IP }} codingcorp-docker.pkg.{{ DOMAIN }} {{ EXTERNAL_IP }} svn.{{ DOMAIN }} {{ EXTERNAL_IP }} webhook.{{ DOMAIN }} {{ EXTERNAL_IP }} codingcorp.doc.{{ DOMAIN }} {{ EXTERNAL_IP }} codingcorp.mock.{{ DOMAIN }} {{ EXTERNAL_IP }} cci-websocket.{{ DOMAIN }} {{ EXTERNAL_IP }} kkfileview.{{ DOMAIN }} # 通用域名配置 {{ EXTERNAL_IP }} e.{{ DOMAIN }} {{ EXTERNAL_IP }} minio.{{ DOMAIN }} {{ EXTERNAL_IP }} thumbor.{{ DOMAIN }} {{ EXTERNAL_IP }} admin.{{ DOMAIN }} {{ EXTERNAL_IP }} git.{{ DOMAIN }} {{ EXTERNAL_IP }} auth.pkg.{{ DOMAIN }} {{ EXTERNAL_IP }} subversion.e.{{ DOMAIN }} {{ EXTERNAL_IP }} kkfileview.{{ DOMAIN }} {{ EXTERNAL_IP }} operation.{{ DOMAIN }} # 某企业配置,企业域名为 GLOBAL_KEY {{ EXTERNAL_IP }} {{ GLOBAL_KEY }}.{{ DOMAIN }} {{ EXTERNAL_IP }} {{ GLOBAL_KEY }}-docker.pkg.{{ DOMAIN }} {{ EXTERNAL_IP }} {{ GLOBAL_KEY }}-npm.pkg.{{ DOMAIN }} {{ EXTERNAL_IP }} {{ GLOBAL_KEY }}-pypi.pkg.{{ DOMAIN }} {{ EXTERNAL_IP }} {{ GLOBAL_KEY }}-generic.pkg.{{ DOMAIN }} {{ EXTERNAL_IP }} {{ GLOBAL_KEY }}-maven.pkg.{{ DOMAIN }} {{ EXTERNAL_IP }} {{ GLOBAL_KEY }}-helm.pkg.{{ DOMAIN }} {{ EXTERNAL_IP }} {{ GLOBAL_KEY }}-composer.pkg.{{ DOMAIN }} {{ EXTERNAL_IP }} {{ GLOBAL_KEY }}-nuget.pkg.{{ DOMAIN }} {{ EXTERNAL_IP }} {{ GLOBAL_KEY }}-conan.pkg.{{ DOMAIN }} ``` 示例: ``` # host 通用域名配置 192.168.122.76 e.coding.io #访问该域名即可 192.168.122.76 minio.coding.io 192.168.122.76 thumbor.coding.io 192.168.122.76 admin.coding.io 192.168.122.76 git.coding.io 192.168.122.76 auth.pkg.coding.io 192.168.122.76 subversion.e.coding.io # 某企业配置,企业域名 GLOBAL_KEY=codingcorp 192.168.122.76 codingcorp.coding.io 192.168.122.76 codingcorp-docker.pkg.coding.io 192.168.122.76 codingcorp-npm.pkg.coding.io 192.168.122.76 codingcorp-pypi.pkg.coding.io 192.168.122.76 codingcorp-generic.pkg.coding.io 192.168.122.76 codingcorp-maven.pkg.coding.io 192.168.122.76 codingcorp-helm.pkg.coding.io 192.168.122.76 codingcorp-composer.pkg.coding.io 192.168.122.76 codingcorp-nuget.pkg.coding.io 192.168.122.76 codingcorp-conan.pkg.coding.io ``` ### 5、license 授权安装 待安装配置完成后,虽然能访问页面,但具体的功能菜单会校验license。coding产品方会根据客户合同的使用日期和私有化客户的域名生成license。 具体申请事宜请联系coding产品方。 #### 1. 上传license 访问 http://minio.coding.io/ (域名请替换成公司对应的域名)登录,coding/coding123 具体操作请看截图: **上传到minio上的license 到 coding-net-bucket-private 下面,文件名必须为 LICENSE** ![图片](/api/project/237410/files/21816359/imagePreview) #### 2. 重启e-coding pod 在执行机节点执行重启命令,重启时间较长,大概 5分钟左右 ``` kubectl rollout restart deployment/e-coding ``` ### 6、卸载 CODING ``` cd coding-tools ./uninstall.sh 默认卸载 CODING -f k8s 删除 CODING和k8s ,危险操作需输入确认删除密钥: -k 10de1a87986eef2f0fa098d6792c3742d9c92b8f ``` ## 三、FAQ ### Q1. k8s安装失败怎么办? A: 首先查看下rke/cluster.yaml配置是否正确,然后再单独使用命令安装k8s ``` $ rke up --config=rke/cluster.yaml #可显示详细安装信息及报错日志 ``` 若有改动 config.yaml 节点配置,请务必先清理原先安装缓存,及删除相关缓存步骤配置 ``` $ rke remove --config=rke/cluster.yaml $ rm -f rke/cluster.rkestate ``` 若出现以下异常 ``` WARN[0312] [etcd] host [9.134.33.70] failed to check etcd health: failed to get /health for host [9.134.33.70]: Get https://9.134.33.70:2379/health: net/http: TLS handshake timeout ``` 也可用以下命令清理后重新安装 ``` $ rke remove --config=rke/cluster.yaml $ rm -f rke/cluster.rkestate ``` ### Q2. CODING 镜像拉取不到? A:请确认是否使用 config.yaml 配置里deploy_mode有修改。 部署模式: proxy 代理模式,直接可以从coding-private 拉取镜像,coding-helm/values.yaml里images.repository配置必须和线上一致 ```yaml api_mock: enabled: true repository: coding-private/release/api-mock #地址和线上保持一致 tag: 3.0.i.e7aa02 ``` ### Q3. 使用 ./uninstall.sh -f k8s -k xxxx 删除后,节点里还有 docker进程怎么办? A:请在各节点里使用以下命令手工清理 进入节点 ``` cd /tmp ./clean_rke.sh ``` 若 /tmp/clean_rke.sh 文件不存在,则直接执行以下命令 ``` docker rm -f $(docker ps -qa) echo "清理docker volume" docker volume rm $(docker volume ls -q) ```