-
K3S로 프로젝트 구성하기 - 1DevOps/K8s 2023. 5. 20. 15:51
구성하고자 하는 환경
위처럼 설계하고 진행하려고 한다.
실제로 같은 종류의 자원이 허용되는 범위내에서 인스턴스 갯수는 줄이거나 늘일수있을것같다.1. 프로세스
1.1 개발자가 프로젝트 코드를 수정 한후 깃허브에 commit, push
1.2 젠킨스 또는 깃허브 액션을 통해서 도커이미지를 생성 후 docker hub에 push
(서버 자원이 넉넉하다면 깃랩과 하버를 설치하여 전체적으로 온프레미스 환경으로 구성할수있다.)
1.3 argoCD를 통해서 관련 pod를 배포한다.
1.4 배포시 K3S를 통해서 생성된 노드중 하나에 배포된다.
Storage는 로컬 저장소를 NFS를 만들어 PV,PVC를 구성한다.
2. K3S 구성하기
https://heehee-myblog.tistory.com/5
3. Helm ( 필수 )
#Helm 설치 Helm install sudo snap install helm --classic
4. MetallLB 설치 ( 옵션 )
loadBalance로 사용
helm repo add metallb https://metallb.github.io/metallb helm repo ls helm search repo metallb helm pull metallb/metallb-0.12.1 tar xvfz metallb-0.12.1.tgz mv metallb metallb-0.13.9 rm -rf metallb-0.13.9.tgz cd metallb-0.13.9 helm install metallb -f values.yaml . --namespace metallb // 사용하고자하는 사설아이피 주소 대역 설정 vi ip_range.yaml apiVersion: metallb.io/v1beta1 kind: IPAddressPool metadata: name: first-pool namespace: metallb-system spec: addresses: - 192.168.1.240-192.168.1.250 kubectl apply -f file.yaml
만약 특정 버전에서 에러가 발생한다면 다음과같은 정책이 변경되어서 나는 오류이므로 psp: false로수정한다.
Metallb deprecated
psp:
create: falseshttps://kubernetes.io/docs/concepts/security/pod-security-policy
5. Traefik 설치 ( 옵션 )
ingress 사용 시
https://doc.traefik.io/traefik/getting-started/install-traefik/
helm repo add traefik https://helm.traefik.io/traefik helm repo ls helm repo update helm pull traefik/traefik tar xvfz traefik-23.0.1.tgz mv traefik traefik-23.0.1 rm -rf traefik-23.0.1.tgz cd traefik-23.0.1/ cp values.yaml my-vaules.yaml 파드 2개생성 deployment: replicas: 2 관리자페이지 외부접속 허용 ports: traefik: expose: true 같은 노드에 Treafik 파드가 추가 실행되지않도록한다. affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: app operator: In values: - traefik # app.kubernetes.io/name: '{{ template "traefik.name" . }}' # app.kubernetes.io/instance: '{{ .Release.Name }}-{{ .Release.Namespace }}' topologyKey: kubernetes.io/hostname k create ns traefik k ns traefik helm install traefik -f my-vaules.yaml . --namespace traefik
6. ArgoCD 설치 ( 필수 )
# 네임스페이스 생성 k create ns argocd # argocd네임스페이스로 변경 k ns argocd # helm 레포 등록 helm repo add argo https://argoproj.github.io/argo-helm # 레포 업데이트 helm repo update # yaml 파일 로컬로 불러오기 helm pull argo/argo-cd # 압축 파일 해제 tar xvfz argo-cd-5.34.1.tgz # 버전에 맞게 디렉토리 변경 mv argo-cd argo-cd-5.34.1 # 압축 파일 제거 rm -rf argo-cd-5.34.1.tgz cd argo-cd-5.34.1 cp values.yaml my-vaules.yaml # 파일 수정 vi my-vaules.yaml # 타입 노드 포트로 변경후 포트 번호도 원하는 번호로 지정 server.service.type : NodePort # argocd helm 설치 helm install argocd -f my-vaules.yaml . --namespace argocd #초기 비밀번호 k -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d # NodePort 확인 k get svc # 로그인 argocd login [cluster-ip] --username admin
https://argo-cd.readthedocs.io/en/stable/cli_installation/#download-with-curl
'DevOps > K8s' 카테고리의 다른 글
K3S로 프로젝트 구성하기 - 3 (0) 2023.05.23 K3S로 프로젝트 구성하기 - 2 (0) 2023.05.23 Kubespray 우분투 서버환경 구성 - 2 (0) 2023.05.17 Kubespray 우분투 서버환경 구성 - 1 (0) 2023.05.13