ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • EKS CI/CD 구축 (git, docker, argocd) - 1 환경 구성
    Amazon Web Service (AWS)/EKS 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

    댓글

Designed by Tistory.