Kubernetes + jenkins+ gitlab + harbor cicd环境搭建(一)

Kubernetes 环境搭建

1、环境准备

ip hostname Kubernetes角色 linux版本 kubernetes版本
192.168.136.171 master master Centos 7.6 v1.16.0
192.168.136.156 node1 node Centos 7.6 v1.16.0
192.168.136.157 node2 node Centos 7.6 v1.16.0
192.168.136.158 node3 node Centos 7.6 v1.16.0
192.168.136.168 gitlab Centos 7.6
192.168.136.167 harbor Centos 7.6

最小标准 2cpu,4g内存

2、安装kubernetes集群

本人使用 https://kuboard.cn/ 搭建k8s集群

以前用过的版本

rancher2.x:https://www.rancher.cn/
kubeasz:https://github.com/easzlab/kubeasz

还有许多就不一一列举了

推荐大家使用kuboard,因为简单

具体kuboard安装文档请参考官网:https://kuboard.cn/install/install-k8s.html

3、安装gitlab

我是开发人员,采用简单方式部署gitlab的

公司内部搭建gitlab,不建议采用这种方式

准备启动脚本

cat > gitlab-setup.sh << EOF
#!/bin/bash
# 注意:设置 gitlab_shell_ssh_port 是为了后续可以使用 SSH 方式访问你的项目
docker run --detach \\
    --hostname gitlab.dcy.com \\
    --env GITLAB_OMNIBUS_CONFIG="external_url = 'http://gitlab.dcy.com'; gitlab_rails['gitlab_shell_ssh_port'] = 6022;" \\
    --publish 443:443 --publish 80:80 --publish 6022:22 \\
    --name gitlab \\
    --restart always \\
    --volume /srv/gitlab/config:/etc/gitlab \\
    --volume /srv/gitlab/logs:/var/log/gitlab \\
    --volume /srv/gitlab/data:/var/opt/gitlab \\
    gitlab/gitlab-ce:latest
EOF

请修改以下内容
–hostname
external_url
gitlab_rails[‘gitlab_shell_ssh_port’] 和 22映射端口必须相同

对应自己的修改即可 对应我的格式

执行启动脚本:sh gitlab-setup.sh 执行成功后,等待数分钟可以看到
可能时间很长 会发生502 请等待

最好用80端口,以免发生问题

修改hosts文件对应上面的url
访问 http://gitlab.dcy.com/

Gitlab使用

首先输入root密码 以下图片
Kubernetes + jenkins+ gitlab + harbor cicd环境搭建(一)_第1张图片
然后就可以注册账号了
Kubernetes + jenkins+ gitlab + harbor cicd环境搭建(一)_第2张图片

创建项目

添加ssh

Kubernetes + jenkins+ gitlab + harbor cicd环境搭建(一)_第3张图片

#先看看是不是已经有啦,如果有内容就直接copy贴过去就行啦
$ cat ~/.ssh/id_rsa.pub

#如果上一步没有这个文件 我们就创建一个,运行下面命令(邮箱改成自己的哦),一路回车就好了
$ ssh-keygen -t rsa -C "[email protected]"
$ cat ~/.ssh/id_rsa.pub

4、安装harbor

请参考我的以下链接
https://blog.csdn.net/qq_33842795/article/details/100030657

5、安装helm

1、执行脚本

curl -L https://git.io/get_helm.sh | bash

2、创建配置配置文件

创建rbac-config.yaml

apiVersion: v1
kind: ServiceAccount
metadata:
  name: tiller
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: tiller
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: tiller
    namespace: kube-system
kubectl apply -f rbac-config.yaml
安装helm
helm init --service-account tiller --history-max 200

– 如果报错 那就手动创建下面文件

apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: helm
    name: tiller
  name: tiller-deploy
  namespace: kube-system
spec:
  replicas: 1
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: helm
        name: tiller
    spec:
      automountServiceAccountToken: true
      containers:
      - env:
        - name: TILLER_NAMESPACE
          value: kube-system
        - name: TILLER_HISTORY_MAX
          value: "0"
        image: sapcc/tiller:v2.14.3
        imagePullPolicy: IfNotPresent
        livenessProbe:
          httpGet:
            path: /liveness
            port: 44135
          initialDelaySeconds: 1
          timeoutSeconds: 1
        name: tiller
        ports:
        - containerPort: 44134
          name: tiller
        - containerPort: 44135
          name: http
        readinessProbe:
          httpGet:
            path: /readiness
            port: 44135
          initialDelaySeconds: 1
          timeoutSeconds: 1
        resources: {}
  selector:
    matchLabels:
      app: helm
      name: tiller
status: {}

---
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: null
  labels:
    app: helm
    name: tiller
  name: tiller-deploy
  namespace: kube-system
spec:
  ports:
  - name: tiller
    port: 44134
    targetPort: tiller
  selector:
    app: helm
    name: tiller
  type: ClusterIP
status:
  loadBalancer: {}

再去kubectl apply -f xxx.yaml

添加阿里helm仓库

helm repo add mirror-stable  http://mirror.azure.cn/kubernetes/charts/

在执行刷新仓库

helm repo update

6、安装nfs

首先创建文件夹

mkdir -p /data/nfs-data
chmod -R 777 /data/nfs-data

安装 nfs

yum install -y nfs-utils
vim /etc/exports

添加以下内容
/data/nfs-data/ *(rw,sync,no_root_squash,no_subtree_check)

启动nfs服务

systemctl enable rpcbind.service && systemctl enable nfs-server.service
systemctl start rpcbind.service && systemctl start nfs-server.service

确认NFS服务器启动成功

showmount -e 127.0.0.1

使用命令,就能看到自己挂载的文件夹了

7、安装nfs-client

helm install --name nfs-client --set nfs.server=192.168.136.171 --set nfs.path=/data/nfs-data stable/nfs-client-provisioner

8、安装jenkins

创建jenkins-pvc.yaml文件

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: nfs-jenkins
  namespace: jenkins
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 5Gi
  storageClassName: nfs-client
kubectl apply -f jenkins-pvc.yaml
kubectl get pvc -n jenkins

获取jenkins包

helm fetch stable/jenkins 
然后解压
修改value.yaml文件

以下内容
master.adminPassword=admin
ingress.enabled=true
ingress.path="/"
ingress.hostName=jenkins.ingress.com
persistence.existingClaim=nfs-jenkins

Kubernetes + jenkins+ gitlab + harbor cicd环境搭建(一)_第4张图片
Kubernetes + jenkins+ gitlab + harbor cicd环境搭建(一)_第5张图片
Kubernetes + jenkins+ gitlab + harbor cicd环境搭建(一)_第6张图片

helm install --name jenkins -f values.yaml stable/jenkins --namespace jenkins

配置hosts 对应jenkins.ingress.com

访问 http://jenkins.ingress.com

你可能感兴趣的:(Kubernetes + jenkins+ gitlab + harbor cicd环境搭建(一))