硬件最低要求
节点数量:4
单节点内存信息:16G及以上
单节点处理器信息:4核4线程及以上
单节点硬盘:100G及以上(如使用NFS存储,那么NFS服务节点建议存储不小于512G)
只要现有节点内存与CPU总和大于上述节点要求即可。
软件要求
系统版本:CentOS7.4及以上
Kubernetes:1.10及以上
Helm:v3.2.4
网络要求
各个服务器之间内网互通内网带宽建议1Gbps以上
各个服务器能够访问外网
约定
非特别说明,请使用具有root权限的用户进行安装操作
部署教程以NFS类型的PV为例进行创建,所有非集群级对象都创建在c7n-system命名空间下
Kubernetes集群部署
前置要求与约定
集群会使用到的端口号。
各服务器时间与时区需一致,集群内服务器间时间差值不能大于1秒。
文档以 4 个 CentOS 7.4 系统服务器安装高可用 Kubernetes 集群进行讲解。
按照本文档安装 Kubernetes 集群时,Ansible 脚本会将服务器上防火墙关闭,请使用安全组进行网络权限控制。
Master(s) 服务器为 Kubernetes 控制服务器;Worker(s) 服务器为 Kubernetes 运算服务器;Etcd 服务器为组建Etcd 集群的服务器,Etcd 官方建议 Etcd 集群服务器个数为奇数个(比如1、3、5)以防止脑裂。
为安全考虑按本教程安装的 Kubernetes 集群只会在 Master(s) 服务器上配置 kubectl 命令所需 kubeconfig,故 Worker(s) 服务器默认是无法使用 kubectl 命令的。
环境规划
ip | 主机名 | 角色 |
192.168.199.108 | yfm08 | master1 ,etcd |
192.168.199.109 | yfm09 | master2 , |
192.168.199.110 | yfm10 | node1 , etcd |
192.168.199.111 | yfm11 | node2 , etcd |
环境准备
yum install git -y
git clone https://github.com/choerodon/kubeadm-ha.git
cd kubeadm-ha
./ansible/install.sh
配置 ansible inventory 文件
进入项目根目录
cp example/hosts.m-master.ip.ini ./inventory.ini
vi inventory.ini,然后按需修改
部署集群
ansible-playbook -i inventory.ini 90-init-cluster.yml
重置集群
ansible-playbook -i inventory.ini 99-reset-cluster.yml
查看等待 pod 的状态为 runnning
kubectl get po --all-namespaces -w
安装失败,就多安装几次再看看
Helm部署
部署客户端
在任意一个master节点执行以下命令
curl -L -o helm-v3.2.4-linux-amd64.tar.gz https://file.choerodon.com.cn/kubernetes-helm/v3.2.4/helm-v3.2.4-linux-amd64.tar.gz
tar -zxvf helm-v3.2.4-linux-amd64.tar.gz
sudo mv linux-amd64/helm /usr/bin/helm
验证
[root@yfm08 helm]# helm version
version.BuildInfo{Version:"v3.2.4", GitCommit:"0ad800ef43d3b826f31a5ad8dfbb4fe05d143688", GitTreeState:"clean", GoVersion:"go1.13.12"}
NFS动态存储卷
NFS 允许系统将其目录和文件共享给网络上的其他系统。通过NFS,用户和应用程序可以访问远程系统上的文件,就象它们是本地文件一样。
创建 NFS 服务器
在集群每一个节点安装nfs-utils
yum install -y nfs-utils
#创建共享目录
mkdir -p /data/nfsdata
#编写格式如下,NFS共享目录路径 客户机IP段(参数1,参数2,...,参数n)
vi /etc/exports
/data/nfsdata 192.168.199.108/16(rw,sync,insecure,no_subtree_check,no_root_squash)
systemctl start nfs-server
systemctl enable nfs-server #开机自启
验证
showmount -e 192.168.199.108
安装 nfs-client-provisioner
helm repo add c7n https://openchart.choerodon.com.cn/choerodon/c7n/ #获取失败
helm repo update
#在任意一个master节点
helm upgrade nfs-client-provisioner c7n/nfs-client-provisioner --install --set rbac.create=true --set persistence.enabled=true --set storageClass.name=nfs-provisioner --set persistence.nfsServer=192.168.199.108 --set persistence.nfsPath=/data/nfsdata --version 0.1.1 --namespace kube-system
分步部署Choerdon
Chartmuseum部署
vi chartmuseum.yaml
env:
open:
STORAGE: local
AUTH_ANONYMOUS_GET: "true"
DISABLE_API: "false"
DEPTH: 2
secret:
BASIC_AUTH_PASS: password
BASIC_AUTH_USER: choerodon
persistence:
enabled: true
storageClass: nfs-provisioner
ingress:
enabled: true
hosts:
- name: study.choerodon.com
path: /
执行部署
helm upgrade --install chartmuseum c7n/chartmuseum \
-f chartmuseum.yaml \
--version 2.15.0 \
--create-namespace \
--namespace c7n-system
验证部署:访问设置的域名
注意
需要在windows设置hosts,配置node节点ip与域名的映射
192.168.199.110 study.choerodon.com
或者配置DNS解析服务器,泛域名解析到node节点vip
部署minio
vi minio.yaml
mode: distributed
accessKey: "AKIAIOSFODNN7EXAMPLE"
secretKey: "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
persistence:
enabled: true
storageClass: nfs-provisioner
ingress:
enabled: true
path: /
hosts:
- minio.choerodon.com
执行安装
helm install minio c7n/minio \
-f minio.yaml \
--version 5.0.4 \
--namespace c7n-system
部署Redis
helm upgrade --install c7n-redis c7n/redis \
--set persistence.enabled=true \
--set persistence.storageClass=nfs-provisioner \
--set service.enabled=true \
--create-namespace \
--version 0.2.5 \
--namespace c7n-system
部署Mysql
创建mysql所需PVC
helm install c7n-mysql-pvc c7n/persistentvolumeclaim \
--set accessModes={ReadWriteOnce} \
--set requests.storage=2Gi \
--set storageClassName=nfs-provisioner \
--version 0.1.0 \
--set name=c7n-mysql-pvc \
--namespace c7n-system
编写配置文件mysql.yaml
config:
character_set_server: utf8mb4
collation_server: utf8mb4_general_ci
lower_case_table_names: 1
max_allowed_packet: 32M
max_connections: 1500
env:
MYSQL_ROOT_PASSWORD: password
persistence:
enabled: true
existingClaim: c7n-mysql-pvc
service:
enabled: ture
执行安装
helm upgrade --install c7n-mysql c7n/mysql \
-f mysql.yaml \
--create-namespace \
--version 0.1.3 \
--namespace c7n-system
创建nodeport
vi mysql-nodeport.yaml
apiVersion: v1
kind: Service
metadata:
name: c7n-mysql-nodeport
namespace: c7n-system
spec:
type: NodePort
ports:
- protocol: TCP
port: 30306
targetPort: 3306
nodePort: 30001
selector:
choerodon.io/release: c7n-mysql
kubectl apply -f mysql-nodeport.yaml
Harbor部署
harbor.yaml
expose:
ingress:
hosts:
core: harbor.choerodon.com
externalURL: https://harbor.choerodon.com
persistence:
persistentVolumeClaim:
registry:
storageClass: nfs-provisioner
jobservice:
storageClass: nfs-provisioner
database:
storageClass: nfs-provisioner
redis:
storageClass: nfs-provisioner
chartmuseum:
enabled: false
clair:
enabled: false
notary:
enabled: false
harborAdminPassword: Harbor12345
执行安装
helm upgrade --install harbor c7n/harbor \
-f harbor.yaml \
--create-namespace \
--version 1.2.3 \
--namespace c7n-system
Gitlab部署
创建参数配置文件 gitlab.yaml
core:
env:
OAUTH_ENABLED: false
OAUTH_AUTO_SIGN_IN_WITH_PROVIDER: "oauth2_generic"
OAUTH_ALLOW_SSO: "'oauth2_generic'"
OAUTH_BLOCK_AUTO_CREATED_USERS: false
OAUTH_GENERIC_API_KEY: "gitlabhq"
OAUTH_GENERIC_APP_SECRET: "gitlabhq"
# choerodon api 访问地址
OAUTH_GENERIC_SITE: "http://api.gitlab.choerodon.com"
OAUTH_GENERIC_USER_INFO_URL: "/oauth/api/user"
OAUTH_GENERIC_AUTHORIZE_URL: "/oauth/oauth/authorize"
OAUTH_GENERIC_TOKEN_URL: "/oauth/oauth/token"
OAUTH_GENERIC_ROOT_PATH: "'userAuthentication','principal'"
OAUTH_GENERIC_ID_PATH: "'userAuthentication','principal','userId'"
OAUTH_GENERIC_USER_NICKNAME: "username"
OAUTH_GENERIC_USER_NAME: "usernmae"
RACK_ATTACK_WHITELIST: 0.0.0.0/0
redis:
internal:
password: password
persistence:
enabled: true
persistentVolumeClaim:
core:
storageClass: nfs-provisioner
redis:
storageClass: nfs-provisioner
database:
storageClass: nfs-provisioner
expose:
ingress:
host: "gitlab.choerodon.com"
database:
internal:
password: "password"
执行安装
helm upgrade --install gitlab c7n/gitlab-ha \
-f gitlab.yaml \
--create-namespace \
--version 0.2.2 \
--namespace c7n-system
配置Choerodon Oauth认证
- 以下操作须将Choerodon搭建完成后再继续进行,若未搭建,请跳过。
- 配置Choerodon的Oauth认证后Gitlab的root用户是无法再通过Gitlab自有的界面进行登录的了。
更新Gitlab配置
helm upgrade gitlab c7n/gitlab-ha \
-f <(helm get values gitlab -n c7n-system) \
--set core.env.OAUTH_ENABLED=true \
--version 0.2.2 \
--reuse-values \
--force \
--namespace c7n-system
helm 3.2.x 使用上面的命令更新 Gitlab 配置会报错,如果使用 helm 3.2.x,请按照下面的步骤更新 Gitlab 配置
修改参数配置文件 gitlab.yaml
core:
env:
OAUTH_ENABLED: true
...
执行更新
helm upgrade --install gitlab c7n/gitlab-ha \
-f gitlab.yaml \
--create-namespace \
--version 0.2.2 \
--namespace c7n-system
添加Gitlab Client
- 在执行里面前请根据实际情况修改参数 web_server_redirect_uri
- 编写参数配置文件 gitlab-client.yaml
env:
MYSQL_HOST: c7n-mysql.c7n-system.svc
MYSQL_PASS: password
MYSQL_PORT: 3306
MYSQL_USER: root
SQL_SCRIPT: |
INSERT INTO hzero_platform.oauth_client (name,organization_id,resource_ids,secret,scope,authorized_grant_types,web_server_redirect_uri,access_token_validity,refresh_token_validity,additional_information,auto_approve,object_version_number,created_by,creation_date,last_updated_by,last_update_date,enabled_flag,time_zone)VALUES('gitlabhq',1,'default','gitlabhq','default','password,implicit,client_credentials,authorization_code,refresh_token','http://gitlab.choerodon.com',3600,3600,'{}','default',1,0,NOW(),0,NOW(),1,'GMT+8');
部署服务
helm upgrade --install gitlab-client c7n/mysql-client \
-f gitlab-client.yaml \
--version 0.1.0 \
--namespace c7n-system
添加管理员用户关联
- 执行完添加管理员用户关联步骤前请不要去Gitlab界面进行登录操作
helm upgrade --install gitlab-user-identities c7n/postgresql-client \
--set env.PG_HOST=gitlabhq-gitlab-database.c7n-system.svc \
--set env.PG_PORT=5432 \
--set env.PG_USER=gitlab \
--set env.PG_PASS=changeit \
--set env.PG_DBNAME=gitlabhq_production \
--set env.SQL_SCRIPT="\
INSERT INTO identities(extern_uid\, provider\, user_id\, created_at\, updated_at) \
VALUES ('1'\, 'oauth2_generic'\, 1\, NOW()\, NOW());" \
--version 0.1.0 \
--namespace c7n-system
Nexus 部署
创建参数配置文件 sonatype-nexus.yaml
ingress:
enabled: true
tls:
enabled: false
initAdminPassword:
enabled: true
password: admin123
nexusProxy:
enabled: false
env:
nexusHttpHost: nexus.choerodon.com
persistence:
storageClass: nfs-provisioner
执行安装
helm upgrade --install sonatype-nexus c7n/sonatype-nexus \
-f sonatype-nexus.yaml \
--create-namespace \
--version 3.4.0 \
--namespace c7n-system
SonarQube部署
- SonarQube并非猪齿鱼运行必要基础组件,你可以选择性进行安装。
- 本事例中 PostgreSql 数据库搭建仅为快速体验 SonarQube 而编写,由于使用了NFS存储故并不能保证其稳定运行或数据不丢失,您可以参照 PostgreSql 官网进行搭建。
helm upgrade --install sonarqube c7n/sonarqube \
--set persistence.enabled=true \
--set persistence.storageClass=nfs-provisioner \
--set postgresql.persistence.storageClass=nfs-provisioner \
--set ingress.enabled=true \
--set ingress.'hosts[0]'=sonarqube.choerodon.com \
--set plugins.'install[0]'=https://file.choerodon.com.cn/choerodon-install/sonarqube/sonar-auth-choerodonoauth-plugin-1.5.3.RELEASE.jar \
--create-namespace \
--version 0.15.0-3 \
--namespace c7n-system
安装SonarQube插件
- 此步骤用于之前已经安装过SonarQube,只需安装插件的情况(如已经执行过上一步可跳过此步骤)
- 进入SonarQube安装目录,下载https://file.choerodon.com.cn/choerodon-install/sonarqube/sonar-auth-choerodonoauth-plugin-1.5.3.RELEASE.jar 插件到\data\sonarqube\extensions\plugins目录
- 重启SonarQube服务
配置 Choerodon 认证
编写参数配置文件 sonarqube-client.yaml
env:
MYSQL_HOST: c7n-mysql.c7n-system.svc
MYSQL_PASS: password
MYSQL_PORT: 3306
MYSQL_USER: root
SQL_SCRIPT: |
INSERT INTO hzero_platform.oauth_client (name,organization_id,resource_ids,secret,scope,authorized_grant_types,web_server_redirect_uri,access_token_validity,refresh_token_validity,additional_information,auto_approve,object_version_number,created_by,creation_date,last_updated_by,last_update_date,enabled_flag,time_zone)VALUES('sonar',1,'default','sonarsonar','default','password,implicit,client_credentials,authorization_code,refresh_token','http://sonarqube.choerodon.com',3600,3600,'{}','default',1,0,NOW(),0,NOW(),1,'GMT+8');
部署服务
helm upgrade --install sonarqube-client c7n/mysql-client \
-f sonarqube-client.yaml \
--version 0.1.0 \
--create-namespace \
--namespace c7n-system
配置用户权限
默认管理员用户名:admin,密码:admin
- 使用管理员用户登录 SonarQube
- 配置默认新建项目为Private, 进入 Administration -> Projects -> Management
- 更改默认权限模板, 进入 Administration -> Security -> Permission Templates ,去掉 sonar-users 用户组所有权限!
配置认证插件
- 使用管理员用户登录 SonarQube
- 进入 Administration -> Configuration ->choerodon
- 更改 Enabled 为启用
- 更改 Choerodon url 为当前使用的 choerodon api getaway 地址;为:http://api.gitlab.choerodon.com
- 更改 sonar url 为当前使用的SonarQube实际地址
- 退出登录,测试使用choerodon登录,出现如下界面
- Choerodon权限与SonarQube权限为lazy分配,对于用户登录后在SonarQube没有权限的应用服务,从Choerodon代码质量详情界面,跳转登录到SonarQube即可。
Choerodon应用关联SonarQube项目
部署devops-service时添加SonarQube环境变量
SERVICES_SONARQUBE_URL: http://sonarqube.choerodon.com
SERVICES_SONARQUBE_USERNAME: admin
SERVICES_SONARQUBE_PASSWORD: admin
Choerodon 应用关联 SonarQube 针对 maven 和非 maven 项目有不同的配置
- 如果是 maven 项目可以在 .gitlab-ci.yml 文件 build 阶段添加
mvn --batch-mode verify sonar:sonar
-Dsonar.host.url=$SONAR_URL -Dsonar.login=$SONAR_LOGIN
-Dsonar.gitlab.project_id=$CI_PROJECT_PATH
-Dsonar.gitlab.commit_sha=$CI_COMMIT_SHA
-Dsonar.gitlab.ref_name=$CI_COMMIT_REF_NAME
-Dsonar.analysis.serviceGroup=$GROUP_NAME
-Dsonar.analysis.commitId=$CI_COMMIT_SHA
-Dsonar.projectKey=${GROUP_NAME}:${PROJECT_NAME}
- 其他项目可以使用 sonar-scanner,在 .gitlab-ci.yml 文件 build 阶段添加
,请确保 cibase 的镜像版本大于等于 0.10.0
sonar-scanner -Dsonar.host.url=$SONAR_URL -Dsonar.login=$SONAR_LOGIN
-Dsonar.gitlab.project_id=$CI_PROJECT_PATH
-Dsonar.gitlab.commit_sha=$CI_COMMIT_SHA
-Dsonar.gitlab.ref_name=$CI_COMMIT_REF_NAME
-Dsonar.analysis.serviceGroup=$GROUP_NAME
-Dsonar.analysis.commitId=$CI_COMMIT_SHA
-Dsonar.projectKey=${GROUP_NAME}:${PROJECT_NAME}
-Dsonar.sources=.
- sonar.projectKey=
{PROJECT_NAME}不可更改;否则,在查看代码质量时将获取不到对应数据
- sonar.sources 指定扫描代码的路径
- GROUP_NAME和PROJECT_NAME是devops-service内置的环境变量, GROUP_NAME=当前项目所在组织编码-当前项目编码,PROJECT_NAME=当前应用编码
- 如果手动创建SonarQube项目,项目命名规则为:当前项目所在组织编码-当前项目编码:当前应用编码
微服务开发框架部署
创建数据库
编写参数配置文件 create-c7nfw-db.yaml
env:
MYSQL_HOST: c7n-mysql.c7n-system.svc
MYSQL_PORT: "3306"
MYSQL_USER: root
MYSQL_PASS: password
SQL_SCRIPT: |
CREATE USER IF NOT EXISTS 'choerodon'@'%' IDENTIFIED BY 'password';
CREATE DATABASE IF NOT EXISTS hzero_platform DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS hzero_message DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS hzero_file DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS hzero_monitor DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS hzero_admin DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS asgard_service DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL PRIVILEGES ON hzero_platform.* TO choerodon@'%';
GRANT ALL PRIVILEGES ON hzero_message.* TO choerodon@'%';
GRANT ALL PRIVILEGES ON hzero_file.* TO choerodon@'%';
GRANT ALL PRIVILEGES ON hzero_monitor.* TO choerodon@'%';
GRANT ALL PRIVILEGES ON hzero_admin.* TO choerodon@'%';
GRANT ALL PRIVILEGES ON asgard_service.* TO choerodon@'%';
FLUSH PRIVILEGES;
执行安装
helm upgrade --install create-c7nfw-db c7n/mysql-client \
-f create-c7nfw-db.yaml \
--create-namespace \
--version 0.1.0 \
--namespace c7n-system \
--set preJob.timeout=1000
部署 choerodo register
若需了解项目详情及各项参数含义,请移步 open-hand/choerodon-register。
编写参数配置文件 choerodon-register.yaml
env:
open:
EUREKA_CLIENT_SERVICEURL_DEFAULTZONE: http://choerodon-register.c7n-system.svc:8000/eureka/
执行安装
helm upgrade --install choerodon-register c7n/choerodon-register \
-f choerodon-register.yaml \
--create-namespace \
--version 0.24.0 \
--namespace c7n-system
验证部署
curl -s $(kubectl get svc choerodon-register -o jsonpath="{.spec.clusterIP}" -n c7n-system):8001/actuator/health | jq -r .status
部署 choerodon platform
- 编写参数配置文件 choerodon-platform.yaml
preJob:
preInitDB:
datasource:
url: jdbc:mysql://c7n-mysql.c7n-system.svc:3306/?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&serverTimezone=Asia/Shanghai
username: choerodon
password: password
driver: com.mysql.jdbc.Driver
env:
open:
HZERO_PLATFORM_HTTP_PROTOCOL: http
EUREKA_CLIENT_SERVICEURL_DEFAULTZONE: http://choerodon-register.c7n-system.svc:8000/eureka/
SPRING_REDIS_HOST: c7n-redis.c7n-system
SPRING_REDIS_PORT: 6379
# 此db不可更改
SPRING_REDIS_DATABASE: 1
SPRING_DATASOURCE_URL: jdbc:mysql://c7n-mysql.c7n-system.svc:3306/hzero_platform?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&serverTimezone=Asia/Shanghai
SPRING_DATASOURCE_USERNAME: choerodon
SPRING_DATASOURCE_PASSWORD: password
HZERO_EXPORT_COREPOOLSIZE: 1
部署服务
helm upgrade --install choerodon-platform c7n/choerodon-platform \
-f choerodon-platform.yaml \
--create-namespace \
--version 0.24.0 \
--namespace c7n-system
验证
curl -s $(kubectl get po -n c7n-system -l choerodon.io/release=choerodon-platform -o jsonpath="{.items[0].status.podIP}"):8101/actuator/health | jq -r .status
部署 choerodon admin
- 编写参数配置文件 choerodon-admin.yaml
preJob:
preInitDB:
datasource:
url: jdbc:mysql://c7n-mysql.c7n-system.svc:3306/?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&serverTimezone=Asia/Shanghai
username: choerodon
password: password
env:
open:
EUREKA_CLIENT_SERVICEURL_DEFAULTZONE: http://choerodon-register.c7n-system.svc:8000/eureka/
HZERO_AUTO_REFRESH_SWAGGER_ENABLE: true
# 服务启动时,是否同步父子角色权限
CHOERODON_ROLE_PERMISSION_ASYNC: false
SPRING_REDIS_HOST: c7n-redis.c7n-system
SPRING_REDIS_PORT: 6379
# 此db不可更改
SPRING_REDIS_DATABASE: 1
SPRING_DATASOURCE_URL: jdbc:mysql://c7n-mysql.c7n-system.svc:3306/hzero_admin?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&serverTimezone=Asia/Shanghai
SPRING_DATASOURCE_USERNAME: choerodon
SPRING_DATASOURCE_PASSWORD: password
部署服务
helm upgrade --install choerodon-admin c7n/choerodon-admin \
-f choerodon-admin.yaml \
--create-namespace \
--version 0.24.0 \
--namespace c7n-system
部署 choerodon iam
编写参数配置文件 choerodon-iam.yaml
preJob:
preInitDB:
datasource:
url: jdbc:mysql://c7n-mysql.c7n-system.svc:3306/?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&serverTimezone=Asia/Shanghai
username: choerodon
password: password
driver: com.mysql.jdbc.Driver
env:
open:
EUREKA_CLIENT_SERVICEURL_DEFAULTZONE: http://choerodon-register.c7n-system.svc:8000/eureka/
CHOERODON_GATEWAY_URL: http://api.gitlab.choerodon.com
SPRING_REDIS_HOST: c7n-redis.c7n-system.svc
SPRING_REDIS_PORT: 6379
# 此db不可更改
SPRING_REDIS_DATABASE: 1
SPRING_DATASOURCE_URL: jdbc:mysql://c7n-mysql.c7n-system.svc:3306/hzero_platform?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&serverTimezone=Asia/Shanghai
SPRING_DATASOURCE_USERNAME: choerodon
SPRING_DATASOURCE_PASSWORD: password
HZERO_EXPORT_COREPOOLSIZE: 1
部署 choerodon asgard
编写参数配置文件 choerodon-asgard.yaml
preJob:
preInitDB:
datasource:
url: jdbc:mysql://c7n-mysql.c7n-system.svc:3306/?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&serverTimezone=Asia/Shanghai
username: choerodon
password: password
driver: com.mysql.jdbc.Driver
env:
open:
EUREKA_CLIENT_SERVICEURL_DEFAULTZONE: http://choerodon-register.c7n-system.svc:8000/eureka/
SPRING_REDIS_HOST: c7n-redis.c7n-system.svc
SPRING_REDIS_PORT: 6379
SPRING_REDIS_DATABASE: 7
SPRING_DATASOURCE_URL: jdbc:mysql://c7n-mysql.c7n-system.svc:3306/asgard_service?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&serverTimezone=Asia/Shanghai
SPRING_DATASOURCE_USERNAME: choerodon
SPRING_DATASOURCE_PASSWORD: password
部署服务
helm upgrade --install choerodon-asgard c7n/choerodon-asgard \
-f choerodon-asgard.yaml \
--create-namespace \
--version 0.24.0 \
--namespace c7n-system
部署 choerodon swagger
编写参数配置文件 choerodon-swagger.yaml
env:
open:
EUREKA_CLIENT_SERVICEURL_DEFAULTZONE: http://choerodon-register.c7n-system.svc:8000/eureka/
HZERO_OAUTH_URL: http://api.gitlab.choerodon.com/oauth/oauth/authorize
SPRING_REDIS_HOST: c7n-redis.c7n-system.svc
SPRING_REDIS_PORT: 6379
# 此db不可更改
SPRING_REDIS_DATABASE: 1
SPRING_DATASOURCE_URL: jdbc:mysql://c7n-mysql.c7n-system.svc:3306/hzero_admin?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&serverTimezone=Asia/Shanghai
SPRING_DATASOURCE_USERNAME: choerodon
SPRING_DATASOURCE_PASSWORD: password
部署服务
helm upgrade --install choerodon-swagger c7n/choerodon-swagger \
-f choerodon-swagger.yaml \
--create-namespace \
--version 0.24.0 \
--namespace c7n-system
部署 choerodon gateway
编写参数配置文件 choerodon-gateway.yaml
env:
open:
SPRING_REDIS_HOST: c7n-redis.c7n-system.svc
SPRING_REDIS_PORT: 6379
# 此db不可更改
SPRING_REDIS_DATABASE: 4
SPRING_DATASOURCE_URL: jdbc:mysql://c7n-mysql.c7n-system.svc:3306/hzero_platform?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&serverTimezone=Asia/Shanghai
SPRING_DATASOURCE_USERNAME: choerodon
SPRING_DATASOURCE_PASSWORD: password
EUREKA_CLIENT_SERVICEURL_DEFAULTZONE: http://choerodon-register.c7n-system.svc:8000/eureka/
ingress:
enabled: true
host: api.gitlab.choerodon.com
部署服务
helm upgrade --install choerodon-gateway c7n/choerodon-gateway \
-f choerodon-gateway.yaml \
--create-namespace \
--version 0.24.0 \
--namespace c7n-system
部署 choerodon oauth
编写参数配置文件 choerodon-oauth.yaml
env:
open:
# 如果使用https 该参数设置为true
HZERO_OAUTH_LOGIN_ENABLE_HTTPS: false
HZERO_OAUTH_LOGIN_SUCCESS_URL: http://app.choerodon.com
HZERO_OAUTH_LOGIN_DEFAULT_CLIENT_ID: choerodon
HZERO_GATEWAY_URL: http://api.gitlab.choerodon.com
HZERO_OAUTH_BASE_URL: http://api.gitlab.choerodon.com/oauth
EUREKA_CLIENT_SERVICEURL_DEFAULTZONE: http://choerodon-register.c7n-system.svc:8000/eureka/
SPRING_DATASOURCE_URL: jdbc:mysql://c7n-mysql.c7n-system.svc:3306/hzero_platform?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&serverTimezone=Asia/Shanghai
SPRING_DATASOURCE_USERNAME: choerodon
SPRING_DATASOURCE_PASSWORD: password
SPRING_REDIS_HOST: c7n-redis.c7n-system
SPRING_REDIS_PORT: 6379
# 此db不可更改
SPRING_REDIS_DATABASE: 3
部署服务
helm upgrade --install choerodon-oauth c7n/choerodon-oauth \
-f choerodon-oauth.yaml \
--create-namespace \
--version 0.24.0 \
--namespace c7n-system
部署 choerodon monitor
编写参数配置文件 choerodon-monitor.yaml
preJob:
preInitDB:
datasource:
url: jdbc:mysql://c7n-mysql.c7n-system.svc:3306/?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&serverTimezone=Asia/Shanghai
username: choerodon
password: password
env:
open:
EUREKA_CLIENT_SERVICEURL_DEFAULTZONE: http://choerodon-register.c7n-system.svc:8000/eureka/
SPRING_REDIS_HOST: c7n-redis.c7n-system.svc
SPRING_REDIS_PORT: 6379
# 此db不可更改
SPRING_REDIS_DATABASE: 1
SPRING_DATASOURCE_URL: jdbc:mysql://c7n-mysql.c7n-system.svc:3306/hzero_monitor?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&serverTimezone=Asia/Shanghai
SPRING_DATASOURCE_USERNAME: choerodon
SPRING_DATASOURCE_PASSWORD: password
部署服务
helm upgrade --install choerodon-monitor c7n/choerodon-monitor \
-f choerodon-monitor.yaml \
--create-namespace \
--version 0.24.0 \
--namespace c7n-system
部署 choerodon file
编写参数配置文件 choerodon-file.yaml
preJob:
preInitDB:
datasource:
url: jdbc:mysql://c7n-mysql.c7n-system.svc:3306/?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&serverTimezone=Asia/Shanghai
username: choerodon
password: password
driver: com.mysql.jdbc.Driver
env:
open:
EUREKA_CLIENT_SERVICEURL_DEFAULTZONE: http://choerodon-register.c7n-system.svc:8000/eureka/
MINIO_ACCESSKEY: accesskey
MINIO_ENDPOINT: http://minio.choerodon.com
MINIO_SECRETKEY: secretkey
SPRING_DATASOURCE_URL: jdbc:mysql://c7n-mysql.c7n-system.svc:3306/hzero_file?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&serverTimezone=Asia/Shanghai
SPRING_DATASOURCE_USERNAME: choerodon
SPRING_DATASOURCE_PASSWORD: password
SPRING_REDIS_HOST: c7n-redis.c7n-system.svc
SPRING_REDIS_PORT: 6379
# 此db不可更改
SPRING_REDIS_DATABASE: 1
SPRING_SERVLET_MULTIPART_MAX_FILE_SIZE: 200MB
SPRING_SERVLET_MULTIPART_MAX_REQUEST_SIZE: 200MB
FILE_GATEWAY_URL: http://api.gitlab.choerodon.com/hfle
部署服务
helm upgrade --install choerodon-file c7n/choerodon-file \
-f choerodon-file.yaml \
--create-namespace \
--version 0.24.0 \
--namespace c7n-system
部署 choerodon message
编写参数配置文件 choerodon-message.yaml
preJob:
preInitDB:
datasource:
url: jdbc:mysql://c7n-mysql.c7n-system.svc:3306/?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&serverTimezone=Asia/Shanghai
username: choerodon
password: password
env:
open:
EUREKA_CLIENT_SERVICEURL_DEFAULTZONE: http://choerodon-register.c7n-system.svc:8000/eureka/
HZERO_WEBSOCKET_OAUTHURL: http://choerodon-oauth.c7n-system.svc/oauth/api/user
SPRING_REDIS_HOST: c7n-redis.c7n-system.svc
SPRING_REDIS_PORT: 6379
# 此db不可更改
SPRING_REDIS_DATABASE: 1
SPRING_DATASOURCE_URL: jdbc:mysql://c7n-mysql.c7n-system.svc:3306/hzero_message?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&serverTimezone=Asia/Shanghai
SPRING_DATASOURCE_USERNAME: choerodon
SPRING_DATASOURCE_PASSWORD: password
ingress:
enabled: true
host: message.choerodon.com
部署服务
helm upgrade --install choerodon-message c7n/choerodon-message \
-f choerodon-message.yaml \
--create-namespace \
--version 0.24.0 \
--namespace c7n-system
持续交付部署
创建数据库
create-c7ncd-db.yaml
env:
MYSQL_HOST: c7n-mysql.c7n-system.svc
MYSQL_PORT: "3306"
MYSQL_USER: root
MYSQL_PASS: password
SQL_SCRIPT: |
CREATE USER IF NOT EXISTS 'choerodon'@'%' IDENTIFIED BY 'password';
CREATE DATABASE IF NOT EXISTS devops_service DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS workflow_service DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL PRIVILEGES ON devops_service.* TO choerodon@'%';
GRANT ALL PRIVILEGES ON workflow_service.* TO choerodon@'%';
FLUSH PRIVILEGES;
执行安装
helm upgrade --install create-c7ncd-db c7n/mysql-client \
-f create-c7ncd-db.yaml \
--create-namespace \
--version 0.1.0 \
--namespace c7n-system
部署 workflow service
编写参数配置文件 workflow-service.yaml
env:
open:
EUREKA_CLIENT_SERVICEURL_DEFAULTZONE: http://choerodon-register.c7n-system.svc:8000/eureka/
SPRING_DATASOURCE_URL: jdbc:mysql://c7n-mysql.c7n-system.svc:3306/workflow_service?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&serverTimezone=Asia/Shanghai
SPRING_DATASOURCE_USERNAME: choerodon
SPRING_DATASOURCE_PASSWORD: password
部署服务
helm upgrade --install workflow-service c7n/workflow-service \
-f workflow-service.yaml \
--create-namespace \
--version 0.24.0 \
--namespace c7n-system
部署 gitlab service
编写参数配置文件 gitlab-service.yaml
获取Personal Access Tokens(后面会用到)
- 使用root用户登录Gitlab
- 点击 Profile settings .
- 选择 Access tokens .
- 勾选 api、read_use、sudo,read_repository权限
- 点击 Create personal access token .
5c7abc_Fts_yYBgqCt6F
env:
open:
EUREKA_CLIENT_SERVICEURL_DEFAULTZONE: http://choerodon-register.c7n-system.svc:8000/eureka/
GITLAB_URL: http://gitlab.choerodon.com
GITLAB_PRIVATETOKEN: 5c7abc_Fts_yYBgqCt6F
部署服务
helm upgrade --install gitlab-service c7n/gitlab-service \
-f gitlab-service.yaml \
--create-namespace \
--version 0.24.0 \
--namespace c7n-system
部署 devops service
编写参数配置文件 devops-service.yaml
preJob:
preInitDB:
datasource:
url: jdbc:mysql://c7n-mysql.c7n-system.svc:3306/?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&serverTimezone=Asia/Shanghai
username: choerodon
password: password
datasources:
# 多数据源初始化初始化菜单数据
# 支持框架数据和devops进行分库 指定菜单初始化地址
platform:
url: jdbc:mysql://c7n-mysql.c7n-system.svc:3306/?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&serverTimezone=Asia/Shanghai
username: choerodon
password: password
driver: com.mysql.jdbc.Driver
env:
open:
SPRING_REDIS_HOST: c7n-redis.c7n-system.svc
SPRING_REDIS_PORT: 6379
SPRING_REDIS_DATABASE: 9
EUREKA_CLIENT_SERVICEURL_DEFAULTZONE: http://choerodon-register.c7n-system.svc:8000/eureka/
SPRING_DATASOURCE_URL: jdbc:mysql://c7n-mysql.c7n-system.svc:3306/devops_service?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true&serverTimezone=Asia/Shanghai
SPRING_DATASOURCE_USERNAME: choerodon
SPRING_DATASOURCE_PASSWORD: password
SERVICES_GITLAB_URL: http://gitlab.choerodon.com/
SERVICES_GITLAB_SSHURL: gitlab.choerodon.com:30022
SERVICES_GITLAB_PROJECTLIMIT: 100
SERVICES_HELM_URL: http://study.choerodon.com
SERVICES_HELM_USERNAME: choerodon
SERVICES_HELM_PASSWORD: password
SERVICES_HARBOR_BASEURL: https://harbor.choerodon.com
SERVICES_HARBOR_USERNAME: admin
SERVICES_HARBOR_PASSWORD: Harbor12345
SERVICES_HARBOR_INSECURESKIPTLSVERIFY: true
SERVICES_SONARQUBE_URL: https://sonarqube.choerodon.com
SERVICES_SONARQUBE_PASSWORD: admin
SERVICES_SONARQUBE_USERNAME: admin
SERVICES_GATEWAY_URL: http://api.gitlab.choerodon.com
AGENT_VERSION: 0.24.0
AGENT_SERVICEURL: ws://devops.choerodon.com/websocket
AGENT_REPOURL: https://openchart.choerodon.com/choerodon/c7n/
AGENT_CERTMANAGERURL: https://openchart.choerodon.com/choerodon/c7n/on/c7n/
ingress:
enabled: true
host: devops.choerodon.com
部署服务
helm upgrade --install devops-service c7n/devops-service \
-f devops-service.yaml \
--version 0.24.1 \
--namespace c7n-system
配置windows hosts
192.168.199.110 study.choerodon.com
192.168.199.110 minio.choerodon.com
192.168.199.110 harbor.choerodon.com
192.168.199.110 gitlab.choerodon.com
192.168.199.110 app.choerodon.com
192.168.199.110 api.gitlab.choerodon.com
192.168.199.110 hzero.choerodon.com
192.168.199.110 nexus.choerodon.com
192.168.199.110 sonarqube.choerodon.com
192.168.199.110 message.choerodon.com
192.168.199.110 devops.choerodon.com
192.168.199.110 openchart.choerodon.com
其他的的部署,以后再写,这里给出所有配置文件,可以参照文档部署
链接:https://pan.baidu.com/s/1h_u1zYXvTJmXkV2NrrnsNQ
提取码:taqi
https://github.com/1561630125/choerodon-config.git
常用命令
kubectl get pods -A
kubectl exec minio-0 -it -c minio -n c7n-system -- ls /
kubectl logs -f --tail=20 minio-0 -n c7n-system
kubectl api-resources
helm ls -A
helm uninstall minio -n c7n-system