sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates gnupg curl -y
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/cloud.google.gpg
echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
sudo apt-get update && sudo apt-get install google-cloud-cli
sudo apt-get install google-cloud-cli-gke-gcloud-auth-plugin
gcloud init
gcloud auth login
# list compute engine
gcloud compute instances list
curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.30.0/2024-05-12/bin/linux/amd64/kubectl
chmod +x ./kubectl
mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$HOME/bin:$PATH
echo 'export PATH=$HOME/bin:$PATH' >> ~/.bashrc
kubectl version
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
# Install docker engine
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
sudo docker ps
- Pull docker images
sudo docker pull hoangbuii2711/natours-frontend
sudo docker pull hoangbuii2711/natours-backend
- Label the Nodes
kubectl label node <frontend-node-name> role=frontend
kubectl label node <backend-node-name> role=backend
- Create namespace
kubectl create namespace frontend
kubectl create namespace backend
- Apply service and get ipaddress
kubectl apply -f frontend-service.yaml
kubectl apply -f backend-service.yaml
- Modify in envfile
- Create secret
kubectl create secret generic the-last-straw-frontend-env --from-env-file=frontend.env -n frontend
kubectl create secret generic the-last-straw-backend-env --from-env-file=backend.env -n backend
- Apply Deployment
kubectl apply -f frontend-deployment.yaml
kubectl apply -f backend-deployment.yaml
- Install metric Server
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
- Apply HPA
kubectl apply -f hpa.yaml
- create VM
- Install gitlab runner
curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo bash
sudo apt-get install gitlab-runner
- Setup user
sudo visudo
add gitlab-runner ALL=(ALL) NOPASSWD:ALL
after root user
sudo su - gitlab-runner
- Docker
- Google cloud
- Kubernetes
- NodeJS
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo bash -
sudo apt-get install -y nodejs
node -v
npm -v
- Follow gitlab runnner setup instruction
- Run gitlab runner
gitlab-runner run
- Create staging namespace
kubectl create namespace frontend
kubectl create namespace backend
aws eks update-kubeconfig --region ap-southeast-1 --name the-last-straw-cluster
psql "postgresql://postgres:postgres@terraform-20240720032754650300000001.cb6ge2e4gfe1.ap-southeast-1.rds.amazonaws.com:5432/postgres"
sudo dpkg -i ./containerd.io_1.7.19-1_amd64.deb
./docker-ce-cli_27.1.1-1ubuntu.22.04jammy_amd64.deb
./docker-ce_27.1.1-1ubuntu.22.04jammy_amd64.deb
./docker-buildx-plugin_0.16.1-1ubuntu.22.04jammy_amd64.deb
./docker-compose-plugin_2.29.1-1ubuntu.22.04jammy_amd64.deb