Preparations
gcloud ini
gcloud config set accessibility/screen_reader false
gcloud auth list
gcloud config list project
gcloud config set compute/region europe-north1
gcloud config set compute/zone europe-north1-c
gcloud config set project spry-analyzer-xxxxxx
34.88.xx.xx
172.21.xx.xx
DB: hub2_2dz_fi_nextcloud
u: hub2_2dz_fi_nextcloud
p: (StrongPass)
Docker
Remote
Docker Hub
Unauthenticated
Create, check
gcloud artifacts repositories create nc-docker-local \
--repository-format=docker \
--mode=standard-repository \
--location=europe-north1
gcloud artifacts repositories list
Get URL for repository
gcloud artifacts repositories describe nc-docker-local --location=europe-north1
Make local tmp dir, clone repo
mkdir delme11
cd delme11/docker
git clone https://github.com/nextcloud/docker.git
Copy templates
cp .examples/dockerfiles/full/apache/Dockerfile .
cp .examples/dockerfiles/full/apache/supervisord.conf .
cp .examples/docker-compose/insecure/mariadb/apache/db.env .
Provide ecredentials
vi db.env
cp .examples/docker-compose/insecure/mariadb/apache/docker-compose.yml .
vi docker-compose.yml
Build application, tag it and push it to repository
docker build -t europe-north1-docker.pkg.dev/spry-analyzer-xxxxxx/nc-docker-local/nc-docker-app:v1 .
docker images
Give permissions. Get project iD number.
gcloud projects list
853xxxxxxx034
gcloud artifacts repositories add-iam-policy-binding nc-docker-local \
--location=europe-north1 \
--member=serviceAccount:853xxxxxxx34-compute@developer.gserviceaccount.com \
--role="roles/artifactregistry.reader"
gcloud artifacts repositories add-iam-policy-binding nc-docker-local \
--location=europe-north1 \
--member=serviceAccount:853xxxxxxx34-compute@developer.gserviceaccount.com \
--role="roles/artifactregistry.writer"
Issue:
ERROR: (gcloud.artifacts.repositories.add-iam-policy-binding) PERMISSION_DENIED: The caller does not have permission
Run docker locally (will be exposed to 8080)
docker run --rm -p 8080:80 europe-north1-docker.pkg.dev/spry-analyzer-xxxxxx/nc-docker-local/nc-docker-app:v1
Pushing docker image into Artifact Registry
gcloud auth configure-docker europe-north1-docker.pkg.dev
docker push europe-north1-docker.pkg.dev/spry-analyzer-xxxxxx/nc-docker-local/nc-docker-app:v1
List content of repostiory
gcloud artifacts files list --location=europe-north1 --project=spry-analyzer-xxxxxx --repository=nc-docker-local
Create a GKE cluster
gcloud components install kubectl
gcloud container clusters create --machine-type=e2-micro --zone=europe-north1-c twodz-nc-demo
gcloud container clusters list
Get authentication credentials for the cluster (in order to manage it)
gcloud container clusters get-credentials twodz-nc-demo --zone=europe-north1-c
kubectl cluster-info
Deploy an application to the cluster
kubectl create deployment nc-demo-app --image=europe-north1-docker.pkg.dev/spry-analyzer-xxxxxx/nc-docker-local/nc-docker-app:v3
kubectl get deployments
kubectl scale deployment nc-demo-app --replicas=1
kubectl autoscale deployment nc-demo-app --cpu-percent=80 --min=1 --max=1
kubectl get pods --output=wide
kubectl exec --stdin --tty nc-demo-app-54dc479f5-crvhx -- /bin/bash
kubectl expose deployment nc-demo-app --name=nc-demo-app-service --type=LoadBalancer --port 80 --target-port 80
# wait for external IP be assigned from '<pending> state'
kubectl get services --output=wide
firefox http://[EXTERNAL-IP]:80
kubectl delete deployment nc-demo-app
gcloud container clusters delete twodz-nc-demo --zone=europe-north1-c
docker rmi -f 0fa923cc879e
Issue:
Memory limit of 512 MiB exceeded with 512 MiB used. Consider increasing the memory limit, see https://cloud.google.com/run/docs/configuring/memory-limits
Solution: increase RAM size.
Create Volume in Cloud Storage (Bucket).
troubleshooting
kubectl get pods --output=wide
kubectl exec --stdin --tty nc-demo-app-54dc479f5-crvhx -- /bin/bash
apt update
apt install net-tools
netstat -ntap