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密碼 以下圖片
在這裏插入圖片描述
然後就可以註冊賬號了
在這裏插入圖片描述

創建項目

添加ssh

在這裏插入圖片描述

#先看看是不是已經有啦,如果有內容就直接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

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

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

配置hosts 對應jenkins.ingress.com

訪問 http://jenkins.ingress.com

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章