É de conhecimento público que o modelo de cloud hybrid/multi-cloud é escolhido pela maioria das organizações para executar suas workloads. Em outras palavras, as organizações não estão mais restritas a utilizar ou alocar suas apps/workloads exclusivamente em uma única cloud, seja pública ou privada. Em vez disso, estão optando por uma abordagem que envolve a combinação de cloud privadas e públicas, ou até mesmo o uso de várias cloud públicas. Isso se tornou uma estratégia para evitar o “vendor lock-in”, estar compliance com regulamentações locais e aproveitar o melhor de ambos os mundos…
No entanto, isso acaba introduzindo complexidade, pois não é nada fácil gerenciar uma infraestrutura híbrida/multi-cloud sem as ferramentas adequadas para auxiliar na gestão agnóstica, garantindo a homogeneidade de políticas e configurações, seja em segurança, governança, ou para simplificar a eficiência operacional.
Tanzu Mission Control
TMC é uma plataforma, solução de gerenciamento de clusters Kubernetes multi-cloud disponível nos modelos self-managed e SaaS. Ela possibilita operações “Day 1” e “Day 2” em ambientes Kubernetes, seja em serviços gerenciados de Kubernetes, como AKS, GKE e EKS, ou em soluções self managed/on-prem, como Tanzu TKG, OpenShift e mais….
O TMC oferece “Single pane of glass” (único painel de controle), que permite a gestão centralizada e unificada por meio de uma única interface. Isso inclui a criação de clusters, o controle de acesso, a aplicação de políticas e deploy de apps, tudo isso sem a complexidade usual associada a essas operações.
In a nutshell, TMC simplifica significativamente a administração e a governança de ambientes Kubernetes em várias clouds e ambientes, proporcionando consistência e eficiência operacional.
Criação de TKG cluster usando TMC
Abrir a consola do TMC, em (Clusters) click ADD Cluster -> Create Tanzu Kubernetes Grid cluster
Este é um ambiente demo correndo vSphere with Tanzu, portanto nesse caso já tem o management cluster. Selecionar e clicar CONTINUE to CREATE CLUSTER
preencher o provisioner, NEXT
Atribuir nome ao cluster
configuração de Proxy, Network settings default, storage class vsphere-with-tanzu-storage-policy, NEXT
Control Plane
Na configuração de CP, por ser ambiente de teste,e não requer muito horse power e HA, vou selecionar Single node cluster.
Kubernetes version: v1.24.9+vmware.1-tkg.4
OS version: photon 3 amd64
Instance type: best-effort-default-small
Storage class: vsphere-with-tanzu-storage-policy
configuração default volumes é opcional
Configure node pool
Configurar 1 node pool com 2 worker nodes. preencher o nome.
Worker count: 2
Instance type: best-effort-default-small (2vcPU, 4GB RAM)
Opcionalmente, você pode realizar configurações adicionais no registro do cluster, configurar o protocolo NTP, gerenciar certificados, adicionar SSH Keys, entre outras personalizações.
Create Clsuter
E em 5…7 minutos o cluster é criado
Do lado do Vcenter
Access Cluster
no cluster, clicar em Actions -> Access this cluster
Download kubeconfig for tmc CLI
Abrir CLI e executar
kubectl –kubeconfig=<path/to>/kubeconfig-virtualclusterit-tanzu.yml get namespaces
exemplo:
kubectl –kubeconfig=C:\Tanzu\kubeconfig-virtualclusterit-tanzu.yml get no
Deploy Workload
via CLI (fb app)
git clone https://github.com/manuh-L/facebooc.git; git checkout multistage
kubectl –kubeconfig=C:\Tanzu\/kubeconfig-virtualclusterit-tanzu.yml create namespace fb
kubectl –kubeconfig=C:\Tanzu\/kubeconfig-virtualclusterit-tanzu.yml apply -f C:\Tanzu\facebooc\k8s\fb.yml -n fb
kubectl –kubeconfig=C:\Tanzu\/kubeconfig-virtualclusterit-tanzu.yml apply -f C:\Tanzu\facebooc\k8s\fb-svc.yml -n fb
kubectl –kubeconfig=C:\Tanzu\/kubeconfig-virtualclusterit-tanzu.yml get svc -n fb
App live
via Kubeapps (Helm)
nota: nao config o kubecconfig globamente como variavel por ter muitos cluster
kubectl –kubeconfig=C:\Tanzu\/kubeconfig-virtualclusterit-tanzu.yml create clusterrolebinding tkgs-admin-privileged-binding –clusterrole=psp:vmware-system-privileged –group=system:authenticated
kubectl –kubeconfig=C:\Tanzu\/kubeconfig-virtualclusterit-tanzu.yml create clusterrolebinding tkgs-admin-privileged-binding –clusterrole=psp:vmware-system-privileged –group=system:authenticated
helm –kubeconfig=C:\Tanzu\/kubeconfig-virtualclusterit-tanzu.yml repo add bitnami https://charts.bitnami.com/bitnami
kubectl –kubeconfig=C:\Tanzu\/kubeconfig-virtualclusterit-tanzu.yml create namespace kubeapps
helm –kubeconfig=C:\Tanzu\/kubeconfig-virtualclusterit-tanzu.yml install kubeapps –namespace kubeapps bitnami/kubeapps –set useHelm3=true –set frontend.service.type=LoadBalancer
kubeapps-operator-token.yml
kubeapps-operator-token.yml
apiVersion: v1
kind: Secret
metadata:
name: kubeapps-operator-token
namespace: default
annotations:
kubernetes.io/service-account.name: kubeapps-operator
type: kubernetes.io/service-account-token
kubectl –kubeconfig=C:\Tanzu\/kubeconfig-virtualclusterit-tanzu.yml apply -f C:\Tanzu\kubeapps-operator-token.yml 2>&1>$null
kubectl –kubeconfig=C:\Tanzu\/kubeconfig-virtualclusterit-tanzu.yml get –namespace default secret kubeapps-operator-token -o jsonpath='{.data.token}’)
copiar API token kubeapps e guardar
kubectl –kubeconfig=C:\Tanzu\/kubeconfig-virtualclusterit-tanzu.yml get svc -n kubeapps
copiar o external ip do service kubeapps
Abir browser: http://10.54.4.34/
e para logar, introduzir o token da API
Catalog de apps
selecionar o package, vou testar o apache
depois de selecionar o helm chart package clique em DEPLOY
Inserir o nome
Essa janela permite editar de forma visual ou por meio das linhas do manifesto YAML, vários atributos do deployment, como o número de réplicas, auto scale, configmaps, portas, entre outros. Isso proporciona flexibilidade para ajustar as configurações do seu app conforme necessário.
Clicar em Deploy, e em 1 min temos o apache instalado.
Copiar a URL de acesso e abir no browser: http://10.54.4.35