Skip to content

Instantly share code, notes, and snippets.

@vfarcic
Last active August 5, 2018 19:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vfarcic/49bccadae317379bef6f81b4e5985f84 to your computer and use it in GitHub Desktop.
Save vfarcic/49bccadae317379bef6f81b4e5985f84 to your computer and use it in GitHub Desktop.
cd k8s-specs
git pull
export AWS_ACCESS_KEY_ID=[...]
export AWS_SECRET_ACCESS_KEY=[...]
aws --version
export AWS_DEFAULT_REGION=us-east-2
aws iam create-group \
--group-name kops
aws iam attach-group-policy \
--policy-arn arn:aws:iam::aws:policy/AmazonEC2FullAccess \
--group-name kops
aws iam attach-group-policy \
--policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess \
--group-name kops
aws iam attach-group-policy \
--policy-arn arn:aws:iam::aws:policy/AmazonVPCFullAccess \
--group-name kops
aws iam attach-group-policy \
--policy-arn arn:aws:iam::aws:policy/IAMFullAccess \
--group-name kops
aws iam create-user \
--user-name kops
aws iam add-user-to-group \
--user-name kops \
--group-name kops
aws iam create-access-key \
--user-name kops >kops-creds
cat kops-creds
export AWS_ACCESS_KEY_ID=$(\
cat kops-creds | jq -r \
'.AccessKey.AccessKeyId')
export AWS_SECRET_ACCESS_KEY=$(
cat kops-creds | jq -r \
'.AccessKey.SecretAccessKey')
aws ec2 describe-availability-zones \
--region $AWS_DEFAULT_REGION
export ZONES=$(aws ec2 \
describe-availability-zones \
--region $AWS_DEFAULT_REGION \
| jq -r \
'.AvailabilityZones[].ZoneName' \
| tr '\n' ',' | tr -d ' ')
ZONES=${ZONES%?}
echo $ZONES
mkdir -p cluster
cd cluster
aws ec2 create-key-pair \
--key-name devops23 \
| jq -r '.KeyMaterial' \
>devops23.pem
chmod 400 devops23.pem
ssh-keygen -y -f devops23.pem \
>devops23.pub
export NAME=devops23.k8s.local
export BUCKET_NAME=devops23-$(date +%s)
aws s3api create-bucket \
--bucket $BUCKET_NAME \
--create-bucket-configuration \
LocationConstraint=$AWS_DEFAULT_REGION
export KOPS_STATE_STORE=s3://$BUCKET_NAME
# MacOS only
brew update && brew install kops
# MacOS only
curl -Lo kops https://github.com/kubernetes/kops/releases/download/$(curl -s https://api.github.com/repos/kubernetes/kops/releases/latest | grep tag_name | cut -d '"' -f 4)/kops-darwin-amd64
# MacOS only
chmod +x ./kops
# MacOS only
sudo mv ./kops /usr/local/bin/
# Linux only
wget -O kops https://github.com/kubernetes/kops/releases/download/$(curl -s https://api.github.com/repos/kubernetes/kops/releases/latest | grep tag_name | cut -d '"' -f 4)/kops-linux-amd64
# Linux only
chmod +x ./kops
# Linux only
sudo mv ./kops /usr/local/bin/
# Windows only
mkdir config
# Windows only
alias kops="docker run -it --rm \
-v $PWD/devops23.pub:/devops23.pub \
-v $PWD/config:/config \
-e KUBECONFIG=/config/kubecfg.yaml \
-e NAME=$NAME -e ZONES=$ZONES \
-e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \
-e AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY \
-e KOPS_STATE_STORE=$KOPS_STATE_STORE \
vfarcic/kops"
kops create cluster \
--name $NAME \
--master-count 3 \
--node-count 1 \
--node-size t2.small \
--master-size t2.small \
--zones $ZONES \
--master-zones $ZONES \
--ssh-public-key devops23.pub \
--networking kubenet \
--authorization RBAC \
--yes
# Windows only
kops export kubecfg --name ${NAME}
# Windows only
export KUBECONFIG=$PWD/config/kubecfg.yaml
kops get cluster
kubectl cluster-info
kops validate cluster
kubectl create \
-f https://raw.githubusercontent.com/kubernetes/kops/master/addons/ingress-nginx/v1.6.0.yaml
kubectl -n kube-ingress \
rollout status \
deployment ingress-nginx
echo "export AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID
export AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY
export AWS_DEFAULT_REGION=$AWS_DEFAULT_REGION
export ZONES=$ZONES
export NAME=$NAME" \
>kops
kops delete cluster \
--name $NAME \
--yes
aws s3api delete-bucket \
--bucket $BUCKET_NAME
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment