20220607 필기노트

강재민·2022년 6월 7일
0

필기노트

목록 보기
23/23
post-thumbnail

ArgoCD

대쉬보드를 통해서 모니터링을 할 수 있게한다고 하심..
오늘은 Blue/Green 배포와
Canary 배포를 해볼 예정이다.
카나리는 가중치를 적용해서 배포함


k8s 설치


Argo CD 설치

kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
sudo curl -sSL -o /usr/local/bin/argocd https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64
sudo chmod +x /usr/local/bin/argocd

https://argo-cd.readthedocs.io/en/stable/cli_installation/

kubectl get all -n argocd

argocd-server가 Cluster-IP로 되어있는거 확인

외부에서 접근하도록 설정 필요.


argo CD 서비스 노출

  • 로드밸런서 타입으로 변경
kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}'
kubectl describe svc argocd-server -n argocd
  • 포트포워딩 설정
kubectl port-forward svc/helm-guestbook 9090:80
  • NortPort로 전환
kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "NodePort"}}'

$ kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}'

접근 port 확인

kubectl get svc argocd-server -n argocd

### Load Balancer Port 확인

웹브라우저에서 [master_IP]:[port]
예) 192.168.100.100:65001
https 로 redirect됨.

web UI의 로그인 계정은 admin
암호는 확인해서 입력

kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo

### [문자들이 나옴]= 암호

CLI도 argocd 로그인

argocd
argocd login --insecure <ARGOCD_SERVER_DOMAIN>:<PORT>

### 예시: 192.168.100.100:65001

login id : admin
password : (위에서 확인한 문자)


application 생성하기 - CLI

argocd app create guestbook --repo https://github.com/argoproj/argocd-example-apps.git --path guestbook --dest-server https://kubernetes.default.svc --dest-namespace default

### source : (git) --repo https://github.com/argoproj/argocd-example-apps.git --path guestbook 
### destination ; local kubernetes cluster
	--dest-server https://kubernetes.default.svc --dest-namespace 

CLI로 application 확인

argocd app get guestbook

### webui로 확인하시면 노란색 (동기화 안됨)

CLI 동기화 하기

argocd app sync guestbook
argocd app get guestbook

ArgoCD web GUI에서 guestbook application을 삭제해보기
kerbunetest 확인

guestbook appliname을 WEB UI에서 생성하기
web UI에서 동기화


GitOps 구현해보기

여러분의 git<------------------>kubernetes cluster
applicaton

git 로그인 repository 생성

guestbook-ui-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: guestbook-ui
spec:
  replicas: 1
  revisionHistoryLimit: 3
  selector:
    matchLabels:
      app: guestbook-ui
  template:
    metadata:
      labels:
        app: guestbook-ui
    spec:
      containers:
      - image: gcr.io/heptio-images/ks-guestbook-demo:0.2
        name: guestbook-ui
        ports:
        - containerPort: 80

guestbook-ui-svc.yaml

apiVersion: v1
kind: Service
metadata:
  name: guestbook-ui
spec:
  ports:
  - port: 80
    targetPort: 80
  selector:
    app: guestbook-ui

여러분 git repo와 kubernetes cluster를 연동하는 application을 생성해보기

application name : myguestbook
source : git URL 
https  :  https://github.com/soyoung-2020/argocd.git  (**)
ssh   : git@github.com:soyoung-2020/argocd.git
 PATH :  repository 하위 디렉토리 명 . guestbook
	repository 하위에 바로 y aml 파일이있을 경우에는  .
	project : default
destination
   https://kuberntes.default.svc
   namespace : default (다른 이름이 지정이 가능하나, 미리 생성해야함)

myguestbook을 kubernetes cluster와 동기화 해주세요.

여러분의 git repository - guestbook-ui-deployment.yaml 
1차 변경
replicas: 1    --->   3 개  
local pc라면 commit >  push

또는 git site에서 편집

2차변경
replicas: 3    --->   5 개  

argoCD webui에서 git소스/live소스를 diff 확인 > 동기화sync

kubectl get all -n default

Argocd WebUI - application 내에서 상단에 “HISTORY”

현시점 외에 과거로 rollback 해보기(3개,1개),  동기화 하면 다시 현재로.(5개)

kubernetes manifest 를 동기화 해보자.

자신의 git에 repository 생성

nginx-svc.yaml

apiVersion: v1
kind: Service
metadata:
  name: my-nginx
  labels:
    run: my-nginx
spec:
  type:  LoadBalancer    # 서비스 타입
  ports:
  - port: 8080       # 서비스 포트
    targetPort: 80   # 타켓, 즉 pod의 포트
    protocol: TCP
    name: http
  selector:
    app: nginx

nginx-deployment.yaml

apiVersion: apps/v1           # 쿠버네티스 api 버전
kind: Deployment              # 생성할 오브젝트 종류
metadata:                
  name: nginx-deployment      # deployment의 이름
  labels:
    app: nginx                # label 지정
spec:                         # deployment의 스펙을 정의
  replicas: 3                 # 3개의 pod 설정
  selector:                   # deployment가 관리할 pod를 찾는 방법을 정의
    matchLabels:     
      app: nginx
  template:
    metadata:
      labels:                 # pod의 label
        app: nginx
    spec:
      containers:             # 컨테이너 설정
      - name: nginx          
        image: nginx:1.14.2
        ports:
        - containerPort: 80
templates 이용하는 방법  - helm (helm chart)
application 추가
repository :    git  -> helm

예)

repository : https://github.com/argoproj/argocd-example-apps.git
path : apps
chart : repository를 인식하면 자동으로 목록 뜸. Chart.yaml 선택

하단에 helm 설정파트가 있음 values: values.yaml (또는 values.yaml파일을 복사하여 값을 변경하고자하는 부분을 셋팅가능)

repository 
-HTTPS git연결
-SSH git 연결 
	key 생성
	github : public key 등록
	argocd : private 등록, repository 등록 -> application 생성 시 사용

크롬 접속


미니프로젝트

자유형태 pdf
도커 쿠버네티스 젠킨스 구성
jenkins+tomcat+ansible+docker+kube를 AWS에서 진행하기.

  • 테라폼 구성

0개의 댓글