-
EKS CI/CD 구축 (git, docker, argocd) - 1 환경 구성Amazon Web Service (AWS)/EKS 2022. 8. 28. 22:28728x90
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'Amazon Web Service (AWS) > EKS' 카테고리의 다른 글
FluentBit + CloudWatch logs 로 Pods Application 로그 수집하기 (2) 2023.04.23 EKS CI/CD 구축 (git, docker, argocd) - 2 Jenkins, GitLab, ArgoCD 연결 (0) 2022.08.30 EC2에 Docker 설치 후 ECR과 연동하기 (0) 2022.08.19 [EKS] Kubernetes 기본 명령어 (0) 2022.08.01 [EKS] EKS Cluster 구축 (0) 2022.08.01