일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 자전거
- 중식
- 2021
- Grafana
- 오답노트
- Python
- docker
- 맛집
- zabbix
- 소모임
- Kubernetes
- 건대입구역
- 하체
- Run The Bridge
- Podman
- 힐링
- Linux
- 한강
- 뚝섬유원지
- 러닝
- 성수대교
- DSEC
- Shell
- GitHub
- 10km
- 달리기
- 유산소
- 대구
- 대전
- 정보처리기사
- Today
- Total
Run The Bridge
DevOps 2일차(git, gitlab) 본문
0. Git의 상태
- Untracked 상태 - 파일이 Git에 의해 관리되지 않는 상태 (파일을 생성 후 add 하지 않은 상태)
- Tracked 상태 - 파일이 Git에 의해 그 변동사항이 추적되는 상태
- Unmodified 상태 : 현재 파일이 최신 커밋 파일과 비교하여 바뀐 게 없는 상태
- Modified 상태 : 현재 파일이 최신 커밋 파일과 비교하여 바뀐 게 있는 상태
- Staged 상태 : 파일 수정 후 staging area에 올라가 있는 상태
파일을 github에 올리는 법
git commit -m "added file.txt"
1. Git으로 하는 일
- Working Directory에서 파일을 수정한다
- Staging Area에 파일을 Stage해서 Commit할 스냅샷을 만든다
(모든 파일을 추가할 수도 있고 선택하여 추가할 수도 있다) - Staging Area에 있는 파일들을 Commit해서 Git 디렉터리에 영구적인 스냅샷으로 저장한다
1. 현재디렉토리를 Working Directory라고 보면된다. (.git이 위치함)
2. Working Directory에서 Staging Area로 옮겨주는 행위를 'add' 명령으로 수행한다.
3. 최종적으로 반영하기 위해서는 'commit' 명령으로 수행한다.
- git 출력 결과에 색깔 적용하기
git config --global color.branch auto
git config --global color.diff auto
git config --global color.interactive auto
git config --global color.status auto
최근 git log 설정해서 보기
# git log -숫자
git log -1
# git log 한 줄로보기
git log --oneline
# 꾸며주기 --decorate
git log --oneline --decorate
2. Git 실습
git reset --soft HEAD~ # commit하기 전 상태로 돌아간다.
git reset --mixed HEAD~ # add로 돌아간다.
그림으로 표현하면 다음과같다.
git reset --hard HEAD~ # 한 바퀴를 거꾸로 돌아간다 보면된다.
git reset --hard "commit 값" # 돌아갈 위치를 지정할 수 있다.
3. Git & Github 실습
branch란?
- 하나의 Repository를 여러 갈래로 나누어 여러 개발자들이 동시에 다양한 작업을 가능하게 해준다
- 각각의 독립된 branch에서 마음대로 소스코드를 변경하여 작업 한 후 원래 버전과 비교하여 또 하나의 새로운 버전을 만들어 낼 수 있다.
git branch 확인하는 법
git branch 생성하는 법
git branch "이름"
git branch 변경하는 법
git checkout test
git branch 삭제하는 법
git branch -d test2
push도 branch마다 별도로 할 수 있다.
git push origin test
branch 합치는 방법
git merge "branch 명"
근데 만약 같은 이름에 같은 줄의 파일이 변경되면 어떻게될까?
# test branch에 있는 파일
def hello():
print('Hello, world! on branch test')
hello()
# main branch에 있는 파일
def hello():
print('Hello, world!')
hello()
충돌을 일으키기 위해 main branch에 있는 hello.py도 수정한다. 그리고 add, commit을 진행한다.
def hello():
print('Hello, world! on branch main')
hello()
충돌이 발생하면, 어떤 부분에 충돌이 났는지 비교를 해준다.
수정을 해준다.
def hello():
print('Hello, world! on branch main')
hello()
git commit -a
자동으로 commit message를 달아준다.
4. GitLab으로 나만의 git 서버 만들기
처음에는 Worker Node의 사양을 늘려줘야한다. 나는 4core 8RAM으로 잡아주었다. 사양이 좋으면 더 많이 잡아도 무방하다.(Worker2번은 사양문제로 삭제하고, Worker1번으로 옮겨주었다.)
Gitlab의 성질
Gitlab은 서버 설치를 목적으로 나온 호스팅 서비스로 다른 호스팅 사이트와 다르게 Community 버전으로 설치한다면 Private 서비스를 무료로 인원 제한 없이 이용할 수 있다. 또한 모든 Repository의 코드는 개인 서버에 저장된다
- gitlab 서버를 kubernetes에서 실행하기 위한 준비
- gitlab 환경 및 데이터 저장용 볼륨(PV, PVC)
- gitlab root 패스워드를 저장할 secret
- 사용자가 접속하기 위한 service
- service는 NodePort type이며 30080:80, 30443:443, 30022:22 로 매핑
- gitlab 이미지 배포용 deployment
- https://docs.gitlab.com/ee/install/docker.html에 설명된 docker run command 라인을 yaml로 옮김
- gitlab은 리소스를 확장한 kube-worker1에 기동되어야 한다
Gitlab을 올리기위한 yaml파일은 다음 4개의 파일이 있다.
# gitlab.yaml
# 권한문제 발생시 NFS서버 권한을 777로 준다.
# kubectl create cicd, namespace 생성해줘야함
apiVersion: apps/v1
kind: Deployment
metadata:
name: gitlab
namespace: cicd
spec:
replicas: 1
selector:
matchLabels:
app: gitlab
template:
metadata:
labels:
app: gitlab
spec:
nodeName: kube-worker1
containers:
- image: gitlab/gitlab-ce
name: gitlab
env:
- name: GITLAB_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: gitlab-secret
key: Password
- name: GITLAB_OMNIBUS_CONFIG
value: |
external_url 'http://192.168.245.22:30080' # 본인환경에 맞춰준다. VM_IP를 넣어주면된다
nginx['listen_port'] = 80
ports:
- containerPort: 80
- containerPort: 443
- containerPort: 22
volumeMounts:
- mountPath: /etc/localtime
name: tz
readOnly: true
- mountPath: /etc/gitlab
name: vol
subPath: config
- mountPath: /var/log/gitlab
name: vol
subPath: logs
- mountPath: /var/opt/gitlab
name: vol
subPath: data
volumes:
- name: vol
persistentVolumeClaim:
claimName: gitlab-data
- hostPath:
path: /etc/localtime
type: ""
name: tz
# secret.yaml
apiVersion: v1
data:
Password: cGFzc3dvcmQ=
kind: Secret
metadata:
name: gitlab-secret
namespace: cicd
type: Opaque
# service.yaml
apiVersion: v1
kind: Service
metadata:
name: gitlab-service
namespace: cicd
spec:
type: NodePort
ports:
- name: gitlab-http
port: 80
targetPort: 80
nodePort: 30080
protocol: TCP
- name: gitlab-https
port: 443
targetPort: 443
nodePort: 30443
protocol: TCP
- port: 22
targetPort: 22
nodePort: 30022
protocol: TCP
name: ssh
selector:
app: gitlab
#volume.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: gitlab-data-pv
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteMany
nfs:
server: 192.168.245.21 # 자기 nfs서버에 맞춰야한다, NFS서버가 존재해야함!
path: /nfs/gitlab # 디렉토리 생성해야한다.
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: gitlab-data
namespace: cicd
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi
volumeName: gitlab-data-pv
kubectl apply -f 로 올리고나면 다음과같이 나온다.
한참동안 설치가 되고 GitLab이 모습을 들어냈따!!!
root권한 말고 일반사용자의 계정을 하나 만들어준다. 그리고 승인이 필요하다는 메시지가 나온다.
root로 다시 들어가 허락해준다.
Menu - admin - User - Pending approval
톱니바퀴 모양 - Approve를 눌러준다. 그리고 testuser01로 접속하면 성공!
이제 project를 만들어본다.
간략하게 채운다. 그 후 생성!
그 후 사용법은 Github와 크게 차이가 없다.
'Cloud > DevOps' 카테고리의 다른 글
DevOps 1일차(git) (0) | 2021.10.02 |
---|---|
DevOps 3일차(GitLab, Jenkins) (0) | 2021.09.28 |