Upgrade to Pro — share decks privately, control downloads, hide ads and more …

はじめての CircleCI × EKS

enta0701
January 25, 2019
570

はじめての CircleCI × EKS

enta0701

January 25, 2019
Tweet

Transcript

  1. CirlceCI AWS の各リソースへの操作は awscli を使用 ... deploy: &deploy <<: *defaults

    docker: - image: circleci/python:3.5 - run: name: Install the AWS CLI command: | sudo pip install --upgrade pip sudo pip install awscli==1.16.89 - run: # build / push - run: # deploy ...
  2. CirlceCI ― Docker イメージ の Build/Push shell script でごりごり。 #

    Docker Login eval $(aws ecr get-login --region ap-northeast-1 --no-include-email) # Docker image # app app=xxxx.dkr.ecr.ap-northeast-1.amazonaws.com/example/app:$CIRCLE_SHA1 docker build -t $app -f .docker/app/Dockerfile . docker push $app # web ...
  3. CirlceCI ― Deploy 1. 必要なコマンドをインストール 2. 対象のクラスタをセット # Install kubectl

    ... # Install aws-iam-authenticator ... # Set cluster aws eks update-kubeconfig --name $AWS_EKS_CLUSTER_NAME kubectl config use-context $AWS_EKS_CLUSTER_ARN
  4. CirlceCI ― Deploy envsubst により、環境変数を設定ファイルの k8s の yaml に埋め込む #

    Deploy sudo apt-get update && sudo apt-get install -y gettext-base k8s_resource_path=./.docker/.k8s for file in $k8s_resource_path/*.yaml; do envsubst < $file | kubectl apply -f - done これで、External IP が発行されればOK ※ k8s の設定ファイルは BananaCI の設定とほとんど同じです
  5. CircleCI Contexts の呼び出し方 work ow の job 呼び出し時に指定する workflows: version:

    2 build_and_deploy: jobs: - deploy-staging: context: example-staging - deploy-production: context: example-production filters: branches: only: - release
  6. Ingress L7 層レベル(http/https のパスベースで負荷分散ができる)で Service を介して、クラスタを外部とつなぐ apiVersion: extensions/v1beta1 kind: Ingress

    metadata: name: example-ingress spec: rules: - http: paths: - path: /* backend: serviceName: example-svc # Service 名 servicePort: 80
  7. RBAC Role-Based Access Control クラスタの操作権限や内部の Kubernetes API の操作ユーザーを限定 alb-ingress-controller は、一般ユーザが容易に触れないほうがいいの

    で、操作を限定したユーザーを作成 https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress- controller/v1.0.0/docs/examples/rbac-role.yaml $ kubectl apply -f alb-rbac-role.yaml