Membangun Aplikasi Microservices (Aplikasi Keranjang Belanja - Polyglot untuk Layanan) Menggunakan Kubernetes + iStio dengan bagian ekosistemnya.
Disclamation
- Harus memiliki variabel lingkungan
MINIKUBE_HOMEdi mesin Anda, dan nilai harus ditunjuk keC:users<your name>- Harus menjalankan skrip PowerShell untuk membuat mesin
minikubedi driveC:- Jika itu melemparkan pengecualian bahwa itu tidak dapat menemukan mesin
minikubedi Hyper-V jadi cukup hapus semua yang ada di folder<user>/.minikube, tetapi kami dapat menyimpan foldercacheuntuk menghindari mengunduh semuanya dari awal, kemudian menjalankannya selanjutnya.
Menggunakan minikube untuk Windows di proyek ini, tetapi Anda dapat menggunakan versi Mac atau Linux juga
Unduh paket Minikube Anda yang sesuai di https://github.com/kubernetes/minikube/releases (digunakan v0.25.2 untuk proyek ini)
Instal ke mesin Anda (Windows 10 dalam kasus ini)
Setelah menginstal minikube , lalu jalankan
Hyper-V
> minikube start --kubernetes-version="v1.9.0" --vm-driver=hyperv --hyperv-virtual-switch="minikube_switch" --cpus=4 --memory=4096 --v=999 --alsologtostderr
Kemudian mulailah dengan opsi penuh
> minikube start --extra-config=apiserver.Features.EnableSwaggerUI=true,apiserver.Authorization.Mode=RBAC,apiserver.Admission.PluginNames=NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota --v=999 --alsologtostderr
VirtualBox v5.2.8
> minikube start --vm-driver="virtualbox" --kubernetes-version="v1.10.0" --cpus=4 --memory 4096 --extra-config=apiserver.authorization-mode=RBAC,apiserver.Features.EnableSwaggerUI=true,apiserver.Admission.PluginNames=NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota --v=7 --alsologtostderr
Unduh paket ISTIO yang sesuai di https://github.com/istio/istio/releases
Upzip ke dalam disk Anda, mari katakan D:istio
cd ke D:istio , lalu jalankan
> kubectl create -f install/kubernetes/istio.yaml
or
> kubectl create -f install/kubernetes/istio-auth.yaml

Catatan: Set istiobinistioctl.exe ke PATH jendela.
> kubectl apply -f https://getambassador.io/yaml/ambassador/ambassador-rbac.yaml
> kubectl apply -f https://getambassador.io/yaml/ambassador/ambassador-no-rbac.yaml
> cd k8s
> istioctl kube-inject -f istio-shopping-cart.yaml | kubectl apply -f -
> kubectl apply -f ambassador-service.yaml
Catatan: Untuk beberapa alasan, saya tidak bisa menjalankan mode No-RBAC pada pengembangan lokal saya.
> minikube dashboard

> kubectl get svc -n istio-system
> export GATEWAY_URL=$(kubectl get po -l istio-ingress -n istio-system -o jsonpath='{.items[0].status.hostIP}'):$(kubectl get svc istio-ingress -n istio-system -o jsonpath='{.spec.ports[0].nodePort}')
> curl $GETWAY_URL
> choco install kubernetes-helm
> cd <git repo>
> helm init
> helm repo update
> helm version
> helm install --name my-rabbitmq --set rbacEnabled=false stable/rabbitmq
Sekarang kita dapat menggunakan amqp://my-rabbitmq.default.svc.cluster.local:5672 pada kluster Kubernetes, tetapi bagaimana jika kita ingin memanfaatkannya untuk pengembangan lokal. Solusinya adalah port-forward It to localhost kami sebagai
> kubectl get pods | grep rabbitmq | awk '{print $1;}'
> kubectl port-forward <pod name just got> 15672
Atau port-forward 5672 pada kubernetes (protokol AMQP) ke localhost: 5672
> kubectl port-forward <pod name just got> 1234:5672
Sekarang kita punya
> amqp://root:[email protected]:1234
> helm install --name my-redis stable/redis
> minikube docker-env
> @FOR /f "tokens=*" %i IN ('minikube docker-env') DO @%i
Mulai sekarang, kita dapat mengetik docker images untuk mencantumkan semua gambar di simpul lokal Kubernetes.
> powershell -f build-all.ps1
> cd k8s
> kubectl apply -f shopping-cart.yaml

> cd k8s
> istioctl kube-inject -f shopping-cart.yaml | kubectl apply -f -
Dalam Deployment

Di setiap Pod

> minikube ip
> kubectl get svc ambassador -o jsonpath='{.spec.ports[0].nodePort}'
Akhirnya, buka browser dengan <IP>:<PORT>
Layanan Mikro
www.<IP>.xip.io:<PORT>/c/swagger/ . Misalnya, http://www.192.168.1.6.xip.io:32097/c/swagger/www.<IP>.xip.io:<PORT>/s/www.<IP>.xip.io:<PORT>/id/account/login atau www.<IP>.xip.io:<PORT>/id/.well-known/openid-configurationwww.<IP>.xip.io:<PORT>/e/ > powershell -f build-all.ps1
> kubectl delete -f shopping-cart.yaml
> kubectl apply -f shopping-cart.yaml
> cd istioinstallkubernetesaddons
> kubectl apply -f prometheus.yaml
> cd istioinstallkubernetesaddons
> kubectl apply -f grafana.yaml
> kubectl -n istio-system port-forward $(kubectl -n istio-system get pod -l app=grafana -o jsonpath='{.items[0].metadata.name}') 3000:3000 &
> curl http://localhost:3000

Todo
Todo
> kubectl apply -f "https://cloud.weave.works/k8s/scope.yaml?k8s-version=v1.9.0"
port-forward keluar sebagai berikut > kubectl get -n weave pod --selector=weave-scope-component=app -o jsonpath='{.items..metadata.name}'
> kubectl port-forward -n <weave scope name> 4040
http://localhost:4040 > kubectl get pods
> kubectl exec <pod name> env
Katakanlah kita memiliki profil bernama minikube19 , lalu ketik saja perintah seperti di bawah ini
> kubectl config use-context minikube19
Switched to context "minikube19".
> minikube config set profile minikube19
ssh ke mesin itu, lalu sudo apt-get install docker.iokubectl > apt-get update && apt-get install -y apt-transport-https
> curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
> cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb http://apt.kubernetes.io/ kubernetes-xenial main
EOF
> apt-get update
> apt-get install -y kubectl
minikube > curl -Lo minikube https://storage.googleapis.com/minikube/releases/v0.27.0/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
> alias k='kubectl'
> alias mk='/usr/local/bin/minikube'
> minikube start --vm-driver="virtualbox" --kubernetes-version="v1.9.0" --cpus=4 --memory 4096 --extra-config=apiserver.authorization-mode=RBAC --v=7 --alsologtostderr
> sysctl net.ipv4.ip_forward=1
> iptables -t nat -A PREROUTING -p tcp -d <VM IP> --dport 30000 -j DNAT --to-destination 192.168.99.100:30000
> iptables -t nat -A POSTROUTING -j MASQUERADE
> sudo iptables -t nat -v -x -n -L
> sudo dhclient eth0 -v
Instal samba di Ubuntu VM
socat di server Ubuntu
> sudo apt-get install socat
> socat -v tcp-listen:30000,fork tcp:192.168.99.100:30000
> wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
> unzip ngrok-stable-linux-amd64.zip
> mk dashboard --url
> ./ngrok http 192.168.99.100:30000 -region ap
> sudo iptables -I INPUT -p tcp --dport 2375 -j ACCEPT
or
> sudo ufw allow 2375
then
> nc -l 2375