Foi combinado com a LinuxTips, via email, a publicação deste repositório como uma forma de contribuir com a comunidade e ajudar na atualização do material do curso. O próprio Jefferson Fernando, representante da LinuxTips, começou a divulgação deste repositório junto à comunidade neste grupo no Telegram.
Esta documentação foi gerada durante o estudo do curso Descomplicando Istio da LinuxTips, como uma forma de aprender a usar o Istio e os conceitos de Service mesh.
É recomendado ter um bom domínio sobre orquestração de conteinêres com Docker e Kubernetes antes de começar a estudar o Istio. Os links citados nas referências podem ajudar nisso. Você também pode aprender através dos cursos Descomplicando Docker e Descomplicando Kubernetes.
Para fins de aprendizado, o Kubernetes foi provisionado manualmente em instâncias EC2 utilizando o kubeadm para entender os requisitos de rede, hardware, software e o funcionamento dos componentes do Kubernetes e Istio.
Em ambientes de teste, homologação e produção, que ficam na cloud, é uma boa ideia utilizar serviços gerenciados como: EKS, GKE, AKS, DOKS, entre outros. Em ambientes on-premisses, o k0s e o kubeadm podem ser utilizados.
Em ambientes de desenvolvimento é uma boa ideia utilizar o kind, microk8s, k3d ou minikube. Este repositório de Rafael Peroco cria um cluster Kubernetes utilizando o kind e inicia vários serviços. Ele dá a opção de usar o Service Mesh com o Istio e o Linkerd.
As versões dos softwares utilizados foram:
- Docker: 20.04
- Kubernetes: 1.22.2
- Helm: 3.7.1
- Istio: 1.11.4
Instances:
- type: on-demand (t2.large 2 CPU e 8 GB de memória)
- SO: Ubuntu 20.04 64 bits
- login: ubuntu
- SSH: 22/TCP
- key: teste-aecio-treinamento-istio
ssh -o ServerAliveInterval=30 -i ~/teste-aecio-treinamento-istio.pem ubuntu@master
ssh -o ServerAliveInterval=30 -i ~/teste-aecio-treinamento-istio.pem ubuntu@worker1
ssh -o ServerAliveInterval=30 -i ~/teste-aecio-treinamento-istio.pem ubuntu@worker2
Veja os comandos aqui
Veja os comandos aqui
Veja os comandos aqui
Veja os comandos aqui
Para o Kubernetes e o Istio funcionarem corretamente, foi necessário liberar um conjunto de 40 portas no security group associado as instâncias EC2, citados nos prints do diretório images.
Fonte:
- https://github.com/badtuxx/DescomplicandoKubernetes/blob/main/pt/day_one/descomplicando_kubernetes.md#portas-que-devemos-nos-preocupar
- https://istio.io/latest/docs/ops/deployment/requirements/
- https://github.com/badtuxx/DescomplicandoKubernetes
- https://github.com/badtuxx/DescomplicandoKubernetes/blob/main/pt/day_one/descomplicando_kubernetes.md
- http://blog.aeciopires.com/primeiros-passos-com-docker/
- https://helm.sh/docs/
- https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
- https://istio.io/latest/docs/setup/getting-started/
- https://istio.io/latest/docs/ops/deployment/requirements/
- https://istio.io/latest/docs/setup/install/istioctl/
- https://istio.io/latest/docs/setup/install/helm/
- https://www.alibabacloud.com/blog/kubernetes-configure-liveness-and-readiness-probes_594833
- https://medium.com/sitewards/deploying-on-kubernetes-10-health-checking-a4986e807afe
- https://githubmemory.com/repo/istio/istio/issues/32963
- https://support.sisense.com/kb/en/article/pod-in-crashloopbackoff-state-readinessliveness-probe-failed-get-httppod-ip8082actuatorhealth-dial-tcp-pod-ip8082-connect-connection-refused
- https://forums.rancher.com/t/liveness-probe-failed-connection-refused/20837
- https://discuss.konghq.com/t/container-ingress-controller-failed-liveness-probe/6796
- https://www.udemy.com/course/istio-hands-on-for-kubernetes/
- https://academy.tetrate.io