Подготовка окружения для тестов Istio в minikube
Делаю:
17.07.2022
https://istio.io/docs/setup/getting-started/#download
- Инсталляция MiniKube
Испольновалась версия KUBERNETES_VERSION=v1.22.2
- Инсталляция Kubectl
Устанавливаю istioctl на локальном хосте
$ cd ~/tmp/
$ export LATEST_VERSION=$(curl --silent "https://api.github.com/repos/istio/istio/releases/latest" | grep '"tag_name"' | sed -E 's/.*"([^"]+)".*/\1/')
$ echo ${LATEST_VERSION}
// Если меньше 1.14.1
$ export LATEST_VERSION=1.14.1
$ curl -L https://istio.io/downloadIstio | sh - && chmod +x ./istio-${LATEST_VERSION}/bin/istioctl && sudo mv ./istio-${LATEST_VERSION}/bin/istioctl /usr/local/bin/
$ istioctl version
no running Istio pods in "istio-system"
1.14.1
Установка ресурсов istio на minikube
$ istioctl experimental precheck
✔ No issues found when checking the cluster. Istio is safe to install or upgrade!
// Install Istio using the demo profile
$ istioctl install --skip-confirmation \
--set profile=demo \
--set meshConfig.accessLogFile=/dev/stdout \
--set meshConfig.accessLogEncoding=JSON
$ kubectl -n istio-system wait --timeout=600s --for=condition=available deployment --all
// install Kiali, Jaeger, Prometheus, and Grafana
$ istio_version=$(istioctl version --short --remote=false)
$ echo "Installing integrations for Istio v$istio_version"
$ {
kubectl apply -n istio-system -f https://raw.githubusercontent.com/istio/istio/${istio_version}/samples/addons/kiali.yaml
kubectl apply -n istio-system -f https://raw.githubusercontent.com/istio/istio/${istio_version}/samples/addons/jaeger.yaml
kubectl apply -n istio-system -f https://raw.githubusercontent.com/istio/istio/${istio_version}/samples/addons/prometheus.yaml
kubectl apply -n istio-system -f https://raw.githubusercontent.com/istio/istio/${istio_version}/samples/addons/grafana.yaml
}
$ kubectl -n istio-system wait --timeout=600s --for=condition=available deployment --all
$ kubectl -n istio-system get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
grafana 1/1 1 1 76s
istio-egressgateway 1/1 1 1 5m7s
istio-ingressgateway 1/1 1 1 5m7s
istiod 1/1 1 1 5m21s
jaeger 1/1 1 1 92s
kiali 1/1 1 1 99s
prometheus 1/1 1 1 83s
Запуск сервисов istio (Старый вариант)
UPD. Оказазось istio уже есть среди предустановленных расширений на minikube, и можно просто активироваь.
$ minikube addons --profile istio-lab enable istio
Но чего-то ранее не заработало из коробки на 16.9. Не хочу сейчас пробовать. Поэтому, будем ставить сами.
Дока:
https://istio.io/docs/setup/additional-setup/config-profiles/
$ istioctl profile list
Istio configuration profiles:
default
demo
empty
external
minimal
openshift
preview
remote
// $ istioctl manifest install -y --set profile=demo
$ istioctl manifest install -y --set profile=default
// После выполнения данной команды, **новые** pod будут "проксируемыми". Т.е. старые нужно пересоздать.
$ kubectl label namespace default istio-injection=enabled
$ kubectl get ns --show-labels | grep istio
default Active 12m istio-injection=enabled,kubernetes.io/metadata.name=default
istio-system Active 2m35s kubernetes.io/metadata.name=istio-system
Добавляю Metal LB
Всевозможные проверки
$ watch kubectl -n istio-system get all
// 13
$ kubectl get crds | grep istio | wc -l
13
$ kubectl get pods -n istio-system
NAME READY STATUS RESTARTS AGE
istio-ingressgateway-8dbb57f65-hc5dz 1/1 Running 0 10m
istiod-7859559dd-68rdz 1/1 Running 0 10m
$ kubectl get svc -n istio-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
istio-ingressgateway LoadBalancer 10.106.144.8 192.168.49.20 15021:32220/TCP,80:32270/TCP,443:31357/TCP,15012:30385/TCP,15443:30134/TCP 3m27s
istiod ClusterIP 10.99.91.237 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 3m45s
$ kubectl -n istio-system port-forward svc/grafana 3000
$ kubectl -n istio-system port-forward svc/prometheus 9090
$ kubectl -n istio-system port-forward svc/kiali 20001
Пока непонятно как работать с jaeger
$ kubectl -n istio-system port-forward svc/jaeger-collector 14268
Zipkin и Prometheus Operator
$ cd ~/tmp/istio-1.9.0/samples/addons/extras
$ kubectl apply -n istio-system -f ./
$ kubectl apply -n istio-system -f ./prometheus-operator.yaml
unable to recognize "./prometheus-operator.yaml": no matches for kind "PodMonitor" in version "monitoring.coreos.com/v1"
unable to recognize "./prometheus-operator.yaml": no matches for kind "ServiceMonitor" in version "monitoring.coreos.com/v1"
В общем, нужно еще и добавлять из стандартной установки компоненты, чтобы он понимал, что за ServiceMonitor и PodMonitor.
Пока неактуально.