文章目录
K8s上安装gitlab-ce
前言
使用pv-pvc来持久化gitlab的数据,配置,日志文件。
pod启动后需要需要修改external_url然后重启pod。
操作如下
shell
mkdir -p /mnt/data01/gitlab
ctr -n k8s.io i pull docker.io/gitlab/gitlab-ce:latest
kubectl label node [node_name] app=devops
kubectl apply -f gitlab-deployment.yml
如果镜像拉取不下来,可以
shell
wget -c http://117.72.10.233/file/gitlab-ce.tgz
ctr -n k8s.io i import gitlab-ce.tgz
Pod起来之后,修改 /mnt/data01/gitlab/conf/gitlab.rb 文件,修改配置然后重启Pod
shell
cat >> /mnt/data01/gitlab/conf/gitlab.rb << 'eof'
external_url 'http://123.60.108.111:30080' ## ip需要修改为访问地址
gitlab_rails['gitlab_ssh_host'] = '123.60.108.111' ## ip需要修改为访问地址
gitlab_rails['gitlab_shell_ssh_port'] = 30022
gitlab_rails['time_zone'] = 'Asia/Shanghai'
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "1391578633@qq.com"
gitlab_rails['smtp_password'] = "yasfadsfafddfdj" ## 密码为qq的smtp授权码
gitlab_rails['smtp_domain'] = "smtp.qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = '1391578633@qq.com'
gitlab_rails['gitlab_email_display_name'] = 'gitlab'
gitlab_rails['gitlab_email_reply_to'] = '1391578633@qq.com'
gitlab_rails['gitlab_email_subject_suffix'] = '[gitlab]'
eof
kubectl get pods -n devops
kubectl delete pod [上面的gitlab的podname] -n devops
最后浏览器访问ip:30080即可访问gitlab,账号是root,密码是初始密码执行grep 'Password' /mnt/data01/gitlab/conf/initial_root_password
gitlab-deployment.yml
yaml
apiVersion: v1
kind: Namespace
metadata:
name: devops
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: gitlab-pv
spec:
accessModes:
- ReadWriteOnce
capacity:
storage: 50Gi
storageClassName: gitlab-ce
hostPath:
path: /mnt/data01/gitlab
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: gitlab-pvc
namespace: devops
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi
limits:
storage: 50Gi
storageClassName: gitlab-ce
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: gitlab-deployment
namespace: devops
spec:
replicas: 1
selector:
matchLabels:
app: gitlab-ce
template:
metadata:
labels:
app: gitlab-ce
spec:
nodeSelector:
app: devops
containers:
- name: gitlab-ce
image: docker.io/gitlab/gitlab-ce:latest
imagePullPolicy: IfNotPresent
volumeMounts:
- name: gen-dir
mountPath: /var/opt/gitlab
subPath: data
- name: gen-dir
mountPath: /etc/gitlab
subPath: conf
- name: gen-dir
mountPath: /var/log/gitlab
subPath: logs
- name: localtime
mountPath: /etc/localtime
volumes:
- name: gen-dir
persistentVolumeClaim:
claimName: gitlab-pvc
- name: localtime
hostPath:
path: /etc/localtime
---
apiVersion: v1
kind: Service
metadata:
name: gitlab-svc
namespace: devops
spec:
ports:
- name: http
port: 30080
targetPort: 30080
nodePort: 30080
- name: https
port: 443
targetPort: 443
nodePort: 30443
- name: ssh
port: 22
targetPort: 22
nodePort: 30022
type: NodePort
selector:
app: gitlab-ce