Git Bash에서 Minikube 명령어를 사용할 때 발생하는 "command not found" 문제를 해결하기 위한 상세 가이드입니다. 이 글에서는 Kubernetes Minikube를 설치하고 Git Bash 환경에서 정상적으로 동작하도록 설정하는 방법을 설명합니다.


1. Kubernetes Minikube 설치

Kubernetes Minikube는 로컬 환경에서 Kubernetes 클러스터를 실행할 수 있는 경량 툴입니다. 설치를 시작하기 전에 시스템 요구사항을 확인하세요.

1.1 시스템 요구사항

  • 운영체제: Windows 10 이상
  • CPU: 2개 이상의 코어
  • RAM: 4GB 이상
  • 가상화: BIOS에서 활성화 필요 (VT-x 또는 AMD-v)

1.2 Minikube 설치

  1. Minikube 공식 다운로드 페이지에 접속합니다.
  2. Windows용 Minikube 바이너리를 다운로드합니다:
  3. 다운로드한 파일 이름을 minikube.exe로 변경하고, 적절한 위치(예: C:\Program Files\Kubernetes\Minikube)에 저장합니다.
  4. 환경 변수에 Minikube 경로를 추가합니다:
    • Windows 검색창에 **"환경 변수 편집"**을 입력하여 시스템 속성 창을 엽니다.
    • 환경 변수 버튼 클릭 > 시스템 변수에서 Path 항목을 선택 > 편집 클릭.
    • C:\Program Files\Kubernetes\Minikube를 새 경로로 추가 후 저장.
  5. 명령 프롬프트(cmd)에서 Minikube가 정상적으로 설치되었는지 확인합니다:정상적으로 버전 정보가 출력되면 설치가 완료된 것입니다.
  6. minikube version

2. Git Bash에서 Minikube 명령어 사용 설정

Git Bash에서 Minikube 명령어를 실행하려면 환경 변수 또는 실행 경로를 추가 설정해야 합니다.

2.1 Git Bash PATH 환경 변수 확인

  1. Git Bash를 열고 다음 명령어로 현재 PATH를 확인합니다:
  2. echo $PATH
  3. Minikube 경로가 포함되어 있지 않다면, 아래 명령어로 경로를 추가합니다:
  4. export PATH=$PATH:/c/Program\ Files/Kubernetes/Minikube
  5. Minikube 명령어가 정상적으로 작동하는지 확인합니다:
  6. minikube version

2.2 실행 파일 확장자 문제 해결

Minikube 실행 파일이 .exe로 저장되어 있다면, Git Bash에서 실행 시 .exe 확장자를 명시해야 할 수도 있습니다:

./minikube.exe start

보다 간단히 사용하기 위해 심볼릭 링크를 생성할 수도 있습니다:

ln -s /c/Program\ Files/Kubernetes/Minikube/minikube.exe /usr/bin/minikube

3. Git Bash에서 Minikube 실행 테스트

  1. Minikube 클러스터를 시작합니다:
  2. minikube start
  3. 클러스터 상태를 확인합니다:
  4. minikube status
  5. Kubernetes 대시보드를 실행합니다:웹 브라우저에서 Kubernetes 대시보드가 열리면 정상적으로 작동하는 것입니다.
  6. minikube dashboard

4. Git Bash에서 "command not found" 문제 해결

4.1 Minikube 경로 설정 확인

Git Bash에서 Minikube 명령어가 작동하지 않는다면, 다음 단계를 확인하세요:

  1. where minikube 명령어로 Minikube 경로를 확인합니다:
  2. where minikube
  3. Minikube 실행 파일 경로가 없다면 환경 변수에 경로를 추가하세요.

4.2 Git Bash PATH 업데이트

Git Bash에서 환경 변수 파일을 업데이트하여 경로를 영구적으로 추가할 수 있습니다:

echo 'export PATH=$PATH:/c/Program\ Files/Kubernetes/Minikube' >> ~/.bashrc
source ~/.bashrc

4.3 Minikube 심볼릭 링크 생성

Git Bash가 Windows 실행 파일을 인식하지 못할 경우, 심볼릭 링크를 생성합니다:

ln -s /c/Program\ Files/Kubernetes/Minikube/minikube.exe /usr/bin/minikube

5. 추가 문제 해결 방법

문제 1: 가상화 지원 여부 확인

Minikube는 가상화를 사용하므로 가상화가 활성화되어 있지 않으면 작동하지 않습니다. BIOS 설정에서 VT-x 또는 AMD-v가 활성화되었는지 확인하세요.

문제 2: Docker 드라이버 설정

Minikube는 Docker 드라이버를 기본으로 사용합니다. Docker Desktop이 설치되어 있는지 확인하고, 설치되어 있지 않다면 Docker 설치 가이드를 참조하세요.

문제 3: Git Bash 관리자로 실행

일부 권한 문제가 발생할 수 있으므로 Git Bash를 관리자 권한으로 실행하세요.

1. Git 설치

1.1. Git 다운로드

  • Git 공식 웹사이트로 이동합니다.
  • 다운로드 페이지에서 Windows용 Git 설치 파일을 다운로드합니다.

1.2. Git 설치

  • 다운로드한 설치 파일을 실행합니다.
  • 설치 마법사의 지침에 따라 기본 설정을 유지하면서 설치를 완료합니다.

 

2. AWS CLI 설치 및 설정

AWS CLI는 AWS 서비스와 상호작용하기 위해 필요한 도구입니다.

2.1. AWS CLI 다운로드 및 설치

2.2. AWS CLI 설정

  • 명령 프롬프트 또는 PowerShell을 열고 다음 명령어를 실행하여 AWS CLI를 설정합니다:
aws configure
  • AWS 액세스 키, 시크릿 액세스 키, 기본 리전 이름(ap-northeast-2 등), 출력 형식을 입력합니다.

 

3. Git 자격 증명 캐시 설정

AWS CodeCommit에 HTTPS를 통해 접근할 때 Git 자격 증명을 올바르게 설정해야 합니다.

3.1. Git 자격 증명 캐시 설정

  • 다음 명령어를 실행하여 Git이 AWS CLI 자격 증명을 사용하도록 설정합니다:
git config --global credential.helper '!aws codecommit credential-helper $@'
git config --global credential.UseHttpPath true

 

 

4. 로컬 리포지토리 설정 및 원격 리포지토리 추가

로컬에 이미 소스가 있는 경우, 기존 리포지토리와 AWS CodeCommit을 연결할 수 있습니다.

4.1. 로컬 리포지토리 초기화

  • Git 리포지토리 디렉토리로 이동합니다:
  • 로컬 디렉토리가 Git 리포지토리가 아닌 경우, Git 리포지토리로 초기화합니다:
git init

 

4.2. 원격 리포지토리 추가

  • AWS CodeCommit의 HTTPS URL을 사용하여 원격 리포지토리를 추가합니다:
git remote add origin https://git-codecommit.ap-northeast-2.amazonaws.com/v1/repos/test

 

5. 브랜치 생성 및 푸시

5.1. 브랜치 생성 및 커밋

  • 새 브랜치를 생성하고 체크아웃합니다:
  • 변경 사항을 커밋합니다:
  • 원격 리포지토리에 브랜치를 푸시합니다:
git checkout -b dev
git add .
git commit -m "new branch dev"
git push -u origin dev

 

 

6. 오류 해결

6.1. 403 Forbidden 오류

  • IAM 권한 확인: AWS IAM 사용자에게 AWSCodeCommitPowerUser 정책 또는 필요한 권한이 부여되어 있는지 확인합니다.
  • AWS CLI 자격 증명 확인: aws configure 명령어로 자격 증명을 올바르게 설정했는지 확인합니다.
  • 자격 증명 캐시 설정: 위의 credential.helper 명령어로 자격 증명 캐시가 올바르게 설정되었는지 확인합니다.

SSH 키를 사용하면 비밀번호 입력 없이 안전하게 서버에 접속할 수 있습니다. 이 글에서는 로컬 머신에서 SSH 키를 생성하고, 타겟 서버에 적용하여 패스워드 없이 로그인하는 방법을 단계별로 설명합니다.

 

1. 로컬 머신에서 SSH 키 생성하기

우선, 로컬 머신에서 SSH 키를 생성합니다. 이미 SSH 키가 생성되어 있다면 이 단계를 생략해도 됩니다.

SSH 키 생성 명령어:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

위 명령을 실행하면 id_rsa (비밀 키)와 id_rsa.pub (공개 키) 파일이 생성됩니다. 기본적으로 ~/.ssh/ 디렉토리에 저장됩니다.

  • id_rsa: 비밀 키 (Private Key)
  • id_rsa.pub: 공개 키 (Public Key)

 

2. 타겟 서버에 공개 키 추가하기

SSH 키를 생성한 후, 타겟 서버에 공개 키를 추가해야 합니다. 이를 위해 두 가지 방법을 사용할 수 있습니다.

ssh-copy-id 명령어 사용하기

ssh-copy-id -i /root/.ssh/id_rsa.pub 사용자명@타겟서버주소

이 명령어는 자동으로 공개 키를 타겟 서버의 ~/.ssh/authorized_keys 파일에 추가합니다.

 

 

3. 패스워드 없는 접근 확인하기

타겟 서버에 공개 키를 성공적으로 추가한 후에는 SSH 비밀 키를 사용하여 패스워드 없이 타겟 서버에 접속할 수 있습니다.

접속 명령어:

ssh -i /root/.ssh/id_rsa 사용자명@타겟서버주소

이 명령어는 비밀 키 파일을 사용하여 타겟 서버에 접속합니다. 패스워드를 입력할 필요 없이 안전하게 서버에 접근할 수 있습니다.

Elastic Beanstalk 소개

Elastic Beanstalk은 AWS에서 제공하는 관리형 서비스로, 웹 애플리케이션과 서비스를 쉽게 배포하고 관리할 수 있게 해줍니다. 개발자는 인프라 관리에 신경 쓰지 않고 코드를 업로드하기만 하면, Elastic Beanstalk이 자동으로 인프라를 프로비저닝하고 애플리케이션을 배포해줍니다.

IAM 역할과 정책의 중요성

Elastic Beanstalk은 다양한 AWS 서비스와 상호작용하기 때문에, 필요한 권한을 관리하기 위해 IAM(Identity and Access Management) 역할과 정책이 중요합니다. 올바른 IAM 역할과 정책을 설정하면 애플리케이션이 안전하게 운영되며, 불필요한 권한으로 인한 보안 리스크를 줄일 수 있습니다.

 

 

1. Elastic Beanstalk을 위한 IAM 역할 및 정책 이해

IAM 역할(Role)과 정책(Policy) 개요

IAM 역할(Role)은 특정 AWS 리소스에 접근할 수 있는 권한을 가진 엔터티입니다. 사용자는 역할을 통해 AWS 서비스와 상호작용할 수 있으며, 역할에는 정책(Policy)이 연결되어 있어, 허용된 액션과 리소스를 정의합니다.

Elastic Beanstalk에서의 IAM 역할 사용 사례

Elastic Beanstalk에서 IAM 역할은 애플리케이션이 다른 AWS 서비스 (예: S3, DynamoDB, RDS)와 상호작용할 수 있도록 하는 중요한 구성 요소입니다. 예를 들어, 애플리케이션이 S3에서 파일을 읽거나 쓰기 위해서는 적절한 권한이 있는 IAM 역할이 필요합니다.

 

 

2. Elastic Beanstalk을 위한 IAM 역할 생성

필요한 권한 식별

Elastic Beanstalk에는 기본적으로 EC2 인스턴스, Auto Scaling, Load Balancer 등의 서비스에 대한 권한이 필요합니다. 하지만, 애플리케이션에 따라 추가적으로 S3, CloudWatch, RDS 등 다른 AWS 서비스에 접근해야 할 수도 있습니다.

IAM 역할 생성 단계별 가이드

  • 서비스 정책 생성 : 아래 JSON을 복사하여 " AWSElasticBeanstalkService"  이름으로 IAM 정책을 생성합니다. 
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowCloudformationOperationsOnElasticBeanstalkStacks",
            "Effect": "Allow",
            "Action": [
                "cloudformation:*"
            ],
            "Resource": [
                "arn:aws:cloudformation:*:*:stack/awseb-*",
                "arn:aws:cloudformation:*:*:stack/eb-*"
            ]
        },
        {
            "Sid": "AllowDeleteCloudwatchLogGroups",
            "Effect": "Allow",
            "Action": [
                "logs:DeleteLogGroup"
            ],
            "Resource": [
                "arn:aws:logs:*:*:log-group:/aws/elasticbeanstalk*"
            ]
        },
        {
            "Sid": "AllowECSTagResource",
            "Effect": "Allow",
            "Action": [
                "ecs:TagResource"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "ecs:CreateAction": [
                        "CreateCluster",
                        "RegisterTaskDefinition"
                    ]
                }
            }
        },
        {
            "Sid": "AllowS3OperationsOnElasticBeanstalkBuckets",
            "Effect": "Allow",
            "Action": [
                "s3:*"
            ],
            "Resource": [
                "arn:aws:s3:::elasticbeanstalk-*",
                "arn:aws:s3:::elasticbeanstalk-*/*"
            ]
        },
        {
            "Sid": "AllowLaunchTemplateRunInstances",
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": "*",
            "Condition": {
                "ArnLike": {
                    "ec2:LaunchTemplate": "arn:aws:ec2:*:*:launch-template/*"
                }
            }
        },
        {
            "Sid": "AllowELBAddTags",
            "Effect": "Allow",
            "Action": [
                "elasticloadbalancing:AddTags"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "elasticloadbalancing:CreateAction": [
                        "CreateLoadBalancer"
                    ]
                }
            }
        },
        {
            "Sid": "AllowOperations",
            "Effect": "Allow",
            "Action": [
                "autoscaling:AttachInstances",
                "autoscaling:CreateAutoScalingGroup",
                "autoscaling:CreateLaunchConfiguration",
                "autoscaling:CreateOrUpdateTags",
                "autoscaling:DeleteLaunchConfiguration",
                "autoscaling:DeleteAutoScalingGroup",
                "autoscaling:DeleteScheduledAction",
                "autoscaling:DescribeAccountLimits",
                "autoscaling:DescribeAutoScalingGroups",
                "autoscaling:DescribeAutoScalingInstances",
                "autoscaling:DescribeLaunchConfigurations",
                "autoscaling:DescribeLoadBalancers",
                "autoscaling:DescribeNotificationConfigurations",
                "autoscaling:DescribeScalingActivities",
                "autoscaling:DescribeScheduledActions",
                "autoscaling:DetachInstances",
                "autoscaling:DeletePolicy",
                "autoscaling:PutScalingPolicy",
                "autoscaling:PutScheduledUpdateGroupAction",
                "autoscaling:PutNotificationConfiguration",
                "autoscaling:ResumeProcesses",
                "autoscaling:SetDesiredCapacity",
                "autoscaling:SuspendProcesses",
                "autoscaling:TerminateInstanceInAutoScalingGroup",
                "autoscaling:UpdateAutoScalingGroup",
                "cloudwatch:PutMetricAlarm",
                "ec2:AssociateAddress",
                "ec2:AllocateAddress",
                "ec2:AuthorizeSecurityGroupEgress",
                "ec2:AuthorizeSecurityGroupIngress",
                "ec2:CreateLaunchTemplate",
                "ec2:CreateLaunchTemplateVersion",
                "ec2:DescribeLaunchTemplates",
                "ec2:DescribeLaunchTemplateVersions",
                "ec2:DeleteLaunchTemplate",
                "ec2:DeleteLaunchTemplateVersions",
                "ec2:CreateSecurityGroup",
                "ec2:DeleteSecurityGroup",
                "ec2:DescribeAccountAttributes",
                "ec2:DescribeAddresses",
                "ec2:DescribeImages",
                "ec2:DescribeInstances",
                "ec2:DescribeKeyPairs",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSnapshots",
                "ec2:DescribeSubnets",
                "ec2:DescribeVpcs",
                "ec2:DescribeInstanceAttribute",
                "ec2:DescribeSpotInstanceRequests",
                "ec2:DescribeVpcClassicLink",
                "ec2:DisassociateAddress",
                "ec2:ReleaseAddress",
                "ec2:RevokeSecurityGroupEgress",
                "ec2:RevokeSecurityGroupIngress",
                "ec2:TerminateInstances",
                "ecs:CreateCluster",
                "ecs:DeleteCluster",
                "ecs:DescribeClusters",
                "ecs:RegisterTaskDefinition",
                "elasticbeanstalk:*",
                "elasticloadbalancing:ApplySecurityGroupsToLoadBalancer",
                "elasticloadbalancing:ConfigureHealthCheck",
                "elasticloadbalancing:CreateLoadBalancer",
                "elasticloadbalancing:DeleteLoadBalancer",
                "elasticloadbalancing:DeregisterInstancesFromLoadBalancer",
                "elasticloadbalancing:DescribeInstanceHealth",
                "elasticloadbalancing:DescribeLoadBalancers",
                "elasticloadbalancing:DescribeTargetHealth",
                "elasticloadbalancing:RegisterInstancesWithLoadBalancer",
                "elasticloadbalancing:DescribeTargetGroups",
                "elasticloadbalancing:RegisterTargets",
                "elasticloadbalancing:DeregisterTargets",
                "iam:ListRoles",
                "iam:PassRole",
                "logs:CreateLogGroup",
                "logs:PutRetentionPolicy",
                "logs:DescribeLogGroups",
                "rds:DescribeDBEngineVersions",
                "rds:DescribeDBInstances",
                "rds:DescribeOrderableDBInstanceOptions",
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:ListBucket",
                "sns:CreateTopic",
                "sns:GetTopicAttributes",
                "sns:ListSubscriptionsByTopic",
                "sns:Subscribe",
                "sns:SetTopicAttributes",
                "sqs:GetQueueAttributes",
                "sqs:GetQueueUrl",
                "codebuild:CreateProject",
                "codebuild:DeleteProject",
                "codebuild:BatchGetBuilds",
                "codebuild:StartBuild"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}

 

AWS Elastic Beanstalk과 관련된 리소스에 대해 다양한 권한을 부여하는 정책입니다. 각 섹션(Statement)별로 설명드리겠습니다.

1. AllowCloudformationOperationsOnElasticBeanstalkStacks

  • 설명: 이 섹션은 CloudFormation 스택에서 모든 작업(cloudformation:*)을 허용합니다. 하지만, 해당 스택의 이름이 awseb-* 또는 eb-*로 시작하는 경우에만 허용됩니다.
  • 주요 권한: CloudFormation 관련 작업 전체(cloudformation:*).
  • 적용 대상 리소스: arn:aws:cloudformation:*:*:stack/awseb-*, arn:aws:cloudformation:*:*:stack/eb-*.

2. AllowDeleteCloudwatchLogGroups

  • 설명: 이 섹션은 Elastic Beanstalk과 관련된 CloudWatch 로그 그룹을 삭제할 수 있는 권한을 부여합니다.
  • 주요 권한: CloudWatch 로그 그룹 삭제(logs:DeleteLogGroup).
  • 적용 대상 리소스: arn:aws:logs:*:*:log-group:/aws/elasticbeanstalk*.

3. AllowECSTagResource

  • 설명: 이 섹션은 ECS 리소스에 태그를 붙일 수 있는 권한을 부여합니다. 단, 이 권한은 CreateCluster나 RegisterTaskDefinition과 같은 작업이 수행될 때만 유효합니다.
  • 주요 권한: ECS 리소스에 태그 부착(ecs:TagResource).
  • 적용 대상 리소스: 모든 리소스(*).
  • 조건: ecs:CreateAction이 CreateCluster 또는 RegisterTaskDefinition일 때.

4. AllowS3OperationsOnElasticBeanstalkBuckets

  • 설명: Elastic Beanstalk과 관련된 S3 버킷에 대해 모든 S3 작업을 허용합니다.
  • 주요 권한: S3 관련 작업 전체(s3:*).
  • 적용 대상 리소스: arn:aws:s3:::elasticbeanstalk-*, arn:aws:s3:::elasticbeanstalk-*/*.

5. AllowLaunchTemplateRunInstances

  • 설명: 이 섹션은 EC2 인스턴스를 실행(RunInstances)할 수 있는 권한을 부여합니다. 단, 실행되는 인스턴스는 특정 조건에 따라야 합니다.
  • 주요 권한: EC2 인스턴스 실행(ec2:RunInstances).
  • 적용 대상 리소스: 모든 리소스(*).
  • 조건: ec2:LaunchTemplate ARN이 arn:aws:ec2:*:*:launch-template/*와 일치해야 합니다.

6. AllowELBAddTags

  • 설명: Elastic Load Balancer(ELB)에 태그를 추가할 수 있는 권한을 부여합니다. 단, 이 권한은 로드 밸런서가 생성될 때만 유효합니다.
  • 주요 권한: ELB 태그 추가(elasticloadbalancing:AddTags).
  • 적용 대상 리소스: 모든 리소스(*).
  • 조건: elasticloadbalancing:CreateAction이 CreateLoadBalancer일 때.

7. AllowOperations

  • 설명: 이 섹션은 Elastic Beanstalk 환경에서 애플리케이션을 운영하는 데 필요한 다양한 AWS 서비스에 대한 권한을 광범위하게 허용합니다.
  • 주요 권한: Auto Scaling, EC2, ECS, Elastic Beanstalk, ELB, IAM, CloudWatch, RDS, S3, SNS, SQS, CodeBuild 등 여러 서비스에 대한 권한.
  • 적용 대상 리소스: 모든 리소스(*).

이 정책은 Elastic Beanstalk 환경에서의 인프라와 애플리케이션 관리를 위한 매우 광범위한 권한을 포함하고 있으며, Elastic Beanstalk에 필요한 거의 모든 작업을 수행할 수 있도록 설계되었습니다. 각 권한은 특정 리소스에 제한을 두거나 특정 조건 하에서만 허용되도록 구성되어 있어, 보안성을 유지하면서도 필요한 작업을 수행할 수 있게 합니다.

 

 

  • 서비스 역할 생성 : "aws-elasticbeanstalk-service-role"  이름으로 elastic beanstalk 역할 생성

 

 

  • AWSElasticBeanstalkService 정책에 aws-elasticbeanstalk-service-role 역할 연결

 

 

  • aws-elasticbeanstalk-ec2-role 역할 생성, 아래 정책을 추가합니다.
  • AmazonEC2ContainerRegistryReadOnly,AWSElasticBeanstalkWebTier,
  • AWSElasticBeanstalkWorkerTier
  • AWSElasticBeanstalkMulticontainerDocker,

 

 

  • 생성한 두 역할을 할당 합니다.

 

 

AWS Access Key ID 생성 방법

  • AWS Management Console 로그인
  • IAM 콘솔로 이동
    • 콘솔 상단의 검색창에 IAM을 입력하고, IAM (Identity and Access Management)을 선택하여 IAM 콘솔로 이동합니다.
  • 사용자(User) 선택
    • IAM 대시보드에서 왼쪽 메뉴에서 Users를 클릭합니다.
    • Access Key를 생성할 사용자를 선택합니다. (만약 사용자가 없다면, 새 사용자를 생성해야 합니다.)

 

 

 

  • 사용자(User) 생성
    • Provide user access to the AWS Management Console의 경우 Console 로그인이 필요할 경우만 체크 합니다.
    • 현재 단계에선 group, permission, policy등 설정하지 않고 Next 후 create user 합니다.

 

 

  • 사용자 세부 정보에서 ‘보안 자격 증명’으로 이동
    • 선택한 사용자의 이름을 클릭하여 사용자의 세부 정보를 엽니다.
    • ‘Security credentials’ 탭을 클릭합니다.
  • Access Keys (Access Key ID 및 Secret Access Key) 생성
    • ‘Access keys’ 섹션에서 Create access key 버튼을 클릭합니다.
    • 팝업창이 나타나면, Create access key 버튼을 클릭하여 새 Access Key ID와 Secret Access Key를 생성합니다.

  • Access Keys (Access Key ID 및 Secret Access Key) 생성
    • Command Line Interface를 선택 후 생성합니다.

 

  •  Access Key ID와 Secret Access Key 저장
    • 생성된 Access Key ID와 Secret Access Key를 즉시 안전한 장소에 저장합니다. Secret Access Key는 한 번만 표시되므로, 이후에 복구할 수 없습니다.

 

1. Windows

AWS CLI 설치

  1. 설치 파일 다운로드:
  2. 설치:
    • 다운로드한 .msi 파일을 실행하여 설치 마법사의 지침을 따릅니다.
  3. 설치 확인:
    • 명령 프롬프트 또는 PowerShell을 열고 다음 명령어를 입력하여 설치가 성공적으로 되었는지 확인합니다:
aws --version

 

AWS CLI 설정

  • 명령 프롬프트 또는 PowerShell을 열고 다음 명령어를 입력하여 AWS CLI를 설정합니다:
aws configure


AWS Access Key ID: AWS Management Console에서 생성한 액세스 키 ID를 입력합니다.
AWS Secret Access Key: Access Key ID에 대한 비밀 액세스 키를 입력합니다.
Default region name: ap-northeast-2 리전을 입력합니다.
Default output format: JSON을 사용합니다.

 

 

 

2. macOS

AWS CLI 설치

Homebrew 사용 (권장):

  • Homebrew가 설치되어 있다면 다음 명령어를 사용하여 AWS CLI를 설치합니다:
brew install awscli

 

설치 확인:

  • 터미널을 열고 다음 명령어를 입력하여 설치가 성공적으로 되었는지 확인합니다:
aws --version

 

AWS CLI 설정

  • 명령 프롬프트 또는 PowerShell을 열고 다음 명령어를 입력하여 AWS CLI를 설정합니다:
aws configure


AWS Access Key ID: AWS Management Console에서 생성한 액세스 키 ID를 입력합니다.
AWS Secret Access Key: Access Key ID에 대한 비밀 액세스 키를 입력합니다.
Default region name: ap-northeast-2 리전을 입력합니다.
Default output format: JSON을 사용합니다.

 

 

3. Linux

AWS CLI 설치

  • 대부분의 리눅스 배포판에서는 패키지 관리자를 통해 AWS CLI를 설치할 수 있습니다.
  • Ubuntu에서는 다음 명령어를 사용합니다:
sudo apt update
sudo apt install awscli

 

  • CentOS에서는:
sudo yum install awscli

 

설치 확인:

  • 터미널을 열고 다음 명령어를 입력하여 설치가 성공적으로 되었는지 확인합니다:
aws --version

 

AWS CLI 설정

  • 명령 프롬프트 또는 PowerShell을 열고 다음 명령어를 입력하여 AWS CLI를 설정합니다:
aws configure


AWS Access Key ID: AWS Management Console에서 생성한 액세스 키 ID를 입력합니다.
AWS Secret Access Key: Access Key ID에 대한 비밀 액세스 키를 입력합니다.
Default region name: ap-northeast-2 리전을 입력합니다.
Default output format: JSON을 사용합니다.

 

EC2 인스턴스 생성 및 Jenkins 설치

  1. EC2 인스턴스를 생성하고, Jenkins를 설치합니다. Amazon Linux 2 AMI를 사용했고 아래 명령어를 실행합니다.
sudo yum update -y

sudo amazon-linux-extras install java-openjdk11 -y

sudo wget -O /etc/yum.repos.d/jenkins.repo \
    https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

sudo yum install jenkins -y

sudo systemctl start jenkins

sudo systemctl enable jenkins

 

 

Jenkins 설정

  1. 브라우저에서 http://<EC2-Instance-Public-IP>:8080으로 접속합니다.
  2. 초기 관리자 비밀번호를 입력합니다. 비밀번호는 아래 명령어로 확인할 수 있습니다.
sudo cat /var/lib/jenkins/secrets/initialAdminPassword

 

플러그인 설치

  1. Jenkins 대시보드에서 "Manage Jenkins" > "Manage Plugins"로 이동합니다.
  2. "Available" 탭에서 "AWS Code Commit Jobs Plugin", "Pipeline: AWS Steps", "AWS CodePipeline", "Docker" 를 검색하고 설치합니다.

 

AWS 자격 증명 설정

  1. AWS IAM 콘솔에서 새로운 사용자 또는 기존 사용자에게 프로그래밍 방식 접근 권한을 부여합니다.
  2. 사용자에게 AWSCodeCommitFullAccess 권한을 부여합니다.
  3. 액세스 키를 생성하여 저장합니다.
  4. AWS CodeCommit에 대한 HTTPS Git 자격 증명을 생성하여 저장합니다.

 

Jenkins에서 자격 증명 추가

  1. Jenkins 대시보드에서 "Manage Jenkins" > "Manage Credentials"로 이동합니다.
  2. "Global" 범위에서 AWS 자격 증명을 추가합니다.
    • Kind: "Username with password"
    • ID: aws-credentials
    • Username: IAM 사용자의 액세스 키 ID
    • Password: IAM 사용자의 시크릿 액세스 키
  3. "Global" 범위에서 CodeCommit Git 자격 증명을 추가합니다 
    • Kind: "Username with password"
    • ID: aws-codecommit_https
    • Username: AWS CodeCommit에서 제공하는 HTTPS Git 사용자 이름
    • Password: AWS CodeCommit에서 제공하는 HTTPS Git 비밀번호

 

 

aws configure 설정

aws configure

AWS Access Key ID: AWS Management Console에서 생성한 액세스 키 ID를 입력합니다.
AWS Secret Access Key: Access Key ID에 대한 비밀 액세스 키를 입력합니다.
Default region name: ap-northeast-2 리전을 입력합니다.
Default output format: JSON을 사용합니다.

 

 

AWS 자격 증명 확인

aws sts get-caller-identity


출력 예시
{
    "UserId": "ABCDEFGHIJKLMNO",
    "Account": "123456789012",
    "Arn": "arn:aws:iam::123456789012:user/YourUserName"
}

 

 

1. Docker 설치

Docker는 대부분의 운영 체제에서 설치할 수 있습니다. 아래는 주요 운영 체제별 설치 방법입니다.

Windows

  1. Docker Desktop for Windows를 다운로드하고 설치합니다.
  2. 설치 과정에서 기본 설정을 따릅니다.
  3. 설치가 완료되면 Docker Desktop을 실행하고, Docker가 정상적으로 작동하는지 확인합니다.

macOS

  1. Docker Desktop for Mac을 다운로드하고 설치합니다.
  2. 설치 과정에서 기본 설정을 따릅니다.
  3. 설치가 완료되면 Docker Desktop을 실행하고, Docker가 정상적으로 작동하는지 확인합니다.

Linux (Ubuntu 예시)

  • 터미널을 열고 다음 명령어를 실행하여 Docker를 설치합니다.
sudo apt-get update
sudo apt-get install -y docker.io

 

  •  Docker 서비스가 자동으로 시작되도록 설정합니다.
sudo systemctl enable docker
sudo systemctl start docker

 

  • 변경 사항을 적용하려면 터미널을 다시 시작하거나 로그아웃 후 로그인합니다.

 


deploying WSL2 distributionsensuring main distro is deployed 에러 해결

 

deploying WSL2 distributionsensuring main distro is deployed

wsl --shutdown bios에서 가상화 기술(VT-x / AMD-V) 활성화wsl --install

yes5.tistory.com

+ Recent posts