天行健,君子以自强不息;地势坤,君子以厚德载物。
每个人都有惰性,但不断学习是好好生活的根本,共勉!
文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。
文章目录
- 一、概述
- 二、持久化存储安装
- 1. 安装ebs
- 2. 查看ebs集群服务
- 3. 设置ebs为默认
- 三、创建命名空间
- 四、账号密码
- 五、创建文件夹
- 六、Postgresql部署
- 1. 持久化配置
- 1.1 文件创建
- 1.2 部署命令
- 1.3 查看服务
- 2. 部署配置
- 2.1 文件创建
- 2.2 部署命令
- 2.3查看服务
- 3. 服务配置
- 3.1 文件创建
- 3.2 部署命令
- 3.3 查看服务
- 七、Redis部署
- 1. 持久化配置
- 1.1 文件创建
- 1.2 部署命令
- 1.3 查看服务
- 2. 部署配置
- 2.1 文件创建
- 2.2 部署命令
- 2.3 查看服务
- 3. 服务配置
- 3.1 文件创建
- 3.2 部署命令
- 3.3 查看服务
- 八、GitLab部署
- 1. 持久化配置
- 1.1 文件创建
- 1.2 部署命令
- 1.3 查看服务
- 2. 部署配置
- 2.1 文件创建
- 2.2 部署命令
- 2.3 查看服务
- 3. 服务配置
- 3.1 文件创建
- 3.2 部署命令
- 3.3 查看服务
- 九、访问GitLab
一、概述
在k8s中部署gitlab,然后使用gitlab来实现代码打包到打镜像再到使用镜像自动生成容器服务的过程
gitlab部署主要有三个部分,用到了reids、postgresql、gitlab,将三个应用配置好之后启动即可安装gitlab
二、持久化存储安装
安装持久化存储工具,可以使用nfs或ebs
安装后在配置持久化时可根据安装的持久化工具将storageClassName参数的值填充:
如果安装的是nfs则可以是
storageClassName: “managed-nfs-storage”
如果安装的是ebs则可以是
storageClassName: openebs-hostpath
以ebs为例
1. 安装ebs
kubectl apply -f https://openebs.github.io/charts/openebs-operator.yaml
2. 查看ebs集群服务
查看集群的StorageClass
kubectl get sc
3. 设置ebs为默认
设置openobs-hostpath为default
kubectl patch storageclass openebs-hostpath -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
三、创建命名空间
在部署之前先创建一个namespace用于分类管理服务
创建一个名为gitlab-dev的命名空间
kubectl create namespace gitlab-dev
四、账号密码
分别创建存储账号和密码的文件
账号文件username,用于存储账号信息
echo -n "gitlab-admin" > ./username
密码文件password,用于存储密码信息
echo -n "gitlab.123" > ./password
查看文件
ls
查看文件内容
cat ./username
cat ./password
secret对象生成
kubectl create secret generic git-user-pass --from-file=./username --from-file=./password -n gitlab-dev
查看secret
kubectl -n gitlab-dev get secret git-user-pass -o yaml
拓展:
如果创建错误或者想重新创建secret,则需先删除
kubectl delete secret git-user-pass -n gitlab-dev
五、创建文件夹
创建gitlab-yaml文件夹用于存储gitlab相关的yaml部署文件
mkdir -p gitlab-yaml
六、Postgresql部署
为了方便管理以及后续修改更新文件,本篇对每个结构部分都创建一个yaml文件,且创建的文件都放在当前目录下的gitlab-yaml文件夹下,后续redis和gitlab的部分与此相同
参数:
pgs:Postgresql
dplm:Deployment
pvc:PersistentVolumeClaim
svc:Service
1. 持久化配置
pgs-pvc.yaml
1.1 文件创建
创建文件pgs-pvc.yaml
vim ./gitlab-yaml/pgs-pvc.yaml
将以下内容复制粘贴到文件中,其中name可自定义,namespace前面创建了gitlab-dev
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: pgs-pvcnamespace: gitlab-dev
spec:accessModes:- ReadWriteOncestorageClassName: openebs-hostpathresources:requests:storage: 1Gi
查看文件内容
cat ./gitlab-yaml/pgs-pvc.yaml
1.2 部署命令
根据文件来部署服务
kubectl apply -f ./gitlab-yaml/pgs-pvc.yaml
1.3 查看服务
查看创建的服务
kubectl get pvc -n gitlab-dev pgs-pvc
注:如需删除创建的服务请参考:kubectl操作命令集合
2. 部署配置
pgs-dplm.yaml
2.1 文件创建
创建文件pgs-dplm.yaml
vim ./gitlab-yaml/pgs-dplm.yaml
注:公有镜像可省略版本号,默认拉取最新版本。私有镜像必须加版本号,不然部署不成功,Pod状态显示Pending
将以下内容复制粘贴到文件中
apiVersion: apps/v1
kind: Deployment
metadata:name: postgresqlnamespace: gitlab-devlabels:name: postgresql
spec:replicas: 1selector:matchLabels:name: postgresqltemplate:metadata:name: postgresqllabels:name: postgresqlspec:#nodeSelector:#key: gitlab-devcontainers:- name: postgresqlimage: sameersbn/postgresqlimagePullPolicy: IfNotPresentenv:- name: DB_USERvalue: gitlab- name: DB_PASSvalue: passw0rd- name: DB_NAMEvalue: gitlab_production- name: DB_EXTENSIONvalue: pg_trgmports:- name: postgrescontainerPort: 5432volumeMounts:- mountPath: /var/lib/postgresqlname: datalivenessProbe:exec:command:- pg_isready- -h- localhost- -U- postgresinitialDelaySeconds: 30timeoutSeconds: 5readinessProbe:exec:command:- pg_isready- -h- localhost- -U- postgresinitialDelaySeconds: 5timeoutSeconds: 1volumes:- name: datapersistentVolumeClaim:claimName: pgs-pvc
注:nodeSelector的key的值就是namespace,最后的claimName的值是持久化配置文件的名称pgs-pvc
查看文件内容
cat ./gitlab-yaml/pgs-dplm.yaml
2.2 部署命令
部署服务
kubectl apply -f ./gitlab-yaml/pgs-dplm.yaml
2.3查看服务
查看已创建的服务
kubectl get pod -n gitlab-dev
注:pod启动需要一点时间,开始状态为ContainerCreating,过一会才会显示Running
3. 服务配置
pgs-svc.yaml
3.1 文件创建
创建文件pgs-svc.yaml
vim ./gitlab-yaml/pgs-svc.yaml
将以下内容复制粘贴到文件中
apiVersion: v1
kind: Service
metadata:name: postgresqlnamespace: gitlab-devlabels:name: postgresql
spec:ports:- name: postgresport: 5432targetPort: postgresselector:name: postgresql
查看文件内容
cat ./gitlab-yaml/pgs-svc.yaml
3.2 部署命令
部署服务
kubectl apply -f ./gitlab-yaml/pgs-svc.yaml
3.3 查看服务
查看已部署的服务
kubectl get svc -n gitlab-dev
七、Redis部署
数据缓存redis
1. 持久化配置
redis-pvc.yaml
1.1 文件创建
创建文件redis-pvc.yaml
vim ./gitlab-yaml/redis-pvc.yaml
将以下内容复制粘贴到文件中
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: redis-pvcnamespace: gitlab-dev
spec:accessModes:- ReadWriteOncestorageClassName: openebs-hostpathresources:requests:storage: 1Gi
查看文件内容
cat ./gitlab-yaml/redis-pvc.yaml
1.2 部署命令
部署服务
kubectl apply -f ./gitlab-yaml/redis-pvc.yaml
1.3 查看服务
查看已部署的服务
kubectl get pvc -n gitlab-dev redis-pvc
2. 部署配置
redis-dplm.yaml
2.1 文件创建
创建redis-dplm.yaml文件
vim ./gitlab-yaml/redis-dplm.yaml
注:公有镜像可省略版本号,默认拉取最新版本。私有镜像必须加版本号,不然部署不成功,Pod状态显示Pending
将以下内容复制粘贴到文件中
apiVersion: apps/v1
kind: Deployment
metadata:name: redisnamespace: gitlab-devlabels:name: redis
spec:replicas: 2selector:matchLabels:name: redistemplate:metadata:name: redislabels:name: redisspec:#nodeSelector:#key: gitlab-devcontainers:- name: redisimage: sameersbn/redisimagePullPolicy: IfNotPresentports:- name: rediscontainerPort: 6379volumeMounts:- mountPath: /var/lib/redisname: datalivenessProbe:exec:command:- redis-cli- pinginitialDelaySeconds: 30timeoutSeconds: 5readinessProbe:exec:command:- redis-cli- pinginitialDelaySeconds: 5timeoutSeconds: 1volumes:- name: datapersistentVolumeClaim:claimName: redis-pvc
查看文件内容
cat ./gitlab-yaml/redis-dplm.yaml
2.2 部署命令
部署服务
kubectl apply -f ./gitlab-yaml/redis-dplm.yaml
2.3 查看服务
查看已部署的服务
kubectl get pod -n gitlab-dev
因为文件中配置的副本数为2,故生成了两个redis的pod
3. 服务配置
redis-svc.yaml
3.1 文件创建
创建文件redis-svc.yaml
vim ./gitlab-yaml/redis-svc.yaml
讲一下内容复制粘贴进文件中
apiVersion: v1
kind: Service
metadata:name: redis-svcnamespace: gitlab-devlabels:name: redis-svc
spec:ports:- name: redisport: 6379targetPort: redisselector:name: redis
查看文件内容
cat ./gitlab-yaml/redis-svc.yaml
3.2 部署命令
部署服务
kubectl apply -f ./gitlab-yaml/redis-svc.yaml
3.3 查看服务
查看已部署的服务
kubectl get svc -n gitlab-dev redis-svc
八、GitLab部署
gitlab
1. 持久化配置
gitlab-pvc.yaml
1.1 文件创建
创建文件gitlab-pvc.yaml
vim ./gitlab-yaml/gitlab-pvc.yaml
将以下内容复制粘贴到文件中
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: gitlab-pvcnamespace: gitlab-dev
spec:accessModes:- ReadWriteOncestorageClassName: openebs-hostpathresources:requests:storage: 5Gi
查看文件内容
cat ./gitlab-yaml/gitlab-pvc.yaml
1.2 部署命令
部署服务
kubectl apply -f ./gitlab-yaml/gitlab-pvc.yaml
1.3 查看服务
查看已部署的服务
kubectl get pvc -n gitlab-dev gitlab-pvc
2. 部署配置
gitlab-dplm.yaml
2.1 文件创建
创建文件gitlab-dplm.yaml
vim ./gitlab-yaml/gitlab-dplm.yaml
注:公有镜像可省略版本号,默认拉取最新版本。私有镜像必须加版本号,不然部署不成功,Pod状态显示Pending
讲一下内容复制粘贴到文件中
apiVersion: apps/v1
kind: Deployment
metadata:name: gitlabnamespace: gitlab-devlabels:name: gitlab
spec:replicas: 1selector:matchLabels:name: gitlabtemplate:metadata:name: gitlablabels:name: gitlabspec:#nodeSelector:#key: gitlab-devcontainers:- name: gitlabimage: sameersbn/gitlabimagePullPolicy: IfNotPresentenv:- name: TZvalue: Asia/Shanghai- name: GITLAB_TIMEZONEvalue: Beijing- name: GITLAB_SECRETS_DB_KEY_BASEvalue: long-and-random-alpha-numeric-string- name: GITLAB_SECRETS_SECRET_KEY_BASEvalue: long-and-random-alpha-numeric-string- name: GITLAB_SECRETS_OTP_KEY_BASEvalue: long-and-random-alpha-numeric-string- name: GITLAB_ROOT_PASSWORD#value: admin321valueFrom:secretKeyRef:name: git-user-passkey: password- name: GITLAB_ROOT_EMAILvalue: hslb@163.com- name: GITLAB_HOSTvalue: gitlab.hslb.com- name: GITLAB_PORTvalue: "30021"- name: GITLAB_SSH_PORTvalue: "30022"- name: GITLAB_NOTIFY_ON_BROKEN_BUILDSvalue: "true"- name: GITLAB_NOTIFY_PUSHERvalue: "false"- name: GITLAB_BACKUP_SCHEDULEvalue: daily- name: GITLAB_BACKUP_TIMEvalue: 01:00- name: DB_TYPEvalue: postgres- name: DB_HOSTvalue: postgresql- name: DB_PORTvalue: "5432"- name: DB_USERvalue: gitlab- name: DB_PASSvalue: passw0rd- name: DB_NAMEvalue: gitlab_production- name: REDIS_HOSTvalue: redis- name: REDIS_PORTvalue: "6379"ports:- name: httpcontainerPort: 80- name: sshcontainerPort: 22volumeMounts:- mountPath: /home/git/dataname: datalivenessProbe:httpGet:path: /port: 80initialDelaySeconds: 180timeoutSeconds: 5readinessProbe:httpGet:path: /port: 80initialDelaySeconds: 5timeoutSeconds: 1volumes:- name: datapersistentVolumeClaim:claimName: gitlab-pvc
GITLAB_ROOT_PASSWORD
密码部分,可以直接将值设为密码,这里从第二章中设置的密码文件中读取
GITLAB_ROOT_EMAIL
邮箱部分,自定义即可
GITLAB_HOST
主机地址,可自定义
查看文件内容
cat ./gitlab-yaml/gitlab-dplm.yaml
2.2 部署命令
部署服务
kubectl apply -f ./gitlab-yaml/gitlab-dplm.yaml
2.3 查看服务
查看已部署的服务
kubectl get pod -n gitlab-dev
3. 服务配置
gitlab-svc.yaml
3.1 文件创建
创建文件gitlab-svc.yaml
vim ./gitlab-yaml/gitlab-svc.yaml
将以下内容复制粘贴到文件中
apiVersion: v1
kind: Service
metadata:name: gitlabnamespace: gitlab-devlabels:name: gitlab
spec:ports:- name: httpport: 80targetPort: httpnodePort: 30021- name: sshport: 22targetPort: sshnodePort: 30022selector:name: gitlabtype: NodePort
查看文件内容
cat ./gitlab-yaml/gitlab-svc.yaml
3.2 部署命令
部署服务
kubectl apply -f ./gitlab-yaml/gitlab-svc.yaml
3.3 查看服务
查看已部署的服务
kubectl get svc -n gitlab-dev
以上就是redis、postgresql、gitlab三个部分的部署,如果出现问题需要删除创建的服务,可参考以下命令
部署pvc
kubectl apply -f ./gitlab-yaml/pgs-pvc.yaml
kubectl apply -f ./gitlab-yaml/redis-pvc.yaml
kubectl apply -f ./gitlab-yaml/gitlab-pvc.yaml
查看pvc
kubectl get pvc -n gitlab-dev
删除指定pvc
kubectl delete pvc pgs-pvc -n gitlab-dev
删除全部pvc (bukeyong)
kubectl delete pvc -n gitlab-dev
部署pod
kubectl apply -f ./gitlab-yaml/pgs-dplm.yaml
kubectl apply -f ./gitlab-yaml/redis-dplm.yaml
kubectl apply -f ./gitlab-yaml/gitlab-dplm.yaml
查看pod
kubectl get pod -n gitlab-dev
删除无副本设置的pod
kubectl delete pod postgresql -n gitlab-dev
删除设置副本的pod
kubectl delete deployment postgresql -n gitlab-dev
部署svc
kubectl apply -f ./gitlab-yaml/pgs-svc.yaml
kubectl apply -f ./gitlab-yaml/redis-svc.yaml
kubectl apply -f ./gitlab-yaml/gitlab-svc.yaml
查看svc
kubectl get svc -n gitlab-dev
删除指定svc
kubectl delete svc postgresql -n gitlab-dev
删除全部svc
kubectl delete svc -n gitlab-dev
注:此注释可无视,由于操作是在阿里云服务器的运维管理浏览器窗口操作,复制粘贴功能有瑕疵导致内容格式会错乱,故安装了ossutil工具,在本地创建了文件后上传到oss然后再拉取到服务器指定位置(gitlab-yaml文件夹),如有需要可参考linux服务器中oss工具安装和上传下载文件
九、访问GitLab
关于yaml文件中image参数的写法格式
https://blog.csdn.net/m0_46629123/article/details/124144654
官网的image可以省略tag
但是私有的image必须带上tag
感谢阅读,祝君暴富!