kubernetes 에 Spinnaker 설치 - TheOpenCloudEngine/uEngine-cloud GitHub Wiki
-- 2018년 12월 기준..
-- 2019년 3월 기준 -> 설정이 조금 변경됨 ( 공식 site 에서는 k8s config 설정하는 부분이 빠져있으나 전체적으론 비슷함 )
사전 설정 정보
( AWS Ec2 기준)
kubernetes 클러스터 노드 t2.medium 4개 (최소임)
AWS IAM 에서 액세스 ID 및 액세스 PW 생성 - 스토리지를 S3를 사용하고, docker-registry를 ECR로 사용하기 위하여 필요함
( docker hub 나 gcr 을 사용하려면 해당 정보가 별도 필요함 )
노드 구성정보
bootstrap node 에서 진행
spinnaker 네임스페이스 생성
kubectl create namespace spinnaker
S3 로 스토리지를 사용하기 위하여 minio 설치
MINIO_ACCESS_KEY=AKIAJ5Z3JLxxxxxxxxx
MINIO_SECRET_KEY=QfvochKlTKYtVaUGva69MjpTxxxxxxxxxx
helm install --namespace spinnaker --name minio --set accessKey=$MINIO_ACCESS_KEY --set secretKey=$MINIO_SECRET_KEY stable/minio
install halyard
mkdir halyard && chmod 747 halyard
mkdir k8s && cp $HOME/.kube/config k8s/config && chmod 755 k8s/config
접속 config 파일을 해당 폴더로 옮겨준다.(Optional)
sftp -i .ssh/id_rsa [email protected]
put /root/.kube/config
exit
cp config k8s/config
쿠버니츠 마스터 노드에서 진행 ( bootstrap 에서 진행해도 상관은 없다 - 그러기 위해서는 config를 복사하는 작업은 제외해도됨 )
pwd 를 하여 방금 생성한 폴더를 확인하여 해당 config 파일을 복사하여 준다
sudo docker run -p 8084:8084 -p 9000:9000 \
--name halyard -d \
-v /home/admin/halyard:/home/spinnaker/.hal \
-v /home/admin/k8s:/home/spinnaker/k8s \
-e KUBECONFIG=/home/spinnaker/k8s/config \
gcr.io/spinnaker-marketplace/halyard:stable
halyard 접속
sudo docker exec -it halyard bash
source <(hal --print-bash-completion)
클러스터 정보를 복사한다
mkdir /home/spinnaker/.kube
cp /home/spinnaker/k8s/config /home/spinnaker/.kube/config
클러스터 정보가 정상적으로 나오는지 확인한다.
kubectl config view
kubectl config current-context
쿠버니츠 클러스터 사용
hal config provider kubernetes enable
hal config provider kubernetes account add kubespinnaker \
--docker-registries ecr-registry\
--context $(kubectl config current-context)
aws ECR 정보 셋팅
REGION=ap-northeast-2
aws ecr get-login --region $REGION
해당 정보로 토큰정보를 저장함
docker-registry 사용
ADDRESS=xxxxx.dkr.ecr.ap-northeast-2.amazonaws.com
hal config provider docker-registry enable
hal config provider docker-registry account add ecr-registry \
--address $ADDRESS \
--username AWS \
--password
hal config features edit --artifacts true
hal config deploy edit --type distributed --account-name kubespinnaker
s3 를 프로비저닝으로 셋팅 안하기 위해서 아래 스크립트 진행
mkdir ~/.hal/default/profiles && \
touch ~/.hal/default/profiles/front50-local.yml
echo 'spinnaker.s3.versioning: false' >> ~/.hal/default/profiles/front50-local.yml
정상적으로 들어갔는지 확인
cat ~/.hal/default/profiles/front50-local.yml
S3 를 스토리지로 지정
MINIO_ACCESS_KEY=AKIAJ5Z3xxxxxxxx
MINIO_SECRET_KEY=QfvochKlTKYtVaUGva69Mxxxxxxxxxxx
echo $MINIO_SECRET_KEY | \
hal config storage s3 edit --endpoint http://minio:9000 \
--access-key-id $MINIO_ACCESS_KEY \
--secret-access-key
hal config storage edit --type s3
hal config version edit --version $(hal version latest -q)
최종 반영 -> pod 와 서비스들이 생성이 된다.
hal deploy apply
spin-deck 과 spin-gate 를 ClusterIp -> LoadBalancer 로 변경한다.
kubectl get svc -n spinnaker
kubectl edit svc spin-deck -n spinnaker
kubectl edit svc spin-gate -n spinnaker
해당 loadbalancer 의 주소로 접속하여 정상 작동 확인(약간 시간이 걸림)
http://a1146eba4097b11e9b7730afd16847e4-2069290173.ap-northeast-2.elb.amazonaws.com:9000/
어플리케이션은 정상작동 안할테니 해당 정보를 변경하여줌 (api를 localhost 를 바라보도록 셋팅이 되어있음)
hal config security ui edit \
--override-base-url "http://a1146eba4097b11e9b7730afd16847e4-2069290173.ap-northeast-2.elb.amazonaws.com:9000"
hal config security api edit \
--override-base-url "http://a12bba840097b11e9b7730afd16847e4-524359955.ap-northeast-2.elb.amazonaws.com:8084"
hal deploy apply