대쉬보드를 통해서 모니터링을 할 수 있게한다고 하심..
오늘은 Blue/Green 배포와
Canary 배포를 해볼 예정이다.
카나리는 가중치를 적용해서 배포함
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로 되어있는거 확인
외부에서 접근하도록 설정 필요.
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
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 : (위에서 확인한 문자)
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
argocd app get guestbook
### webui로 확인하시면 노란색 (동기화 안됨)
argocd app sync guestbook
argocd app get guestbook
ArgoCD web GUI에서 guestbook application을 삭제해보기
kerbunetest 확인
guestbook appliname을 WEB UI에서 생성하기
web UI에서 동기화
여러분의 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개)
자신의 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에서 진행하기.