-
-
Save vfarcic/28e2adb5946ca366d7845780608591d7 to your computer and use it in GitHub Desktop.
# Source: https://gist.github.com/28e2adb5946ca366d7845780608591d7 | |
########################################################### | |
# Argo Workflows & Pipelines # | |
# CI/CD, Machine Learning, and Other Kubernetes Workflows # | |
# https://youtu.be/UMaivwrAyTA # | |
########################################################### | |
# Referenced videos: | |
# - Argo CD - Applying GitOps Principles To Manage Production Environment In Kubernetes: https://youtu.be/vpWQeoaiRM4 | |
# - Argo Events - Event-Based Dependency Manager for Kubernetes: https://youtu.be/sUPkGChvD54 | |
# - Argo Rollouts - Canary Deployments Made Easy In Kubernetes: https://youtu.be/84Ky0aPbHvY | |
# - Kaniko - Building Container Images In Kubernetes Without Docker: https://youtu.be/EgwVQN6GNJg | |
######### | |
# Setup # | |
######### | |
# It can be any Kubernetes cluster | |
minikube start | |
minikube addons enable ingress | |
git clone https://github.com/vfarcic/argocd-production.git | |
cd argocd-production | |
export REGISTRY_SERVER=https://index.docker.io/v1/ | |
# Replace `[...]` with the registry username | |
export REGISTRY_USER=[...] | |
# Replace `[...]` with the registry password | |
export REGISTRY_PASS=[...] | |
# Replace `[...]` with the registry email | |
export REGISTRY_EMAIL=[...] | |
kubectl create namespace workflows | |
kubectl --namespace workflows \ | |
create secret \ | |
docker-registry regcred \ | |
--docker-server=$REGISTRY_SERVER \ | |
--docker-username=$REGISTRY_USER \ | |
--docker-password=$REGISTRY_PASS \ | |
--docker-email=$REGISTRY_EMAIL | |
# If NOT using minikube, change the value to whatever is the address in your cluster | |
export ARGO_WORKFLOWS_HOST=argo-workflows.$(minikube ip).nip.io | |
cat argo-workflows/base/ingress_patch.json \ | |
| sed -e "[email protected]@$ARGO_WORKFLOWS_HOST@g" \ | |
| tee argo-workflows/overlays/production/ingress_patch.json | |
kustomize build \ | |
argo-workflows/overlays/production \ | |
| kubectl apply --filename - | |
kubectl --namespace argo \ | |
rollout status \ | |
deployment argo-server \ | |
--watch | |
cd .. | |
############# | |
# Workflows # | |
############# | |
git clone \ | |
https://github.com/vfarcic/argo-workflows-demo.git | |
cd argo-workflows-demo | |
cat workflows/silly.yaml | |
cat workflows/parallel.yaml | |
cat workflows/dag.yaml | |
############# | |
# Templates # | |
############# | |
cat workflows/cd-mock.yaml | |
cat workflow-templates/container-image.yaml | |
kubectl --namespace workflows apply \ | |
--filename workflow-templates/container-image.yaml | |
kubectl --namespace workflows \ | |
get clusterworkflowtemplates | |
######################## | |
# Submitting workflows # | |
######################## | |
cat workflows/cd-mock.yaml \ | |
| sed -e "s@value: vfarcic@value: $REGISTRY_USER@g" \ | |
| tee workflows/cd-mock.yaml | |
argo --namespace workflows submit \ | |
workflows/cd-mock.yaml | |
argo --namespace workflows list | |
argo --namespace workflows \ | |
get @latest | |
argo --namespace workflows \ | |
logs @latest \ | |
--follow | |
open http://$ARGO_WORKFLOWS_HOST | |
kubectl --namespace workflows get pods |
@vfarcic Would you please help me out to fix this issue. error: no kind "Workflow" is registered for version "argoproj.io/v1alpha1" in scheme "pkg/scheme/scheme.go:28"
Where did you observe that error?
@vfarcic I has seen in logs of the workflow pod that is created by sensors.
❯ kubectl get workflow -n argo
NAME STATUS AGE node-test-4cfkz Succeeded 17h
kubectl logs workflow/node-test-4cfkz -n argo
error: no kind "Workflow" is registered for version "argoproj.io/v1alpha1" in scheme "pkg/scheme/scheme.go:28"
I haven't experienced that error myself. I'll do my best to reproduce it and, if I do, figure out what to do. However, I'm traveling with limited available time so I can't confirm when I'll get to it.
@vfarcic when I try to log the crd I found similar type error. Would you please check.
Sorry for not responding earlier. I was (and still am) traveling with little to no free time. I'll do my best to double-check it soon.
@vfarcic Thanks for the Response, Enjoy the Trip
I follow the steps exactly, is there any reason that open http://$ARGO_WORKFLOWS_HOST render 502 bad gateway?
To avoid it, in argo-server ingress set the path to "/argo(/|$)(.*)", not as it is by design "/" (root directory). See https://argoproj.github.io/argo-workflows/argo-server/#ingress as reference.
That (minikube with Docker) is the combination I heard others complaining. The workaround is to add
--force
argument, at least until the "real" fix is done (if ever).Independently of that issue, I strongly recommend switching to Rancher Desktop as a local Kubernetes cluster.