Команды ниже выполняются в PowerShell из корня проекта JenkinsDemo.
Откройте PowerShell от имени администратора и проверьте состояние Hyper-V:
Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-AllЕсли Hyper-V отключён, включите его и перезагрузите Windows:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All -All -NoRestart
Restart-ComputerПосле перезагрузки снова откройте PowerShell от имени администратора.
Посмотрите список доступных виртуальных коммутаторов:
Get-VMSwitchОбычно подходит встроенный коммутатор Default Switch:
$SwitchName = "Default Switch"
Get-VMSwitch -Name $SwitchNameЕсли Default Switch отсутствует, посмотрите имена активных сетевых адаптеров:
Get-NetAdapter | Where-Object Status -eq "Up"Затем создайте внешний коммутатор, указав имя нужного сетевого адаптера:
New-VMSwitch -Name "MinikubeExternal" -NetAdapterName "ИМЯ_СЕТЕВОГО_АДАПТЕРА" -AllowManagementOS $true
$SwitchName = "MinikubeExternal"kubectl и Minikube уже должны быть установлены. Docker нужен для сборки локальных образов:
kubectl version --client
minikube version
docker versiondocker build -t customer-service:latest .\customer-service
docker build -t order-service:latest .\order-serviceminikube start --driver=hyperv --hyperv-virtual-switch="$SwitchName" --memory=6000mПроверьте состояние кластера:
minikube status
kubectl cluster-infominikube image load customer-service:latest
minikube image load order-service:latestПроверьте, что образы появились внутри Minikube:
minikube image ls | Select-String "customer-service|order-service"Проверка ingress
kubectl get svc -n ingress-nginxУстановка Ingress если на предыдущем шаге получили пустоту
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.10.1/deploy/static/provider/cloud/deploy.yamlВключение ingress в minikube
minikube addons enable ingressДождитесь готовности Ingress-контроллера:
kubectl wait --namespace ingress-nginx --for=condition=Ready pod --selector=app.kubernetes.io/component=controller --timeout=180s
kubectl get pods,svc --namespace ingress-nginxПроверьте, установлен ли Helm:
helm versionЕсли команда не найдена, установите Helm через WinGet:
winget install --exact --id Helm.Helm --accept-source-agreements --accept-package-agreementsЛибо по инструкции https://helm.sh/docs/intro/install/
После установки откройте новое окно PowerShell и снова перейдите в корень проекта JenkinsDemo.
Команда загрузит зависимости, включая PostgreSQL:
helm dependency update .\my-microservices-apphelm install myapp .\my-microservices-appkubectl get pods
kubectl get svc
kubectl get ingressДождитесь, пока все поды перейдут в состояние Running и будут готовы:
kubectl get pods --watchДля выхода из режима наблюдения нажмите Ctrl+C.
Чтобы посмотреть логи конкретного пода:
$PodName = "ИМЯ_ПОДА"
kubectl logs -f $PodNameОткройте values.yaml и измените replicaCount у нужного сервиса:
notepad.exe .\my-microservices-app\values.yamlПримените изменения:
helm upgrade myapp .\my-microservices-app -f .\my-microservices-app\values.yamlПосмотрите текущий релиз и историю его ревизий:
helm list
helm history myapp$MinikubeIp = (minikube ip).Trim()
$MinikubeIp
kubectl get nodes -o wideОткройте файл hosts от имени администратора:
Start-Process notepad.exe -Verb RunAs -ArgumentList "$env:SystemRoot\System32\drivers\etc\hosts"Добавьте в конец файла две строки, заменив MINIKUBE_IP значением переменной $MinikubeIp из предыдущего шага:
MINIKUBE_IP customer.myapp.local
MINIKUBE_IP order.myapp.local
Например:
192.168.137.10 customer.myapp.local
192.168.137.10 order.myapp.local
Сохраните файл и очистите DNS-кеш Windows:
Clear-DnsClientCachecurl.exe http://order.myapp.local/orders
curl.exe http://order.myapp.local/actuator/health
curl.exe http://customer.myapp.local/customers
curl.exe http://customer.myapp.local/actuator/healthСм. файл README.md.
minikube delete --all --purge