-
Notifications
You must be signed in to change notification settings - Fork 2
install spinnaker on eks
kubernetes 에 설치하는 방법은 설치방법 을 참고바란다.
여기서는 위의 설치방법중에서 amazon EKS 에 설치를 할적에 설정하는 사항을 설명한다.
아래에서는 다음과 같은 시나리오로 클러스터를 구성한다.
1번으로 EKS 를 설치하고, 해당 클러스터에 spinnaker 를 설치한다.
이 1번 클러스터는 DEV 로 활용할 것이다.
2번으로 KOPS로 클러스터를 생성하여 해당 클러스터를 PROD 로 사용할 것이다.
spinnaker는 1번과 2번 클러스터에 모두 접속이 가능해야 한다.
EKS Cluster 를 셋팅하고 연결하였다면 aws cli 를 사용하기 위하여 aws configure 를 하였고,
aws-iam-authenticator 를 설치하여 사용자 토큰을 만들어서 접속을 한다는 것을 알고 있을 것이다.
만약 로컬에서 클러스터 2개가 모두 접속이 가능하고, 역시나 aws cli 가 접근이 가능하다면
클러스터 접속정보는 ~/.kube/config
aws 접속정보는 ~/.aws/credentials 에 저장이 되어있다.
스피니커 안쪽에서 두개를 모두 인식을 하기 위하여 두개의 파일을 docker run 을 할적에 복사해준다.
> mkdir ~/.hal && chmod 747 ~/.hal
> docker run -p 8084:8084 -p 9000:9000 \
--name halyard -d \
-v ~/.hal:/home/spinnaker/.hal \
-v ~/.kube:/home/spinnaker/.kube \
-v ~/.aws/credentials:/home/spinnaker/.aws/credentials \
gcr.io/spinnaker-marketplace/halyard:stable
> docker exec -it halyard bash
> source <(hal --print-bash-completion)
# aws-iam-authenticator 설치
> curl -o aws-iam-authenticator https://amazon-eks.s3-us-west-2.amazonaws.com/1.11.5/2018-12-06/bin/darwin/amd64/aws-iam-authenticator
# 클러스터 정보가 정상적으로 나오는지 확인한다.
# 모든 명령어가 정상적으로 나와야 한다.
> kubectl config view
# eks 에 설치를 할 것이기 때문에 eks 를 바라봐야한다.
> kubectl config current-context
> kubectl get svc
> hal config provider kubernetes enable
# my-k8s-v2-account 는 EKS 를 바라보고, EKS 는 provider-version 이 v1으로 셋팅이 안된다.
> hal config provider kubernetes account add my-k8s-v2-account \
--provider-version v2 \
--context $(kubectl config current-context) \
--kubeconfig-file /home/spinnaker/.kube/config
# k8s.bzdvops.com 은 KOPS 로 만든 클러스터이다. provider-version을 v1으로 셋팅을 하였다.
> hal config provider kubernetes account add my-k8s-v1-account \
--docker-registries ecr-registry\
--context k8s.bzdvops.com
이렇게만 설정을 하면 권한을 가진 serviceaccount 가 없어서 spinnaker 가 deploy를 못하게 된다.
cluster-admin 을 가진 sa 를 만들어서 eks 에 셋팅을 하여준다.
> kubectl create sa clouduser
> kubectl create clusterrolebinding cluster-admin-clouduser \
--clusterrole=cluster-admin \
--serviceaccount=default:clouduser \
--user=clouduser
> TOKEN=$(kubectl describe secret $(kubectl get secrets | grep clouduser | cut -f1 -d ' ') | grep -E '^token' | cut -f2 -d':' | tr -d '\t')
> kubectl config set-credentials $(kubectl config current-context) --token $TOKEN
docker-registry , storage 등을 설정하고,
가장 중요한 어느 클러스터에 배포를 할지 정한다.
여기서 설정한 클러스터에 spinnaker 가 배포될 것이다.
hal config deploy edit --type distributed --account-name my-k8s-v2-account
최종적으로
hal deploy apply
반영하여 준다.