Amazon Web Service (AWS)/EKS
EKS CI/CD 구축 (git, docker, argocd) - 1 환경 구성
Ssemi-Column
2022. 8. 28. 22:28
728x90
ArgoCD 구축 (https://www.eksworkshop.com/intermediate/290_argocd/install/)
1. ArgoCD 를 위한 네임스페이스 생성
$ kubectl create namespace argocd
.2. ArgoCD namespace에 해당 yaml 파일을 적용 (Deployment.yaml)
$ kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/v2.4.7/manifests/install.yaml
3. ArgoCD Service를 LoadBalancer로 변경하여 외부 접속이 가능하게 함
$ kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}'
4. 확인
4-1 pod 정보 확인
$ kubectl get pods -n argocd
namespace argocd에 있는 모든 pod 정보를 보여준다
4-2 외부접속을 가능하게 하는 service 정보 확인
$ kubectl get service -n argocd
namespace argocd에 있는 모든 service 정보를 보여준다.
TYPE의 ClusterIP는 각 노드들 끼리만 통신할 수 있는 내부 IP 이고 외부 접속을 가능하게 하려면 TYPE을 NodePort, LoadBalancer로 변경하면 된다.
4-2-1 LoadBalancer로 설정된 argocd-server의 서비스 내용을 상세하게 확인한다.
kubectl get service -n argocd argocd-server -o yaml
apiVersion: v1
kind: Service //yaml 종류 : deployment, cluster, service, pods 등 타입으로 나뉜다.
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"app.kubernetes.io/component":"server","app.kubernetes.io/name":"argocd-server","app.kubernetes.io/part-of":"argocd"},"name":"argocd-server","namespace":"argocd"},"spec":{"ports":[{"name":"http","port":80,"protocol":"TCP","targetPort":8080},{"name":"https","port":443,"protocol":"TCP","targetPort":8080}],"selector":{"app.kubernetes.io/name":"argocd-server"}}}
creationTimestamp: "2022-08-29T14:33:11Z"
finalizers:
- service.kubernetes.io/load-balancer-cleanup
labels:
app.kubernetes.io/component: server
app.kubernetes.io/name: argocd-server
app.kubernetes.io/part-of: argocd
name: argocd-server
namespace: argocd // 네임스페이스
resourceVersion: "14054"
uid: f7dd5a7f-469f-4d8f-9ca5-d215be8603ec
spec:
allocateLoadBalancerNodePorts: true
clusterIP: 10.100.219.97
clusterIPs:
- 10.100.219.97
externalTrafficPolicy: Cluster
internalTrafficPolicy: Cluster
ipFamilies:
- IPv4
ipFamilyPolicy: SingleStack
ports:
- name: http
nodePort: 30028
port: 80
protocol: TCP
targetPort: 8080
- name: https
nodePort: 30881
port: 443
protocol: TCP
targetPort: 8080
selector:
app.kubernetes.io/name: argocd-server
sessionAffinity: None
type: LoadBalancer
status:
loadBalancer:
ingress:
- hostname: af7dd5a7f469f4d8f9ca5d215be8603e-1085680841.ap-northeast-2.elb.amazonaws.com
4-3 Argocd console 접속
af7dd5a7f469f4d8f9ca5d215be8603e-1085680841.ap-northeast-2.elb.amazonaws.com
Jenkins 구축
1. Jenkins 내부에 docker가 설치된 컨테이너 이미지를 다운
$ docker pull kadircana/jenkinswithdocker
2. Jenkins Deployment.yaml 파일 작성
$ vi jenkins_deployment.yaml
2-1 Deployment.yaml 작성
apiVersion: apps/v1
kind: Deployment # yaml 파일 종류 cluster, service, deployment, pods 등이 있다
metadata:
name: jenkins
spec:
replicas: 1 # pods에 생성할 갯수
selector:
matchLabels:
app: jenkins
template:
metadata:
labels:
app: jenkins
spec:
containers:
- name: jenkins
image: kadircana/jenkinswithdocker # 사용할 컨테이너 이미지
2-2 jenkins namespace 생성 후 deployment 파일 적용
$ kubectl create namespace jenkins
$ kubectl apply -f jenkins_deployment.yaml -n jenkins
2-3 확인
kubectl get pods -n jenkins
3. 외부 접속을 위한 Service 설정
$ kubectl expose -n jenkins deployment jenkins --port=80 --target-port=8080 --type=LoadBalancer
3-1 서비스 확인
$ kubectl get service -n jenkins jenkins -o yaml
3-2 접속 확인
4 Jenkins 내부 접속
$ kubectl exec -it -n jenkins jenkins-6cf6fffdcd-nhsl2 /bin/bash
4-1 git ,docker 설치 여부 확인
$ git
$ docker
4-2 Jenkins 비밀번호 확인
$ cat /var/jenkins_home/secrets/initialAdminPassword
728x90
반응형
LIST