Este repositório documenta um pipeline hello world para teste do Kubeflow. Executando-se o script main.py, gera-se uma especificação de pipeline pipeline.yaml, que pode ser enviada para um backend de Kubeflow e executada nele em uma run.
O pipeline de exemplo é composto por um único componente say_hello(name), que, munido de uma string name, imprime a string Hello, <name>!, conforme a implementação abaixo.
@dsl.component
def say_hello(name: str) -> str:
hello_text = f'Hello, {name}!'
print(hello_text)
return hello_textInstale o minikube
curl -LO https://github.com/kubernetes/minikube/releases/latest/download/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube && rm minikube-linux-amd64Inicie o minikube, especificando quantidades de memória e CPUs suficientes para processar o pipeline.
minikube start --memory=4096 --cpus=4Veifique se ele esta rodando mesmo com o seguinte comando
minikube statusEle deve retornar algo como:
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: ConfiguredNós queremos acessar a dashboard para termos um controle melhor sobre nossos pods
Verificar se o dashboard esta ativo
minikube addons listEle retorna uma lista com as funcionalidades do minikube. Tente achar algo relacionado ao Dashboard, provavelmente ele não esta habilitado
rode este comando para habilitar
minikube addons enable dashboard agora rode este para acessar
minikube dashboard Vai gerar um link. Entre neste link, ele vai abrir um dashboard na web que você pode controlar seus clusters e namespaces e verificar a saúde dos seus pods.
Para criar o namespace precisamos abrir outro terminal e entrar na documentação do KubeFlow. Kubeflow Documentation
Vamos primeiro copiar e colar está linha no terminal
export PIPELINE_VERSION=2.14.3depois rodamos estes comandos
kubectl apply -k "github.com/kubeflow/pipelines/manifests/kustomize/cluster-scoped-resources?ref=$PIPELINE_VERSION"
kubectl wait --for condition=established --timeout=60s crd/applications.app.k8s.io
kubectl apply -k "github.com/kubeflow/pipelines/manifests/kustomize/env/dev?ref=$PIPELINE_VERSION"Agora vamos no dashboard criado anteriormente e verificar se apareceu um namespace chamado kubeflow
[imagem]
Espere os pods ficarem TODOS verdes.
Para acessar a UI digite o seguinte comando
kubectl port-forward -n kubeflow svc/ml-pipeline-ui 8080:80Acesse o frontend pelo seu navegador, pelo link http://localhost:8080
Clone esse repositório
git clone https://github.com/henriqueedu2001/kubeflow-pipelines-hello-worldEntre do diretório do projeto
cd kubeflow-pipelines-hello-worldCrie um ambiente virtual isolado no python.
python3 -m venv env
source env/bin/activatePara compilar o pipeline, execute o script main.py.
python3 main.pyAo final desse processo, terás como resultado o arquivo pipeline.yaml, que é a especificação do pipeline compilado, pronto para ser executado por um backend com Kubeflow.
Faça o upload do pipeline via botão no canto superior direito. Você será direcionado para uma página em que deves fazer upload do pipeline, especificar metadados e determinar parâmetros relativos a ele.
Após criar o pipeline, serás redirecionado para a página específica desse pipeline, em que se pode interagir com o grafo da run. Para executá-lo de fato utilize o botão create run.
Após isso, estarás na página de criação de runs. Nomeie sua run.
Ao final da página, insira a string de input da função say_hello(name). Para este exemplo, uso meu nome "Henrique S. Souza"
Finalmente, a run é criada e executada. Podes visualizar a execução do componente say_hello(), tanto sua entrada ("Henrique S. Souza") quanto sua saída ("Hello, Henrique S. Souza!").
O pipeline e as runs estarão visíveis nas páginas anteriores.
Acesse o servidor remoto, criando um túnel via SSH.
ssh -p2238 -L 8080:localhost:8080 username@ipDentro do servidor, faça o port forwarding.
kubectl port-forward -n kubeflow svc/ml-pipeline-ui 8080:80Agora, você poderá acessar a UI pelo link http://localhost:8080





