Беслпатное облако Google для запуска примеров с kubernetes в minikube
Делаю:
2024.03.30
Нужно иметь гуглопочту. Почти у всех есть.
Если 15-20 минут ничего не делать. Виртуалка удаляется. Под домашний каталог дается что-то около 5GB. Эти данные остаются и не удаляются при удалении виртуалки.
4 ядра. 16 GB озу.
То, что перестартовывается, возможно, что даже и к лучшему.
Подключение к бесплатному облаку от Google
Подключиться по https
https://shell.cloud.google.com/
Подключиться по ssh
Инструкция:
https://cloud.google.com/sdk/docs/install
Инсталлим google-cloud-sdk
$ cd ~/tmp
$ curl -O https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-cli-470.0.0-linux-x86_64.tar.gz
$ tar -zxvf google-cloud-cli-470.0.0-linux-x86_64.tar.gz
$ cd google-cloud-sdk/
$ ./install.sh
$ source ~/.bashrc
Делаю:
2024.04.06
$ gcloud auth login
$ gcloud cloud-shell ssh
// В debug режиме
// $ gcloud cloud-shell ssh --ssh-flag="-vvv"
P.S.
-
Виртуальную машинку можно рестартовать и откатить в начальное состояние в UI
-
При необходимости, удалить google ключи из каталога ~/.ssh/
Получить доступ к сервису HTTP, запущенному в бесплатном облаке google
В веб консоли есть возможность открыть порт, но только для себя. Т.е. удаленные клиенты не смогут подключиться.
Вверху preview on port 8080
Получить доступ к сервису HTTP, запущенному в бесплатном облаке google с помощью ngrok
Нужно зарегаться
https://ngrok.com/download
$ cd ~/tmp
$ wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
$ unzip ngrok-stable-linux-amd64.zip
$ ./ngrok authtoken <YOUR_TOKEN>
$ cd ~/tmp
$ ./ngrok http 8080
// Пример
$ kubectl --namespace logging port-forward deployment/kibana-kibana 8080:5601
Получить доступ к сервису HTTP, запущенному в бесплатном облаке google с помощью ngrok и с использованием Ingress
Пример из ранее подготовленного примера.
$ kubectl --namespace logging get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
elasticsearch-master ClusterIP 10.106.92.197 <none> 9200/TCP,9300/TCP 4m55s
elasticsearch-master-headless ClusterIP None <none> 9200/TCP,9300/TCP 4m55s
fluentd-aggregator ClusterIP 10.108.30.236 <none> 9880/TCP,24224/TCP 3m42s
fluentd-forwarder ClusterIP 10.97.175.200 <none> 9880/TCP 3m42s
fluentd-headless ClusterIP None <none> 9880/TCP,24224/TCP 3m42s
kibana-kibana ClusterIP 10.105.41.51 <none> 5601/TCP 4m14s
Публикация сервиса kibana-kibana в неймспейсе logging, чтобы к нему можно было обращаться из ingress
$ cat << 'EOF' | kubectl apply -f -
kind: Service
apiVersion: v1
metadata:
name: kibana-service
spec:
type: ExternalName
externalName: kibana-kibana.logging.svc.cluster.local
EOF
$ export INGRESS_HOST=$(minikube --profile ${PROFILE} ip)
$ echo ${INGRESS_HOST}
kibana-ingress
$ cat << EOF | kubectl apply -f -
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/default-backend: ingress-nginx-controller
kubernetes.io/ingress.class: nginx
## tells ingress to check for regex in the config file
nginx.ingress.kubernetes.io/use-regex: "true"
name: kibana-ingress
spec:
rules:
- host: ${INGRESS_HOST}.nip.io
http:
paths:
- pathType: Prefix
path: /
backend:
service:
name: kibana-service
port:
number: 5601
EOF
$ kubectl get ingress
NAME CLASS HOSTS ADDRESS PORTS AGE
kibana-ingress <none> 192.168.49.2.nip.io 80 5s
// OK!
$ curl -I ${INGRESS_HOST}.nip.io
// Удалить, если не нужен
// $ kubectl delete inggress kibana-ingress
$ ./ngrok http ${INGRESS_HOST}.nip.io:80 --host-header=${INGRESS_HOST}.nip.io
// OK!
http://60ff-34-147-0-94.ngrok.io