#2 AWS 환경에 Spinnaker 설치하기 - 설치(2)
June/AWS

#2 AWS 환경에 Spinnaker 설치하기 - 설치(2)

EC2 터미널 작업

이제 halyard를 설치하였기 때문에, 해당 환경에서 사용하는 명령어를 몇가지 알아야한다.
이는 아래 '참고사이트'항목에서 Spinnaker Commands 를 참조하면 되지만, 필요한 명령어는 여기서 다 사용할 거기 때문에 굳이 안봐도 된다.
이제 아래에서 사용될 access-key는 바로 위에서 계정생성하며 만들어진 key가 된다.

hal config provider aws edit --aceess-key-id ${your-access-key} --secret-access-key

위와 같이 입력하면 bakery 어쩌구가 뜨는데 여기서 Enter로 넘기는 것이 아니라 secret-access-key를 입력하여준다.
이는 보안적인 이유로 타이핑이 보이지 않기 때문에 복사 붙여넣기로 한번에 타입하면 자동적으로 입력된다.
제대로 입력됬는지 확인하고 싶다면 hal config 를 입력하면 확인할 수 있다.



SpinnakerManagedRole 생성

  1. IAM > Role > Create Roles > EC2 > Permission은 PowerUserAccess > 


    그다음 생성한 Policies에 들어가준다.

    Add inline Policy를 들어가서 아래와 같이 설정을 해준다.


    Resources는 Specific을 누르고 자신의 Managing account id를 입력해주면 된다.(앞서 언급한 숫자 12개)
    Next > Name = PassRole

    혹은 그냥 Policy Json에 다음 설정을 해준다.(추천)

    {
        "Version": "2012-10-17",
        "Statement": [{
            "Effect": "Allow",
            "Action": [ "ec2:*" ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::${MANAGING_ACCOUNT_ID}:role/BaseIAMRole"
        }]
    }
  2. 그 다음은 Trust relationships 연계를 해준다.


    IAM > Roles > SpinnakerAuthRole > ARN 복사 >  Roles > SpinnakerManaged > Edit trust relationship >  아래와 같이 변경


다시 EC2 터미널 작업

  1. provider aws account id(12자리)와 Role(SpinnakerManaged) 설정등록

    hal config provider aws account add {account name: default 추천} --account-id {12자리아이디} --assume-role role/SpinnakerManaged
  2. aws 설정 적용

    hal config provider aws enable
  3. AWS S3 bucket과 연결

    hal config storage s3 edit --access-key-id $YOUR_ACCESS_KEY_ID --secret-access-key --region $REGIONhal config storage edit --type s3

    ※ 여기서 access-key-id는 12자리가 아니라 계정에 발급된 access key이다. 이에 주의하자.

    기존 버킷으로 연결하는 방법이 있는게 그것은 아래의 참고사이트에서 명령어를 별도로 조회하도록 하자.
    만일 실패가 뜬다면 90퍼는 권한문제이다. 지금 내 EC2에 연결된 IAM Role이 있다면, 해당 Role에 S3 Full access 권한을 부여해주자

  4. Deploy
    이제 deploy를 연결해 줄 것이다. 
    그 전에 아직 spinnaker는 설치가 안되어있는 상태이다. 버젼 확인을 해보면
    $ hal version list

    현재 내 버전은 "" 로 아무것도 뜨지 않고, 아래에는 사용 가능한 버전들의 항목이 뜬다.
    너무 최신은 지양하고 너무 오래된 버전도 지양하여 선택하여 준다.

    $hal config version edit --version 1.10.13


    그러면 이제
    $hal deploy apply
    로 실행시켜주면 된다.


    만일 여기서 spinnaker.list와 같은 문제가 발생한다면 이는 스핀에이커 버전이 사용 불가한 버전이라 그런 것이다. 버전을 바꿔주자.
    우선 저렇게 스핀에이커 설치와 아파치 구동이 정상적으로 되었다면 127.0.0.1:9000으로 들어가면 스핀에이커가 뜰 것이다.

    하지만 여기서 나는 publicIP:9000으로 띄우는 것이 목표이기 때문에 몇가지 스텝을 더 진행해준다.

  5. host 변경
    이 설정만큼은 root가 아닌 ubuntu에서 해준다(hal이 ubuntu에 기본적으로 깔린다.)
    그러면 기본적으로 localhost에서 서버 내에서만 접근 가능했던 스핀에이커가
    EC2 서버의 아이피로 어디서도 접근이 가능하게 설정이 된다.

최종결과 확인

하지만 Application에 접근하려고 하면 Loading만 계속 된다.
F12로 내용을 확인하니 AWS 권한 문제인 것으로 판별되었다.
→ Security Group에서 8084 TCP 포트를 열어줘야한다. Default로 만들었다면 없을 수 있으니, 주의하자..

참고사이트
local host to 0.0.0.0 : https://blog.spinnaker.io/exposing-spinnaker-to-end-users-4808bc936698
설치가이드 : https://genius-kim-1047.tistory.com/30
                     http://blog.itp-inc.com/deploy-helloword-app-in-aws-using-spinnaker-pipeline/
Spinnaker Commands : https://www.spinnaker.io/reference/halyard/commands/#hal-config
메모리 에러 관련 : https://medium.com/hbsmith/too-many-open-files-%EC%97%90%EB%9F%AC-%EB%8C%80%EC%9D%91%EB%B2%95-9b388aea4d4e