• 0) 컨테이너 레파지토리 준비
    • AWS ECR 기준 Admin 사용자가 아니면,
      • IAM 권한 AmazonElasticContainerRegistryPublicFullAccess 셋팅.
      • 커스텀 정책 생성&추가. (별첨1)
    • AWS ECR 로그인 유지.
      • sudo apt update 및 sudo apt install amazon-ecr-credential-helper
      • /.docker/config.json 직접 수정. (별첨2)
  • 1) 설치
    • eksctl :
      • brew tap weaveworks/tap  brew install weaveworks/tap/eksctl  brew upgrade eksctl && brew link --overwrite eksctl eksctl version
    • Docker, Docker-Compose K8S : 
      • https://docs.docker.com/docker-for-mac/install
      • docker 아이콘 → preference → resource → 사양 튜닝
      • docker --version , docker-compose --version , kubectl version
      • source <(kubectl completion zsh)  // zsh 자동완성
    • kubefwd (특정 k8s 서비스에 프록시 기반으로 접속하기)
      • brew install txn2/tap/kubefwd  brew upgrade kubefwd  kubefwd help svc
      • sudo kubefwd svc -n 네임스페이스 → http://mongo-express:80 접속!
    • kustomize
      • brew install kustomize
      • 각각의 레시피 만들어 보기!
  • 2) 접속 (PC → AWS EKS)
    • aws configure --profile 프로필” 으로 ->  사용자 보안자격증명키 등록.
    • aws eks --region 리젼 update-kubeconfig --name 클러스터명” 으로 -> ~/.kube 생성.
    • ~/.kube/config 수정.
      • clusters 및 contexts 및 users(user>exec>args,cmd,env) 등등을 여러개 작성가능!
      • apiVersion: v1
        clusters:
        - cluster:
            certificate-authority-data: ...
            server: https://xxx.yl4.ap-northeast-2.eks.amazonaws.com
          name: main.ap-northeast-2.eksctl.io
        - cluster:
            certificate-authority-data: ...
            server: https://xxx.gr7.us-east-2.eks.amazonaws.com
          name: mlops.us-east-2.eksctl.io
        contexts:
        - context:
            cluster: mlops.us-east-2.eksctl.io
            user: yyy@mlops.us-east-2.eksctl.io
          name: yyy@mlops.us-east-2.eksctl.io
        - context:
            cluster: main.ap-northeast-2.eksctl.io
            user: yyy@main.ap-northeast-2.eksctl.io
          name: yyy@main.ap-northeast-2.eksctl.io
        current-context: yyy@mlops.us-east-2.eksctl.io
        kind: Config
        preferences: {}
        users:
        - name: yyy@mlops.us-east-2.eksctl.io
          user:
            exec:
              apiVersion: client.authentication.k8s.io/v1alpha1
              args:
              - token
              - -i
              - mlops
              command: aws-iam-authenticator
              env:
              - name: AWS_STS_REGIONAL_ENDPOINTS
                value: regional
              - name: AWS_DEFAULT_REGION
                value: us-east-2
              - name: AWS_PROFILE
                value: zzz
        - name: yyy@main.ap-northeast-2.eksctl.io
          user:
            exec:
              apiVersion: client.authentication.k8s.io/v1alpha1
              args:
              - token
              - -i
              - main
              command: aws-iam-authenticator
              env:
              - name: AWS_PROFILE
                value: company
    • 해당 클러스터에 해당 사용자 꼮 등록!
    • 테스트 : 예) kubectl get ns , kubectl get pod -n 네임스페이스 , ...
  • 3) 배포
    • 예제 레시피 구조
      • base/app.yaml 타겟포트 = 도커이미지포트 맞춤 -> base/kustomization.yaml 의 resources 에 첨부 -> dev/kustomization.yaml 의 bases 에 첨부 conf.env 환경변수 작성 -> dev/kustomization.yaml 의 configMapGenerator 에 첨부
      • secret.yaml 정의(Secret) 및 사용할 시크릿데이터 베64 작성 -> dev/kustomization.yaml 의 resources 에 첨부 (k8s secrets에 조회 됨) (혹은, 사용할 시크릿데이터 파일 복사 -> dev/kustomization.yaml 의 secretGenerator 에 첨부) (k8s secrets에 조회 안됨?) : k8s에 신규namespace 생성 -> 해당namespace에 필수secret 등록 -> 이미지의 프로세스Port로 app.yaml 맞춰 -> conf.env 작성 -> secret 베64&볼륨화&마운트 -> k8s 적용 테스트
    • k8s ingress 의 Basic Auth 셋팅
  • ...

-끝-

 

별첨1
별첨2

 

'DevOps' 카테고리의 다른 글

Graphite  (0) 2024.10.30
doppler  (0) 2023.07.13
크로미움과 토륨 in docker  (0) 2023.07.13
Jenkins  (0) 2022.01.02
puckel Airflow V1 on K8S  (0) 2021.06.26

+ Recent posts