-
Create k8s-controll Instance with image ubuntu
-
Create Role
- Go to iam
- Click role
- CLick add role
- give tag for youre role
- add premission (ec2 full, route53 full, s3 full, iam full, vps full)
- attach role to instance
- go to ec2 dashbord
- select youre instance
- click action
- instance seeting
- Modify IAM role
- select youre role
- click save
- Create route 53
- go to route 53
- click hostedzone
- click hosted zone
- input Domain name
- select youre instance region
- select youre instance vpcid
- click created hosted zone
- ssh to instance and install aws cli
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
apt install -y unzip python
unzip awscliv2.zip
sudo ./aws/install
- install kubectl
curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl
- install kops
curl -LO 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
chmod +x kops-linux-amd64
sudo mv kops-linux-amd64 /usr/local/bin/kops
- config aws cli
aws configure
# AWS Access Key ID [None]:
# AWS Secret Access Key [None]:
# Default region name [None]: us-east-1
# Default output format [None]: json
- create s3 bucket
aws s3api create-bucket \
--bucket k8s-example-store \
--region us-east-1 # <- example region
# Note: We STRONGLY recommend versioning your S3 bucket in case you ever need to revert or recover a previous state store.
OR
aws s3 mb s3://k8s-coffeeshopp-apps
# versioning buccket
aws s3api put-bucket-versioning --bucket k8s-devops-store --versioning-configuration Status=Enabled
- add to .bashrc
vi .bashrc
# copy line below and put on top of .bashrc file
export KOPS_STATE_STORE=s3://k8s-devops-store
export NAME=k8s.example.com
# run this after copy
source .bashrc
- generate ssh password
ssh-keygen
- list availibillity zone
aws ec2 describe-availability-zones
- create cluster with kops
kops create cluster --cloud=aws --zones=us-east-1a --name=$NAME --node-size=t2.medium --master-size=t2.medium --dns-zone=example.com --dns private
# example
# kops create cluster --cloud=aws --zones=us-east-1a --name=$NAME --node-size=t2.medium --master-size=t2.medium --dns-zone=example.com --dns private
- edit configuration
kops edit ig --name=$NAME nodes
kops edit ig --name=$NAME master-us-east-1a
- finish and create cluster
kops update cluster --name $NAME --yes
- check cluster
kops validate cluster --wait 10m
# or
kops validate cluster
- ssh to master node
ssh -i ~/.ssh/id_rsa ubuntu@api.$NAME
- delete cluster
kops delete cluster --name=$NAME --state=$KOPS_STATE_STORE --yes