From 68c90fd6212a3044bda1f230dea84df5d299f68f Mon Sep 17 00:00:00 2001 From: Jeremy Lewi Date: Wed, 8 Apr 2020 13:37:44 -0700 Subject: [PATCH] Initial "stack" for deploying Kubeflow on GCP (#962) * As discussed in http://bit.ly/kf_kustomize_v3 we want to use better patterns in our kustomize manifests. * This PR uses kustomize to compose Kubeflow applications into a "stack" of the applications to be installed on GCP. * Note: This is only an initial set of applications not all applications are installed. * Define a "stack" a stack is an oppionated way of combining applications * a stack is oppinionated about which applications to include and how to configure them * So we define a GCP stack that would contain the apps to be included in GCP deployments. * Stacks can be used to replace much of the functionality currently achieved by the list of applications in KFDef * Instead of listing applications in KFDef we could just point to a kustomization file containing the list of applications. * Define an example illustrating how alice would define an overlay to add her kustomizations. * Show how she can define a patch to modify the additional configuration parameters for her deployment. Start defining a KFDef that uses the new v3 manifests and the stacks * We still need to have multiple applications (and not a single kustomize) application because the namespace for some applications are different * e.g. ISTIO is installed in istio-system not kubeflow namespace so we keep it as a separate kustomize package * Create v3 version of a couple applications * meta controller * notebook controller * certmanager Fix some bugs in some v3 packages * jupyter_web_app - base/deployment.yaml had some changes that needed to be removed because these are now in a patch because we don't want the changes to be included in the v3 version Fix centraldashboard v3 * Move the resources back to base and make base_v3 depend on base rather than the other way around. * It also looks like we ended up duplicating resources between base_v3 and base; probably because of bad merges and rebase * In rolebindings don't use vars to substitute in the namespace just hardcode the values as needed. * Upgrade kustomize to v3.2.0 otherwise the tests don't pass * In particular using v3.1.0 the jupyter-web-app doesn't have the unique name of the kubeflow-config configmap (i.e. with the content hash) substituted into the environment variable configmap ref names. --- .../webhook/base/kustomization.yaml | 12 +- .../base/mutating-webhook-configuration.yaml | 6 +- .../overlays/application/application.yaml | 3 + .../overlays/cert-manager/certificate.yaml | 8 +- .../overlays/cert-manager/kustomization.yaml | 16 +- .../mutating-webhook-configuration.yaml | 2 +- .../webhook/v3/kustomization.yaml | 16 ++ .../cert-manager/v3/kustomization.yaml | 14 ++ .../base/clusterrole-binding.yaml | 2 +- common/centraldashboard/base/deployment.yaml | 7 - .../centraldashboard/base/kustomization.yaml | 9 +- .../centraldashboard/base/role-binding.yaml | 2 +- .../centraldashboard/base_v3/clusterrole.yaml | 17 -- .../centraldashboard/base_v3/deployment.yaml | 32 ---- .../base_v3/kustomization.yaml | 14 +- .../base_v3/role-binding.yaml | 14 -- .../base_v3/service-account.yaml | 4 - common/centraldashboard/base_v3/service.yaml | 24 --- .../overlays/stacks/deployment_kf_config.yaml | 7 +- go.mod | 2 +- hack/generate_tests.py | 13 +- jupyter/jupyter-web-app/base/deployment.yaml | 18 +- .../jupyter-web-app/base/kustomization.yaml | 4 +- .../notebook-controller/base/deployment.yaml | 5 - .../base/deployment_patch.yaml | 15 ++ .../base/kustomization.yaml | 11 +- .../base_v3/deployment_patch.yaml | 21 +++ .../base_v3/kustomization.yaml | 32 ++++ metacontroller/base/kustomization.yaml | 1 + stacks/examples/README.md | 2 + .../alice_gcp/configs/spawner_ui_config.yaml | 15 ++ .../examples/alice_gcp/kubeflow-config.yaml | 13 ++ stacks/examples/alice_gcp/kustomization.yaml | 20 +++ .../kfctl_gcp_stacks.experimental.yaml | 87 ++++++++++ stacks/gcp/OWNERS | 4 + stacks/gcp/config/params.env | 3 + stacks/gcp/kustomization.yaml | 38 ++++ tests/go.mod | 4 +- tests/go.sum | 144 +-------------- tests/pipeline/OWNERS | 4 - .../examples/alice_gcp}/kustomize_test.go | 4 +- ...ebhook-mutating-webhook-configuration.yaml | 32 ++++ ...urcedefinition_notebooks.kubeflow.org.yaml | 79 +++++++++ ...cedefinition_poddefaults.kubeflow.org.yaml | 60 +++++++ ...ourcedefinition_profiles.kubeflow.org.yaml | 164 ++++++++++++++++++ ...cedefinition_pytorchjobs.kubeflow.org.yaml | 49 ++++++ ...esourcedefinition_tfjobs.kubeflow.org.yaml | 54 ++++++ ..._v1beta1_application_centraldashboard.yaml | 61 +++++++ ...k8s.io_v1beta1_application_gpu-driver.yaml | 39 +++++ ...ation_jupyter-web-app-jupyter-web-app.yaml | 0 ...tebook-controller-notebook-controller.yaml | 50 ++++++ ...v1beta1_application_profiles-profiles.yaml | 44 +++++ ..._v1beta1_application_pytorch-job-crds.yaml | 50 ++++++ ..._v1beta1_application_pytorch-operator.yaml | 53 ++++++ ...8s.io_v1beta1_application_tf-job-crds.yaml | 50 ++++++ ...o_v1beta1_application_tf-job-operator.yaml | 51 ++++++ ...pp.k8s.io_v1beta1_application_webhook.yaml | 43 +++++ ..._v1_daemonset_nvidia-driver-installer.yaml | 84 +++++++++ ...ployment_admission-webhook-deployment.yaml | 54 ++++++ .../apps_v1_deployment_centraldashboard.yaml | 62 +++++++ ...deployment_jupyter-web-app-deployment.yaml | 46 +++++ ...oyment_notebook-controller-deployment.yaml | 63 +++++++ ...pps_v1_deployment_profiles-deployment.yaml | 95 ++++++++++ .../apps_v1_deployment_pytorch-operator.yaml | 57 ++++++ .../apps_v1_deployment_tf-job-operator.yaml | 55 ++++++ ...a2_certificate_admission-webhook-cert.yaml | 22 +++ ...lpha3_virtualservice_centraldashboard.yaml | 28 +++ ...rvice_jupyter-web-app-jupyter-web-app.yaml | 2 +- ...v1alpha3_virtualservice_profiles-kfam.yaml | 27 +++ ...errole_admission-webhook-cluster-role.yaml | 26 +++ ...on-webhook-kubeflow-poddefaults-admin.yaml | 19 ++ ...ion-webhook-kubeflow-poddefaults-edit.yaml | 19 ++ ...ion-webhook-kubeflow-poddefaults-view.yaml | 25 +++ ...8s.io_v1_clusterrole_centraldashboard.yaml | 23 +++ ...sterrole_jupyter-web-app-cluster-role.yaml | 0 ...er-web-app-kubeflow-notebook-ui-admin.yaml | 0 ...ter-web-app-kubeflow-notebook-ui-edit.yaml | 0 ...ter-web-app-kubeflow-notebook-ui-view.yaml | 0 ...lusterrole_kubeflow-pytorchjobs-admin.yaml | 18 ++ ...clusterrole_kubeflow-pytorchjobs-edit.yaml | 29 ++++ ...clusterrole_kubeflow-pytorchjobs-view.yaml | 23 +++ ..._v1_clusterrole_kubeflow-tfjobs-admin.yaml | 18 ++ ...o_v1_clusterrole_kubeflow-tfjobs-edit.yaml | 29 ++++ ...o_v1_clusterrole_kubeflow-tfjobs-view.yaml | 23 +++ ...k-controller-kubeflow-notebooks-admin.yaml | 19 ++ ...ok-controller-kubeflow-notebooks-edit.yaml | 30 ++++ ...ok-controller-kubeflow-notebooks-view.yaml | 24 +++ ..._clusterrole_notebook-controller-role.yaml | 58 +++++++ ...dmission-webhook-cluster-role-binding.yaml | 21 +++ ...1_clusterrolebinding_centraldashboard.yaml | 20 +++ ..._jupyter-web-app-cluster-role-binding.yaml | 0 ...ding_notebook-controller-role-binding.yaml | 21 +++ ...binding_profiles-cluster-role-binding.yaml | 10 +- ...ation.k8s.io_v1_role_centraldashboard.yaml | 9 +- ...8s.io_v1_rolebinding_centraldashboard.yaml | 21 +++ ..._v1beta1_clusterrole_pytorch-operator.yaml | 36 ++++ ...o_v1beta1_clusterrole_tf-job-operator.yaml | 44 +++++ ...1_clusterrolebinding_pytorch-operator.yaml | 21 +++ ...a1_clusterrolebinding_tf-job-operator.yaml | 21 +++ ...jupyter-web-app-jupyter-notebook-role.yaml | 0 ...web-app-jupyter-notebook-role-binding.yaml | 0 ...-webhook-admission-webhook-parameters.yaml | 18 ++ ...app-jupyter-web-app-config-5cc2fchd2g.yaml | 26 +++ ..._configmap_kubeflow-config-4bkkg42k5m.yaml | 11 ++ ...notebook-controller-config-h4d668t5tb.yaml | 17 ++ ...p_profiles-profiles-config-4mgcmtgk6t.yaml | 10 ++ ..._v1_service_admission-webhook-service.yaml | 27 +++ .../~g_v1_service_centraldashboard.yaml | 37 ++++ ...~g_v1_service_jupyter-web-app-service.yaml | 0 ...1_service_notebook-controller-service.yaml | 26 +++ .../expected/~g_v1_service_profiles-kfam.yaml | 12 ++ .../~g_v1_service_pytorch-operator.yaml | 33 ++++ .../~g_v1_service_tf-job-operator.yaml | 33 ++++ ...unt_admission-webhook-service-account.yaml | 14 ++ ...~g_v1_serviceaccount_centraldashboard.yaml | 12 ++ ...count_jupyter-web-app-service-account.yaml | 0 ...t_notebook-controller-service-account.yaml | 14 ++ ...t_profiles-controller-service-account.yaml | 7 + ...~g_v1_serviceaccount_pytorch-operator.yaml | 14 ++ ...~g_v1_serviceaccount_tf-job-dashboard.yaml | 14 ++ .../~g_v1_serviceaccount_tf-job-operator.yaml | 14 ++ tests/stacks/gcp/kustomize_test.go | 15 ++ ...ebhook-mutating-webhook-configuration.yaml | 32 ++++ ...urcedefinition_notebooks.kubeflow.org.yaml | 79 +++++++++ ...cedefinition_poddefaults.kubeflow.org.yaml | 60 +++++++ ...ourcedefinition_profiles.kubeflow.org.yaml | 164 ++++++++++++++++++ ...cedefinition_pytorchjobs.kubeflow.org.yaml | 49 ++++++ ...esourcedefinition_tfjobs.kubeflow.org.yaml | 54 ++++++ ..._v1beta1_application_centraldashboard.yaml | 61 +++++++ ...k8s.io_v1beta1_application_gpu-driver.yaml | 39 +++++ ...tion_jupyter-web-app-jupyter-web-app.yaml} | 5 +- ...tebook-controller-notebook-controller.yaml | 50 ++++++ ...v1beta1_application_profiles-profiles.yaml | 44 +++++ ..._v1beta1_application_pytorch-job-crds.yaml | 50 ++++++ ..._v1beta1_application_pytorch-operator.yaml | 53 ++++++ ...8s.io_v1beta1_application_tf-job-crds.yaml | 50 ++++++ ...o_v1beta1_application_tf-job-operator.yaml | 51 ++++++ ...pp.k8s.io_v1beta1_application_webhook.yaml | 43 +++++ ..._v1_daemonset_nvidia-driver-installer.yaml | 84 +++++++++ ...ployment_admission-webhook-deployment.yaml | 54 ++++++ .../apps_v1_deployment_centraldashboard.yaml | 62 +++++++ ...deployment_jupyter-web-app-deployment.yaml | 17 +- ...oyment_notebook-controller-deployment.yaml | 63 +++++++ ...pps_v1_deployment_profiles-deployment.yaml | 95 ++++++++++ .../apps_v1_deployment_pytorch-operator.yaml | 57 ++++++ .../apps_v1_deployment_tf-job-operator.yaml | 55 ++++++ ...a2_certificate_admission-webhook-cert.yaml | 22 +++ ...lpha3_virtualservice_centraldashboard.yaml | 28 +++ ...rvice_jupyter-web-app-jupyter-web-app.yaml | 28 +++ ...v1alpha3_virtualservice_profiles-kfam.yaml | 27 +++ ...errole_admission-webhook-cluster-role.yaml | 26 +++ ...on-webhook-kubeflow-poddefaults-admin.yaml | 19 ++ ...ion-webhook-kubeflow-poddefaults-edit.yaml | 19 ++ ...ion-webhook-kubeflow-poddefaults-view.yaml | 25 +++ ...8s.io_v1_clusterrole_centraldashboard.yaml | 23 +++ ...sterrole_jupyter-web-app-cluster-role.yaml | 57 ++++++ ...er-web-app-kubeflow-notebook-ui-admin.yaml | 9 + ...ter-web-app-kubeflow-notebook-ui-edit.yaml | 20 +++ ...ter-web-app-kubeflow-notebook-ui-view.yaml | 26 +++ ...lusterrole_kubeflow-pytorchjobs-admin.yaml | 18 ++ ...clusterrole_kubeflow-pytorchjobs-edit.yaml | 29 ++++ ...clusterrole_kubeflow-pytorchjobs-view.yaml | 23 +++ ..._v1_clusterrole_kubeflow-tfjobs-admin.yaml | 18 ++ ...o_v1_clusterrole_kubeflow-tfjobs-edit.yaml | 29 ++++ ...o_v1_clusterrole_kubeflow-tfjobs-view.yaml | 23 +++ ...k-controller-kubeflow-notebooks-admin.yaml | 19 ++ ...ok-controller-kubeflow-notebooks-edit.yaml | 30 ++++ ...ok-controller-kubeflow-notebooks-view.yaml | 24 +++ ..._clusterrole_notebook-controller-role.yaml | 58 +++++++ ...dmission-webhook-cluster-role-binding.yaml | 21 +++ ...1_clusterrolebinding_centraldashboard.yaml | 20 +++ ..._jupyter-web-app-cluster-role-binding.yaml | 15 ++ ...ding_notebook-controller-role-binding.yaml | 21 +++ ...binding_profiles-cluster-role-binding.yaml | 14 ++ ...ation.k8s.io_v1_role_centraldashboard.yaml | 32 ++++ ...8s.io_v1_rolebinding_centraldashboard.yaml | 21 +++ ..._v1beta1_clusterrole_pytorch-operator.yaml | 36 ++++ ...o_v1beta1_clusterrole_tf-job-operator.yaml | 44 +++++ ...1_clusterrolebinding_pytorch-operator.yaml | 21 +++ ...a1_clusterrolebinding_tf-job-operator.yaml | 21 +++ ...jupyter-web-app-jupyter-notebook-role.yaml | 39 +++++ ...web-app-jupyter-notebook-role-binding.yaml | 15 ++ ...-webhook-admission-webhook-parameters.yaml | 18 ++ ...app-jupyter-web-app-config-dhcbh64467.yaml | 0 ..._configmap_kubeflow-config-988m2m9m87.yaml | 9 + ...notebook-controller-config-h4d668t5tb.yaml | 17 ++ ...p_profiles-profiles-config-4mgcmtgk6t.yaml | 10 ++ ..._v1_service_admission-webhook-service.yaml | 27 +++ .../~g_v1_service_centraldashboard.yaml | 37 ++++ ...~g_v1_service_jupyter-web-app-service.yaml | 29 ++++ ...1_service_notebook-controller-service.yaml | 26 +++ .../expected/~g_v1_service_profiles-kfam.yaml | 12 ++ .../~g_v1_service_pytorch-operator.yaml | 33 ++++ .../~g_v1_service_tf-job-operator.yaml | 33 ++++ ...unt_admission-webhook-service-account.yaml | 14 ++ ...~g_v1_serviceaccount_centraldashboard.yaml | 12 ++ ...count_jupyter-web-app-service-account.yaml | 8 + ...t_notebook-controller-service-account.yaml | 14 ++ ...t_profiles-controller-service-account.yaml | 7 + ...~g_v1_serviceaccount_pytorch-operator.yaml | 14 ++ ...~g_v1_serviceaccount_tf-job-dashboard.yaml | 14 ++ .../~g_v1_serviceaccount_tf-job-operator.yaml | 14 ++ ...1_clusterrolebinding_centraldashboard.yaml | 2 +- ...8s.io_v1_rolebinding_centraldashboard.yaml | 2 +- ...oyment_notebook-controller-deployment.yaml | 2 - 205 files changed, 5411 insertions(+), 338 deletions(-) create mode 100644 admission-webhook/webhook/v3/kustomization.yaml create mode 100644 cert-manager/cert-manager/v3/kustomization.yaml delete mode 100644 common/centraldashboard/base_v3/clusterrole.yaml delete mode 100644 common/centraldashboard/base_v3/deployment.yaml delete mode 100644 common/centraldashboard/base_v3/role-binding.yaml delete mode 100644 common/centraldashboard/base_v3/service-account.yaml delete mode 100644 common/centraldashboard/base_v3/service.yaml create mode 100644 jupyter/notebook-controller/base/deployment_patch.yaml create mode 100644 jupyter/notebook-controller/base_v3/deployment_patch.yaml create mode 100644 jupyter/notebook-controller/base_v3/kustomization.yaml create mode 100644 stacks/examples/README.md create mode 100644 stacks/examples/alice_gcp/configs/spawner_ui_config.yaml create mode 100644 stacks/examples/alice_gcp/kubeflow-config.yaml create mode 100644 stacks/examples/alice_gcp/kustomization.yaml create mode 100644 stacks/examples/kfctl_gcp_stacks.experimental.yaml create mode 100644 stacks/gcp/OWNERS create mode 100644 stacks/gcp/config/params.env create mode 100644 stacks/gcp/kustomization.yaml delete mode 100644 tests/pipeline/OWNERS rename tests/{jupyter/jupyter-web-app/base_v3 => stacks/examples/alice_gcp}/kustomize_test.go (73%) create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/admissionregistration.k8s.io_v1beta1_mutatingwebhookconfiguration_admission-webhook-mutating-webhook-configuration.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/apiextensions.k8s.io_v1beta1_customresourcedefinition_notebooks.kubeflow.org.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/apiextensions.k8s.io_v1beta1_customresourcedefinition_poddefaults.kubeflow.org.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/apiextensions.k8s.io_v1beta1_customresourcedefinition_profiles.kubeflow.org.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/apiextensions.k8s.io_v1beta1_customresourcedefinition_pytorchjobs.kubeflow.org.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/apiextensions.k8s.io_v1beta1_customresourcedefinition_tfjobs.kubeflow.org.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/app.k8s.io_v1beta1_application_centraldashboard.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/app.k8s.io_v1beta1_application_gpu-driver.yaml rename tests/{jupyter/jupyter-web-app/base_v3 => stacks/examples/alice_gcp}/test_data/expected/app.k8s.io_v1beta1_application_jupyter-web-app-jupyter-web-app.yaml (100%) create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/app.k8s.io_v1beta1_application_notebook-controller-notebook-controller.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/app.k8s.io_v1beta1_application_profiles-profiles.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/app.k8s.io_v1beta1_application_pytorch-job-crds.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/app.k8s.io_v1beta1_application_pytorch-operator.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/app.k8s.io_v1beta1_application_tf-job-crds.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/app.k8s.io_v1beta1_application_tf-job-operator.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/app.k8s.io_v1beta1_application_webhook.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/apps_v1_daemonset_nvidia-driver-installer.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/apps_v1_deployment_admission-webhook-deployment.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/apps_v1_deployment_centraldashboard.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/apps_v1_deployment_jupyter-web-app-deployment.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/apps_v1_deployment_notebook-controller-deployment.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/apps_v1_deployment_profiles-deployment.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/apps_v1_deployment_pytorch-operator.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/apps_v1_deployment_tf-job-operator.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/cert-manager.io_v1alpha2_certificate_admission-webhook-cert.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/networking.istio.io_v1alpha3_virtualservice_centraldashboard.yaml rename tests/{jupyter/jupyter-web-app/base_v3 => stacks/examples/alice_gcp}/test_data/expected/networking.istio.io_v1alpha3_virtualservice_jupyter-web-app-jupyter-web-app.yaml (87%) create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/networking.istio.io_v1alpha3_virtualservice_profiles-kfam.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_admission-webhook-cluster-role.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_admission-webhook-kubeflow-poddefaults-admin.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_admission-webhook-kubeflow-poddefaults-edit.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_admission-webhook-kubeflow-poddefaults-view.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_centraldashboard.yaml rename tests/{jupyter/jupyter-web-app/base_v3 => stacks/examples/alice_gcp}/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_jupyter-web-app-cluster-role.yaml (100%) rename tests/{jupyter/jupyter-web-app/base_v3 => stacks/examples/alice_gcp}/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_jupyter-web-app-kubeflow-notebook-ui-admin.yaml (100%) rename tests/{jupyter/jupyter-web-app/base_v3 => stacks/examples/alice_gcp}/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_jupyter-web-app-kubeflow-notebook-ui-edit.yaml (100%) rename tests/{jupyter/jupyter-web-app/base_v3 => stacks/examples/alice_gcp}/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_jupyter-web-app-kubeflow-notebook-ui-view.yaml (100%) create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_kubeflow-pytorchjobs-admin.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_kubeflow-pytorchjobs-edit.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_kubeflow-pytorchjobs-view.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_kubeflow-tfjobs-admin.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_kubeflow-tfjobs-edit.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_kubeflow-tfjobs-view.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_notebook-controller-kubeflow-notebooks-admin.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_notebook-controller-kubeflow-notebooks-edit.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_notebook-controller-kubeflow-notebooks-view.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_notebook-controller-role.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrolebinding_admission-webhook-cluster-role-binding.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrolebinding_centraldashboard.yaml rename tests/{jupyter/jupyter-web-app/base_v3 => stacks/examples/alice_gcp}/test_data/expected/rbac.authorization.k8s.io_v1_clusterrolebinding_jupyter-web-app-cluster-role-binding.yaml (100%) create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrolebinding_notebook-controller-role-binding.yaml rename common/centraldashboard/base_v3/clusterrole-binding.yaml => tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrolebinding_profiles-cluster-role-binding.yaml (53%) rename common/centraldashboard/base_v3/role.yaml => tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_role_centraldashboard.yaml (50%) create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_rolebinding_centraldashboard.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1beta1_clusterrole_pytorch-operator.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1beta1_clusterrole_tf-job-operator.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1beta1_clusterrolebinding_pytorch-operator.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1beta1_clusterrolebinding_tf-job-operator.yaml rename tests/{jupyter/jupyter-web-app/base_v3 => stacks/examples/alice_gcp}/test_data/expected/rbac.authorization.k8s.io_v1beta1_role_jupyter-web-app-jupyter-notebook-role.yaml (100%) rename tests/{jupyter/jupyter-web-app/base_v3 => stacks/examples/alice_gcp}/test_data/expected/rbac.authorization.k8s.io_v1beta1_rolebinding_jupyter-web-app-jupyter-notebook-role-binding.yaml (100%) create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_configmap_admission-webhook-admission-webhook-parameters.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_configmap_jupyter-web-app-jupyter-web-app-config-5cc2fchd2g.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_configmap_kubeflow-config-4bkkg42k5m.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_configmap_notebook-controller-notebook-controller-config-h4d668t5tb.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_configmap_profiles-profiles-config-4mgcmtgk6t.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_service_admission-webhook-service.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_service_centraldashboard.yaml rename tests/{jupyter/jupyter-web-app/base_v3 => stacks/examples/alice_gcp}/test_data/expected/~g_v1_service_jupyter-web-app-service.yaml (100%) create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_service_notebook-controller-service.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_service_profiles-kfam.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_service_pytorch-operator.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_service_tf-job-operator.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_serviceaccount_admission-webhook-service-account.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_serviceaccount_centraldashboard.yaml rename tests/{jupyter/jupyter-web-app/base_v3 => stacks/examples/alice_gcp}/test_data/expected/~g_v1_serviceaccount_jupyter-web-app-service-account.yaml (100%) create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_serviceaccount_notebook-controller-service-account.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_serviceaccount_profiles-controller-service-account.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_serviceaccount_pytorch-operator.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_serviceaccount_tf-job-dashboard.yaml create mode 100644 tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_serviceaccount_tf-job-operator.yaml create mode 100644 tests/stacks/gcp/kustomize_test.go create mode 100644 tests/stacks/gcp/test_data/expected/admissionregistration.k8s.io_v1beta1_mutatingwebhookconfiguration_admission-webhook-mutating-webhook-configuration.yaml create mode 100644 tests/stacks/gcp/test_data/expected/apiextensions.k8s.io_v1beta1_customresourcedefinition_notebooks.kubeflow.org.yaml create mode 100644 tests/stacks/gcp/test_data/expected/apiextensions.k8s.io_v1beta1_customresourcedefinition_poddefaults.kubeflow.org.yaml create mode 100644 tests/stacks/gcp/test_data/expected/apiextensions.k8s.io_v1beta1_customresourcedefinition_profiles.kubeflow.org.yaml create mode 100644 tests/stacks/gcp/test_data/expected/apiextensions.k8s.io_v1beta1_customresourcedefinition_pytorchjobs.kubeflow.org.yaml create mode 100644 tests/stacks/gcp/test_data/expected/apiextensions.k8s.io_v1beta1_customresourcedefinition_tfjobs.kubeflow.org.yaml create mode 100644 tests/stacks/gcp/test_data/expected/app.k8s.io_v1beta1_application_centraldashboard.yaml create mode 100644 tests/stacks/gcp/test_data/expected/app.k8s.io_v1beta1_application_gpu-driver.yaml rename tests/{jupyter/jupyter-web-app/overlays/application/test_data/expected/app.k8s.io_v1beta1_application_jupyter-web-app.yaml => stacks/gcp/test_data/expected/app.k8s.io_v1beta1_application_jupyter-web-app-jupyter-web-app.yaml} (92%) create mode 100644 tests/stacks/gcp/test_data/expected/app.k8s.io_v1beta1_application_notebook-controller-notebook-controller.yaml create mode 100644 tests/stacks/gcp/test_data/expected/app.k8s.io_v1beta1_application_profiles-profiles.yaml create mode 100644 tests/stacks/gcp/test_data/expected/app.k8s.io_v1beta1_application_pytorch-job-crds.yaml create mode 100644 tests/stacks/gcp/test_data/expected/app.k8s.io_v1beta1_application_pytorch-operator.yaml create mode 100644 tests/stacks/gcp/test_data/expected/app.k8s.io_v1beta1_application_tf-job-crds.yaml create mode 100644 tests/stacks/gcp/test_data/expected/app.k8s.io_v1beta1_application_tf-job-operator.yaml create mode 100644 tests/stacks/gcp/test_data/expected/app.k8s.io_v1beta1_application_webhook.yaml create mode 100644 tests/stacks/gcp/test_data/expected/apps_v1_daemonset_nvidia-driver-installer.yaml create mode 100644 tests/stacks/gcp/test_data/expected/apps_v1_deployment_admission-webhook-deployment.yaml create mode 100644 tests/stacks/gcp/test_data/expected/apps_v1_deployment_centraldashboard.yaml rename tests/{jupyter/jupyter-web-app/base_v3 => stacks/gcp}/test_data/expected/apps_v1_deployment_jupyter-web-app-deployment.yaml (72%) create mode 100644 tests/stacks/gcp/test_data/expected/apps_v1_deployment_notebook-controller-deployment.yaml create mode 100644 tests/stacks/gcp/test_data/expected/apps_v1_deployment_profiles-deployment.yaml create mode 100644 tests/stacks/gcp/test_data/expected/apps_v1_deployment_pytorch-operator.yaml create mode 100644 tests/stacks/gcp/test_data/expected/apps_v1_deployment_tf-job-operator.yaml create mode 100644 tests/stacks/gcp/test_data/expected/cert-manager.io_v1alpha2_certificate_admission-webhook-cert.yaml create mode 100644 tests/stacks/gcp/test_data/expected/networking.istio.io_v1alpha3_virtualservice_centraldashboard.yaml create mode 100644 tests/stacks/gcp/test_data/expected/networking.istio.io_v1alpha3_virtualservice_jupyter-web-app-jupyter-web-app.yaml create mode 100644 tests/stacks/gcp/test_data/expected/networking.istio.io_v1alpha3_virtualservice_profiles-kfam.yaml create mode 100644 tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_admission-webhook-cluster-role.yaml create mode 100644 tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_admission-webhook-kubeflow-poddefaults-admin.yaml create mode 100644 tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_admission-webhook-kubeflow-poddefaults-edit.yaml create mode 100644 tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_admission-webhook-kubeflow-poddefaults-view.yaml create mode 100644 tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_centraldashboard.yaml create mode 100644 tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_jupyter-web-app-cluster-role.yaml create mode 100644 tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_jupyter-web-app-kubeflow-notebook-ui-admin.yaml create mode 100644 tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_jupyter-web-app-kubeflow-notebook-ui-edit.yaml create mode 100644 tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_jupyter-web-app-kubeflow-notebook-ui-view.yaml create mode 100644 tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_kubeflow-pytorchjobs-admin.yaml create mode 100644 tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_kubeflow-pytorchjobs-edit.yaml create mode 100644 tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_kubeflow-pytorchjobs-view.yaml create mode 100644 tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_kubeflow-tfjobs-admin.yaml create mode 100644 tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_kubeflow-tfjobs-edit.yaml create mode 100644 tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_kubeflow-tfjobs-view.yaml create mode 100644 tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_notebook-controller-kubeflow-notebooks-admin.yaml create mode 100644 tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_notebook-controller-kubeflow-notebooks-edit.yaml create mode 100644 tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_notebook-controller-kubeflow-notebooks-view.yaml create mode 100644 tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_notebook-controller-role.yaml create mode 100644 tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrolebinding_admission-webhook-cluster-role-binding.yaml create mode 100644 tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrolebinding_centraldashboard.yaml create mode 100644 tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrolebinding_jupyter-web-app-cluster-role-binding.yaml create mode 100644 tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrolebinding_notebook-controller-role-binding.yaml create mode 100644 tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrolebinding_profiles-cluster-role-binding.yaml create mode 100644 tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_role_centraldashboard.yaml create mode 100644 tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_rolebinding_centraldashboard.yaml create mode 100644 tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1beta1_clusterrole_pytorch-operator.yaml create mode 100644 tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1beta1_clusterrole_tf-job-operator.yaml create mode 100644 tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1beta1_clusterrolebinding_pytorch-operator.yaml create mode 100644 tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1beta1_clusterrolebinding_tf-job-operator.yaml create mode 100644 tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1beta1_role_jupyter-web-app-jupyter-notebook-role.yaml create mode 100644 tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1beta1_rolebinding_jupyter-web-app-jupyter-notebook-role-binding.yaml create mode 100644 tests/stacks/gcp/test_data/expected/~g_v1_configmap_admission-webhook-admission-webhook-parameters.yaml rename tests/{jupyter/jupyter-web-app/base_v3 => stacks/gcp}/test_data/expected/~g_v1_configmap_jupyter-web-app-jupyter-web-app-config-dhcbh64467.yaml (100%) create mode 100644 tests/stacks/gcp/test_data/expected/~g_v1_configmap_kubeflow-config-988m2m9m87.yaml create mode 100644 tests/stacks/gcp/test_data/expected/~g_v1_configmap_notebook-controller-notebook-controller-config-h4d668t5tb.yaml create mode 100644 tests/stacks/gcp/test_data/expected/~g_v1_configmap_profiles-profiles-config-4mgcmtgk6t.yaml create mode 100644 tests/stacks/gcp/test_data/expected/~g_v1_service_admission-webhook-service.yaml create mode 100644 tests/stacks/gcp/test_data/expected/~g_v1_service_centraldashboard.yaml create mode 100644 tests/stacks/gcp/test_data/expected/~g_v1_service_jupyter-web-app-service.yaml create mode 100644 tests/stacks/gcp/test_data/expected/~g_v1_service_notebook-controller-service.yaml create mode 100644 tests/stacks/gcp/test_data/expected/~g_v1_service_profiles-kfam.yaml create mode 100644 tests/stacks/gcp/test_data/expected/~g_v1_service_pytorch-operator.yaml create mode 100644 tests/stacks/gcp/test_data/expected/~g_v1_service_tf-job-operator.yaml create mode 100644 tests/stacks/gcp/test_data/expected/~g_v1_serviceaccount_admission-webhook-service-account.yaml create mode 100644 tests/stacks/gcp/test_data/expected/~g_v1_serviceaccount_centraldashboard.yaml create mode 100644 tests/stacks/gcp/test_data/expected/~g_v1_serviceaccount_jupyter-web-app-service-account.yaml create mode 100644 tests/stacks/gcp/test_data/expected/~g_v1_serviceaccount_notebook-controller-service-account.yaml create mode 100644 tests/stacks/gcp/test_data/expected/~g_v1_serviceaccount_profiles-controller-service-account.yaml create mode 100644 tests/stacks/gcp/test_data/expected/~g_v1_serviceaccount_pytorch-operator.yaml create mode 100644 tests/stacks/gcp/test_data/expected/~g_v1_serviceaccount_tf-job-dashboard.yaml create mode 100644 tests/stacks/gcp/test_data/expected/~g_v1_serviceaccount_tf-job-operator.yaml diff --git a/admission-webhook/webhook/base/kustomization.yaml b/admission-webhook/webhook/base/kustomization.yaml index b092ee6a9..8af6b9394 100644 --- a/admission-webhook/webhook/base/kustomization.yaml +++ b/admission-webhook/webhook/base/kustomization.yaml @@ -24,23 +24,29 @@ configMapGenerator: generatorOptions: disableNameSuffixHash: true vars: +# These vars are used to substitute in the namespace, service name and +# deployment name into the mutating WebHookConfiguration. +# Since its a CR kustomize isn't aware of those fields and won't +# transform them. +# We need the var names to be relatively unique so that when we +# compose with other applications they won't conflict. - fieldref: fieldPath: data.namespace - name: namespace + name: podDefaultsNamespace objref: apiVersion: v1 kind: ConfigMap name: admission-webhook-parameters - fieldref: fieldPath: metadata.name - name: serviceName + name: podDefaultsServiceName objref: apiVersion: v1 kind: Service name: service - fieldref: fieldPath: metadata.name - name: deploymentName + name: podDefaultsDeploymentName objref: apiVersion: apps/v1 kind: Deployment diff --git a/admission-webhook/webhook/base/mutating-webhook-configuration.yaml b/admission-webhook/webhook/base/mutating-webhook-configuration.yaml index 0893ab819..b1774bb8d 100644 --- a/admission-webhook/webhook/base/mutating-webhook-configuration.yaml +++ b/admission-webhook/webhook/base/mutating-webhook-configuration.yaml @@ -6,10 +6,10 @@ webhooks: - clientConfig: caBundle: "" service: - name: $(serviceName) - namespace: $(namespace) + name: $(podDefaultsServiceName) + namespace: $(podDefaultsNamespace) path: /apply-poddefault - name: $(deploymentName).kubeflow.org + name: $(podDefaultsDeploymentName).kubeflow.org rules: - apiGroups: - "" diff --git a/admission-webhook/webhook/overlays/application/application.yaml b/admission-webhook/webhook/overlays/application/application.yaml index 52c143193..fc31155e1 100644 --- a/admission-webhook/webhook/overlays/application/application.yaml +++ b/admission-webhook/webhook/overlays/application/application.yaml @@ -5,6 +5,9 @@ metadata: spec: selector: matchLabels: + # TODO(jlewi): We should probably rename the app to PodDefaults + # as that is what the admission controller is actually doing. + # webhook is generic and uninformative. app.kubernetes.io/name: webhook app.kubernetes.io/instance: webhook-v1.0.0 app.kubernetes.io/managed-by: kfctl diff --git a/admission-webhook/webhook/overlays/cert-manager/certificate.yaml b/admission-webhook/webhook/overlays/cert-manager/certificate.yaml index fde317dc2..7a969cbe9 100644 --- a/admission-webhook/webhook/overlays/cert-manager/certificate.yaml +++ b/admission-webhook/webhook/overlays/cert-manager/certificate.yaml @@ -4,11 +4,11 @@ metadata: name: admission-webhook-cert spec: isCA: true - commonName: $(serviceName).$(namespace).svc + commonName: $(podDefaultsServiceName).$(podDefaultsNamespace).svc dnsNames: - - $(serviceName).$(namespace).svc - - $(serviceName).$(namespace).svc.cluster.local + - $(podDefaultsServiceName).$(podDefaultsNamespace).svc + - $(podDefaultsServiceName).$(podDefaultsNamespace).svc.cluster.local issuerRef: kind: ClusterIssuer - name: $(issuer) + name: $(podDefaultsIssuer) secretName: webhook-certs \ No newline at end of file diff --git a/admission-webhook/webhook/overlays/cert-manager/kustomization.yaml b/admission-webhook/webhook/overlays/cert-manager/kustomization.yaml index 08d5befd0..97fed95eb 100644 --- a/admission-webhook/webhook/overlays/cert-manager/kustomization.yaml +++ b/admission-webhook/webhook/overlays/cert-manager/kustomization.yaml @@ -1,3 +1,9 @@ +# This overlay uses CertManager to provision a certificate for the +# PodDefaults admission controller. This is preferred over the old +# way of using "bootstrap" which was running a shell script to create +# the certificate. +# TODO(jlewi): We should eventually refactor the manifests to delete +# bootstrap and use certmanager by default. bases: - ../../base @@ -16,14 +22,20 @@ generatorOptions: disableNameSuffixHash: true vars: -- name: issuer +# These vars are used to substitute in the namespace, service name and +# deployment name into the mutating WebHookConfiguration. +# Since its a CR kustomize isn't aware of those fields and won't +# transform them. +# We need the var names to be relatively unique so that when we +# compose with other applications they won't conflict. +- name: podDefaultsIssuer objref: kind: ConfigMap name: admission-webhook-parameters apiVersion: v1 fieldref: fieldpath: data.issuer -- name: cert_name +- name: podDefaultsCertName objref: kind: Certificate group: cert-manager.io diff --git a/admission-webhook/webhook/overlays/cert-manager/mutating-webhook-configuration.yaml b/admission-webhook/webhook/overlays/cert-manager/mutating-webhook-configuration.yaml index b5cc96c10..de18f665b 100644 --- a/admission-webhook/webhook/overlays/cert-manager/mutating-webhook-configuration.yaml +++ b/admission-webhook/webhook/overlays/cert-manager/mutating-webhook-configuration.yaml @@ -3,5 +3,5 @@ kind: MutatingWebhookConfiguration metadata: name: mutating-webhook-configuration annotations: - cert-manager.io/inject-ca-from: $(namespace)/$(cert_name) + cert-manager.io/inject-ca-from: $(podDefaultsNamespace)/$(podDefaultsCertName) \ No newline at end of file diff --git a/admission-webhook/webhook/v3/kustomization.yaml b/admission-webhook/webhook/v3/kustomization.yaml new file mode 100644 index 000000000..fc9eec17a --- /dev/null +++ b/admission-webhook/webhook/v3/kustomization.yaml @@ -0,0 +1,16 @@ +# TODO(https://github.com/kubeflow/manifests/issues/1052): Refactor +# and cleanup the kustomization once the v3 migration is done. +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: +# With v3 we want to always use cert-manager to get the +# self-signed certificate +- ../overlays/cert-manager/ +- ../overlays/application/application.yaml +commonLabels: + app.kubernetes.io/name: poddefaults + app.kubernetes.io/instance: poddefaults-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/component: poddefaults + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 diff --git a/cert-manager/cert-manager/v3/kustomization.yaml b/cert-manager/cert-manager/v3/kustomization.yaml new file mode 100644 index 000000000..2b5d2cc03 --- /dev/null +++ b/cert-manager/cert-manager/v3/kustomization.yaml @@ -0,0 +1,14 @@ +# TODO(https://github.com/kubeflow/manifests/issues/1052) clean up the manifests +# after the refactor is done. +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +commonLabels: + app.kubernetes.io/name: cert-manager + app.kubernetes.io/instance: cert-manager-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/component: cert-manager + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 +resources: +- ../overlays/self-signed +- ../overlays/application/application.yaml diff --git a/common/centraldashboard/base/clusterrole-binding.yaml b/common/centraldashboard/base/clusterrole-binding.yaml index 6731c5acb..07224e8dc 100644 --- a/common/centraldashboard/base/clusterrole-binding.yaml +++ b/common/centraldashboard/base/clusterrole-binding.yaml @@ -11,4 +11,4 @@ roleRef: subjects: - kind: ServiceAccount name: centraldashboard - namespace: $(namespace) + namespace: kubeflow diff --git a/common/centraldashboard/base/deployment.yaml b/common/centraldashboard/base/deployment.yaml index 965dfe764..78d768f92 100644 --- a/common/centraldashboard/base/deployment.yaml +++ b/common/centraldashboard/base/deployment.yaml @@ -29,11 +29,4 @@ spec: ports: - containerPort: 8082 protocol: TCP - env: - - name: USERID_HEADER - value: $(userid-header) - - name: USERID_PREFIX - value: $(userid-prefix) - - name: PROFILES_KFAM_SERVICE_HOST - value: profiles-kfam.kubeflow serviceAccountName: centraldashboard diff --git a/common/centraldashboard/base/kustomization.yaml b/common/centraldashboard/base/kustomization.yaml index bd96c6074..2a33c6728 100644 --- a/common/centraldashboard/base/kustomization.yaml +++ b/common/centraldashboard/base/kustomization.yaml @@ -1,7 +1,14 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization +namespace: kubeflow resources: -- ../base_v3 +- clusterrole-binding.yaml +- clusterrole.yaml +- deployment.yaml +- role-binding.yaml +- role.yaml +- service-account.yaml +- service.yaml patchesStrategicMerge: - deployment_patch.yaml namespace: kubeflow diff --git a/common/centraldashboard/base/role-binding.yaml b/common/centraldashboard/base/role-binding.yaml index 53eedc8c6..87ab83eaa 100644 --- a/common/centraldashboard/base/role-binding.yaml +++ b/common/centraldashboard/base/role-binding.yaml @@ -11,4 +11,4 @@ roleRef: subjects: - kind: ServiceAccount name: centraldashboard - namespace: $(namespace) + namespace: kubeflow diff --git a/common/centraldashboard/base_v3/clusterrole.yaml b/common/centraldashboard/base_v3/clusterrole.yaml deleted file mode 100644 index aa251d290..000000000 --- a/common/centraldashboard/base_v3/clusterrole.yaml +++ /dev/null @@ -1,17 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - app: centraldashboard - name: centraldashboard -rules: -- apiGroups: - - "" - resources: - - events - - namespaces - - nodes - verbs: - - get - - list - - watch diff --git a/common/centraldashboard/base_v3/deployment.yaml b/common/centraldashboard/base_v3/deployment.yaml deleted file mode 100644 index 78d768f92..000000000 --- a/common/centraldashboard/base_v3/deployment.yaml +++ /dev/null @@ -1,32 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app: centraldashboard - name: centraldashboard -spec: - replicas: 1 - selector: - matchLabels: - app: centraldashboard - template: - metadata: - labels: - app: centraldashboard - annotations: - sidecar.istio.io/inject: "false" - spec: - containers: - - image: gcr.io/kubeflow-images-public/centraldashboard - imagePullPolicy: IfNotPresent - livenessProbe: - httpGet: - path: /healthz - port: 8082 - initialDelaySeconds: 30 - periodSeconds: 30 - name: centraldashboard - ports: - - containerPort: 8082 - protocol: TCP - serviceAccountName: centraldashboard diff --git a/common/centraldashboard/base_v3/kustomization.yaml b/common/centraldashboard/base_v3/kustomization.yaml index f643f791b..72fffb450 100644 --- a/common/centraldashboard/base_v3/kustomization.yaml +++ b/common/centraldashboard/base_v3/kustomization.yaml @@ -1,10 +1,10 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: -- clusterrole-binding.yaml -- clusterrole.yaml -- deployment.yaml -- role-binding.yaml -- role.yaml -- service-account.yaml -- service.yaml +- ../base/clusterrole-binding.yaml +- ../base/clusterrole.yaml +- ../base/deployment.yaml +- ../base/role-binding.yaml +- ../base/role.yaml +- ../base/service-account.yaml +- ../base/service.yaml diff --git a/common/centraldashboard/base_v3/role-binding.yaml b/common/centraldashboard/base_v3/role-binding.yaml deleted file mode 100644 index 53eedc8c6..000000000 --- a/common/centraldashboard/base_v3/role-binding.yaml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - labels: - app: centraldashboard - name: centraldashboard -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: centraldashboard -subjects: -- kind: ServiceAccount - name: centraldashboard - namespace: $(namespace) diff --git a/common/centraldashboard/base_v3/service-account.yaml b/common/centraldashboard/base_v3/service-account.yaml deleted file mode 100644 index b5a417a6b..000000000 --- a/common/centraldashboard/base_v3/service-account.yaml +++ /dev/null @@ -1,4 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: centraldashboard diff --git a/common/centraldashboard/base_v3/service.yaml b/common/centraldashboard/base_v3/service.yaml deleted file mode 100644 index 363af0c7f..000000000 --- a/common/centraldashboard/base_v3/service.yaml +++ /dev/null @@ -1,24 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - annotations: - getambassador.io/config: |- - --- - apiVersion: ambassador/v0 - kind: Mapping - name: centralui-mapping - prefix: / - rewrite: / - service: centraldashboard.$(namespace) - labels: - app: centraldashboard - name: centraldashboard -spec: - ports: - - port: 80 - protocol: TCP - targetPort: 8082 - selector: - app: centraldashboard - sessionAffinity: None - type: ClusterIP diff --git a/common/centraldashboard/overlays/stacks/deployment_kf_config.yaml b/common/centraldashboard/overlays/stacks/deployment_kf_config.yaml index f4e44d003..00d69cbeb 100644 --- a/common/centraldashboard/overlays/stacks/deployment_kf_config.yaml +++ b/common/centraldashboard/overlays/stacks/deployment_kf_config.yaml @@ -17,9 +17,4 @@ spec: valueFrom: configMapKeyRef: name: kubeflow-config - key: userid-prefix - - name: PROFILES_KFAM_SERVICE_HOST - valueFrom: - configMapKeyRef: - name: kubeflow-config - key: profiles_kfam_service_host + key: userid-prefix \ No newline at end of file diff --git a/go.mod b/go.mod index 116bf458b..f506fdd3e 100644 --- a/go.mod +++ b/go.mod @@ -2,4 +2,4 @@ module github.com/kubeflow/manifests go 1.12 -require sigs.k8s.io/kustomize/v3 v3.2.0 +require sigs.k8s.io/kustomize/v3 v3.2.1 diff --git a/hack/generate_tests.py b/hack/generate_tests.py index d373bf21a..40b22beb5 100755 --- a/hack/generate_tests.py +++ b/hack/generate_tests.py @@ -8,7 +8,18 @@ import os import shutil import subprocess -SEARCH_DIRS = ["tests/legacy_kustomizations/"] +# Search dirs should be directories to search for kustomization packages +# that we want to test. These should be kustomization's that are doing +# non-trivial transformations (e.g. combining multiple packages, applying +# patches) etc... The point of the unittests is to make it easy for reviewers +# to verify that the expected output is correct and verify the actual output +# matches the expected output. +SEARCH_DIRS = [ + "stacks", + # TODO(https://github.com/kubeflow/manifests/issues/1052): Remove this + # after the move to v3 is done. + "tests/legacy_kustomizations", + ] # The subdirectory to story the expected manifests in # We use a subdirectory of test_data because we could potentially diff --git a/jupyter/jupyter-web-app/base/deployment.yaml b/jupyter/jupyter-web-app/base/deployment.yaml index 3e477463a..42885b7dc 100644 --- a/jupyter/jupyter-web-app/base/deployment.yaml +++ b/jupyter/jupyter-web-app/base/deployment.yaml @@ -10,23 +10,7 @@ spec: sidecar.istio.io/inject: "false" spec: containers: - - env: - - name: ROK_SECRET_NAME - valueFrom: - configMapKeyRef: - name: parameters - key: ROK_SECRET_NAME - - name: UI - valueFrom: - configMapKeyRef: - name: parameters - key: UI - - name: USERID_HEADER - value: $(userid-header) - - name: USERID_PREFIX - value: $(userid-prefix) - image: gcr.io/kubeflow-images-public/jupyter-web-app - imagePullPolicy: $(policy) + - image: gcr.io/kubeflow-images-public/jupyter-web-app name: jupyter-web-app ports: - containerPort: 5000 diff --git a/jupyter/jupyter-web-app/base/kustomization.yaml b/jupyter/jupyter-web-app/base/kustomization.yaml index 88b40123e..29dcc6121 100644 --- a/jupyter/jupyter-web-app/base/kustomization.yaml +++ b/jupyter/jupyter-web-app/base/kustomization.yaml @@ -26,12 +26,12 @@ images: configMapGenerator: - envs: - params.env - name: parameters + name: parameters # We need the name to be unique without the suffix because the original name is what # gets used with patches - name: jupyter-web-app-config files: - - ./configs/spawner_ui_config.yaml + - configs/spawner_ui_config.yaml generatorOptions: # TODO(jlewi): Why are we setting disableNameSuffixHash true? Don't we want a content hash so that if the config map # changes we would update the configmap? diff --git a/jupyter/notebook-controller/base/deployment.yaml b/jupyter/notebook-controller/base/deployment.yaml index b043f04b8..af3e90226 100644 --- a/jupyter/notebook-controller/base/deployment.yaml +++ b/jupyter/notebook-controller/base/deployment.yaml @@ -13,11 +13,6 @@ spec: image: gcr.io/kubeflow-images-public/notebook-controller:v20190614-v0-160-g386f2749-e3b0c4 command: - /manager - env: - - name: USE_ISTIO - value: "false" - - name: POD_LABELS - value: $(POD_LABELS) imagePullPolicy: Always livenessProbe: httpGet: diff --git a/jupyter/notebook-controller/base/deployment_patch.yaml b/jupyter/notebook-controller/base/deployment_patch.yaml new file mode 100644 index 000000000..a7dfb4334 --- /dev/null +++ b/jupyter/notebook-controller/base/deployment_patch.yaml @@ -0,0 +1,15 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: deployment +spec: + template: + spec: + containers: + - name: manager + env: + # We use a patch to set the USE_ISTIO because in other patches + # we want to set it to a configMapRef and so if we include the value + # in the base when we do the merge we end up with 2 fields setting the value. + - name: USE_ISTIO + value: "false" \ No newline at end of file diff --git a/jupyter/notebook-controller/base/kustomization.yaml b/jupyter/notebook-controller/base/kustomization.yaml index 26c2a19bd..e0977d7f0 100644 --- a/jupyter/notebook-controller/base/kustomization.yaml +++ b/jupyter/notebook-controller/base/kustomization.yaml @@ -1,3 +1,5 @@ +# TODO(https://github.com/kubeflow/manifests/issues/1052): Cleanup this up +# once kustomize_v3 migration is done. apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: @@ -9,6 +11,8 @@ resources: - service.yaml namePrefix: notebook-controller- namespace: kubeflow +patchesStrategicMerge: +- deployment_patch.yaml commonLabels: app: notebook-controller kustomize.component: notebook-controller @@ -23,13 +27,6 @@ configMapGenerator: generatorOptions: disableNameSuffixHash: true vars: -- fieldref: - fieldPath: data.POD_LABELS - name: POD_LABELS - objref: - apiVersion: v1 - kind: ConfigMap - name: parameters - fieldref: fieldPath: data.USE_ISTIO name: USE_ISTIO diff --git a/jupyter/notebook-controller/base_v3/deployment_patch.yaml b/jupyter/notebook-controller/base_v3/deployment_patch.yaml new file mode 100644 index 000000000..e1ea7a60d --- /dev/null +++ b/jupyter/notebook-controller/base_v3/deployment_patch.yaml @@ -0,0 +1,21 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: deployment +spec: + template: + spec: + containers: + - name: manager + env: + - name: USE_ISTIO + valueFrom: + configMapKeyRef: + name: notebook-controller-config + key: USE_ISTIO + - name: ISTIO_GATEWAY + valueFrom: + configMapKeyRef: + name: notebook-controller-config + key: ISTIO_GATEWAY + \ No newline at end of file diff --git a/jupyter/notebook-controller/base_v3/kustomization.yaml b/jupyter/notebook-controller/base_v3/kustomization.yaml new file mode 100644 index 000000000..4fac45cb2 --- /dev/null +++ b/jupyter/notebook-controller/base_v3/kustomization.yaml @@ -0,0 +1,32 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: +- ../base/cluster-role-binding.yaml +- ../base/cluster-role.yaml +- ../base/crd.yaml +- ../base/deployment.yaml +- ../base/service-account.yaml +- ../base/service.yaml +- ../overlays/application/application.yaml +namePrefix: notebook-controller- +namespace: kubeflow +commonLabels: + app: notebook-controller + kustomize.component: notebook-controller + app.kubernetes.io/name: notebook-controller + app.kubernetes.io/instance: notebook-controller-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/component: notebook-controller + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 +patchesStrategicMerge: +- deployment_patch.yaml +images: +- name: gcr.io/kubeflow-images-public/notebook-controller + newName: gcr.io/kubeflow-images-public/notebook-controller + newTag: vmaster-gf39279c0 +configMapGenerator: +- name: notebook-controller-config + literals: + - USE_ISTIO=true + - ISTIO_GATEWAY=kubeflow/kubeflow-gateway diff --git a/metacontroller/base/kustomization.yaml b/metacontroller/base/kustomization.yaml index 995ee4c9d..fb7f0e8cb 100644 --- a/metacontroller/base/kustomization.yaml +++ b/metacontroller/base/kustomization.yaml @@ -1,5 +1,6 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization +namespace: kubeflow resources: - cluster-role-binding.yaml - crd.yaml diff --git a/stacks/examples/README.md b/stacks/examples/README.md new file mode 100644 index 000000000..797b80412 --- /dev/null +++ b/stacks/examples/README.md @@ -0,0 +1,2 @@ +This directory contains examples illustrating how users would leverage kustomize +to do various kubeflow kustomizations. \ No newline at end of file diff --git a/stacks/examples/alice_gcp/configs/spawner_ui_config.yaml b/stacks/examples/alice_gcp/configs/spawner_ui_config.yaml new file mode 100644 index 000000000..24a89b629 --- /dev/null +++ b/stacks/examples/alice_gcp/configs/spawner_ui_config.yaml @@ -0,0 +1,15 @@ +# This is a custom spawnerUiConfig. +# +# It looks like the entire file is replaced; so the user would need to supply a complete +# spawner config. +spawnerFormDefaults: + image: + # The container Image for the user's Jupyter Notebook + # If readonly, this value must be a member of the list below + value: alicerepo/tensorflow-1.14.0-notebook-cpu:v-base-ef41372-1177829795472347138 + # The list of available standard container Images + options: + - alicerepo/tensorflow-1.15.2-notebook-cpu:1.0.0 + - alicerepo/tensorflow-1.15.2-notebook-gpu:1.0.0 + - alicerepo//tensorflow-2.1.0-notebook-cpu:1.0.0 + - alicerepo//tensorflow-2.1.0-notebook-gpu:1.0.0 \ No newline at end of file diff --git a/stacks/examples/alice_gcp/kubeflow-config.yaml b/stacks/examples/alice_gcp/kubeflow-config.yaml new file mode 100644 index 000000000..8c39c0016 --- /dev/null +++ b/stacks/examples/alice_gcp/kubeflow-config.yaml @@ -0,0 +1,13 @@ +# This file demonstrates how a user would kustomize +# "global" config like userid-header, userid-prefix etc.. +apiVersion: v1 +kind: ConfigMap +metadata: + # kubelfow-config is the name of the global (as opposed to applicaiton specific + # config map. + name: kubeflow-config +data: + # For GCP we can use these to define GCP + # parameters that should be common across applications + project: alice-gcp + zone: us-east1-d \ No newline at end of file diff --git a/stacks/examples/alice_gcp/kustomization.yaml b/stacks/examples/alice_gcp/kustomization.yaml new file mode 100644 index 000000000..7b1b11d29 --- /dev/null +++ b/stacks/examples/alice_gcp/kustomization.yaml @@ -0,0 +1,20 @@ +# This is an example of a kustomize package a user +# might create to kustomize it on GCP +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +namespace: kubeflow +generatorOptions: + disableNameSuffixHash: true +resources: +# Users start by inheriting the gcp stack and then customizing it +- ../../gcp +patchesStrategicMerge: +# Patch in modifications to the global config +- kubeflow-config.yaml +configMapGenerator: +- name: jupyter-web-app-config + # TODO(jlewi): I think merge only applies to the keys but not the + # contents of the file; so the entire contents of the file are replaced. + behavior: merge + files: + - configs/spawner_ui_config.yaml diff --git a/stacks/examples/kfctl_gcp_stacks.experimental.yaml b/stacks/examples/kfctl_gcp_stacks.experimental.yaml new file mode 100644 index 000000000..ca9d96d0b --- /dev/null +++ b/stacks/examples/kfctl_gcp_stacks.experimental.yaml @@ -0,0 +1,87 @@ +# An experimental example file for using KFDef with the new specs +apiVersion: kfdef.apps.kubeflow.org/v1 +kind: KfDef +metadata: + namespace: kubeflow +spec: + applications: + # One of the primary reasons for splitting out packages into separate kustomize + # directories is when the resources needed to be installed in a different namespace. + # TODO(jlewi): This should be replaced by ACM when its ready. + # Its a separate package because it needs to be in a different namespace + - kustomizeConfig: + repoRef: + name: manifests + path: istio/gcp-1-1-6 + name: istio-stack + # Create Kubeflow specific ISTIO resources. + - kustomizeConfig: + repoRef: + name: manifests + path: istio/istio/base + name: kubeflow-istio + # Install controllers that other applications depend on + # e.g. metacontroller and application controller. + - kustomizeConfig: + repoRef: + name: manifests + path: metacontroller/base + name: metacontroller + - kustomizeConfig: + repoRef: + name: manifests + path: application/v3 + name: application + # Install GCP ingress related packages + - kustomizeConfig: + repoRef: + name: manifests + path: gcp/cloud-endpoints/overlays/application + name: cloud-endpoints + - kustomizeConfig: + repoRef: + name: manifests + path: gcp/iap-ingress/v3 + name: iap-ingress + # Certmanager gets installed in a different namespace so it needs to be a separate package + - kustomizeConfig: + repoRef: + name: manifests + path: cert-manager/cert-manager-crds/base + name: cert-manager-crds + - kustomizeConfig: + repoRef: + name: manifests + path: cert-manager/cert-manager-kube-system-resources/base + name: cert-manager-kube-system-resources + - kustomizeConfig: + repoRef: + name: manifests + path: cert-manager/cert-manager/v3 + name: cert-manager + # Install Kubeflow applications. + - kustomizeConfig: + repoRef: + name: manifests + path: stacks/gcp + name: kubeflow-apps + plugins: + # TODO(jlewi): The plugin is currently commented out because we don't want to run the + # generate logic + - kind: KfGcpPlugin + metadata: + creationTimestamp: null + name: gcp + spec: + createPipelinePersistentStorage: true + deploymentManagerConfig: + repoRef: + name: manifests + path: gcp/deployment_manager_configs + enableWorkloadIdentity: true + skipInitProject: true + useBasicAuth: false + repos: + - name: manifests + uri: https://github.com/jlewi/manifests/archive/stacks.tar.gz + version: master diff --git a/stacks/gcp/OWNERS b/stacks/gcp/OWNERS new file mode 100644 index 000000000..45ea5b5d3 --- /dev/null +++ b/stacks/gcp/OWNERS @@ -0,0 +1,4 @@ +# Owners file should only contain Googlers +# since these are Google's oppinionated configs. +approvers: +- jlewi diff --git a/stacks/gcp/config/params.env b/stacks/gcp/config/params.env new file mode 100644 index 000000000..680214110 --- /dev/null +++ b/stacks/gcp/config/params.env @@ -0,0 +1,3 @@ +clusterDomain=cluster.local +userid-header=X-Goog-Authenticated-User-Email +userid-prefix=accounts.google.com: diff --git a/stacks/gcp/kustomization.yaml b/stacks/gcp/kustomization.yaml new file mode 100644 index 000000000..d2669fa53 --- /dev/null +++ b/stacks/gcp/kustomization.yaml @@ -0,0 +1,38 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +namespace: kubeflow +resources: + # List the Kubeflow applications that should be included + # TODO(https://github.com/kubeflow/manifests/issues/1073): + # We need to switch the admission webhook to use cert-manager. + - ../../admission-webhook/webhook/v3 + - ../../common/centraldashboard/overlays/stacks + - ../../gcp/gpu-driver/overlays/application/ + - ../../jupyter/jupyter-web-app/base_v3 + - ../../jupyter/notebook-controller/base_v3 + - ../../profiles/base_v3 + - ../../pytorch-job/pytorch-job-crds/overlays/application + - ../../pytorch-job/pytorch-operator/overlays/application + - ../../tf-training/tf-job-crds/overlays/application + - ../../tf-training/tf-job-operator/overlays/application +configMapGenerator: +- envs: + - ./config/params.env + name: kubeflow-config +vars: +# We need to define vars at the top level otherwise we will get +# conflicts. +- fieldref: + fieldPath: data.clusterDomain + name: clusterDomain + objref: + apiVersion: v1 + kind: ConfigMap + name: kubeflow-config +- fieldref: + fieldPath: metadata.namespace + name: namespace + objref: + apiVersion: v1 + kind: ConfigMap + name: kubeflow-config \ No newline at end of file diff --git a/tests/go.mod b/tests/go.mod index fe58c72bf..b1ddeb34f 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -52,7 +52,7 @@ require ( k8s.io/kubernetes v1.16.2 k8s.io/utils v0.0.0-20191030222137-2b95a09bc58d // indirect sigs.k8s.io/controller-runtime v0.4.0 - sigs.k8s.io/kustomize/v3 v3.1.0 + sigs.k8s.io/kustomize/v3 v3.2.0 ) replace ( @@ -89,5 +89,5 @@ replace ( k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.0.0-20190620085408-1aef9010884e sigs.k8s.io/application => sigs.k8s.io/application v0.0.0-20190404151855-67ae7f915d4e sigs.k8s.io/controller-runtime => sigs.k8s.io/controller-runtime v0.2.0 - sigs.k8s.io/kustomize/v3 => sigs.k8s.io/kustomize/v3 v3.1.0 + sigs.k8s.io/kustomize/v3 => sigs.k8s.io/kustomize/v3 v3.2.0 ) diff --git a/tests/go.sum b/tests/go.sum index bfa046a30..b93720f54 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -24,7 +24,6 @@ github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb0 github.com/NYTimes/gziphandler v1.0.1/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/OpenPeeDeeP/depguard v1.0.1/go.mod h1:xsIw86fROiiwelg+jB2uM9PiKihMMmUx/1V+TNhjQvM= github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= @@ -35,7 +34,6 @@ github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdko github.com/Rican7/retry v0.1.0/go.mod h1:FgOROf8P5bebcC1DS0PdOQiqGUridaZvikzUmkFW6gg= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= -github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/ant31/crd-validation v0.0.0-20180702145049-30f8a35d0ac2/go.mod h1:X0noFIik9YqfhGYBLEHg8LJKEwy7QIitLQuFMpKLcPk= @@ -99,7 +97,6 @@ github.com/coreos/prometheus-operator v0.34.0/go.mod h1:Li6rMllG/hYIyXfMuvUwhyC+ github.com/coreos/rkt v1.30.0/go.mod h1:O634mlH6U7qk87poQifK6M2rsFNt+FyUTWNMnP1hF1U= github.com/cpuguy83/go-md2man v1.0.4/go.mod h1:N6JayAiVKtlHSnuTCeuLSQVs75hb8q+dYQLjr7cDsKY= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= -github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/cyphar/filepath-securejoin v0.0.0-20170720062807-ae69057f2299/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= github.com/cznic/b v0.0.0-20180115125044-35e9bbe41f07/go.mod h1:URriBxXwVq5ijiJ12C7iIZqlA69nTlI+LgI6/pwftG8= github.com/cznic/fileutil v0.0.0-20180108211300-6a051e75936f/go.mod h1:8S58EK26zhXSxzv7NQFpnliaOQsmDUxvoQO3rt154Vg= @@ -160,7 +157,6 @@ github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwo github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/structtag v1.1.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= -github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsouza/fake-gcs-server v1.7.0/go.mod h1:5XIRs4YvwNbNoz+1JF8j6KLAyDh7RHGAyAK3EP2EsNk= github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= @@ -170,65 +166,37 @@ github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32 h1:Mn26/9ZMNWSw9C9ER github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32/go.mod h1:GIjDIg/heH5DOkXY3YJ/wNhfHsQHoXGjl8G8amsYQ1I= github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= -github.com/go-critic/go-critic v0.3.5-0.20190904082202-d79a9f0c64db/go.mod h1:+sE8vrLDS2M0pZkBk0wy6+nLdKexVDrl/jBqQOTDThA= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-lintpack/lintpack v0.5.2/go.mod h1:NwZuYi2nUHho8XEIZ6SIxihrnPoqBTDqfpXvXAN0sXM= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= github.com/go-logr/zapr v0.1.0/go.mod h1:tabnROwaDl0UNxkVeFRbY8bwB37GwRv0P8lg6aAiEnk= github.com/go-logr/zapr v0.1.1/go.mod h1:tabnROwaDl0UNxkVeFRbY8bwB37GwRv0P8lg6aAiEnk= -github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8= github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI= github.com/go-openapi/analysis v0.17.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= github.com/go-openapi/analysis v0.17.2/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= github.com/go-openapi/errors v0.17.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= github.com/go-openapi/errors v0.17.2/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= -github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= github.com/go-openapi/jsonpointer v0.17.0 h1:nH6xp8XdXHx8dqveo0ZuJBluCO2qGrPbDNZ0dwoRHP0= github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= -github.com/go-openapi/jsonpointer v0.19.2 h1:A9+F4Dc/MCNB5jibxf6rRvOvR/iFgQdyNx9eIhnGqq0= -github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= -github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= github.com/go-openapi/jsonreference v0.17.0 h1:yJW3HCkTHg7NOA+gZ83IPHzUSnUzGXhGmsdiCcMexbA= github.com/go-openapi/jsonreference v0.17.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= -github.com/go-openapi/jsonreference v0.19.2 h1:o20suLFB4Ri0tuzpWtyHlh7E7HnkqTNLq6aR6WVNS1w= -github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= github.com/go-openapi/loads v0.17.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= github.com/go-openapi/loads v0.17.2/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= github.com/go-openapi/runtime v0.0.0-20180920151709-4f900dc2ade9/go.mod h1:6v9a6LTXWQCdL8k1AO3cvqx5OtZY/Y9wKTgaoP6YRfA= github.com/go-openapi/runtime v0.17.2/go.mod h1:QO936ZXeisByFmZEO1IS1Dqhtf4QV1sYYFtIq6Ld86Q= -github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= github.com/go-openapi/spec v0.18.0 h1:aIjeyG5mo5/FrvDkpKKEGZPmF9MPHahS72mzfVqeQXQ= github.com/go-openapi/spec v0.18.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= -github.com/go-openapi/spec v0.19.2 h1:SStNd1jRcYtfKCN7R0laGNs80WYYvn5CbBjM2sOmCrE= -github.com/go-openapi/spec v0.19.2/go.mod h1:sCxk3jxKgioEJikev4fgkNmwS+3kuYdJtcsZsD5zxMY= github.com/go-openapi/strfmt v0.17.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= -github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= github.com/go-openapi/swag v0.17.0 h1:iqrgMg7Q7SvtbWLlltPrkMs0UBJI6oTSs79JFRUi880= github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= -github.com/go-openapi/swag v0.19.2 h1:jvO6bCMBEilGwMfHhrd61zIID4oIFdwb76V17SM88dE= -github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/validate v0.17.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4= github.com/go-openapi/validate v0.18.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4= github.com/go-ozzo/ozzo-validation v3.5.0+incompatible/go.mod h1:gsEKFIVnabGBt6mXmxK0MoFy+cZoTJY6mu5Ll3LVLBU= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-toolsmith/astcast v1.0.0/go.mod h1:mt2OdQTeAQcY4DQgPSArJjHCcOwlX+Wl/kwN+LbLGQ4= -github.com/go-toolsmith/astcopy v1.0.0/go.mod h1:vrgyG+5Bxrnz4MZWPF+pI4R8h3qKRjjyvV/DSez4WVQ= -github.com/go-toolsmith/astequal v0.0.0-20180903214952-dcb477bfacd6/go.mod h1:H+xSiq0+LtiDC11+h1G32h7Of5O3CYFJ99GVbS5lDKY= -github.com/go-toolsmith/astequal v1.0.0/go.mod h1:H+xSiq0+LtiDC11+h1G32h7Of5O3CYFJ99GVbS5lDKY= -github.com/go-toolsmith/astfmt v0.0.0-20180903215011-8f8ee99c3086/go.mod h1:mP93XdblcopXwlyN4X4uodxXQhldPGZbcEJIimQHrkg= -github.com/go-toolsmith/astfmt v1.0.0/go.mod h1:cnWmsOAuq4jJY6Ct5YWlVLmcmLMn1JUPuQIHCY7CJDw= -github.com/go-toolsmith/astinfo v0.0.0-20180906194353-9809ff7efb21/go.mod h1:dDStQCHtmZpYOmjRP/8gHHnCCch3Zz3oEgCdZVdtweU= -github.com/go-toolsmith/astp v0.0.0-20180903215135-0af7e3c24f30/go.mod h1:SV2ur98SGypH1UjcPpCatrV5hPazG6+IfNHbkDXBRrk= -github.com/go-toolsmith/astp v1.0.0/go.mod h1:RSyrtpVlfTFGDYRbrjyWP1pYu//tSFcvdYrA8meBmLI= -github.com/go-toolsmith/pkgload v0.0.0-20181119091011-e9e65178eee8/go.mod h1:WoMrjiy4zvdS+Bg6z9jZH82QXwkcgCBX6nOfnmdaHks= -github.com/go-toolsmith/pkgload v1.0.0/go.mod h1:5eFArkbO80v7Z0kdngIxsRXRMTaX4Ilcwuh3clNrQJc= -github.com/go-toolsmith/strparse v1.0.0/go.mod h1:YI2nUKP9YGZnL/L1/DLFBfixrcjslWct4wyljWhSRy8= -github.com/go-toolsmith/typep v1.0.0/go.mod h1:JSQCQMUPdRlMZFswiq3TGpNp1GMktqkR2Ns5AIQkATU= github.com/gobuffalo/envy v1.6.5/go.mod h1:N+GkhhZ/93bGZc6ZKhJLP6+m+tCNPKwgSpH9kaifseQ= github.com/gobuffalo/envy v1.7.0/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= github.com/gobuffalo/flect v0.1.5/go.mod h1:W3K3X9ksuZfir8f/LrfVtWmCDQFfayuylOJ7sz/Fj80= @@ -242,7 +210,6 @@ github.com/godbus/dbus v0.0.0-20151105175453-c7fdd8b5cd55/go.mod h1:/YcGZj5zSblf github.com/gogo/protobuf v0.0.0-20171007142547-342cbe0a0415/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.1 h1:/s5zKNz0uPFCZ5hddgPdo2TK2TVrUNMn0OOX8/aZMTE= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/gogo/protobuf v1.2.2-0.20190730201129-28a6bbf47e48 h1:X+zN6RZXsvnrSJaAIQhZezPfAfvsqihKKR8oiLHid34= github.com/gogo/protobuf v1.2.2-0.20190730201129-28a6bbf47e48/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= @@ -264,21 +231,6 @@ github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5y github.com/golang/snappy v0.0.0-20170215233205-553a64147049/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2/go.mod h1:k9Qvh+8juN+UKMCS/3jFtGICgW8O96FVaZsaxdzDkR4= -github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a/go.mod h1:ryS0uhF+x9jgbj/N71xsEqODy9BN81/GonCZiOzirOk= -github.com/golangci/errcheck v0.0.0-20181223084120-ef45e06d44b6/go.mod h1:DbHgvLiFKX1Sh2T1w8Q/h4NAI8MHIpzCdnBUDTXU3I0= -github.com/golangci/go-misc v0.0.0-20180628070357-927a3d87b613/go.mod h1:SyvUF2NxV+sN8upjjeVYr5W7tyxaT1JVtvhKhOn2ii8= -github.com/golangci/goconst v0.0.0-20180610141641-041c5f2b40f3/go.mod h1:JXrF4TWy4tXYn62/9x8Wm/K/dm06p8tCKwFRDPZG/1o= -github.com/golangci/gocyclo v0.0.0-20180528134321-2becd97e67ee/go.mod h1:ozx7R9SIwqmqf5pRP90DhR2Oay2UIjGuKheCBCNwAYU= -github.com/golangci/gofmt v0.0.0-20181222123516-0b8337e80d98/go.mod h1:9qCChq59u/eW8im404Q2WWTrnBUQKjpNYKMbU4M7EFU= -github.com/golangci/golangci-lint v1.19.1/go.mod h1:2CEc4Fxx3vxDv7g8DyXkHCBF73AOzAymcJAprs2vCps= -github.com/golangci/ineffassign v0.0.0-20190609212857-42439a7714cc/go.mod h1:e5tpTHCfVze+7EpLEozzMB3eafxo2KT5veNg1k6byQU= -github.com/golangci/lint-1 v0.0.0-20190420132249-ee948d087217/go.mod h1:66R6K6P6VWk9I95jvqGxkqJxVWGFy9XlDwLwVz1RCFg= -github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca/go.mod h1:tvlJhZqDe4LMs4ZHD0oMUlt9G2LWuDGoisJTBzLMV9o= -github.com/golangci/misspell v0.0.0-20180809174111-950f5d19e770/go.mod h1:dEbvlSfYbMQDtrpRMQU675gSDLDNa8sCPPChZ7PhiVA= -github.com/golangci/prealloc v0.0.0-20180630174525-215b22d4de21/go.mod h1:tf5+bzsHdTM0bsB7+8mt0GUMvjCgwLpTapNZHU8AajI= -github.com/golangci/revgrep v0.0.0-20180526074752-d9c87f5ffaf0/go.mod h1:qOQCunEYvmd/TLamH+7LlVccLvUH5kZNhbCgTHoBbp4= -github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4/go.mod h1:Izgrg8RkN3rCIMLGE9CyYmU9pY2Jer6DgANEnZ/L/cQ= github.com/golangplus/bytes v0.0.0-20160111154220-45c989fe5450/go.mod h1:Bk6SMAONeMXrxql8uvOKuAZSu8aM5RUGv+1C6IJaEho= github.com/golangplus/fmt v0.0.0-20150411045040-2a5d6d7d2995/go.mod h1:lJgMEyOkYFkPcDKwRXegd+iM6E7matEszMG5HhwytU8= github.com/golangplus/testing v0.0.0-20180327235837-af21d9c3145e/go.mod h1:0AA//k/eakGydO4jKRoRL2j92ZKSzTgj9tclaCrvXHk= @@ -309,21 +261,12 @@ github.com/googleapis/gnostic v0.3.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTV github.com/gophercloud/gophercloud v0.0.0-20190126172459-c818fa66e4c8/go.mod h1:3WdhXV3rUYy9p6AUW8d94kr+HS62Y4VL9mBnFxsD8q4= github.com/gophercloud/gophercloud v0.2.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorilla/context v0.0.0-20160226214623-1ea25387ff6f/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= -github.com/gorilla/mux v1.6.0/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.7.0/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.7.1/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/securecookie v0.0.0-20160422134519-667fe4e3466a/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= -github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= -github.com/gorilla/sessions v0.0.0-20160922145804-ca9ada445741/go.mod h1:+WVp8kdw6VhyKExm03PAMRn2ZxnPtm58pV0dBVPdhHE= -github.com/gorilla/sessions v1.2.0/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.2.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gostaticanalysis/analysisutil v0.0.0-20190318220348-4088753ea4d3/go.mod h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE= github.com/gregjones/httpcache v0.0.0-20170728041850-787624de3eb7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/gregjones/httpcache v0.0.0-20190203031600-7a902570cb17/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= @@ -352,7 +295,6 @@ github.com/heketi/heketi v0.0.0-20181109135656-558b29266ce0/go.mod h1:bB9ly3Rchc github.com/heketi/rest v0.0.0-20180404230133-aa6a65207413/go.mod h1:BeS3M108VzVlmAue3lv2WcGuPAX94/KN63MUURzbYSI= github.com/heketi/tests v0.0.0-20151005000721-f3775cbcefd6/go.mod h1:xGMAM8JLi7UkZt1i4FQeQy0R2T8GLUwQhOP5M1gBhy4= github.com/heketi/utils v0.0.0-20170317161834-435bc5bdfa64/go.mod h1:RYlF4ghFZPPmk2TC5REt5OFwvfb6lzxFWrTWB+qs28s= -github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/huandu/xstrings v1.2.0/go.mod h1:DvyZB1rfVYsBIigL8HwpZgxHwXozlTgGqn63UyNX5k4= github.com/iancoleman/strcase v0.0.0-20190422225806-e506e3ef7365/go.mod h1:SK73tn/9oHe+/Y0h39VT4UCxmurVJkR5NA7kMEAOgSE= @@ -373,7 +315,6 @@ github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22 github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v0.0.0-20180701071628-ab8a2e0c74be/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.5/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.6 h1:MrUvLMLTMxbqFJ9kzlvat/rYZqZnW3u4wkLzWTaFwKs= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.7 h1:KfgG9LzI+pYjr4xvmz/5H4FXjokeP+rlHLhv3iH62Fo= github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= @@ -389,22 +330,14 @@ github.com/karrick/godirwalk v1.10.12/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0L github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/cpuid v0.0.0-20180405133222-e7e905edc00e/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= -github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/fs v0.0.0-20131111012553-2788f0dbd169/go.mod h1:glhvuHOU9Hy7/8PwwdtnarXqLagOX0b/TbZx2zLMqEg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.0.0-20140812000539-f31442d60e51/go.mod h1:Bvhd+E3laJ0AVkG0c9rmtZcnhV0HQ3+c3YxxqTvc/gA= -github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= -github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= github.com/kr/text v0.0.0-20130911015532-6807e777504f/go.mod h1:sjUstKUATFIcff4qlB53Kml0wQPtJVc/3fWrmuUmcfA= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kshvakov/clickhouse v1.3.5/go.mod h1:DMzX7FxRymoNkVgizH0DWAL8Cur7wHLgx3MUnGwJqpE= github.com/kubernetes-sigs/application v0.8.0/go.mod h1:KqAScqo78PXUrmoFOH8z6P4xQDBdzyJH1FMqrhgJJLE= @@ -414,19 +347,16 @@ github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/libopenstorage/openstorage v0.0.0-20170906232338-093a0c388875/go.mod h1:Sp1sIObHjat1BeXhfMqLZ14wnOzEhNx2YQedreMcUyc= github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE= github.com/lithammer/dedent v1.1.0/go.mod h1:jrXYCQtgg0nJiN+StA2KgR7w6CiQNv9Fd/Z9BP0jIOc= -github.com/logrusorgru/aurora v0.0.0-20181002194514-a7b3b318ed4e/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= github.com/lpabon/godbc v0.1.1/go.mod h1:Jo9QV0cf3U6jZABgiJ2skINAXb9j8m51r07g4KI92ZA= github.com/magiconair/properties v0.0.0-20160816085511-61b492c03cf4/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190620125010-da37f6c1e481 h1:IaSjLMT6WvkoZZjspGxy3rdaTEmWLoRm49WbtVUi9sA= github.com/mailru/easyjson v0.0.0-20190620125010-da37f6c1e481/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/markbates/inflect v1.0.4/go.mod h1:1fR9+pO2KHEO9ZRtto13gDwwZaAKstQzferVeWqbgNs= github.com/marstr/guid v0.0.0-20170427235115-8bdf7d1a087c/go.mod h1:74gB1z2wpxxInTG6yaqA7KrtM0NZ+RbrcqDvYHefzho= github.com/martinlindhe/base36 v1.0.0/go.mod h1:+AtEs8xrBpCeYgSLoY/aJ6Wf37jtBuR0s35750M27+8= -github.com/matoous/godox v0.0.0-20190910121045-032ad8106c86/go.mod h1:1BELzlh859Sh1c6+90blK8lbYy0kwQf1bYlBhBysy1s= github.com/mattbaird/jsonpatch v0.0.0-20171005235357-81af80346b1a/go.mod h1:M1qoD/MqPgTZIk0EWKB38wE28ACRfVcn+cU08jyArI0= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= @@ -437,7 +367,6 @@ github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzp github.com/mattn/go-shellwords v0.0.0-20180605041737-f8471b0a71de/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= github.com/mattn/go-sqlite3 v1.10.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= -github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/maxbrunsfeld/counterfeiter/v6 v6.2.1/go.mod h1:F9YacGpnZbLQMzuPI0rR6op21YvNu/RjL705LJJpM3k= github.com/mesos/mesos-go v0.0.9/go.mod h1:kPYCMQ9gsOXVAle1OsoY4I1+9kPu8GHkf88aV59fDr4= @@ -447,8 +376,6 @@ github.com/mindprince/gonvml v0.0.0-20171110221305-fee913ce8fb2/go.mod h1:2eu9pR github.com/mistifyio/go-zfs v0.0.0-20151009155749-1b4ae6fb4e77/go.mod h1:8AuVvqP/mXw1px98n46wfvcGfQ4ci2FwoAjKYxuo3Z4= github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-ps v0.0.0-20190716172923-621e5597135b/go.mod h1:r1VsdOzOPt1ZSrGZWFoNhsAedKnEd6r9Np1+5blZCWk= github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= @@ -464,9 +391,7 @@ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lN github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/mohae/deepcopy v0.0.0-20170603005431-491d3605edfb/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= -github.com/monopole/mdrip v1.0.0/go.mod h1:N1/ppRG9CaPeUKAUHZ3dUlfOT81lTpKZLkyhCvTETwM= github.com/morikuni/aec v0.0.0-20170113033406-39771216ff4c/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= -github.com/mozilla/tls-observatory v0.0.0-20190404164649-a3c1b6cfecfd/go.mod h1:SrKMQvPiws7F7iqYp8/TX+IhxCYhzr6N/1yb8cwHsGk= github.com/mrunalp/fileutils v0.0.0-20160930181131-4ee1cc9a8058/go.mod h1:x8F1gnqOkIEiO4rqoeEEEqQbo7HjGMTvyoq3gej4iT0= github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/munnerz/goautoneg v0.0.0-20190414153302-2ae31c8b6b30/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= @@ -475,7 +400,6 @@ github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRW github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= github.com/nakagami/firebirdsql v0.0.0-20190310045651-3c02a58cfed8/go.mod h1:86wM1zFnC6/uDBfZGNwB65O+pR2OFi5q/YQaEUid1qA= github.com/natefinch/lumberjack v2.0.0+incompatible/go.mod h1:Wi9p2TTF5DG5oU+6YfsmYQpsTIOm0B1VNzQg9Mw6nPk= -github.com/nbutton23/zxcvbn-go v0.0.0-20180912185939-ae427f1e4c1d/go.mod h1:o96djdrsSGy3AWPyBgZMAGfxZNfgntdJG+11KU4QvbU= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/onrik/logrus v0.2.1/go.mod h1:qfe9NeZVAJfIxviw3cYkZo3kvBtLoPRJriAO8zl7qTk= @@ -483,15 +407,11 @@ github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.10.1 h1:q/mM8GF/n0shIN8SaAZ0V+jnLPzen6WIVZdiwrRlMlo= -github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v0.0.0-20190113212917-5533ce8a0da3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.4.2/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.7.0 h1:XPnZz8VVBHjVsy1vzJmRwIcSwiUO+JFfrv/xGiigmME= -github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/opencontainers/go-digest v0.0.0-20170106003457-a6d0ee40d420/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/image-spec v0.0.0-20170604055404-372ad780f634/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= @@ -526,7 +446,6 @@ github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/sftp v0.0.0-20160930220758-4d0e916071f6/go.mod h1:NxmoDg/QLVWluQDUYG7XBZTLUpKeFa8e3aMf1BfjyHk= github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= github.com/pquerna/ffjson v0.0.0-20180717144149-af8b230fcd20/go.mod h1:YARuvh7BUWHNhzDq2OM5tzR2RiCcN2D7sapiKyCel/M= @@ -557,7 +476,6 @@ github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDa github.com/prometheus/prometheus v2.3.2+incompatible/go.mod h1:oAIUtOny2rjMX0OWN5vPR5/q/twIROJvdqnQKDdil/s= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/prometheus/tsdb v0.8.0/go.mod h1:fSI0j+IUQrDd7+ZtR9WKIGtoYAYAJUKcKhYLG25tN4g= -github.com/quasilyte/go-consistent v0.0.0-20190521200055-c6f3937de18c/go.mod h1:5STLWrekHfjyYwxBRVRXNOSewLJ3PWfDJd1VyTS21fI= github.com/quobyte/api v0.1.2/go.mod h1:jL7lIHrmqQ7yh05OJ+eEEdHr0u/kmT1Ff9iHd+4H6VI= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/remyoudompheng/bigfft v0.0.0-20170806203942-52369c62f446/go.mod h1:uYEyJGbgTkfkS4+E/PavXkNJcbFIpEtjt2B0KDQ5+9M= @@ -571,20 +489,12 @@ github.com/rogpeppe/go-internal v1.5.0/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTE github.com/rubenv/sql-migrate v0.0.0-20191025130928-9355dd04f4b3/go.mod h1:WS0rl9eEliYI8DPnr3TOwz4439pay+qNgzJoVya/DmY= github.com/rubiojr/go-vhd v0.0.0-20160810183302-0bfd3b39853c/go.mod h1:DM5xW0nvfNNm2uytzsvhI3OnX8uzaRAg8UX/CnDqbto= github.com/russross/blackfriday v1.5.2-0.20180428102519-11635eb403ff/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= -github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= -github.com/russross/blackfriday v2.0.0+incompatible/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/sclevine/spec v1.2.0/go.mod h1:W4J29eT/Kzv7/b9IWLB055Z+qvVC9vt0Arko24q7p+U= github.com/seccomp/libseccomp-golang v0.0.0-20150813023252-1b506fc7c24e/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= -github.com/securego/gosec v0.0.0-20190912120752-140048b2a218/go.mod h1:q6oYAujd2qyeU4cJqIri4LBIgdHXGvxWHZ1E29HNFRE= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/shirou/gopsutil v0.0.0-20190901111213-e4ec7b275ada/go.mod h1:WWnYX4lzhCH5h/3YBfyVA3VbLYjlMZZAQcW9ojMexNc= -github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod h1:qsXQc7+bwAM3Q1u/4XEfrquwF8Lw7D7y5cD8CuHnfIc= github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= -github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= -github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= github.com/shurcooL/sanitized_anchor_name v0.0.0-20151028001915-10ef21a441db/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sigma/go-inotify v0.0.0-20181102212354-c87b6cf5033d/go.mod h1:stlh9OsqBQSdwxTxX73mu41BBtRbIpZLQ7flcAoxAfo= github.com/sirupsen/logrus v1.0.5/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= @@ -594,7 +504,6 @@ github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1 github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.3/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/sourcegraph/go-diff v0.5.1/go.mod h1:j2dHj3m8aZgQO8lMTcTnBcXkRRRqi34cd2MNlA9u1mE= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v0.0.0-20160816080757-b28a7effac97/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= @@ -618,28 +527,19 @@ github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/y github.com/storageos/go-api v0.0.0-20180912212459-343b3eff91fc/go.mod h1:ZrLn+e0ZuF3Y65PNF6dIwbJPZqfmtCXxFm9ckv0agOY= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/syndtr/gocapability v0.0.0-20160928074757-e7cb7fa329f4/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/technosophos/moniker v0.0.0-20180509230615-a5dbd03a2245/go.mod h1:O1c8HleITsZqzNZDjSNzirUGsMT0oGu9LhHKoJrqO+A= github.com/tidwall/pretty v0.0.0-20180105212114-65a9db5fad51/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= -github.com/timakin/bodyclose v0.0.0-20190721030226-87058b9bfcec/go.mod h1:Qimiffbc6q9tBWlVV6x0P9sat/ao1xEkREYPPj9hphk= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/ulikunitz/xz v0.5.5/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8= -github.com/ultraware/funlen v0.0.2/go.mod h1:Dp4UiAus7Wdb9KUZsYWZEWiRzGuM2kXM1lPbfaF6xhA= -github.com/ultraware/whitespace v0.0.3/go.mod h1:aVMh/gQve5Maj9hQ/hg+F75lr/X5A89uZnzAmWSineA= github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= -github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasthttp v1.2.0/go.mod h1:4vX61m6KN+xDduDNwXrhIAVZaZaZiQ1luJk8LWSxF3s= -github.com/valyala/quicktemplate v1.2.0/go.mod h1:EH+4AkTd43SvgIbQHYu59/cJyxDoOVRUAfrukLPuGJ4= -github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= github.com/vishvananda/netlink v0.0.0-20171020171820-b2de5d10e38e/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk= github.com/vishvananda/netns v0.0.0-20171111001504-be1fbeda1936/go.mod h1:ZjcWmFBXmLKZu9Nxj3WKYEafiSqer2rnvPr0en9UNpI= github.com/vmware/govmomi v0.20.1/go.mod h1:URlwyTFZX72RmxtxuaFL2Uj3fD1JTvZdx59bHWk6aFU= @@ -671,12 +571,7 @@ go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.12.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= golang.org/dl v0.0.0-20191220003028-84da647cadd0/go.mod h1:IUMfjQLJQd4UTqG1Z90tenwKoCX93Gn3MAQJMOSBsDQ= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190911031432-227b76d455e7/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190312203227-4b39c73a6495/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -694,7 +589,6 @@ golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180911220305-26e67e76b6c3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181108082009-03003ca0c849/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -705,7 +599,6 @@ golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20190206173232-65e2d4e15006/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190424112056-4829fb13d2c6/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= @@ -714,8 +607,6 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190812203447-cdfb69ac37fc h1:gkKoSkUmnU6bpS/VhkuO27bzQeSA51uaEfbOW5dNb68= golang.org/x/net v0.0.0-20190812203447-cdfb69ac37fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190909003024-a7b16738d86b h1:XfVGCX+0T4WOStkaOsJRllbsiImhB2jgVBGc9L0lPGc= -golang.org/x/net v0.0.0-20190909003024-a7b16738d86b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181106182150-f42d05182288/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -742,7 +633,6 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190310054646-10058d7d4faa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190426135247-a129542de9ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -751,8 +641,6 @@ golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190621203818-d432491b9138/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190911201528-7ad0cfa0b7b5 h1:SW/0nsKCUaozCUtZTakri5laocGx/5bkDSSLrFUsa5s= -golang.org/x/sys v0.0.0-20190911201528-7ad0cfa0b7b5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -765,35 +653,24 @@ golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20170824195420-5d2fd3ccab98/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181117154741-2ddaf7f79a09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190110163146-51295c7ec13a/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190311215038-5c2858a9cfe5/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190322203728-c1a832b0ad89/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190425222832-ad9eeb80039a/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190521203540-521d6ed310dd/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190624180213-70d37148ca0c/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190706070813-72ffa07ba3db/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= -golang.org/x/tools v0.0.0-20190719005602-e377ae9d6386/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= -golang.org/x/tools v0.0.0-20190910044552-dd2b5c81c578/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911230505-6bfd74cf029c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190912215617-3720d1ec3678/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191018212557-ed542cd5b28a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -830,11 +707,8 @@ gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4 gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/gcfg.v1 v1.2.0/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= @@ -845,14 +719,12 @@ gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/natefinch/lumberjack.v2 v2.0.0-20150622162204-20b71e5b60d7/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/square/go-jose.v2 v2.0.0-20180411045311-89060dee6a84/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/warnings.v0 v0.1.1/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v1 v1.0.0-20140924161607-9f9df34309c0/go.mod h1:WDnlLJ4WF5VGsH/HVa3CI79GS0ol3YnhVnKP89i0kNg= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.1.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -864,13 +736,9 @@ honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -k8s.io/api v0.0.0-20190313235455-40a48860b5ab h1:DG9A67baNpoeweOy2spF1OWHhnVY5KR7/Ek/+U1lVZc= -k8s.io/api v0.0.0-20190313235455-40a48860b5ab/go.mod h1:iuAfoD4hCxJ8Onx9kaTIt30j7jUFS00AXQi6QMi99vA= k8s.io/api v0.0.0-20190620084959-7cf5895f2711 h1:BblVYz/wE5WtBsD/Gvu54KyBUTJMflolzc5I2DTvh50= k8s.io/api v0.0.0-20190620084959-7cf5895f2711/go.mod h1:TBhBqb1AWbBQbW3XRusr7n7E4v2+5ZY8r8sAMnyFC5A= k8s.io/apiextensions-apiserver v0.0.0-20190620085554-14e95df34f1f/go.mod h1:++XMkbLSSAutLgulnUnXW4kNbSkyQzlPL8PaW4hjJT4= -k8s.io/apimachinery v0.0.0-20190313205120-d7deff9243b1 h1:IS7K02iBkQXpCeieSiyJjGoLSdVOv2DbPaWHJ+ZtgKg= -k8s.io/apimachinery v0.0.0-20190313205120-d7deff9243b1/go.mod h1:ccL7Eh7zubPUSh9A3USN90/OzHNSVN6zxzde07TDCL0= k8s.io/apimachinery v0.0.0-20190612205821-1799e75a0719 h1:uV4S5IB5g4Nvi+TBVNf3e9L4wrirlwYJ6w88jUQxTUw= k8s.io/apimachinery v0.0.0-20190612205821-1799e75a0719/go.mod h1:I4A+glKBHiTgiEjQiCCQfCAIcIMFGt291SmsvcrFzJA= k8s.io/apiserver v0.0.0-20190620085212-47dc9a115b18/go.mod h1:Hc9PbFVOsMigd7B7OiY/6bIRkR8y31eIKsr1D+JtKg4= @@ -878,8 +746,6 @@ k8s.io/autoscaler v0.0.0-20190607113959-1b4f1855cb8e/go.mod h1:QEXezc9uKPT91dwqh k8s.io/cli-runtime v0.0.0-20190620085706-2090e6d8f84c/go.mod h1:fkxp0BXLu9gu3r8x8X8gLrfDgWfqusKEJUnMUIqpDcg= k8s.io/client-go v0.0.0-20190620085101-78d2af792bab h1:E8Fecph0qbNsAbijJJQryKu4Oi9QTp5cVpjTE+nqg6g= k8s.io/client-go v0.0.0-20190620085101-78d2af792bab/go.mod h1:E95RaSlHr79aHaX0aGSwcPNfygDiPKOVXdmivCIZT0k= -k8s.io/client-go v11.0.0+incompatible h1:LBbX2+lOwY9flffWlJM7f1Ct8V2SRNiMRDFeiwnJo9o= -k8s.io/client-go v11.0.0+incompatible/go.mod h1:7vJpHMYJwNQCWgzmNV+VYUl1zCObLyodBc8nIyt8L5s= k8s.io/cloud-provider v0.0.0-20190620090043-8301c0bda1f0/go.mod h1:UXU55LeVTrjyQNw86sHjagiYhSZjYxWKXvx0Ml17KvM= k8s.io/cluster-bootstrap v0.0.0-20190620090013-c9a0fc045dc1/go.mod h1:cCRw3eZzlJdySYRtkL/N4cAClxYCzyrBL3V8cblTlUo= k8s.io/code-generator v0.0.0-20190612205613-18da4a14b22b/go.mod h1:G8bQwmHm2eafm5bgtX67XDZQ8CWKSGu9DekI+yN4Y5I= @@ -894,7 +760,6 @@ k8s.io/helm v2.16.1+incompatible/go.mod h1:LZzlS4LQBHfciFOurYBFkCMTaZ0D1l+p0teMg k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= k8s.io/klog v0.3.1/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/klog v0.3.3 h1:niceAagH1tzskmaie/icWd7ci1wbG7Bf2c6YGcQv+3c= k8s.io/klog v0.3.3/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= k8s.io/klog v0.4.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8= @@ -904,7 +769,6 @@ k8s.io/kube-controller-manager v0.0.0-20190620085942-b7f18460b210/go.mod h1:FoQC k8s.io/kube-openapi v0.0.0-20180731170545-e3762e86a74c/go.mod h1:BXM9ceUBTj2QnfH2MK1odQs778ajze1RxcmP6S8RVVc= k8s.io/kube-openapi v0.0.0-20190228160746-b3a7cee44a30/go.mod h1:BXM9ceUBTj2QnfH2MK1odQs778ajze1RxcmP6S8RVVc= k8s.io/kube-openapi v0.0.0-20190320154901-5e45bb682580/go.mod h1:BXM9ceUBTj2QnfH2MK1odQs778ajze1RxcmP6S8RVVc= -k8s.io/kube-openapi v0.0.0-20190603182131-db7b694dc208 h1:5sW+fEHvlJI3Ngolx30CmubFulwH28DhKjGf70Xmtco= k8s.io/kube-openapi v0.0.0-20190603182131-db7b694dc208/go.mod h1:nfDlWeOsu3pUf4yWGL+ERqohP4YsZcBJXWMK+gkzOA4= k8s.io/kube-openapi v0.0.0-20190816220812-743ec37842bf/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= k8s.io/kube-openapi v0.0.0-20190918143330-0270cf2f1c1d h1:Xpe6sK+RY4ZgCTyZ3y273UmFmURhjtoJiwOMbQsXitY= @@ -929,23 +793,17 @@ modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk= modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k= modernc.org/strutil v1.0.0/go.mod h1:lstksw84oURvj9y3tn8lGvRxyRC1S2+g5uuIzNfIOBs= modernc.org/xc v1.0.0/go.mod h1:mRNCo0bvLjGhHO9WsyuKVU4q0ceiDDDoEeWDJHrNx8I= -mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed/go.mod h1:Xkxe497xwlCKkIaQYRfC7CSLworTXY9RMqwhhCm+8Nc= -mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b/go.mod h1:2odslEg/xrtNQqCYg2/jCoyKnw3vv5biOc3JnIcYfL4= -mvdan.cc/unparam v0.0.0-20190720180237-d51796306d8f/go.mod h1:4G1h5nDURzA3bwVMZIVpwbkw+04kSxk3rAtzlimaUJw= sigs.k8s.io/controller-runtime v0.2.0/go.mod h1:ZHqrRDZi3f6BzONcvlUxkqCKgwasGk5FZrnSv9TVZF4= sigs.k8s.io/controller-tools v0.2.2/go.mod h1:8SNGuj163x/sMwydREj7ld5mIMJu1cDanIfnx6xsU70= sigs.k8s.io/kustomize v2.0.3+incompatible h1:JUufWFNlI44MdtnjUqVnvh29rR37PQFzPbLXqhyOyX0= sigs.k8s.io/kustomize v2.0.3+incompatible/go.mod h1:MkjgH3RdOWrievjo6c9T245dYlB5QeXV4WCbnt/PEpU= -sigs.k8s.io/kustomize/pluginator v1.0.0/go.mod h1:i8HdU5FdH1zDjCKiFf5CNl7slsc0QffyKsY2OuPynJ0= sigs.k8s.io/kustomize/v3 v3.1.0 h1:FnNC1UtUjZlepvWUGwaAcFHw2rjNIaZvBUPCvaXz0Fo= sigs.k8s.io/kustomize/v3 v3.1.0/go.mod h1:ztX4zYc/QIww3gSripwF7TBOarBTm5BvyAMem0kCzOE= +sigs.k8s.io/kustomize/v3 v3.2.0 h1:EKcEubO29vCbigcMoNynfyZH+ANWkML2UHWibt1Do7o= sigs.k8s.io/kustomize/v3 v3.2.0/go.mod h1:ztX4zYc/QIww3gSripwF7TBOarBTm5BvyAMem0kCzOE= -sigs.k8s.io/kustomize/v3 v3.3.1 h1:UOhJqkRINRODnKq24DoDAr4gxk2z2p9iFJWDT3OLBx8= -sigs.k8s.io/kustomize/v3 v3.3.1/go.mod h1:2ojB+51Z+YIBpEOknAFX3U8f0XXa94PFcfXPccDxAfg= sigs.k8s.io/structured-merge-diff v0.0.0-20190302045857-e85c7b244fd2/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= sigs.k8s.io/testing_frameworks v0.1.1/go.mod h1:VVBKrHmJ6Ekkfz284YKhQePcdycOzNH9qL6ht1zEr/U= sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= -sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0= vbom.ml/util v0.0.0-20160121211510-db5cfe13f5cc/go.mod h1:so/NYdZXCz+E3ZpW0uAoCj6uzU2+8OWDFv/HxUSs7kI= diff --git a/tests/pipeline/OWNERS b/tests/pipeline/OWNERS deleted file mode 100644 index dc1ca5846..000000000 --- a/tests/pipeline/OWNERS +++ /dev/null @@ -1,4 +0,0 @@ - approvers: - - Bobgy - - IronPan - - rmgogogo diff --git a/tests/jupyter/jupyter-web-app/base_v3/kustomize_test.go b/tests/stacks/examples/alice_gcp/kustomize_test.go similarity index 73% rename from tests/jupyter/jupyter-web-app/base_v3/kustomize_test.go rename to tests/stacks/examples/alice_gcp/kustomize_test.go index fbc7f0182..e1ee1ef44 100644 --- a/tests/jupyter/jupyter-web-app/base_v3/kustomize_test.go +++ b/tests/stacks/examples/alice_gcp/kustomize_test.go @@ -1,4 +1,4 @@ -package base_v3 +package alice_gcp import ( "github.com/kubeflow/manifests/tests" @@ -7,7 +7,7 @@ import ( func TestKustomize(t *testing.T) { testCase := &tests.KustomizeTestCase{ - Package: "../../../../jupyter/jupyter-web-app/base_v3", + Package: "../../../../stacks/examples/alice_gcp", Expected: "test_data/expected", } diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/admissionregistration.k8s.io_v1beta1_mutatingwebhookconfiguration_admission-webhook-mutating-webhook-configuration.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/admissionregistration.k8s.io_v1beta1_mutatingwebhookconfiguration_admission-webhook-mutating-webhook-configuration.yaml new file mode 100644 index 000000000..42c5ba57a --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/admissionregistration.k8s.io_v1beta1_mutatingwebhookconfiguration_admission-webhook-mutating-webhook-configuration.yaml @@ -0,0 +1,32 @@ +apiVersion: admissionregistration.k8s.io/v1beta1 +kind: MutatingWebhookConfiguration +metadata: + annotations: + cert-manager.io/inject-ca-from: kubeflow/admission-webhook-cert + labels: + app: admission-webhook + app.kubernetes.io/component: poddefaults + app.kubernetes.io/instance: poddefaults-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: poddefaults + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: admission-webhook + name: admission-webhook-mutating-webhook-configuration +webhooks: +- clientConfig: + caBundle: "" + service: + name: admission-webhook-service + namespace: kubeflow + path: /apply-poddefault + name: admission-webhook-deployment.kubeflow.org + rules: + - apiGroups: + - "" + apiVersions: + - v1 + operations: + - CREATE + resources: + - pods diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/apiextensions.k8s.io_v1beta1_customresourcedefinition_notebooks.kubeflow.org.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/apiextensions.k8s.io_v1beta1_customresourcedefinition_notebooks.kubeflow.org.yaml new file mode 100644 index 000000000..82d4f80fe --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/apiextensions.k8s.io_v1beta1_customresourcedefinition_notebooks.kubeflow.org.yaml @@ -0,0 +1,79 @@ +apiVersion: apiextensions.k8s.io/v1beta1 +kind: CustomResourceDefinition +metadata: + labels: + app: notebook-controller + app.kubernetes.io/component: notebook-controller + app.kubernetes.io/instance: notebook-controller-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: notebook-controller + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + kustomize.component: notebook-controller + name: notebooks.kubeflow.org +spec: + group: kubeflow.org + names: + kind: Notebook + plural: notebooks + singular: notebook + scope: Namespaced + subresources: + status: {} + validation: + openAPIV3Schema: + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + properties: + template: + description: 'INSERT ADDITIONAL SPEC FIELDS - desired state of cluster + Important: Run "make" to regenerate code after modifying this file' + properties: + spec: + type: object + type: object + type: object + status: + properties: + conditions: + description: Conditions is an array of current conditions + items: + properties: + type: + description: Type of the confition/ + type: string + required: + - type + type: object + type: array + required: + - conditions + type: object + versions: + - name: v1alpha1 + served: true + storage: false + - name: v1beta1 + served: true + storage: true + - name: v1 + served: true + storage: false +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/apiextensions.k8s.io_v1beta1_customresourcedefinition_poddefaults.kubeflow.org.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/apiextensions.k8s.io_v1beta1_customresourcedefinition_poddefaults.kubeflow.org.yaml new file mode 100644 index 000000000..c935bb9a5 --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/apiextensions.k8s.io_v1beta1_customresourcedefinition_poddefaults.kubeflow.org.yaml @@ -0,0 +1,60 @@ +apiVersion: apiextensions.k8s.io/v1beta1 +kind: CustomResourceDefinition +metadata: + labels: + app: admission-webhook + app.kubernetes.io/component: poddefaults + app.kubernetes.io/instance: poddefaults-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: poddefaults + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: admission-webhook + name: poddefaults.kubeflow.org +spec: + group: kubeflow.org + names: + kind: PodDefault + plural: poddefaults + singular: poddefault + scope: Namespaced + validation: + openAPIV3Schema: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + type: object + spec: + properties: + desc: + type: string + env: + items: + type: object + type: array + envFrom: + items: + type: object + type: array + selector: + type: object + serviceAccountName: + type: string + volumeMounts: + items: + type: object + type: array + volumes: + items: + type: object + type: array + required: + - selector + type: object + status: + type: object + type: object + version: v1alpha1 diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/apiextensions.k8s.io_v1beta1_customresourcedefinition_profiles.kubeflow.org.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/apiextensions.k8s.io_v1beta1_customresourcedefinition_profiles.kubeflow.org.yaml new file mode 100644 index 000000000..cfab8f8a4 --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/apiextensions.k8s.io_v1beta1_customresourcedefinition_profiles.kubeflow.org.yaml @@ -0,0 +1,164 @@ +apiVersion: apiextensions.k8s.io/v1beta1 +kind: CustomResourceDefinition +metadata: + creationTimestamp: null + labels: + kustomize.component: profiles + name: profiles.kubeflow.org +spec: + conversion: + strategy: None + group: kubeflow.org + names: + kind: Profile + plural: profiles + scope: Cluster + subresources: + status: {} + validation: + openAPIV3Schema: + description: Profile is the Schema for the profiles API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ProfileSpec defines the desired state of Profile + properties: + owner: + description: The profile owner + properties: + apiGroup: + description: APIGroup holds the API group of the referenced subject. + Defaults to "" for ServiceAccount subjects. Defaults to "rbac.authorization.k8s.io" + for User and Group subjects. + type: string + kind: + description: Kind of object being referenced. Values defined by + this API group are "User", "Group", and "ServiceAccount". If the + Authorizer does not recognized the kind value, the Authorizer + should report an error. + type: string + name: + description: Name of the object being referenced. + type: string + required: + - kind + - name + type: object + plugins: + items: + description: Plugin is for customize actions on different platform. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this + representation of an object. Servers should convert recognized + schemas to the latest internal value, and may reject unrecognized + values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds' + type: string + spec: + type: object + type: object + type: array + resourceQuotaSpec: + description: Resourcequota that will be applied to target namespace + properties: + hard: + additionalProperties: + type: string + description: 'hard is the set of desired hard limits for each named + resource. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/' + type: object + scopeSelector: + description: scopeSelector is also a collection of filters like + scopes that must match each object tracked by a quota but expressed + using ScopeSelectorOperator in combination with possible values. + For a resource to match, both scopes AND scopeSelector (if specified + in spec), must be matched. + properties: + matchExpressions: + description: A list of scope selector requirements by scope + of the resources. + items: + description: A scoped-resource selector requirement is a selector + that contains values, a scope name, and an operator that + relates the scope name and values. + properties: + operator: + description: Represents a scope's relationship to a set + of values. Valid operators are In, NotIn, Exists, DoesNotExist. + type: string + scopeName: + description: The name of the scope that the selector applies + to. + type: string + values: + description: An array of string values. If the operator + is In or NotIn, the values array must be non-empty. + If the operator is Exists or DoesNotExist, the values + array must be empty. This array is replaced during a + strategic merge patch. + items: + type: string + type: array + required: + - operator + - scopeName + type: object + type: array + type: object + scopes: + description: A collection of filters that must match each object + tracked by a quota. If not specified, the quota matches all objects. + items: + description: A ResourceQuotaScope defines a filter that must match + each object tracked by a quota + type: string + type: array + type: object + type: object + status: + description: ProfileStatus defines the observed state of Profile + properties: + conditions: + items: + properties: + message: + type: string + status: + type: string + type: + type: string + type: object + type: array + type: object + type: object + version: v1 + versions: + - name: v1 + served: true + storage: true + - name: v1beta1 + served: true + storage: false +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/apiextensions.k8s.io_v1beta1_customresourcedefinition_pytorchjobs.kubeflow.org.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/apiextensions.k8s.io_v1beta1_customresourcedefinition_pytorchjobs.kubeflow.org.yaml new file mode 100644 index 000000000..3226854c8 --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/apiextensions.k8s.io_v1beta1_customresourcedefinition_pytorchjobs.kubeflow.org.yaml @@ -0,0 +1,49 @@ +apiVersion: apiextensions.k8s.io/v1beta1 +kind: CustomResourceDefinition +metadata: + labels: + app.kubernetes.io/component: pytorch + app.kubernetes.io/instance: pytorch-job-crds-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: pytorch-job-crds + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + name: pytorchjobs.kubeflow.org +spec: + additionalPrinterColumns: + - JSONPath: .status.conditions[-1:].type + name: State + type: string + - JSONPath: .metadata.creationTimestamp + name: Age + type: date + group: kubeflow.org + names: + kind: PyTorchJob + plural: pytorchjobs + singular: pytorchjob + scope: Namespaced + subresources: + status: {} + validation: + openAPIV3Schema: + properties: + spec: + properties: + pytorchReplicaSpecs: + properties: + Master: + properties: + replicas: + maximum: 1 + minimum: 1 + type: integer + Worker: + properties: + replicas: + minimum: 1 + type: integer + versions: + - name: v1 + served: true + storage: true diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/apiextensions.k8s.io_v1beta1_customresourcedefinition_tfjobs.kubeflow.org.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/apiextensions.k8s.io_v1beta1_customresourcedefinition_tfjobs.kubeflow.org.yaml new file mode 100644 index 000000000..2c9e7eedc --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/apiextensions.k8s.io_v1beta1_customresourcedefinition_tfjobs.kubeflow.org.yaml @@ -0,0 +1,54 @@ +apiVersion: apiextensions.k8s.io/v1beta1 +kind: CustomResourceDefinition +metadata: + labels: + app.kubernetes.io/component: tfjob + app.kubernetes.io/instance: tf-job-crds-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: tf-job-crds + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + name: tfjobs.kubeflow.org +spec: + additionalPrinterColumns: + - JSONPath: .status.conditions[-1:].type + name: State + type: string + - JSONPath: .metadata.creationTimestamp + name: Age + type: date + group: kubeflow.org + names: + kind: TFJob + plural: tfjobs + singular: tfjob + scope: Namespaced + subresources: + status: {} + validation: + openAPIV3Schema: + properties: + spec: + properties: + tfReplicaSpecs: + properties: + Chief: + properties: + replicas: + maximum: 1 + minimum: 1 + type: integer + PS: + properties: + replicas: + minimum: 1 + type: integer + Worker: + properties: + replicas: + minimum: 1 + type: integer + versions: + - name: v1 + served: true + storage: true diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/app.k8s.io_v1beta1_application_centraldashboard.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/app.k8s.io_v1beta1_application_centraldashboard.yaml new file mode 100644 index 000000000..2efb44c0c --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/app.k8s.io_v1beta1_application_centraldashboard.yaml @@ -0,0 +1,61 @@ +apiVersion: app.k8s.io/v1beta1 +kind: Application +metadata: + labels: + app.kubernetes.io/component: centraldashboard + app.kubernetes.io/instance: centraldashboard-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: centraldashboard + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + name: centraldashboard + namespace: kubeflow +spec: + addOwnerRef: true + componentKinds: + - group: core + kind: ConfigMap + - group: apps + kind: Deployment + - group: rbac.authorization.k8s.io + kind: RoleBinding + - group: rbac.authorization.k8s.io + kind: Role + - group: core + kind: ServiceAccount + - group: core + kind: Service + - group: networking.istio.io + kind: VirtualService + descriptor: + description: Provides a Dashboard UI for kubeflow + keywords: + - centraldashboard + - kubeflow + links: + - description: About + url: https://github.com/kubeflow/kubeflow/tree/master/components/centraldashboard + maintainers: + - email: prodonjs@gmail.com + name: Jason Prodonovich + - email: apverma@google.com + name: Apoorv Verma + - email: adhita94@gmail.com + name: Adhita Selvaraj + owners: + - email: prodonjs@gmail.com + name: Jason Prodonovich + - email: apverma@google.com + name: Apoorv Verma + - email: adhita94@gmail.com + name: Adhita Selvaraj + type: centraldashboard + version: v1beta1 + selector: + matchLabels: + app.kubernetes.io/component: centraldashboard + app.kubernetes.io/instance: centraldashboard-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: centraldashboard + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/app.k8s.io_v1beta1_application_gpu-driver.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/app.k8s.io_v1beta1_application_gpu-driver.yaml new file mode 100644 index 000000000..cb18330f8 --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/app.k8s.io_v1beta1_application_gpu-driver.yaml @@ -0,0 +1,39 @@ +apiVersion: app.k8s.io/v1beta1 +kind: Application +metadata: + labels: + app.kubernetes.io/component: gpu-driver + app.kubernetes.io/instance: gpu-driver-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: gpu-driver + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + name: gpu-driver + namespace: kubeflow +spec: + addOwnerRef: true + componentKinds: + - group: core + kind: ConfigMap + - group: apps + kind: Deployment + descriptor: + description: "" + keywords: + - gpu-driver + - kubeflow + links: + - description: About + url: "" + maintainers: [] + owners: [] + type: gpu-driver + version: v1beta1 + selector: + matchLabels: + app.kubernetes.io/component: gpu-driver + app.kubernetes.io/instance: gpu-driver-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: gpu-driver + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 diff --git a/tests/jupyter/jupyter-web-app/base_v3/test_data/expected/app.k8s.io_v1beta1_application_jupyter-web-app-jupyter-web-app.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/app.k8s.io_v1beta1_application_jupyter-web-app-jupyter-web-app.yaml similarity index 100% rename from tests/jupyter/jupyter-web-app/base_v3/test_data/expected/app.k8s.io_v1beta1_application_jupyter-web-app-jupyter-web-app.yaml rename to tests/stacks/examples/alice_gcp/test_data/expected/app.k8s.io_v1beta1_application_jupyter-web-app-jupyter-web-app.yaml diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/app.k8s.io_v1beta1_application_notebook-controller-notebook-controller.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/app.k8s.io_v1beta1_application_notebook-controller-notebook-controller.yaml new file mode 100644 index 000000000..353c9e4db --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/app.k8s.io_v1beta1_application_notebook-controller-notebook-controller.yaml @@ -0,0 +1,50 @@ +apiVersion: app.k8s.io/v1beta1 +kind: Application +metadata: + labels: + app: notebook-controller + app.kubernetes.io/component: notebook-controller + app.kubernetes.io/instance: notebook-controller-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: notebook-controller + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + kustomize.component: notebook-controller + name: notebook-controller-notebook-controller + namespace: kubeflow +spec: + addOwnerRef: true + componentKinds: + - group: core + kind: Service + - group: apps + kind: Deployment + - group: core + kind: ServiceAccount + descriptor: + description: Notebooks controller allows users to create a custom resource \"Notebook\" + (jupyter notebook). + keywords: + - jupyter + - notebook + - notebook-controller + - jupyterhub + links: + - description: About + url: https://github.com/kubeflow/kubeflow/tree/master/components/notebook-controller + maintainers: + - email: lunkai@google.com + name: Lun-kai Hsu + owners: + - email: lunkai@gogle.com + name: Lun-kai Hsu + type: notebook-controller + version: v1beta1 + selector: + matchLabels: + app.kubernetes.io/component: notebook-controller + app.kubernetes.io/instance: notebook-controller-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: notebook-controller + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/app.k8s.io_v1beta1_application_profiles-profiles.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/app.k8s.io_v1beta1_application_profiles-profiles.yaml new file mode 100644 index 000000000..fc90772a0 --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/app.k8s.io_v1beta1_application_profiles-profiles.yaml @@ -0,0 +1,44 @@ +apiVersion: app.k8s.io/v1beta1 +kind: Application +metadata: + labels: + kustomize.component: profiles + name: profiles-profiles + namespace: kubeflow +spec: + addOwnerRef: true + componentKinds: + - group: apps + kind: Deployment + - group: core + kind: ServiceAccount + - group: core + kind: Service + - group: kubeflow.org + kind: Profile + descriptor: + description: "" + keywords: + - profiles + - kubeflow + links: + - description: profiles + url: https://github.com/kubeflow/kubeflow/tree/master/components/profile-controller + - description: kfam + url: https://github.com/kubeflow/kubeflow/tree/master/components/access-management + maintainers: + - email: kunming@google.com + name: Kunming Qu + owners: + - email: kunming@google.com + name: Kunming Qu + type: profiles + version: v1 + selector: + matchLabels: + app.kubernetes.io/component: profiles + app.kubernetes.io/instance: profiles-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: profiles + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/app.k8s.io_v1beta1_application_pytorch-job-crds.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/app.k8s.io_v1beta1_application_pytorch-job-crds.yaml new file mode 100644 index 000000000..d3272d8b8 --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/app.k8s.io_v1beta1_application_pytorch-job-crds.yaml @@ -0,0 +1,50 @@ +apiVersion: app.k8s.io/v1beta1 +kind: Application +metadata: + labels: + app.kubernetes.io/component: pytorch + app.kubernetes.io/instance: pytorch-job-crds-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: pytorch-job-crds + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + name: pytorch-job-crds + namespace: kubeflow +spec: + addOwnerRef: true + componentKinds: + - group: core + kind: Service + - group: apps + kind: Deployment + - group: core + kind: ServiceAccount + - group: kubeflow.org + kind: PyTorchJob + descriptor: + description: Pytorch-job-crds contains the "PyTorchJob" custom resource definition. + keywords: + - pytorchjob + - pytorch-operator + - pytorch-training + links: + - description: About + url: https://github.com/kubeflow/pytorch-operator + - description: Docs + url: https://www.kubeflow.org/docs/reference/pytorchjob/v1/pytorch/ + maintainers: + - email: johnugeo@cisco.com + name: Johnu George + owners: + - email: johnugeo@cisco.com + name: Johnu George + type: pytorch-job-crds + version: v1 + selector: + matchLabels: + app.kubernetes.io/component: pytorch + app.kubernetes.io/instance: pytorch-job-crds-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: pytorch-job-crds + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/app.k8s.io_v1beta1_application_pytorch-operator.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/app.k8s.io_v1beta1_application_pytorch-operator.yaml new file mode 100644 index 000000000..7837629da --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/app.k8s.io_v1beta1_application_pytorch-operator.yaml @@ -0,0 +1,53 @@ +apiVersion: app.k8s.io/v1beta1 +kind: Application +metadata: + labels: + app.kubernetes.io/component: pytorch + app.kubernetes.io/instance: pytorch-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: pytorch-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + name: pytorch-operator + namespace: kubeflow +spec: + addOwnerRef: true + componentKinds: + - group: core + kind: Service + - group: apps + kind: Deployment + - group: core + kind: ConfigMap + - group: core + kind: ServiceAccount + - group: kubeflow.org + kind: PyTorchJob + descriptor: + description: Pytorch-operator allows users to create and manage the "PyTorchJob" + custom resource. + keywords: + - pytorchjob + - pytorch-operator + - pytorch-training + links: + - description: About + url: https://github.com/kubeflow/pytorch-operator + - description: Docs + url: https://www.kubeflow.org/docs/reference/pytorchjob/v1/pytorch/ + maintainers: + - email: johnugeo@cisco.com + name: Johnu George + owners: + - email: johnugeo@cisco.com + name: Johnu George + type: pytorch-operator + version: v1 + selector: + matchLabels: + app.kubernetes.io/component: pytorch + app.kubernetes.io/instance: pytorch-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: pytorch-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/app.k8s.io_v1beta1_application_tf-job-crds.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/app.k8s.io_v1beta1_application_tf-job-crds.yaml new file mode 100644 index 000000000..46acbea60 --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/app.k8s.io_v1beta1_application_tf-job-crds.yaml @@ -0,0 +1,50 @@ +apiVersion: app.k8s.io/v1beta1 +kind: Application +metadata: + labels: + app.kubernetes.io/component: tfjob + app.kubernetes.io/instance: tf-job-crds-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: tf-job-crds + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + name: tf-job-crds + namespace: kubeflow +spec: + addOwnerRef: true + componentKinds: + - group: core + kind: Service + - group: apps + kind: Deployment + - group: core + kind: ServiceAccount + - group: kubeflow.org + kind: TFJob + descriptor: + description: Tf-job-crds contains the "TFJob" custom resource definition. + keywords: + - tfjob + - tf-operator + - tf-training + links: + - description: About + url: https://github.com/kubeflow/tf-operator + - description: Docs + url: https://www.kubeflow.org/docs/reference/tfjob/v1/tensorflow/ + maintainers: + - email: ricliu@google.com + name: Richard Liu + owners: + - email: ricliu@google.com + name: Richard Liu + type: tf-job-crds + version: v1 + selector: + matchLabels: + app.kubernetes.io/component: tfjob + app.kubernetes.io/instance: tf-job-crds-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: tf-job-crds + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/app.k8s.io_v1beta1_application_tf-job-operator.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/app.k8s.io_v1beta1_application_tf-job-operator.yaml new file mode 100644 index 000000000..8a0b4524a --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/app.k8s.io_v1beta1_application_tf-job-operator.yaml @@ -0,0 +1,51 @@ +apiVersion: app.k8s.io/v1beta1 +kind: Application +metadata: + labels: + app.kubernetes.io/component: tfjob + app.kubernetes.io/instance: tf-job-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: tf-job-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + name: tf-job-operator + namespace: kubeflow +spec: + addOwnerRef: true + componentKinds: + - group: core + kind: Service + - group: apps + kind: Deployment + - group: core + kind: ServiceAccount + - group: kubeflow.org + kind: TFJob + descriptor: + description: Tf-operator allows users to create and manage the "TFJob" custom + resource. + keywords: + - tfjob + - tf-operator + - tf-training + links: + - description: About + url: https://github.com/kubeflow/tf-operator + - description: Docs + url: https://www.kubeflow.org/docs/reference/tfjob/v1/tensorflow/ + maintainers: + - email: ricliu@google.com + name: Richard Liu + owners: + - email: ricliu@google.com + name: Richard Liu + type: tf-job-operator + version: v1 + selector: + matchLabels: + app.kubernetes.io/component: tfjob + app.kubernetes.io/instance: tf-job-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: tf-job-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/app.k8s.io_v1beta1_application_webhook.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/app.k8s.io_v1beta1_application_webhook.yaml new file mode 100644 index 000000000..8acf7bf32 --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/app.k8s.io_v1beta1_application_webhook.yaml @@ -0,0 +1,43 @@ +apiVersion: app.k8s.io/v1beta1 +kind: Application +metadata: + labels: + app.kubernetes.io/component: poddefaults + app.kubernetes.io/instance: poddefaults-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: poddefaults + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + name: webhook + namespace: kubeflow +spec: + addOwnerRef: true + componentKinds: + - group: core + kind: ConfigMap + - group: apps + kind: StatefulSet + - group: core + kind: Service + - group: core + kind: ServiceAccount + descriptor: + description: injects volume, volume mounts, env vars into PodDefault + keywords: + - admission-webhook + - kubeflow + links: + - description: About + url: https://github.com/kubeflow/kubeflow/tree/master/components/admission-webhook + maintainers: [] + owners: [] + type: bootstrap + version: v1beta1 + selector: + matchLabels: + app.kubernetes.io/component: bootstrap + app.kubernetes.io/instance: webhook-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: webhook + app.kubernetes.io/part-of: webhook + app.kubernetes.io/version: v1.0.0 diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/apps_v1_daemonset_nvidia-driver-installer.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/apps_v1_daemonset_nvidia-driver-installer.yaml new file mode 100644 index 000000000..4c3e58c66 --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/apps_v1_daemonset_nvidia-driver-installer.yaml @@ -0,0 +1,84 @@ +apiVersion: apps/v1 +kind: DaemonSet +metadata: + labels: + app.kubernetes.io/component: gpu-driver + app.kubernetes.io/instance: gpu-driver-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: gpu-driver + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + k8s-app: nvidia-driver-installer + kustomize.component: gpu-driver + name: nvidia-driver-installer + namespace: kubeflow +spec: + selector: + matchLabels: + app.kubernetes.io/component: gpu-driver + app.kubernetes.io/instance: gpu-driver-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: gpu-driver + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: gpu-driver + template: + metadata: + labels: + app.kubernetes.io/component: gpu-driver + app.kubernetes.io/instance: gpu-driver-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: gpu-driver + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + k8s-app: nvidia-driver-installer + kustomize.component: gpu-driver + name: nvidia-driver-installer + spec: + affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: cloud.google.com/gke-accelerator + operator: Exists + containers: + - image: gcr.io/google-containers/pause:2.0 + name: pause + hostNetwork: true + hostPID: true + initContainers: + - env: + - name: NVIDIA_INSTALL_DIR_HOST + value: /home/kubernetes/bin/nvidia + - name: NVIDIA_INSTALL_DIR_CONTAINER + value: /usr/local/nvidia + - name: ROOT_MOUNT_DIR + value: /root + image: cos-nvidia-installer:fixed + imagePullPolicy: Never + name: nvidia-driver-installer + resources: + requests: + cpu: 0.15 + securityContext: + privileged: true + volumeMounts: + - mountPath: /usr/local/nvidia + name: nvidia-install-dir-host + - mountPath: /dev + name: dev + - mountPath: /root + name: root-mount + tolerations: + - operator: Exists + volumes: + - hostPath: + path: /dev + name: dev + - hostPath: + path: /home/kubernetes/bin/nvidia + name: nvidia-install-dir-host + - hostPath: + path: / + name: root-mount diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/apps_v1_deployment_admission-webhook-deployment.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/apps_v1_deployment_admission-webhook-deployment.yaml new file mode 100644 index 000000000..32d071f03 --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/apps_v1_deployment_admission-webhook-deployment.yaml @@ -0,0 +1,54 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: admission-webhook + app.kubernetes.io/component: poddefaults + app.kubernetes.io/instance: poddefaults-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: poddefaults + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: admission-webhook + name: admission-webhook-deployment + namespace: kubeflow +spec: + selector: + matchLabels: + app: admission-webhook + app.kubernetes.io/component: poddefaults + app.kubernetes.io/instance: poddefaults-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: poddefaults + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: admission-webhook + template: + metadata: + annotations: + sidecar.istio.io/inject: "false" + labels: + app: admission-webhook + app.kubernetes.io/component: poddefaults + app.kubernetes.io/instance: poddefaults-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: poddefaults + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: admission-webhook + spec: + containers: + - args: + - --tlsCertFile=/etc/webhook/certs/tls.crt + - --tlsKeyFile=/etc/webhook/certs/tls.key + image: gcr.io/kubeflow-images-public/admission-webhook:vmaster-gaf96e4e3 + name: admission-webhook + volumeMounts: + - mountPath: /etc/webhook/certs + name: webhook-cert + readOnly: true + serviceAccountName: admission-webhook-service-account + volumes: + - name: webhook-cert + secret: + secretName: webhook-certs diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/apps_v1_deployment_centraldashboard.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/apps_v1_deployment_centraldashboard.yaml new file mode 100644 index 000000000..92c4ef046 --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/apps_v1_deployment_centraldashboard.yaml @@ -0,0 +1,62 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: centraldashboard + app.kubernetes.io/component: centraldashboard + app.kubernetes.io/instance: centraldashboard-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: centraldashboard + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + name: centraldashboard + namespace: kubeflow +spec: + replicas: 1 + selector: + matchLabels: + app: centraldashboard + app.kubernetes.io/component: centraldashboard + app.kubernetes.io/instance: centraldashboard-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: centraldashboard + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + template: + metadata: + annotations: + sidecar.istio.io/inject: "false" + labels: + app: centraldashboard + app.kubernetes.io/component: centraldashboard + app.kubernetes.io/instance: centraldashboard-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: centraldashboard + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + spec: + containers: + - env: + - name: USERID_HEADER + valueFrom: + configMapKeyRef: + key: userid-header + name: kubeflow-config-4bkkg42k5m + - name: USERID_PREFIX + valueFrom: + configMapKeyRef: + key: userid-prefix + name: kubeflow-config-4bkkg42k5m + image: gcr.io/kubeflow-images-public/centraldashboard + imagePullPolicy: IfNotPresent + livenessProbe: + httpGet: + path: /healthz + port: 8082 + initialDelaySeconds: 30 + periodSeconds: 30 + name: centraldashboard + ports: + - containerPort: 8082 + protocol: TCP + serviceAccountName: centraldashboard diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/apps_v1_deployment_jupyter-web-app-deployment.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/apps_v1_deployment_jupyter-web-app-deployment.yaml new file mode 100644 index 000000000..5c6912f69 --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/apps_v1_deployment_jupyter-web-app-deployment.yaml @@ -0,0 +1,46 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: jupyter-web-app + kustomize.component: jupyter-web-app + name: jupyter-web-app-deployment + namespace: kubeflow +spec: + replicas: 1 + selector: + matchLabels: + app: jupyter-web-app + kustomize.component: jupyter-web-app + template: + metadata: + annotations: + sidecar.istio.io/inject: "false" + labels: + app: jupyter-web-app + kustomize.component: jupyter-web-app + spec: + containers: + - env: + - name: USERID_HEADER + valueFrom: + configMapKeyRef: + key: userid-header + name: kubeflow-config-4bkkg42k5m + - name: USERID_PREFIX + valueFrom: + configMapKeyRef: + key: userid-prefix + name: kubeflow-config-4bkkg42k5m + image: gcr.io/kubeflow-images-public/jupyter-web-app:vmaster-gd9be4b9e + name: jupyter-web-app + ports: + - containerPort: 5000 + volumeMounts: + - mountPath: /etc/config + name: config-volume + serviceAccountName: jupyter-web-app-service-account + volumes: + - configMap: + name: jupyter-web-app-jupyter-web-app-config-5cc2fchd2g + name: config-volume diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/apps_v1_deployment_notebook-controller-deployment.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/apps_v1_deployment_notebook-controller-deployment.yaml new file mode 100644 index 000000000..b867bfa01 --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/apps_v1_deployment_notebook-controller-deployment.yaml @@ -0,0 +1,63 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: notebook-controller + app.kubernetes.io/component: notebook-controller + app.kubernetes.io/instance: notebook-controller-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: notebook-controller + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + kustomize.component: notebook-controller + name: notebook-controller-deployment + namespace: kubeflow +spec: + selector: + matchLabels: + app: notebook-controller + app.kubernetes.io/component: notebook-controller + app.kubernetes.io/instance: notebook-controller-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: notebook-controller + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + kustomize.component: notebook-controller + template: + metadata: + annotations: + sidecar.istio.io/inject: "false" + labels: + app: notebook-controller + app.kubernetes.io/component: notebook-controller + app.kubernetes.io/instance: notebook-controller-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: notebook-controller + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + kustomize.component: notebook-controller + spec: + containers: + - command: + - /manager + env: + - name: USE_ISTIO + valueFrom: + configMapKeyRef: + key: USE_ISTIO + name: notebook-controller-notebook-controller-config-h4d668t5tb + - name: ISTIO_GATEWAY + valueFrom: + configMapKeyRef: + key: ISTIO_GATEWAY + name: notebook-controller-notebook-controller-config-h4d668t5tb + image: gcr.io/kubeflow-images-public/notebook-controller:vmaster-gf39279c0 + imagePullPolicy: Always + livenessProbe: + httpGet: + path: /metrics + port: 8080 + initialDelaySeconds: 30 + periodSeconds: 30 + name: manager + serviceAccountName: notebook-controller-service-account diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/apps_v1_deployment_profiles-deployment.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/apps_v1_deployment_profiles-deployment.yaml new file mode 100644 index 000000000..1fe202426 --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/apps_v1_deployment_profiles-deployment.yaml @@ -0,0 +1,95 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + kustomize.component: profiles + name: profiles-deployment + namespace: kubeflow +spec: + replicas: 1 + selector: + matchLabels: + kustomize.component: profiles + template: + metadata: + annotations: + sidecar.istio.io/inject: "false" + labels: + kustomize.component: profiles + spec: + containers: + - args: null + command: + - /manager + - -userid-header + - $(USERID_HEADER) + - -userid-prefix + - $(USERID_PREFIX) + - -workload-identity + - $(WORKLOAD_IDENTITY) + env: + - name: USERID_HEADER + valueFrom: + configMapKeyRef: + key: userid-header + name: kubeflow-config-4bkkg42k5m + - name: USERID_PREFIX + valueFrom: + configMapKeyRef: + key: userid-prefix + name: kubeflow-config-4bkkg42k5m + - name: WORKLOAD_IDENTITY + valueFrom: + configMapKeyRef: + key: gcp-sa + name: profiles-profiles-config-4mgcmtgk6t + image: gcr.io/kubeflow-images-public/profile-controller:vmaster-g34aa47c2 + imagePullPolicy: Always + livenessProbe: + httpGet: + path: /metrics + port: 8080 + initialDelaySeconds: 30 + periodSeconds: 30 + name: manager + ports: + - containerPort: 8080 + name: manager-http + protocol: TCP + - args: null + command: + - /access-management + - -cluster-admin + - $(CLUSTER_ADMIN) + - -userid-prefix + - $(USERID_PREFIX) + env: + - name: USERID_HEADER + valueFrom: + configMapKeyRef: + key: userid-header + name: kubeflow-config-4bkkg42k5m + - name: USERID_PREFIX + valueFrom: + configMapKeyRef: + key: userid-prefix + name: kubeflow-config-4bkkg42k5m + - name: CLUSTER_ADMIN + valueFrom: + configMapKeyRef: + key: admin + name: profiles-profiles-config-4mgcmtgk6t + image: gcr.io/kubeflow-images-public/kfam:vmaster-gf3e09203 + imagePullPolicy: Always + livenessProbe: + httpGet: + path: /metrics + port: 8081 + initialDelaySeconds: 30 + periodSeconds: 30 + name: kfam + ports: + - containerPort: 8081 + name: kfam-http + protocol: TCP + serviceAccountName: profiles-controller-service-account diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/apps_v1_deployment_pytorch-operator.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/apps_v1_deployment_pytorch-operator.yaml new file mode 100644 index 000000000..7eb5df4d4 --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/apps_v1_deployment_pytorch-operator.yaml @@ -0,0 +1,57 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app.kubernetes.io/component: pytorch + app.kubernetes.io/instance: pytorch-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: pytorch-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: pytorch-operator + name: pytorch-operator + namespace: kubeflow +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/component: pytorch + app.kubernetes.io/instance: pytorch-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: pytorch-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: pytorch-operator + name: pytorch-operator + template: + metadata: + annotations: + sidecar.istio.io/inject: "false" + labels: + app.kubernetes.io/component: pytorch + app.kubernetes.io/instance: pytorch-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: pytorch-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: pytorch-operator + name: pytorch-operator + spec: + containers: + - command: + - /pytorch-operator.v1 + - --alsologtostderr + - -v=1 + - --monitoring-port=8443 + env: + - name: MY_POD_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + - name: MY_POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + image: gcr.io/kubeflow-images-public/pytorch-operator:vmaster-g047cf0f + name: pytorch-operator + serviceAccountName: pytorch-operator diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/apps_v1_deployment_tf-job-operator.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/apps_v1_deployment_tf-job-operator.yaml new file mode 100644 index 000000000..b6030a30a --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/apps_v1_deployment_tf-job-operator.yaml @@ -0,0 +1,55 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app.kubernetes.io/component: tfjob + app.kubernetes.io/instance: tf-job-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: tf-job-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: tf-job-operator + name: tf-job-operator + namespace: kubeflow +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/component: tfjob + app.kubernetes.io/instance: tf-job-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: tf-job-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: tf-job-operator + template: + metadata: + annotations: + sidecar.istio.io/inject: "false" + labels: + app.kubernetes.io/component: tfjob + app.kubernetes.io/instance: tf-job-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: tf-job-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: tf-job-operator + name: tf-job-operator + spec: + containers: + - args: + - --alsologtostderr + - -v=1 + - --monitoring-port=8443 + env: + - name: MY_POD_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + - name: MY_POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + image: gcr.io/kubeflow-images-public/tf_operator:vmaster-gd455e6ef + name: tf-job-operator + serviceAccountName: tf-job-operator diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/cert-manager.io_v1alpha2_certificate_admission-webhook-cert.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/cert-manager.io_v1alpha2_certificate_admission-webhook-cert.yaml new file mode 100644 index 000000000..b45202d3d --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/cert-manager.io_v1alpha2_certificate_admission-webhook-cert.yaml @@ -0,0 +1,22 @@ +apiVersion: cert-manager.io/v1alpha2 +kind: Certificate +metadata: + labels: + app.kubernetes.io/component: poddefaults + app.kubernetes.io/instance: poddefaults-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: poddefaults + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + name: admission-webhook-cert + namespace: kubeflow +spec: + commonName: admission-webhook-service.kubeflow.svc + dnsNames: + - admission-webhook-service.kubeflow.svc + - admission-webhook-service.kubeflow.svc.cluster.local + isCA: true + issuerRef: + kind: ClusterIssuer + name: kubeflow-self-signing-issuer + secretName: webhook-certs diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/networking.istio.io_v1alpha3_virtualservice_centraldashboard.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/networking.istio.io_v1alpha3_virtualservice_centraldashboard.yaml new file mode 100644 index 000000000..29caf97d7 --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/networking.istio.io_v1alpha3_virtualservice_centraldashboard.yaml @@ -0,0 +1,28 @@ +apiVersion: networking.istio.io/v1alpha3 +kind: VirtualService +metadata: + labels: + app.kubernetes.io/component: centraldashboard + app.kubernetes.io/instance: centraldashboard-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: centraldashboard + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + name: centraldashboard + namespace: kubeflow +spec: + gateways: + - kubeflow-gateway + hosts: + - '*' + http: + - match: + - uri: + prefix: / + rewrite: + uri: / + route: + - destination: + host: centraldashboard.kubeflow.svc.cluster.local + port: + number: 80 diff --git a/tests/jupyter/jupyter-web-app/base_v3/test_data/expected/networking.istio.io_v1alpha3_virtualservice_jupyter-web-app-jupyter-web-app.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/networking.istio.io_v1alpha3_virtualservice_jupyter-web-app-jupyter-web-app.yaml similarity index 87% rename from tests/jupyter/jupyter-web-app/base_v3/test_data/expected/networking.istio.io_v1alpha3_virtualservice_jupyter-web-app-jupyter-web-app.yaml rename to tests/stacks/examples/alice_gcp/test_data/expected/networking.istio.io_v1alpha3_virtualservice_jupyter-web-app-jupyter-web-app.yaml index fe316c610..1aaf497f8 100644 --- a/tests/jupyter/jupyter-web-app/base_v3/test_data/expected/networking.istio.io_v1alpha3_virtualservice_jupyter-web-app-jupyter-web-app.yaml +++ b/tests/stacks/examples/alice_gcp/test_data/expected/networking.istio.io_v1alpha3_virtualservice_jupyter-web-app-jupyter-web-app.yaml @@ -23,6 +23,6 @@ spec: uri: / route: - destination: - host: jupyter-web-app-service.$(namespace).svc.$(clusterDomain) + host: jupyter-web-app-service.kubeflow.svc.cluster.local port: number: 80 diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/networking.istio.io_v1alpha3_virtualservice_profiles-kfam.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/networking.istio.io_v1alpha3_virtualservice_profiles-kfam.yaml new file mode 100644 index 000000000..1bfe3a5c7 --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/networking.istio.io_v1alpha3_virtualservice_profiles-kfam.yaml @@ -0,0 +1,27 @@ +apiVersion: networking.istio.io/v1alpha3 +kind: VirtualService +metadata: + labels: + kustomize.component: profiles + name: profiles-kfam + namespace: kubeflow +spec: + gateways: + - kubeflow-gateway + hosts: + - '*' + http: + - headers: + request: + add: + x-forwarded-prefix: /kfam + match: + - uri: + prefix: /kfam/ + rewrite: + uri: /kfam/ + route: + - destination: + host: profiles-kfam.kubeflow.svc.cluster.local + port: + number: 8081 diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_admission-webhook-cluster-role.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_admission-webhook-cluster-role.yaml new file mode 100644 index 000000000..9e871ad94 --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_admission-webhook-cluster-role.yaml @@ -0,0 +1,26 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + app: admission-webhook + app.kubernetes.io/component: poddefaults + app.kubernetes.io/instance: poddefaults-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: poddefaults + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: admission-webhook + name: admission-webhook-cluster-role +rules: +- apiGroups: + - kubeflow.org + resources: + - poddefaults + verbs: + - get + - watch + - list + - update + - create + - patch + - delete diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_admission-webhook-kubeflow-poddefaults-admin.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_admission-webhook-kubeflow-poddefaults-admin.yaml new file mode 100644 index 000000000..4d5d4390e --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_admission-webhook-kubeflow-poddefaults-admin.yaml @@ -0,0 +1,19 @@ +aggregationRule: + clusterRoleSelectors: + - matchLabels: + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-poddefaults-admin: "true" +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + app: admission-webhook + app.kubernetes.io/component: poddefaults + app.kubernetes.io/instance: poddefaults-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: poddefaults + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: admission-webhook + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-admin: "true" + name: admission-webhook-kubeflow-poddefaults-admin +rules: [] diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_admission-webhook-kubeflow-poddefaults-edit.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_admission-webhook-kubeflow-poddefaults-edit.yaml new file mode 100644 index 000000000..b7428221e --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_admission-webhook-kubeflow-poddefaults-edit.yaml @@ -0,0 +1,19 @@ +aggregationRule: + clusterRoleSelectors: + - matchLabels: + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-poddefaults-edit: "true" +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + app: admission-webhook + app.kubernetes.io/component: poddefaults + app.kubernetes.io/instance: poddefaults-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: poddefaults + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: admission-webhook + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-edit: "true" + name: admission-webhook-kubeflow-poddefaults-edit +rules: [] diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_admission-webhook-kubeflow-poddefaults-view.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_admission-webhook-kubeflow-poddefaults-view.yaml new file mode 100644 index 000000000..0683c8eec --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_admission-webhook-kubeflow-poddefaults-view.yaml @@ -0,0 +1,25 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + app: admission-webhook + app.kubernetes.io/component: poddefaults + app.kubernetes.io/instance: poddefaults-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: poddefaults + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: admission-webhook + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-poddefaults-admin: "true" + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-poddefaults-edit: "true" + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-view: "true" + name: admission-webhook-kubeflow-poddefaults-view +rules: +- apiGroups: + - kubeflow.org + resources: + - poddefaults + verbs: + - get + - list + - watch diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_centraldashboard.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_centraldashboard.yaml new file mode 100644 index 000000000..0c5d9a174 --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_centraldashboard.yaml @@ -0,0 +1,23 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + app: centraldashboard + app.kubernetes.io/component: centraldashboard + app.kubernetes.io/instance: centraldashboard-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: centraldashboard + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + name: centraldashboard +rules: +- apiGroups: + - "" + resources: + - events + - namespaces + - nodes + verbs: + - get + - list + - watch diff --git a/tests/jupyter/jupyter-web-app/base_v3/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_jupyter-web-app-cluster-role.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_jupyter-web-app-cluster-role.yaml similarity index 100% rename from tests/jupyter/jupyter-web-app/base_v3/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_jupyter-web-app-cluster-role.yaml rename to tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_jupyter-web-app-cluster-role.yaml diff --git a/tests/jupyter/jupyter-web-app/base_v3/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_jupyter-web-app-kubeflow-notebook-ui-admin.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_jupyter-web-app-kubeflow-notebook-ui-admin.yaml similarity index 100% rename from tests/jupyter/jupyter-web-app/base_v3/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_jupyter-web-app-kubeflow-notebook-ui-admin.yaml rename to tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_jupyter-web-app-kubeflow-notebook-ui-admin.yaml diff --git a/tests/jupyter/jupyter-web-app/base_v3/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_jupyter-web-app-kubeflow-notebook-ui-edit.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_jupyter-web-app-kubeflow-notebook-ui-edit.yaml similarity index 100% rename from tests/jupyter/jupyter-web-app/base_v3/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_jupyter-web-app-kubeflow-notebook-ui-edit.yaml rename to tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_jupyter-web-app-kubeflow-notebook-ui-edit.yaml diff --git a/tests/jupyter/jupyter-web-app/base_v3/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_jupyter-web-app-kubeflow-notebook-ui-view.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_jupyter-web-app-kubeflow-notebook-ui-view.yaml similarity index 100% rename from tests/jupyter/jupyter-web-app/base_v3/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_jupyter-web-app-kubeflow-notebook-ui-view.yaml rename to tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_jupyter-web-app-kubeflow-notebook-ui-view.yaml diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_kubeflow-pytorchjobs-admin.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_kubeflow-pytorchjobs-admin.yaml new file mode 100644 index 000000000..7dfa6d691 --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_kubeflow-pytorchjobs-admin.yaml @@ -0,0 +1,18 @@ +aggregationRule: + clusterRoleSelectors: + - matchLabels: + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-pytorchjobs-admin: "true" +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + app.kubernetes.io/component: pytorch + app.kubernetes.io/instance: pytorch-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: pytorch-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: pytorch-operator + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-admin: "true" + name: kubeflow-pytorchjobs-admin +rules: [] diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_kubeflow-pytorchjobs-edit.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_kubeflow-pytorchjobs-edit.yaml new file mode 100644 index 000000000..367bd0b7e --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_kubeflow-pytorchjobs-edit.yaml @@ -0,0 +1,29 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + app.kubernetes.io/component: pytorch + app.kubernetes.io/instance: pytorch-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: pytorch-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: pytorch-operator + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-edit: "true" + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-pytorchjobs-admin: "true" + name: kubeflow-pytorchjobs-edit +rules: +- apiGroups: + - kubeflow.org + resources: + - pytorchjobs + - pytorchjobs/status + verbs: + - get + - list + - watch + - create + - delete + - deletecollection + - patch + - update diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_kubeflow-pytorchjobs-view.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_kubeflow-pytorchjobs-view.yaml new file mode 100644 index 000000000..57a229911 --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_kubeflow-pytorchjobs-view.yaml @@ -0,0 +1,23 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + app.kubernetes.io/component: pytorch + app.kubernetes.io/instance: pytorch-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: pytorch-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: pytorch-operator + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-view: "true" + name: kubeflow-pytorchjobs-view +rules: +- apiGroups: + - kubeflow.org + resources: + - pytorchjobs + - pytorchjobs/status + verbs: + - get + - list + - watch diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_kubeflow-tfjobs-admin.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_kubeflow-tfjobs-admin.yaml new file mode 100644 index 000000000..453d3fe57 --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_kubeflow-tfjobs-admin.yaml @@ -0,0 +1,18 @@ +aggregationRule: + clusterRoleSelectors: + - matchLabels: + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-tfjobs-admin: "true" +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + app.kubernetes.io/component: tfjob + app.kubernetes.io/instance: tf-job-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: tf-job-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: tf-job-operator + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-admin: "true" + name: kubeflow-tfjobs-admin +rules: [] diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_kubeflow-tfjobs-edit.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_kubeflow-tfjobs-edit.yaml new file mode 100644 index 000000000..5fa96cb3c --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_kubeflow-tfjobs-edit.yaml @@ -0,0 +1,29 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + app.kubernetes.io/component: tfjob + app.kubernetes.io/instance: tf-job-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: tf-job-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: tf-job-operator + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-edit: "true" + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-tfjobs-admin: "true" + name: kubeflow-tfjobs-edit +rules: +- apiGroups: + - kubeflow.org + resources: + - tfjobs + - tfjobs/status + verbs: + - get + - list + - watch + - create + - delete + - deletecollection + - patch + - update diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_kubeflow-tfjobs-view.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_kubeflow-tfjobs-view.yaml new file mode 100644 index 000000000..057db34a5 --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_kubeflow-tfjobs-view.yaml @@ -0,0 +1,23 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + app.kubernetes.io/component: tfjob + app.kubernetes.io/instance: tf-job-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: tf-job-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: tf-job-operator + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-view: "true" + name: kubeflow-tfjobs-view +rules: +- apiGroups: + - kubeflow.org + resources: + - tfjobs + - tfjobs/status + verbs: + - get + - list + - watch diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_notebook-controller-kubeflow-notebooks-admin.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_notebook-controller-kubeflow-notebooks-admin.yaml new file mode 100644 index 000000000..9d16cdeae --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_notebook-controller-kubeflow-notebooks-admin.yaml @@ -0,0 +1,19 @@ +aggregationRule: + clusterRoleSelectors: + - matchLabels: + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-notebooks-admin: "true" +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + app: notebook-controller + app.kubernetes.io/component: notebook-controller + app.kubernetes.io/instance: notebook-controller-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: notebook-controller + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + kustomize.component: notebook-controller + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-admin: "true" + name: notebook-controller-kubeflow-notebooks-admin +rules: [] diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_notebook-controller-kubeflow-notebooks-edit.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_notebook-controller-kubeflow-notebooks-edit.yaml new file mode 100644 index 000000000..af3ddf015 --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_notebook-controller-kubeflow-notebooks-edit.yaml @@ -0,0 +1,30 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + app: notebook-controller + app.kubernetes.io/component: notebook-controller + app.kubernetes.io/instance: notebook-controller-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: notebook-controller + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + kustomize.component: notebook-controller + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-edit: "true" + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-notebooks-admin: "true" + name: notebook-controller-kubeflow-notebooks-edit +rules: +- apiGroups: + - kubeflow.org + resources: + - notebooks + - notebooks/status + verbs: + - get + - list + - watch + - create + - delete + - deletecollection + - patch + - update diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_notebook-controller-kubeflow-notebooks-view.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_notebook-controller-kubeflow-notebooks-view.yaml new file mode 100644 index 000000000..494d9f376 --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_notebook-controller-kubeflow-notebooks-view.yaml @@ -0,0 +1,24 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + app: notebook-controller + app.kubernetes.io/component: notebook-controller + app.kubernetes.io/instance: notebook-controller-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: notebook-controller + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + kustomize.component: notebook-controller + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-view: "true" + name: notebook-controller-kubeflow-notebooks-view +rules: +- apiGroups: + - kubeflow.org + resources: + - notebooks + - notebooks/status + verbs: + - get + - list + - watch diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_notebook-controller-role.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_notebook-controller-role.yaml new file mode 100644 index 000000000..3fa199395 --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_notebook-controller-role.yaml @@ -0,0 +1,58 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + app: notebook-controller + app.kubernetes.io/component: notebook-controller + app.kubernetes.io/instance: notebook-controller-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: notebook-controller + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + kustomize.component: notebook-controller + name: notebook-controller-role +rules: +- apiGroups: + - apps + resources: + - statefulsets + - deployments + verbs: + - '*' +- apiGroups: + - "" + resources: + - pods + verbs: + - get + - list + - watch +- apiGroups: + - "" + resources: + - services + verbs: + - '*' +- apiGroups: + - "" + resources: + - events + verbs: + - get + - list + - watch + - create +- apiGroups: + - kubeflow.org + resources: + - notebooks + - notebooks/status + - notebooks/finalizers + verbs: + - '*' +- apiGroups: + - networking.istio.io + resources: + - virtualservices + verbs: + - '*' diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrolebinding_admission-webhook-cluster-role-binding.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrolebinding_admission-webhook-cluster-role-binding.yaml new file mode 100644 index 000000000..f1eb264bf --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrolebinding_admission-webhook-cluster-role-binding.yaml @@ -0,0 +1,21 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + labels: + app: admission-webhook + app.kubernetes.io/component: poddefaults + app.kubernetes.io/instance: poddefaults-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: poddefaults + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: admission-webhook + name: admission-webhook-cluster-role-binding +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: admission-webhook-cluster-role +subjects: +- kind: ServiceAccount + name: admission-webhook-service-account + namespace: kubeflow diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrolebinding_centraldashboard.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrolebinding_centraldashboard.yaml new file mode 100644 index 000000000..76a9a9e59 --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrolebinding_centraldashboard.yaml @@ -0,0 +1,20 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + labels: + app: centraldashboard + app.kubernetes.io/component: centraldashboard + app.kubernetes.io/instance: centraldashboard-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: centraldashboard + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + name: centraldashboard +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: centraldashboard +subjects: +- kind: ServiceAccount + name: centraldashboard + namespace: kubeflow diff --git a/tests/jupyter/jupyter-web-app/base_v3/test_data/expected/rbac.authorization.k8s.io_v1_clusterrolebinding_jupyter-web-app-cluster-role-binding.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrolebinding_jupyter-web-app-cluster-role-binding.yaml similarity index 100% rename from tests/jupyter/jupyter-web-app/base_v3/test_data/expected/rbac.authorization.k8s.io_v1_clusterrolebinding_jupyter-web-app-cluster-role-binding.yaml rename to tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrolebinding_jupyter-web-app-cluster-role-binding.yaml diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrolebinding_notebook-controller-role-binding.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrolebinding_notebook-controller-role-binding.yaml new file mode 100644 index 000000000..68874191e --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrolebinding_notebook-controller-role-binding.yaml @@ -0,0 +1,21 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + labels: + app: notebook-controller + app.kubernetes.io/component: notebook-controller + app.kubernetes.io/instance: notebook-controller-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: notebook-controller + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + kustomize.component: notebook-controller + name: notebook-controller-role-binding +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: notebook-controller-role +subjects: +- kind: ServiceAccount + name: notebook-controller-service-account + namespace: kubeflow diff --git a/common/centraldashboard/base_v3/clusterrole-binding.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrolebinding_profiles-cluster-role-binding.yaml similarity index 53% rename from common/centraldashboard/base_v3/clusterrole-binding.yaml rename to tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrolebinding_profiles-cluster-role-binding.yaml index 6731c5acb..663e87dbc 100644 --- a/common/centraldashboard/base_v3/clusterrole-binding.yaml +++ b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrolebinding_profiles-cluster-role-binding.yaml @@ -2,13 +2,13 @@ apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: labels: - app: centraldashboard - name: centraldashboard + kustomize.component: profiles + name: profiles-cluster-role-binding roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole - name: centraldashboard + name: cluster-admin subjects: - kind: ServiceAccount - name: centraldashboard - namespace: $(namespace) + name: profiles-controller-service-account + namespace: kubeflow diff --git a/common/centraldashboard/base_v3/role.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_role_centraldashboard.yaml similarity index 50% rename from common/centraldashboard/base_v3/role.yaml rename to tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_role_centraldashboard.yaml index 11ffd36f5..b33cb8481 100644 --- a/common/centraldashboard/base_v3/role.yaml +++ b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_role_centraldashboard.yaml @@ -3,11 +3,18 @@ kind: Role metadata: labels: app: centraldashboard + app.kubernetes.io/component: centraldashboard + app.kubernetes.io/instance: centraldashboard-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: centraldashboard + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 name: centraldashboard + namespace: kubeflow rules: - apiGroups: - "" - - "app.k8s.io" + - app.k8s.io resources: - applications - pods diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_rolebinding_centraldashboard.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_rolebinding_centraldashboard.yaml new file mode 100644 index 000000000..bf48de73c --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1_rolebinding_centraldashboard.yaml @@ -0,0 +1,21 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + labels: + app: centraldashboard + app.kubernetes.io/component: centraldashboard + app.kubernetes.io/instance: centraldashboard-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: centraldashboard + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + name: centraldashboard + namespace: kubeflow +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: centraldashboard +subjects: +- kind: ServiceAccount + name: centraldashboard + namespace: kubeflow diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1beta1_clusterrole_pytorch-operator.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1beta1_clusterrole_pytorch-operator.yaml new file mode 100644 index 000000000..71b6c0296 --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1beta1_clusterrole_pytorch-operator.yaml @@ -0,0 +1,36 @@ +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: ClusterRole +metadata: + labels: + app: pytorch-operator + app.kubernetes.io/component: pytorch + app.kubernetes.io/instance: pytorch-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: pytorch-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: pytorch-operator + name: pytorch-operator +rules: +- apiGroups: + - kubeflow.org + resources: + - pytorchjobs + - pytorchjobs/status + verbs: + - '*' +- apiGroups: + - apiextensions.k8s.io + resources: + - customresourcedefinitions + verbs: + - '*' +- apiGroups: + - "" + resources: + - pods + - services + - endpoints + - events + verbs: + - '*' diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1beta1_clusterrole_tf-job-operator.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1beta1_clusterrole_tf-job-operator.yaml new file mode 100644 index 000000000..a6580bc60 --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1beta1_clusterrole_tf-job-operator.yaml @@ -0,0 +1,44 @@ +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: ClusterRole +metadata: + labels: + app: tf-job-operator + app.kubernetes.io/component: tfjob + app.kubernetes.io/instance: tf-job-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: tf-job-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: tf-job-operator + name: tf-job-operator +rules: +- apiGroups: + - kubeflow.org + resources: + - tfjobs + - tfjobs/status + - tfjobs/finalizers + verbs: + - '*' +- apiGroups: + - apiextensions.k8s.io + resources: + - customresourcedefinitions + verbs: + - '*' +- apiGroups: + - "" + resources: + - pods + - services + - endpoints + - events + verbs: + - '*' +- apiGroups: + - apps + - extensions + resources: + - deployments + verbs: + - '*' diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1beta1_clusterrolebinding_pytorch-operator.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1beta1_clusterrolebinding_pytorch-operator.yaml new file mode 100644 index 000000000..9dc6cd007 --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1beta1_clusterrolebinding_pytorch-operator.yaml @@ -0,0 +1,21 @@ +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: ClusterRoleBinding +metadata: + labels: + app: pytorch-operator + app.kubernetes.io/component: pytorch + app.kubernetes.io/instance: pytorch-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: pytorch-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: pytorch-operator + name: pytorch-operator +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: pytorch-operator +subjects: +- kind: ServiceAccount + name: pytorch-operator + namespace: kubeflow diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1beta1_clusterrolebinding_tf-job-operator.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1beta1_clusterrolebinding_tf-job-operator.yaml new file mode 100644 index 000000000..019534f94 --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1beta1_clusterrolebinding_tf-job-operator.yaml @@ -0,0 +1,21 @@ +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: ClusterRoleBinding +metadata: + labels: + app: tf-job-operator + app.kubernetes.io/component: tfjob + app.kubernetes.io/instance: tf-job-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: tf-job-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: tf-job-operator + name: tf-job-operator +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: tf-job-operator +subjects: +- kind: ServiceAccount + name: tf-job-operator + namespace: kubeflow diff --git a/tests/jupyter/jupyter-web-app/base_v3/test_data/expected/rbac.authorization.k8s.io_v1beta1_role_jupyter-web-app-jupyter-notebook-role.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1beta1_role_jupyter-web-app-jupyter-notebook-role.yaml similarity index 100% rename from tests/jupyter/jupyter-web-app/base_v3/test_data/expected/rbac.authorization.k8s.io_v1beta1_role_jupyter-web-app-jupyter-notebook-role.yaml rename to tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1beta1_role_jupyter-web-app-jupyter-notebook-role.yaml diff --git a/tests/jupyter/jupyter-web-app/base_v3/test_data/expected/rbac.authorization.k8s.io_v1beta1_rolebinding_jupyter-web-app-jupyter-notebook-role-binding.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1beta1_rolebinding_jupyter-web-app-jupyter-notebook-role-binding.yaml similarity index 100% rename from tests/jupyter/jupyter-web-app/base_v3/test_data/expected/rbac.authorization.k8s.io_v1beta1_rolebinding_jupyter-web-app-jupyter-notebook-role-binding.yaml rename to tests/stacks/examples/alice_gcp/test_data/expected/rbac.authorization.k8s.io_v1beta1_rolebinding_jupyter-web-app-jupyter-notebook-role-binding.yaml diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_configmap_admission-webhook-admission-webhook-parameters.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_configmap_admission-webhook-admission-webhook-parameters.yaml new file mode 100644 index 000000000..eaf2baac9 --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_configmap_admission-webhook-admission-webhook-parameters.yaml @@ -0,0 +1,18 @@ +apiVersion: v1 +data: + issuer: kubeflow-self-signing-issuer + namespace: kubeflow +kind: ConfigMap +metadata: + annotations: {} + labels: + app: admission-webhook + app.kubernetes.io/component: poddefaults + app.kubernetes.io/instance: poddefaults-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: poddefaults + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: admission-webhook + name: admission-webhook-admission-webhook-parameters + namespace: kubeflow diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_configmap_jupyter-web-app-jupyter-web-app-config-5cc2fchd2g.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_configmap_jupyter-web-app-jupyter-web-app-config-5cc2fchd2g.yaml new file mode 100644 index 000000000..6936f83dd --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_configmap_jupyter-web-app-jupyter-web-app-config-5cc2fchd2g.yaml @@ -0,0 +1,26 @@ +apiVersion: v1 +data: + spawner_ui_config.yaml: |- + # This is a custom spawnerUiConfig. + # + # It looks like the entire file is replaced; so the user would need to supply a complete + # spawner config. + spawnerFormDefaults: + image: + # The container Image for the user's Jupyter Notebook + # If readonly, this value must be a member of the list below + value: alicerepo/tensorflow-1.14.0-notebook-cpu:v-base-ef41372-1177829795472347138 + # The list of available standard container Images + options: + - alicerepo/tensorflow-1.15.2-notebook-cpu:1.0.0 + - alicerepo/tensorflow-1.15.2-notebook-gpu:1.0.0 + - alicerepo//tensorflow-2.1.0-notebook-cpu:1.0.0 + - alicerepo//tensorflow-2.1.0-notebook-gpu:1.0.0 +kind: ConfigMap +metadata: + annotations: {} + labels: + app: jupyter-web-app + kustomize.component: jupyter-web-app + name: jupyter-web-app-jupyter-web-app-config-5cc2fchd2g + namespace: kubeflow diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_configmap_kubeflow-config-4bkkg42k5m.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_configmap_kubeflow-config-4bkkg42k5m.yaml new file mode 100644 index 000000000..4650f2dd5 --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_configmap_kubeflow-config-4bkkg42k5m.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +data: + clusterDomain: cluster.local + project: alice-gcp + userid-header: X-Goog-Authenticated-User-Email + userid-prefix: 'accounts.google.com:' + zone: us-east1-d +kind: ConfigMap +metadata: + name: kubeflow-config-4bkkg42k5m + namespace: kubeflow diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_configmap_notebook-controller-notebook-controller-config-h4d668t5tb.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_configmap_notebook-controller-notebook-controller-config-h4d668t5tb.yaml new file mode 100644 index 000000000..17e759ee8 --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_configmap_notebook-controller-notebook-controller-config-h4d668t5tb.yaml @@ -0,0 +1,17 @@ +apiVersion: v1 +data: + ISTIO_GATEWAY: kubeflow/kubeflow-gateway + USE_ISTIO: "true" +kind: ConfigMap +metadata: + labels: + app: notebook-controller + app.kubernetes.io/component: notebook-controller + app.kubernetes.io/instance: notebook-controller-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: notebook-controller + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + kustomize.component: notebook-controller + name: notebook-controller-notebook-controller-config-h4d668t5tb + namespace: kubeflow diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_configmap_profiles-profiles-config-4mgcmtgk6t.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_configmap_profiles-profiles-config-4mgcmtgk6t.yaml new file mode 100644 index 000000000..e77d6f69e --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_configmap_profiles-profiles-config-4mgcmtgk6t.yaml @@ -0,0 +1,10 @@ +apiVersion: v1 +data: + admin: "" + gcp-sa: "" +kind: ConfigMap +metadata: + labels: + kustomize.component: profiles + name: profiles-profiles-config-4mgcmtgk6t + namespace: kubeflow diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_service_admission-webhook-service.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_service_admission-webhook-service.yaml new file mode 100644 index 000000000..d8a0413c6 --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_service_admission-webhook-service.yaml @@ -0,0 +1,27 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app: admission-webhook + app.kubernetes.io/component: poddefaults + app.kubernetes.io/instance: poddefaults-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: poddefaults + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: admission-webhook + name: admission-webhook-service + namespace: kubeflow +spec: + ports: + - port: 443 + targetPort: 443 + selector: + app: admission-webhook + app.kubernetes.io/component: poddefaults + app.kubernetes.io/instance: poddefaults-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: poddefaults + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: admission-webhook diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_service_centraldashboard.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_service_centraldashboard.yaml new file mode 100644 index 000000000..76c10812a --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_service_centraldashboard.yaml @@ -0,0 +1,37 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + getambassador.io/config: |- + --- + apiVersion: ambassador/v0 + kind: Mapping + name: centralui-mapping + prefix: / + rewrite: / + service: centraldashboard.$(namespace) + labels: + app: centraldashboard + app.kubernetes.io/component: centraldashboard + app.kubernetes.io/instance: centraldashboard-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: centraldashboard + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + name: centraldashboard + namespace: kubeflow +spec: + ports: + - port: 80 + protocol: TCP + targetPort: 8082 + selector: + app: centraldashboard + app.kubernetes.io/component: centraldashboard + app.kubernetes.io/instance: centraldashboard-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: centraldashboard + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + sessionAffinity: None + type: ClusterIP diff --git a/tests/jupyter/jupyter-web-app/base_v3/test_data/expected/~g_v1_service_jupyter-web-app-service.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_service_jupyter-web-app-service.yaml similarity index 100% rename from tests/jupyter/jupyter-web-app/base_v3/test_data/expected/~g_v1_service_jupyter-web-app-service.yaml rename to tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_service_jupyter-web-app-service.yaml diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_service_notebook-controller-service.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_service_notebook-controller-service.yaml new file mode 100644 index 000000000..7e47bc3eb --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_service_notebook-controller-service.yaml @@ -0,0 +1,26 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app: notebook-controller + app.kubernetes.io/component: notebook-controller + app.kubernetes.io/instance: notebook-controller-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: notebook-controller + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + kustomize.component: notebook-controller + name: notebook-controller-service + namespace: kubeflow +spec: + ports: + - port: 443 + selector: + app: notebook-controller + app.kubernetes.io/component: notebook-controller + app.kubernetes.io/instance: notebook-controller-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: notebook-controller + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + kustomize.component: notebook-controller diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_service_profiles-kfam.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_service_profiles-kfam.yaml new file mode 100644 index 000000000..db1f50bd7 --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_service_profiles-kfam.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + kustomize.component: profiles + name: profiles-kfam + namespace: kubeflow +spec: + ports: + - port: 8081 + selector: + kustomize.component: profiles diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_service_pytorch-operator.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_service_pytorch-operator.yaml new file mode 100644 index 000000000..ea68e87d8 --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_service_pytorch-operator.yaml @@ -0,0 +1,33 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + prometheus.io/path: /metrics + prometheus.io/port: "8443" + prometheus.io/scrape: "true" + labels: + app: pytorch-operator + app.kubernetes.io/component: pytorch + app.kubernetes.io/instance: pytorch-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: pytorch-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: pytorch-operator + name: pytorch-operator + namespace: kubeflow +spec: + ports: + - name: monitoring-port + port: 8443 + targetPort: 8443 + selector: + app.kubernetes.io/component: pytorch + app.kubernetes.io/instance: pytorch-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: pytorch-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: pytorch-operator + name: pytorch-operator + type: ClusterIP diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_service_tf-job-operator.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_service_tf-job-operator.yaml new file mode 100644 index 000000000..225d41703 --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_service_tf-job-operator.yaml @@ -0,0 +1,33 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + prometheus.io/path: /metrics + prometheus.io/port: "8443" + prometheus.io/scrape: "true" + labels: + app: tf-job-operator + app.kubernetes.io/component: tfjob + app.kubernetes.io/instance: tf-job-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: tf-job-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: tf-job-operator + name: tf-job-operator + namespace: kubeflow +spec: + ports: + - name: monitoring-port + port: 8443 + targetPort: 8443 + selector: + app.kubernetes.io/component: tfjob + app.kubernetes.io/instance: tf-job-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: tf-job-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: tf-job-operator + name: tf-job-operator + type: ClusterIP diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_serviceaccount_admission-webhook-service-account.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_serviceaccount_admission-webhook-service-account.yaml new file mode 100644 index 000000000..936f4baae --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_serviceaccount_admission-webhook-service-account.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + app: admission-webhook + app.kubernetes.io/component: poddefaults + app.kubernetes.io/instance: poddefaults-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: poddefaults + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: admission-webhook + name: admission-webhook-service-account + namespace: kubeflow diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_serviceaccount_centraldashboard.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_serviceaccount_centraldashboard.yaml new file mode 100644 index 000000000..9781f4a44 --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_serviceaccount_centraldashboard.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + app.kubernetes.io/component: centraldashboard + app.kubernetes.io/instance: centraldashboard-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: centraldashboard + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + name: centraldashboard + namespace: kubeflow diff --git a/tests/jupyter/jupyter-web-app/base_v3/test_data/expected/~g_v1_serviceaccount_jupyter-web-app-service-account.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_serviceaccount_jupyter-web-app-service-account.yaml similarity index 100% rename from tests/jupyter/jupyter-web-app/base_v3/test_data/expected/~g_v1_serviceaccount_jupyter-web-app-service-account.yaml rename to tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_serviceaccount_jupyter-web-app-service-account.yaml diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_serviceaccount_notebook-controller-service-account.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_serviceaccount_notebook-controller-service-account.yaml new file mode 100644 index 000000000..6f534aa3a --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_serviceaccount_notebook-controller-service-account.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + app: notebook-controller + app.kubernetes.io/component: notebook-controller + app.kubernetes.io/instance: notebook-controller-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: notebook-controller + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + kustomize.component: notebook-controller + name: notebook-controller-service-account + namespace: kubeflow diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_serviceaccount_profiles-controller-service-account.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_serviceaccount_profiles-controller-service-account.yaml new file mode 100644 index 000000000..881ccbf1b --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_serviceaccount_profiles-controller-service-account.yaml @@ -0,0 +1,7 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + kustomize.component: profiles + name: profiles-controller-service-account + namespace: kubeflow diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_serviceaccount_pytorch-operator.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_serviceaccount_pytorch-operator.yaml new file mode 100644 index 000000000..8fbfe5c5c --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_serviceaccount_pytorch-operator.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + app: pytorch-operator + app.kubernetes.io/component: pytorch + app.kubernetes.io/instance: pytorch-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: pytorch-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: pytorch-operator + name: pytorch-operator + namespace: kubeflow diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_serviceaccount_tf-job-dashboard.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_serviceaccount_tf-job-dashboard.yaml new file mode 100644 index 000000000..bcf465b43 --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_serviceaccount_tf-job-dashboard.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + app: tf-job-dashboard + app.kubernetes.io/component: tfjob + app.kubernetes.io/instance: tf-job-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: tf-job-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: tf-job-operator + name: tf-job-dashboard + namespace: kubeflow diff --git a/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_serviceaccount_tf-job-operator.yaml b/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_serviceaccount_tf-job-operator.yaml new file mode 100644 index 000000000..8ef6c8396 --- /dev/null +++ b/tests/stacks/examples/alice_gcp/test_data/expected/~g_v1_serviceaccount_tf-job-operator.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + app: tf-job-operator + app.kubernetes.io/component: tfjob + app.kubernetes.io/instance: tf-job-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: tf-job-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: tf-job-operator + name: tf-job-operator + namespace: kubeflow diff --git a/tests/stacks/gcp/kustomize_test.go b/tests/stacks/gcp/kustomize_test.go new file mode 100644 index 000000000..22dd3bdc2 --- /dev/null +++ b/tests/stacks/gcp/kustomize_test.go @@ -0,0 +1,15 @@ +package gcp + +import ( + "github.com/kubeflow/manifests/tests" + "testing" +) + +func TestKustomize(t *testing.T) { + testCase := &tests.KustomizeTestCase{ + Package: "../../../stacks/gcp", + Expected: "test_data/expected", + } + + tests.RunTestCase(t, testCase) +} diff --git a/tests/stacks/gcp/test_data/expected/admissionregistration.k8s.io_v1beta1_mutatingwebhookconfiguration_admission-webhook-mutating-webhook-configuration.yaml b/tests/stacks/gcp/test_data/expected/admissionregistration.k8s.io_v1beta1_mutatingwebhookconfiguration_admission-webhook-mutating-webhook-configuration.yaml new file mode 100644 index 000000000..42c5ba57a --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/admissionregistration.k8s.io_v1beta1_mutatingwebhookconfiguration_admission-webhook-mutating-webhook-configuration.yaml @@ -0,0 +1,32 @@ +apiVersion: admissionregistration.k8s.io/v1beta1 +kind: MutatingWebhookConfiguration +metadata: + annotations: + cert-manager.io/inject-ca-from: kubeflow/admission-webhook-cert + labels: + app: admission-webhook + app.kubernetes.io/component: poddefaults + app.kubernetes.io/instance: poddefaults-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: poddefaults + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: admission-webhook + name: admission-webhook-mutating-webhook-configuration +webhooks: +- clientConfig: + caBundle: "" + service: + name: admission-webhook-service + namespace: kubeflow + path: /apply-poddefault + name: admission-webhook-deployment.kubeflow.org + rules: + - apiGroups: + - "" + apiVersions: + - v1 + operations: + - CREATE + resources: + - pods diff --git a/tests/stacks/gcp/test_data/expected/apiextensions.k8s.io_v1beta1_customresourcedefinition_notebooks.kubeflow.org.yaml b/tests/stacks/gcp/test_data/expected/apiextensions.k8s.io_v1beta1_customresourcedefinition_notebooks.kubeflow.org.yaml new file mode 100644 index 000000000..82d4f80fe --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/apiextensions.k8s.io_v1beta1_customresourcedefinition_notebooks.kubeflow.org.yaml @@ -0,0 +1,79 @@ +apiVersion: apiextensions.k8s.io/v1beta1 +kind: CustomResourceDefinition +metadata: + labels: + app: notebook-controller + app.kubernetes.io/component: notebook-controller + app.kubernetes.io/instance: notebook-controller-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: notebook-controller + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + kustomize.component: notebook-controller + name: notebooks.kubeflow.org +spec: + group: kubeflow.org + names: + kind: Notebook + plural: notebooks + singular: notebook + scope: Namespaced + subresources: + status: {} + validation: + openAPIV3Schema: + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + properties: + template: + description: 'INSERT ADDITIONAL SPEC FIELDS - desired state of cluster + Important: Run "make" to regenerate code after modifying this file' + properties: + spec: + type: object + type: object + type: object + status: + properties: + conditions: + description: Conditions is an array of current conditions + items: + properties: + type: + description: Type of the confition/ + type: string + required: + - type + type: object + type: array + required: + - conditions + type: object + versions: + - name: v1alpha1 + served: true + storage: false + - name: v1beta1 + served: true + storage: true + - name: v1 + served: true + storage: false +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/tests/stacks/gcp/test_data/expected/apiextensions.k8s.io_v1beta1_customresourcedefinition_poddefaults.kubeflow.org.yaml b/tests/stacks/gcp/test_data/expected/apiextensions.k8s.io_v1beta1_customresourcedefinition_poddefaults.kubeflow.org.yaml new file mode 100644 index 000000000..c935bb9a5 --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/apiextensions.k8s.io_v1beta1_customresourcedefinition_poddefaults.kubeflow.org.yaml @@ -0,0 +1,60 @@ +apiVersion: apiextensions.k8s.io/v1beta1 +kind: CustomResourceDefinition +metadata: + labels: + app: admission-webhook + app.kubernetes.io/component: poddefaults + app.kubernetes.io/instance: poddefaults-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: poddefaults + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: admission-webhook + name: poddefaults.kubeflow.org +spec: + group: kubeflow.org + names: + kind: PodDefault + plural: poddefaults + singular: poddefault + scope: Namespaced + validation: + openAPIV3Schema: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + type: object + spec: + properties: + desc: + type: string + env: + items: + type: object + type: array + envFrom: + items: + type: object + type: array + selector: + type: object + serviceAccountName: + type: string + volumeMounts: + items: + type: object + type: array + volumes: + items: + type: object + type: array + required: + - selector + type: object + status: + type: object + type: object + version: v1alpha1 diff --git a/tests/stacks/gcp/test_data/expected/apiextensions.k8s.io_v1beta1_customresourcedefinition_profiles.kubeflow.org.yaml b/tests/stacks/gcp/test_data/expected/apiextensions.k8s.io_v1beta1_customresourcedefinition_profiles.kubeflow.org.yaml new file mode 100644 index 000000000..cfab8f8a4 --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/apiextensions.k8s.io_v1beta1_customresourcedefinition_profiles.kubeflow.org.yaml @@ -0,0 +1,164 @@ +apiVersion: apiextensions.k8s.io/v1beta1 +kind: CustomResourceDefinition +metadata: + creationTimestamp: null + labels: + kustomize.component: profiles + name: profiles.kubeflow.org +spec: + conversion: + strategy: None + group: kubeflow.org + names: + kind: Profile + plural: profiles + scope: Cluster + subresources: + status: {} + validation: + openAPIV3Schema: + description: Profile is the Schema for the profiles API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ProfileSpec defines the desired state of Profile + properties: + owner: + description: The profile owner + properties: + apiGroup: + description: APIGroup holds the API group of the referenced subject. + Defaults to "" for ServiceAccount subjects. Defaults to "rbac.authorization.k8s.io" + for User and Group subjects. + type: string + kind: + description: Kind of object being referenced. Values defined by + this API group are "User", "Group", and "ServiceAccount". If the + Authorizer does not recognized the kind value, the Authorizer + should report an error. + type: string + name: + description: Name of the object being referenced. + type: string + required: + - kind + - name + type: object + plugins: + items: + description: Plugin is for customize actions on different platform. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this + representation of an object. Servers should convert recognized + schemas to the latest internal value, and may reject unrecognized + values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds' + type: string + spec: + type: object + type: object + type: array + resourceQuotaSpec: + description: Resourcequota that will be applied to target namespace + properties: + hard: + additionalProperties: + type: string + description: 'hard is the set of desired hard limits for each named + resource. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/' + type: object + scopeSelector: + description: scopeSelector is also a collection of filters like + scopes that must match each object tracked by a quota but expressed + using ScopeSelectorOperator in combination with possible values. + For a resource to match, both scopes AND scopeSelector (if specified + in spec), must be matched. + properties: + matchExpressions: + description: A list of scope selector requirements by scope + of the resources. + items: + description: A scoped-resource selector requirement is a selector + that contains values, a scope name, and an operator that + relates the scope name and values. + properties: + operator: + description: Represents a scope's relationship to a set + of values. Valid operators are In, NotIn, Exists, DoesNotExist. + type: string + scopeName: + description: The name of the scope that the selector applies + to. + type: string + values: + description: An array of string values. If the operator + is In or NotIn, the values array must be non-empty. + If the operator is Exists or DoesNotExist, the values + array must be empty. This array is replaced during a + strategic merge patch. + items: + type: string + type: array + required: + - operator + - scopeName + type: object + type: array + type: object + scopes: + description: A collection of filters that must match each object + tracked by a quota. If not specified, the quota matches all objects. + items: + description: A ResourceQuotaScope defines a filter that must match + each object tracked by a quota + type: string + type: array + type: object + type: object + status: + description: ProfileStatus defines the observed state of Profile + properties: + conditions: + items: + properties: + message: + type: string + status: + type: string + type: + type: string + type: object + type: array + type: object + type: object + version: v1 + versions: + - name: v1 + served: true + storage: true + - name: v1beta1 + served: true + storage: false +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/tests/stacks/gcp/test_data/expected/apiextensions.k8s.io_v1beta1_customresourcedefinition_pytorchjobs.kubeflow.org.yaml b/tests/stacks/gcp/test_data/expected/apiextensions.k8s.io_v1beta1_customresourcedefinition_pytorchjobs.kubeflow.org.yaml new file mode 100644 index 000000000..3226854c8 --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/apiextensions.k8s.io_v1beta1_customresourcedefinition_pytorchjobs.kubeflow.org.yaml @@ -0,0 +1,49 @@ +apiVersion: apiextensions.k8s.io/v1beta1 +kind: CustomResourceDefinition +metadata: + labels: + app.kubernetes.io/component: pytorch + app.kubernetes.io/instance: pytorch-job-crds-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: pytorch-job-crds + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + name: pytorchjobs.kubeflow.org +spec: + additionalPrinterColumns: + - JSONPath: .status.conditions[-1:].type + name: State + type: string + - JSONPath: .metadata.creationTimestamp + name: Age + type: date + group: kubeflow.org + names: + kind: PyTorchJob + plural: pytorchjobs + singular: pytorchjob + scope: Namespaced + subresources: + status: {} + validation: + openAPIV3Schema: + properties: + spec: + properties: + pytorchReplicaSpecs: + properties: + Master: + properties: + replicas: + maximum: 1 + minimum: 1 + type: integer + Worker: + properties: + replicas: + minimum: 1 + type: integer + versions: + - name: v1 + served: true + storage: true diff --git a/tests/stacks/gcp/test_data/expected/apiextensions.k8s.io_v1beta1_customresourcedefinition_tfjobs.kubeflow.org.yaml b/tests/stacks/gcp/test_data/expected/apiextensions.k8s.io_v1beta1_customresourcedefinition_tfjobs.kubeflow.org.yaml new file mode 100644 index 000000000..2c9e7eedc --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/apiextensions.k8s.io_v1beta1_customresourcedefinition_tfjobs.kubeflow.org.yaml @@ -0,0 +1,54 @@ +apiVersion: apiextensions.k8s.io/v1beta1 +kind: CustomResourceDefinition +metadata: + labels: + app.kubernetes.io/component: tfjob + app.kubernetes.io/instance: tf-job-crds-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: tf-job-crds + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + name: tfjobs.kubeflow.org +spec: + additionalPrinterColumns: + - JSONPath: .status.conditions[-1:].type + name: State + type: string + - JSONPath: .metadata.creationTimestamp + name: Age + type: date + group: kubeflow.org + names: + kind: TFJob + plural: tfjobs + singular: tfjob + scope: Namespaced + subresources: + status: {} + validation: + openAPIV3Schema: + properties: + spec: + properties: + tfReplicaSpecs: + properties: + Chief: + properties: + replicas: + maximum: 1 + minimum: 1 + type: integer + PS: + properties: + replicas: + minimum: 1 + type: integer + Worker: + properties: + replicas: + minimum: 1 + type: integer + versions: + - name: v1 + served: true + storage: true diff --git a/tests/stacks/gcp/test_data/expected/app.k8s.io_v1beta1_application_centraldashboard.yaml b/tests/stacks/gcp/test_data/expected/app.k8s.io_v1beta1_application_centraldashboard.yaml new file mode 100644 index 000000000..2efb44c0c --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/app.k8s.io_v1beta1_application_centraldashboard.yaml @@ -0,0 +1,61 @@ +apiVersion: app.k8s.io/v1beta1 +kind: Application +metadata: + labels: + app.kubernetes.io/component: centraldashboard + app.kubernetes.io/instance: centraldashboard-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: centraldashboard + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + name: centraldashboard + namespace: kubeflow +spec: + addOwnerRef: true + componentKinds: + - group: core + kind: ConfigMap + - group: apps + kind: Deployment + - group: rbac.authorization.k8s.io + kind: RoleBinding + - group: rbac.authorization.k8s.io + kind: Role + - group: core + kind: ServiceAccount + - group: core + kind: Service + - group: networking.istio.io + kind: VirtualService + descriptor: + description: Provides a Dashboard UI for kubeflow + keywords: + - centraldashboard + - kubeflow + links: + - description: About + url: https://github.com/kubeflow/kubeflow/tree/master/components/centraldashboard + maintainers: + - email: prodonjs@gmail.com + name: Jason Prodonovich + - email: apverma@google.com + name: Apoorv Verma + - email: adhita94@gmail.com + name: Adhita Selvaraj + owners: + - email: prodonjs@gmail.com + name: Jason Prodonovich + - email: apverma@google.com + name: Apoorv Verma + - email: adhita94@gmail.com + name: Adhita Selvaraj + type: centraldashboard + version: v1beta1 + selector: + matchLabels: + app.kubernetes.io/component: centraldashboard + app.kubernetes.io/instance: centraldashboard-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: centraldashboard + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 diff --git a/tests/stacks/gcp/test_data/expected/app.k8s.io_v1beta1_application_gpu-driver.yaml b/tests/stacks/gcp/test_data/expected/app.k8s.io_v1beta1_application_gpu-driver.yaml new file mode 100644 index 000000000..cb18330f8 --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/app.k8s.io_v1beta1_application_gpu-driver.yaml @@ -0,0 +1,39 @@ +apiVersion: app.k8s.io/v1beta1 +kind: Application +metadata: + labels: + app.kubernetes.io/component: gpu-driver + app.kubernetes.io/instance: gpu-driver-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: gpu-driver + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + name: gpu-driver + namespace: kubeflow +spec: + addOwnerRef: true + componentKinds: + - group: core + kind: ConfigMap + - group: apps + kind: Deployment + descriptor: + description: "" + keywords: + - gpu-driver + - kubeflow + links: + - description: About + url: "" + maintainers: [] + owners: [] + type: gpu-driver + version: v1beta1 + selector: + matchLabels: + app.kubernetes.io/component: gpu-driver + app.kubernetes.io/instance: gpu-driver-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: gpu-driver + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 diff --git a/tests/jupyter/jupyter-web-app/overlays/application/test_data/expected/app.k8s.io_v1beta1_application_jupyter-web-app.yaml b/tests/stacks/gcp/test_data/expected/app.k8s.io_v1beta1_application_jupyter-web-app-jupyter-web-app.yaml similarity index 92% rename from tests/jupyter/jupyter-web-app/overlays/application/test_data/expected/app.k8s.io_v1beta1_application_jupyter-web-app.yaml rename to tests/stacks/gcp/test_data/expected/app.k8s.io_v1beta1_application_jupyter-web-app-jupyter-web-app.yaml index be4663ebd..da04751bb 100644 --- a/tests/jupyter/jupyter-web-app/overlays/application/test_data/expected/app.k8s.io_v1beta1_application_jupyter-web-app.yaml +++ b/tests/stacks/gcp/test_data/expected/app.k8s.io_v1beta1_application_jupyter-web-app-jupyter-web-app.yaml @@ -2,13 +2,16 @@ apiVersion: app.k8s.io/v1beta1 kind: Application metadata: labels: + app: jupyter-web-app app.kubernetes.io/component: jupyter-web-app app.kubernetes.io/instance: jupyter-web-app-v0.7.0 app.kubernetes.io/managed-by: kfctl app.kubernetes.io/name: jupyter-web-app app.kubernetes.io/part-of: kubeflow app.kubernetes.io/version: v0.7.0 - name: jupyter-web-app + kustomize.component: jupyter-web-app + name: jupyter-web-app-jupyter-web-app + namespace: kubeflow spec: addOwnerRef: true componentKinds: diff --git a/tests/stacks/gcp/test_data/expected/app.k8s.io_v1beta1_application_notebook-controller-notebook-controller.yaml b/tests/stacks/gcp/test_data/expected/app.k8s.io_v1beta1_application_notebook-controller-notebook-controller.yaml new file mode 100644 index 000000000..353c9e4db --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/app.k8s.io_v1beta1_application_notebook-controller-notebook-controller.yaml @@ -0,0 +1,50 @@ +apiVersion: app.k8s.io/v1beta1 +kind: Application +metadata: + labels: + app: notebook-controller + app.kubernetes.io/component: notebook-controller + app.kubernetes.io/instance: notebook-controller-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: notebook-controller + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + kustomize.component: notebook-controller + name: notebook-controller-notebook-controller + namespace: kubeflow +spec: + addOwnerRef: true + componentKinds: + - group: core + kind: Service + - group: apps + kind: Deployment + - group: core + kind: ServiceAccount + descriptor: + description: Notebooks controller allows users to create a custom resource \"Notebook\" + (jupyter notebook). + keywords: + - jupyter + - notebook + - notebook-controller + - jupyterhub + links: + - description: About + url: https://github.com/kubeflow/kubeflow/tree/master/components/notebook-controller + maintainers: + - email: lunkai@google.com + name: Lun-kai Hsu + owners: + - email: lunkai@gogle.com + name: Lun-kai Hsu + type: notebook-controller + version: v1beta1 + selector: + matchLabels: + app.kubernetes.io/component: notebook-controller + app.kubernetes.io/instance: notebook-controller-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: notebook-controller + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 diff --git a/tests/stacks/gcp/test_data/expected/app.k8s.io_v1beta1_application_profiles-profiles.yaml b/tests/stacks/gcp/test_data/expected/app.k8s.io_v1beta1_application_profiles-profiles.yaml new file mode 100644 index 000000000..fc90772a0 --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/app.k8s.io_v1beta1_application_profiles-profiles.yaml @@ -0,0 +1,44 @@ +apiVersion: app.k8s.io/v1beta1 +kind: Application +metadata: + labels: + kustomize.component: profiles + name: profiles-profiles + namespace: kubeflow +spec: + addOwnerRef: true + componentKinds: + - group: apps + kind: Deployment + - group: core + kind: ServiceAccount + - group: core + kind: Service + - group: kubeflow.org + kind: Profile + descriptor: + description: "" + keywords: + - profiles + - kubeflow + links: + - description: profiles + url: https://github.com/kubeflow/kubeflow/tree/master/components/profile-controller + - description: kfam + url: https://github.com/kubeflow/kubeflow/tree/master/components/access-management + maintainers: + - email: kunming@google.com + name: Kunming Qu + owners: + - email: kunming@google.com + name: Kunming Qu + type: profiles + version: v1 + selector: + matchLabels: + app.kubernetes.io/component: profiles + app.kubernetes.io/instance: profiles-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: profiles + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 diff --git a/tests/stacks/gcp/test_data/expected/app.k8s.io_v1beta1_application_pytorch-job-crds.yaml b/tests/stacks/gcp/test_data/expected/app.k8s.io_v1beta1_application_pytorch-job-crds.yaml new file mode 100644 index 000000000..d3272d8b8 --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/app.k8s.io_v1beta1_application_pytorch-job-crds.yaml @@ -0,0 +1,50 @@ +apiVersion: app.k8s.io/v1beta1 +kind: Application +metadata: + labels: + app.kubernetes.io/component: pytorch + app.kubernetes.io/instance: pytorch-job-crds-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: pytorch-job-crds + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + name: pytorch-job-crds + namespace: kubeflow +spec: + addOwnerRef: true + componentKinds: + - group: core + kind: Service + - group: apps + kind: Deployment + - group: core + kind: ServiceAccount + - group: kubeflow.org + kind: PyTorchJob + descriptor: + description: Pytorch-job-crds contains the "PyTorchJob" custom resource definition. + keywords: + - pytorchjob + - pytorch-operator + - pytorch-training + links: + - description: About + url: https://github.com/kubeflow/pytorch-operator + - description: Docs + url: https://www.kubeflow.org/docs/reference/pytorchjob/v1/pytorch/ + maintainers: + - email: johnugeo@cisco.com + name: Johnu George + owners: + - email: johnugeo@cisco.com + name: Johnu George + type: pytorch-job-crds + version: v1 + selector: + matchLabels: + app.kubernetes.io/component: pytorch + app.kubernetes.io/instance: pytorch-job-crds-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: pytorch-job-crds + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 diff --git a/tests/stacks/gcp/test_data/expected/app.k8s.io_v1beta1_application_pytorch-operator.yaml b/tests/stacks/gcp/test_data/expected/app.k8s.io_v1beta1_application_pytorch-operator.yaml new file mode 100644 index 000000000..7837629da --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/app.k8s.io_v1beta1_application_pytorch-operator.yaml @@ -0,0 +1,53 @@ +apiVersion: app.k8s.io/v1beta1 +kind: Application +metadata: + labels: + app.kubernetes.io/component: pytorch + app.kubernetes.io/instance: pytorch-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: pytorch-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + name: pytorch-operator + namespace: kubeflow +spec: + addOwnerRef: true + componentKinds: + - group: core + kind: Service + - group: apps + kind: Deployment + - group: core + kind: ConfigMap + - group: core + kind: ServiceAccount + - group: kubeflow.org + kind: PyTorchJob + descriptor: + description: Pytorch-operator allows users to create and manage the "PyTorchJob" + custom resource. + keywords: + - pytorchjob + - pytorch-operator + - pytorch-training + links: + - description: About + url: https://github.com/kubeflow/pytorch-operator + - description: Docs + url: https://www.kubeflow.org/docs/reference/pytorchjob/v1/pytorch/ + maintainers: + - email: johnugeo@cisco.com + name: Johnu George + owners: + - email: johnugeo@cisco.com + name: Johnu George + type: pytorch-operator + version: v1 + selector: + matchLabels: + app.kubernetes.io/component: pytorch + app.kubernetes.io/instance: pytorch-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: pytorch-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 diff --git a/tests/stacks/gcp/test_data/expected/app.k8s.io_v1beta1_application_tf-job-crds.yaml b/tests/stacks/gcp/test_data/expected/app.k8s.io_v1beta1_application_tf-job-crds.yaml new file mode 100644 index 000000000..46acbea60 --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/app.k8s.io_v1beta1_application_tf-job-crds.yaml @@ -0,0 +1,50 @@ +apiVersion: app.k8s.io/v1beta1 +kind: Application +metadata: + labels: + app.kubernetes.io/component: tfjob + app.kubernetes.io/instance: tf-job-crds-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: tf-job-crds + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + name: tf-job-crds + namespace: kubeflow +spec: + addOwnerRef: true + componentKinds: + - group: core + kind: Service + - group: apps + kind: Deployment + - group: core + kind: ServiceAccount + - group: kubeflow.org + kind: TFJob + descriptor: + description: Tf-job-crds contains the "TFJob" custom resource definition. + keywords: + - tfjob + - tf-operator + - tf-training + links: + - description: About + url: https://github.com/kubeflow/tf-operator + - description: Docs + url: https://www.kubeflow.org/docs/reference/tfjob/v1/tensorflow/ + maintainers: + - email: ricliu@google.com + name: Richard Liu + owners: + - email: ricliu@google.com + name: Richard Liu + type: tf-job-crds + version: v1 + selector: + matchLabels: + app.kubernetes.io/component: tfjob + app.kubernetes.io/instance: tf-job-crds-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: tf-job-crds + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 diff --git a/tests/stacks/gcp/test_data/expected/app.k8s.io_v1beta1_application_tf-job-operator.yaml b/tests/stacks/gcp/test_data/expected/app.k8s.io_v1beta1_application_tf-job-operator.yaml new file mode 100644 index 000000000..8a0b4524a --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/app.k8s.io_v1beta1_application_tf-job-operator.yaml @@ -0,0 +1,51 @@ +apiVersion: app.k8s.io/v1beta1 +kind: Application +metadata: + labels: + app.kubernetes.io/component: tfjob + app.kubernetes.io/instance: tf-job-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: tf-job-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + name: tf-job-operator + namespace: kubeflow +spec: + addOwnerRef: true + componentKinds: + - group: core + kind: Service + - group: apps + kind: Deployment + - group: core + kind: ServiceAccount + - group: kubeflow.org + kind: TFJob + descriptor: + description: Tf-operator allows users to create and manage the "TFJob" custom + resource. + keywords: + - tfjob + - tf-operator + - tf-training + links: + - description: About + url: https://github.com/kubeflow/tf-operator + - description: Docs + url: https://www.kubeflow.org/docs/reference/tfjob/v1/tensorflow/ + maintainers: + - email: ricliu@google.com + name: Richard Liu + owners: + - email: ricliu@google.com + name: Richard Liu + type: tf-job-operator + version: v1 + selector: + matchLabels: + app.kubernetes.io/component: tfjob + app.kubernetes.io/instance: tf-job-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: tf-job-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 diff --git a/tests/stacks/gcp/test_data/expected/app.k8s.io_v1beta1_application_webhook.yaml b/tests/stacks/gcp/test_data/expected/app.k8s.io_v1beta1_application_webhook.yaml new file mode 100644 index 000000000..8acf7bf32 --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/app.k8s.io_v1beta1_application_webhook.yaml @@ -0,0 +1,43 @@ +apiVersion: app.k8s.io/v1beta1 +kind: Application +metadata: + labels: + app.kubernetes.io/component: poddefaults + app.kubernetes.io/instance: poddefaults-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: poddefaults + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + name: webhook + namespace: kubeflow +spec: + addOwnerRef: true + componentKinds: + - group: core + kind: ConfigMap + - group: apps + kind: StatefulSet + - group: core + kind: Service + - group: core + kind: ServiceAccount + descriptor: + description: injects volume, volume mounts, env vars into PodDefault + keywords: + - admission-webhook + - kubeflow + links: + - description: About + url: https://github.com/kubeflow/kubeflow/tree/master/components/admission-webhook + maintainers: [] + owners: [] + type: bootstrap + version: v1beta1 + selector: + matchLabels: + app.kubernetes.io/component: bootstrap + app.kubernetes.io/instance: webhook-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: webhook + app.kubernetes.io/part-of: webhook + app.kubernetes.io/version: v1.0.0 diff --git a/tests/stacks/gcp/test_data/expected/apps_v1_daemonset_nvidia-driver-installer.yaml b/tests/stacks/gcp/test_data/expected/apps_v1_daemonset_nvidia-driver-installer.yaml new file mode 100644 index 000000000..4c3e58c66 --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/apps_v1_daemonset_nvidia-driver-installer.yaml @@ -0,0 +1,84 @@ +apiVersion: apps/v1 +kind: DaemonSet +metadata: + labels: + app.kubernetes.io/component: gpu-driver + app.kubernetes.io/instance: gpu-driver-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: gpu-driver + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + k8s-app: nvidia-driver-installer + kustomize.component: gpu-driver + name: nvidia-driver-installer + namespace: kubeflow +spec: + selector: + matchLabels: + app.kubernetes.io/component: gpu-driver + app.kubernetes.io/instance: gpu-driver-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: gpu-driver + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: gpu-driver + template: + metadata: + labels: + app.kubernetes.io/component: gpu-driver + app.kubernetes.io/instance: gpu-driver-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: gpu-driver + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + k8s-app: nvidia-driver-installer + kustomize.component: gpu-driver + name: nvidia-driver-installer + spec: + affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: cloud.google.com/gke-accelerator + operator: Exists + containers: + - image: gcr.io/google-containers/pause:2.0 + name: pause + hostNetwork: true + hostPID: true + initContainers: + - env: + - name: NVIDIA_INSTALL_DIR_HOST + value: /home/kubernetes/bin/nvidia + - name: NVIDIA_INSTALL_DIR_CONTAINER + value: /usr/local/nvidia + - name: ROOT_MOUNT_DIR + value: /root + image: cos-nvidia-installer:fixed + imagePullPolicy: Never + name: nvidia-driver-installer + resources: + requests: + cpu: 0.15 + securityContext: + privileged: true + volumeMounts: + - mountPath: /usr/local/nvidia + name: nvidia-install-dir-host + - mountPath: /dev + name: dev + - mountPath: /root + name: root-mount + tolerations: + - operator: Exists + volumes: + - hostPath: + path: /dev + name: dev + - hostPath: + path: /home/kubernetes/bin/nvidia + name: nvidia-install-dir-host + - hostPath: + path: / + name: root-mount diff --git a/tests/stacks/gcp/test_data/expected/apps_v1_deployment_admission-webhook-deployment.yaml b/tests/stacks/gcp/test_data/expected/apps_v1_deployment_admission-webhook-deployment.yaml new file mode 100644 index 000000000..32d071f03 --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/apps_v1_deployment_admission-webhook-deployment.yaml @@ -0,0 +1,54 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: admission-webhook + app.kubernetes.io/component: poddefaults + app.kubernetes.io/instance: poddefaults-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: poddefaults + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: admission-webhook + name: admission-webhook-deployment + namespace: kubeflow +spec: + selector: + matchLabels: + app: admission-webhook + app.kubernetes.io/component: poddefaults + app.kubernetes.io/instance: poddefaults-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: poddefaults + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: admission-webhook + template: + metadata: + annotations: + sidecar.istio.io/inject: "false" + labels: + app: admission-webhook + app.kubernetes.io/component: poddefaults + app.kubernetes.io/instance: poddefaults-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: poddefaults + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: admission-webhook + spec: + containers: + - args: + - --tlsCertFile=/etc/webhook/certs/tls.crt + - --tlsKeyFile=/etc/webhook/certs/tls.key + image: gcr.io/kubeflow-images-public/admission-webhook:vmaster-gaf96e4e3 + name: admission-webhook + volumeMounts: + - mountPath: /etc/webhook/certs + name: webhook-cert + readOnly: true + serviceAccountName: admission-webhook-service-account + volumes: + - name: webhook-cert + secret: + secretName: webhook-certs diff --git a/tests/stacks/gcp/test_data/expected/apps_v1_deployment_centraldashboard.yaml b/tests/stacks/gcp/test_data/expected/apps_v1_deployment_centraldashboard.yaml new file mode 100644 index 000000000..a1195c1de --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/apps_v1_deployment_centraldashboard.yaml @@ -0,0 +1,62 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: centraldashboard + app.kubernetes.io/component: centraldashboard + app.kubernetes.io/instance: centraldashboard-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: centraldashboard + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + name: centraldashboard + namespace: kubeflow +spec: + replicas: 1 + selector: + matchLabels: + app: centraldashboard + app.kubernetes.io/component: centraldashboard + app.kubernetes.io/instance: centraldashboard-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: centraldashboard + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + template: + metadata: + annotations: + sidecar.istio.io/inject: "false" + labels: + app: centraldashboard + app.kubernetes.io/component: centraldashboard + app.kubernetes.io/instance: centraldashboard-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: centraldashboard + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + spec: + containers: + - env: + - name: USERID_HEADER + valueFrom: + configMapKeyRef: + key: userid-header + name: kubeflow-config-988m2m9m87 + - name: USERID_PREFIX + valueFrom: + configMapKeyRef: + key: userid-prefix + name: kubeflow-config-988m2m9m87 + image: gcr.io/kubeflow-images-public/centraldashboard + imagePullPolicy: IfNotPresent + livenessProbe: + httpGet: + path: /healthz + port: 8082 + initialDelaySeconds: 30 + periodSeconds: 30 + name: centraldashboard + ports: + - containerPort: 8082 + protocol: TCP + serviceAccountName: centraldashboard diff --git a/tests/jupyter/jupyter-web-app/base_v3/test_data/expected/apps_v1_deployment_jupyter-web-app-deployment.yaml b/tests/stacks/gcp/test_data/expected/apps_v1_deployment_jupyter-web-app-deployment.yaml similarity index 72% rename from tests/jupyter/jupyter-web-app/base_v3/test_data/expected/apps_v1_deployment_jupyter-web-app-deployment.yaml rename to tests/stacks/gcp/test_data/expected/apps_v1_deployment_jupyter-web-app-deployment.yaml index 1cc63b8c1..2665cd2ad 100644 --- a/tests/jupyter/jupyter-web-app/base_v3/test_data/expected/apps_v1_deployment_jupyter-web-app-deployment.yaml +++ b/tests/stacks/gcp/test_data/expected/apps_v1_deployment_jupyter-web-app-deployment.yaml @@ -22,30 +22,17 @@ spec: spec: containers: - env: - - name: ROK_SECRET_NAME - valueFrom: - configMapKeyRef: - key: ROK_SECRET_NAME - name: parameters - - name: UI - valueFrom: - configMapKeyRef: - key: UI - name: parameters - name: USERID_HEADER - value: $(userid-header) valueFrom: configMapKeyRef: key: userid-header - name: kubeflow-config + name: kubeflow-config-988m2m9m87 - name: USERID_PREFIX - value: $(userid-prefix) valueFrom: configMapKeyRef: key: userid-prefix - name: kubeflow-config + name: kubeflow-config-988m2m9m87 image: gcr.io/kubeflow-images-public/jupyter-web-app:vmaster-gd9be4b9e - imagePullPolicy: $(policy) name: jupyter-web-app ports: - containerPort: 5000 diff --git a/tests/stacks/gcp/test_data/expected/apps_v1_deployment_notebook-controller-deployment.yaml b/tests/stacks/gcp/test_data/expected/apps_v1_deployment_notebook-controller-deployment.yaml new file mode 100644 index 000000000..b867bfa01 --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/apps_v1_deployment_notebook-controller-deployment.yaml @@ -0,0 +1,63 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: notebook-controller + app.kubernetes.io/component: notebook-controller + app.kubernetes.io/instance: notebook-controller-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: notebook-controller + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + kustomize.component: notebook-controller + name: notebook-controller-deployment + namespace: kubeflow +spec: + selector: + matchLabels: + app: notebook-controller + app.kubernetes.io/component: notebook-controller + app.kubernetes.io/instance: notebook-controller-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: notebook-controller + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + kustomize.component: notebook-controller + template: + metadata: + annotations: + sidecar.istio.io/inject: "false" + labels: + app: notebook-controller + app.kubernetes.io/component: notebook-controller + app.kubernetes.io/instance: notebook-controller-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: notebook-controller + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + kustomize.component: notebook-controller + spec: + containers: + - command: + - /manager + env: + - name: USE_ISTIO + valueFrom: + configMapKeyRef: + key: USE_ISTIO + name: notebook-controller-notebook-controller-config-h4d668t5tb + - name: ISTIO_GATEWAY + valueFrom: + configMapKeyRef: + key: ISTIO_GATEWAY + name: notebook-controller-notebook-controller-config-h4d668t5tb + image: gcr.io/kubeflow-images-public/notebook-controller:vmaster-gf39279c0 + imagePullPolicy: Always + livenessProbe: + httpGet: + path: /metrics + port: 8080 + initialDelaySeconds: 30 + periodSeconds: 30 + name: manager + serviceAccountName: notebook-controller-service-account diff --git a/tests/stacks/gcp/test_data/expected/apps_v1_deployment_profiles-deployment.yaml b/tests/stacks/gcp/test_data/expected/apps_v1_deployment_profiles-deployment.yaml new file mode 100644 index 000000000..caccc9d48 --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/apps_v1_deployment_profiles-deployment.yaml @@ -0,0 +1,95 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + kustomize.component: profiles + name: profiles-deployment + namespace: kubeflow +spec: + replicas: 1 + selector: + matchLabels: + kustomize.component: profiles + template: + metadata: + annotations: + sidecar.istio.io/inject: "false" + labels: + kustomize.component: profiles + spec: + containers: + - args: null + command: + - /manager + - -userid-header + - $(USERID_HEADER) + - -userid-prefix + - $(USERID_PREFIX) + - -workload-identity + - $(WORKLOAD_IDENTITY) + env: + - name: USERID_HEADER + valueFrom: + configMapKeyRef: + key: userid-header + name: kubeflow-config-988m2m9m87 + - name: USERID_PREFIX + valueFrom: + configMapKeyRef: + key: userid-prefix + name: kubeflow-config-988m2m9m87 + - name: WORKLOAD_IDENTITY + valueFrom: + configMapKeyRef: + key: gcp-sa + name: profiles-profiles-config-4mgcmtgk6t + image: gcr.io/kubeflow-images-public/profile-controller:vmaster-g34aa47c2 + imagePullPolicy: Always + livenessProbe: + httpGet: + path: /metrics + port: 8080 + initialDelaySeconds: 30 + periodSeconds: 30 + name: manager + ports: + - containerPort: 8080 + name: manager-http + protocol: TCP + - args: null + command: + - /access-management + - -cluster-admin + - $(CLUSTER_ADMIN) + - -userid-prefix + - $(USERID_PREFIX) + env: + - name: USERID_HEADER + valueFrom: + configMapKeyRef: + key: userid-header + name: kubeflow-config-988m2m9m87 + - name: USERID_PREFIX + valueFrom: + configMapKeyRef: + key: userid-prefix + name: kubeflow-config-988m2m9m87 + - name: CLUSTER_ADMIN + valueFrom: + configMapKeyRef: + key: admin + name: profiles-profiles-config-4mgcmtgk6t + image: gcr.io/kubeflow-images-public/kfam:vmaster-gf3e09203 + imagePullPolicy: Always + livenessProbe: + httpGet: + path: /metrics + port: 8081 + initialDelaySeconds: 30 + periodSeconds: 30 + name: kfam + ports: + - containerPort: 8081 + name: kfam-http + protocol: TCP + serviceAccountName: profiles-controller-service-account diff --git a/tests/stacks/gcp/test_data/expected/apps_v1_deployment_pytorch-operator.yaml b/tests/stacks/gcp/test_data/expected/apps_v1_deployment_pytorch-operator.yaml new file mode 100644 index 000000000..7eb5df4d4 --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/apps_v1_deployment_pytorch-operator.yaml @@ -0,0 +1,57 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app.kubernetes.io/component: pytorch + app.kubernetes.io/instance: pytorch-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: pytorch-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: pytorch-operator + name: pytorch-operator + namespace: kubeflow +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/component: pytorch + app.kubernetes.io/instance: pytorch-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: pytorch-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: pytorch-operator + name: pytorch-operator + template: + metadata: + annotations: + sidecar.istio.io/inject: "false" + labels: + app.kubernetes.io/component: pytorch + app.kubernetes.io/instance: pytorch-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: pytorch-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: pytorch-operator + name: pytorch-operator + spec: + containers: + - command: + - /pytorch-operator.v1 + - --alsologtostderr + - -v=1 + - --monitoring-port=8443 + env: + - name: MY_POD_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + - name: MY_POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + image: gcr.io/kubeflow-images-public/pytorch-operator:vmaster-g047cf0f + name: pytorch-operator + serviceAccountName: pytorch-operator diff --git a/tests/stacks/gcp/test_data/expected/apps_v1_deployment_tf-job-operator.yaml b/tests/stacks/gcp/test_data/expected/apps_v1_deployment_tf-job-operator.yaml new file mode 100644 index 000000000..b6030a30a --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/apps_v1_deployment_tf-job-operator.yaml @@ -0,0 +1,55 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app.kubernetes.io/component: tfjob + app.kubernetes.io/instance: tf-job-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: tf-job-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: tf-job-operator + name: tf-job-operator + namespace: kubeflow +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/component: tfjob + app.kubernetes.io/instance: tf-job-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: tf-job-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: tf-job-operator + template: + metadata: + annotations: + sidecar.istio.io/inject: "false" + labels: + app.kubernetes.io/component: tfjob + app.kubernetes.io/instance: tf-job-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: tf-job-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: tf-job-operator + name: tf-job-operator + spec: + containers: + - args: + - --alsologtostderr + - -v=1 + - --monitoring-port=8443 + env: + - name: MY_POD_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + - name: MY_POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + image: gcr.io/kubeflow-images-public/tf_operator:vmaster-gd455e6ef + name: tf-job-operator + serviceAccountName: tf-job-operator diff --git a/tests/stacks/gcp/test_data/expected/cert-manager.io_v1alpha2_certificate_admission-webhook-cert.yaml b/tests/stacks/gcp/test_data/expected/cert-manager.io_v1alpha2_certificate_admission-webhook-cert.yaml new file mode 100644 index 000000000..b45202d3d --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/cert-manager.io_v1alpha2_certificate_admission-webhook-cert.yaml @@ -0,0 +1,22 @@ +apiVersion: cert-manager.io/v1alpha2 +kind: Certificate +metadata: + labels: + app.kubernetes.io/component: poddefaults + app.kubernetes.io/instance: poddefaults-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: poddefaults + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + name: admission-webhook-cert + namespace: kubeflow +spec: + commonName: admission-webhook-service.kubeflow.svc + dnsNames: + - admission-webhook-service.kubeflow.svc + - admission-webhook-service.kubeflow.svc.cluster.local + isCA: true + issuerRef: + kind: ClusterIssuer + name: kubeflow-self-signing-issuer + secretName: webhook-certs diff --git a/tests/stacks/gcp/test_data/expected/networking.istio.io_v1alpha3_virtualservice_centraldashboard.yaml b/tests/stacks/gcp/test_data/expected/networking.istio.io_v1alpha3_virtualservice_centraldashboard.yaml new file mode 100644 index 000000000..29caf97d7 --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/networking.istio.io_v1alpha3_virtualservice_centraldashboard.yaml @@ -0,0 +1,28 @@ +apiVersion: networking.istio.io/v1alpha3 +kind: VirtualService +metadata: + labels: + app.kubernetes.io/component: centraldashboard + app.kubernetes.io/instance: centraldashboard-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: centraldashboard + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + name: centraldashboard + namespace: kubeflow +spec: + gateways: + - kubeflow-gateway + hosts: + - '*' + http: + - match: + - uri: + prefix: / + rewrite: + uri: / + route: + - destination: + host: centraldashboard.kubeflow.svc.cluster.local + port: + number: 80 diff --git a/tests/stacks/gcp/test_data/expected/networking.istio.io_v1alpha3_virtualservice_jupyter-web-app-jupyter-web-app.yaml b/tests/stacks/gcp/test_data/expected/networking.istio.io_v1alpha3_virtualservice_jupyter-web-app-jupyter-web-app.yaml new file mode 100644 index 000000000..1aaf497f8 --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/networking.istio.io_v1alpha3_virtualservice_jupyter-web-app-jupyter-web-app.yaml @@ -0,0 +1,28 @@ +apiVersion: networking.istio.io/v1alpha3 +kind: VirtualService +metadata: + labels: + app: jupyter-web-app + kustomize.component: jupyter-web-app + name: jupyter-web-app-jupyter-web-app + namespace: kubeflow +spec: + gateways: + - kubeflow-gateway + hosts: + - '*' + http: + - headers: + request: + add: + x-forwarded-prefix: /jupyter + match: + - uri: + prefix: /jupyter/ + rewrite: + uri: / + route: + - destination: + host: jupyter-web-app-service.kubeflow.svc.cluster.local + port: + number: 80 diff --git a/tests/stacks/gcp/test_data/expected/networking.istio.io_v1alpha3_virtualservice_profiles-kfam.yaml b/tests/stacks/gcp/test_data/expected/networking.istio.io_v1alpha3_virtualservice_profiles-kfam.yaml new file mode 100644 index 000000000..1bfe3a5c7 --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/networking.istio.io_v1alpha3_virtualservice_profiles-kfam.yaml @@ -0,0 +1,27 @@ +apiVersion: networking.istio.io/v1alpha3 +kind: VirtualService +metadata: + labels: + kustomize.component: profiles + name: profiles-kfam + namespace: kubeflow +spec: + gateways: + - kubeflow-gateway + hosts: + - '*' + http: + - headers: + request: + add: + x-forwarded-prefix: /kfam + match: + - uri: + prefix: /kfam/ + rewrite: + uri: /kfam/ + route: + - destination: + host: profiles-kfam.kubeflow.svc.cluster.local + port: + number: 8081 diff --git a/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_admission-webhook-cluster-role.yaml b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_admission-webhook-cluster-role.yaml new file mode 100644 index 000000000..9e871ad94 --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_admission-webhook-cluster-role.yaml @@ -0,0 +1,26 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + app: admission-webhook + app.kubernetes.io/component: poddefaults + app.kubernetes.io/instance: poddefaults-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: poddefaults + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: admission-webhook + name: admission-webhook-cluster-role +rules: +- apiGroups: + - kubeflow.org + resources: + - poddefaults + verbs: + - get + - watch + - list + - update + - create + - patch + - delete diff --git a/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_admission-webhook-kubeflow-poddefaults-admin.yaml b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_admission-webhook-kubeflow-poddefaults-admin.yaml new file mode 100644 index 000000000..4d5d4390e --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_admission-webhook-kubeflow-poddefaults-admin.yaml @@ -0,0 +1,19 @@ +aggregationRule: + clusterRoleSelectors: + - matchLabels: + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-poddefaults-admin: "true" +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + app: admission-webhook + app.kubernetes.io/component: poddefaults + app.kubernetes.io/instance: poddefaults-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: poddefaults + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: admission-webhook + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-admin: "true" + name: admission-webhook-kubeflow-poddefaults-admin +rules: [] diff --git a/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_admission-webhook-kubeflow-poddefaults-edit.yaml b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_admission-webhook-kubeflow-poddefaults-edit.yaml new file mode 100644 index 000000000..b7428221e --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_admission-webhook-kubeflow-poddefaults-edit.yaml @@ -0,0 +1,19 @@ +aggregationRule: + clusterRoleSelectors: + - matchLabels: + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-poddefaults-edit: "true" +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + app: admission-webhook + app.kubernetes.io/component: poddefaults + app.kubernetes.io/instance: poddefaults-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: poddefaults + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: admission-webhook + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-edit: "true" + name: admission-webhook-kubeflow-poddefaults-edit +rules: [] diff --git a/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_admission-webhook-kubeflow-poddefaults-view.yaml b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_admission-webhook-kubeflow-poddefaults-view.yaml new file mode 100644 index 000000000..0683c8eec --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_admission-webhook-kubeflow-poddefaults-view.yaml @@ -0,0 +1,25 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + app: admission-webhook + app.kubernetes.io/component: poddefaults + app.kubernetes.io/instance: poddefaults-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: poddefaults + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: admission-webhook + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-poddefaults-admin: "true" + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-poddefaults-edit: "true" + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-view: "true" + name: admission-webhook-kubeflow-poddefaults-view +rules: +- apiGroups: + - kubeflow.org + resources: + - poddefaults + verbs: + - get + - list + - watch diff --git a/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_centraldashboard.yaml b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_centraldashboard.yaml new file mode 100644 index 000000000..0c5d9a174 --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_centraldashboard.yaml @@ -0,0 +1,23 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + app: centraldashboard + app.kubernetes.io/component: centraldashboard + app.kubernetes.io/instance: centraldashboard-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: centraldashboard + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + name: centraldashboard +rules: +- apiGroups: + - "" + resources: + - events + - namespaces + - nodes + verbs: + - get + - list + - watch diff --git a/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_jupyter-web-app-cluster-role.yaml b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_jupyter-web-app-cluster-role.yaml new file mode 100644 index 000000000..e15e8b6e2 --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_jupyter-web-app-cluster-role.yaml @@ -0,0 +1,57 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + app: jupyter-web-app + kustomize.component: jupyter-web-app + name: jupyter-web-app-cluster-role +rules: +- apiGroups: + - "" + resources: + - namespaces + verbs: + - get + - list + - create + - delete +- apiGroups: + - authorization.k8s.io + resources: + - subjectaccessreviews + verbs: + - create +- apiGroups: + - kubeflow.org + resources: + - notebooks + - notebooks/finalizers + - poddefaults + verbs: + - get + - list + - create + - delete +- apiGroups: + - "" + resources: + - persistentvolumeclaims + verbs: + - create + - delete + - get + - list +- apiGroups: + - "" + resources: + - events + verbs: + - list +- apiGroups: + - storage.k8s.io + resources: + - storageclasses + verbs: + - get + - list + - watch diff --git a/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_jupyter-web-app-kubeflow-notebook-ui-admin.yaml b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_jupyter-web-app-kubeflow-notebook-ui-admin.yaml new file mode 100644 index 000000000..0ae2ffa5c --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_jupyter-web-app-kubeflow-notebook-ui-admin.yaml @@ -0,0 +1,9 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + app: jupyter-web-app + kustomize.component: jupyter-web-app + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-admin: "true" + name: jupyter-web-app-kubeflow-notebook-ui-admin +rules: [] diff --git a/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_jupyter-web-app-kubeflow-notebook-ui-edit.yaml b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_jupyter-web-app-kubeflow-notebook-ui-edit.yaml new file mode 100644 index 000000000..9cff1100a --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_jupyter-web-app-kubeflow-notebook-ui-edit.yaml @@ -0,0 +1,20 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + app: jupyter-web-app + kustomize.component: jupyter-web-app + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-edit: "true" + name: jupyter-web-app-kubeflow-notebook-ui-edit +rules: +- apiGroups: + - kubeflow.org + resources: + - notebooks + - notebooks/finalizers + - poddefaults + verbs: + - get + - list + - create + - delete diff --git a/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_jupyter-web-app-kubeflow-notebook-ui-view.yaml b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_jupyter-web-app-kubeflow-notebook-ui-view.yaml new file mode 100644 index 000000000..265ceff54 --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_jupyter-web-app-kubeflow-notebook-ui-view.yaml @@ -0,0 +1,26 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + app: jupyter-web-app + kustomize.component: jupyter-web-app + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-view: "true" + name: jupyter-web-app-kubeflow-notebook-ui-view +rules: +- apiGroups: + - kubeflow.org + resources: + - notebooks + - notebooks/finalizers + - poddefaults + verbs: + - get + - list +- apiGroups: + - storage.k8s.io + resources: + - storageclasses + verbs: + - get + - list + - watch diff --git a/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_kubeflow-pytorchjobs-admin.yaml b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_kubeflow-pytorchjobs-admin.yaml new file mode 100644 index 000000000..7dfa6d691 --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_kubeflow-pytorchjobs-admin.yaml @@ -0,0 +1,18 @@ +aggregationRule: + clusterRoleSelectors: + - matchLabels: + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-pytorchjobs-admin: "true" +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + app.kubernetes.io/component: pytorch + app.kubernetes.io/instance: pytorch-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: pytorch-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: pytorch-operator + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-admin: "true" + name: kubeflow-pytorchjobs-admin +rules: [] diff --git a/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_kubeflow-pytorchjobs-edit.yaml b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_kubeflow-pytorchjobs-edit.yaml new file mode 100644 index 000000000..367bd0b7e --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_kubeflow-pytorchjobs-edit.yaml @@ -0,0 +1,29 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + app.kubernetes.io/component: pytorch + app.kubernetes.io/instance: pytorch-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: pytorch-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: pytorch-operator + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-edit: "true" + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-pytorchjobs-admin: "true" + name: kubeflow-pytorchjobs-edit +rules: +- apiGroups: + - kubeflow.org + resources: + - pytorchjobs + - pytorchjobs/status + verbs: + - get + - list + - watch + - create + - delete + - deletecollection + - patch + - update diff --git a/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_kubeflow-pytorchjobs-view.yaml b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_kubeflow-pytorchjobs-view.yaml new file mode 100644 index 000000000..57a229911 --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_kubeflow-pytorchjobs-view.yaml @@ -0,0 +1,23 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + app.kubernetes.io/component: pytorch + app.kubernetes.io/instance: pytorch-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: pytorch-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: pytorch-operator + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-view: "true" + name: kubeflow-pytorchjobs-view +rules: +- apiGroups: + - kubeflow.org + resources: + - pytorchjobs + - pytorchjobs/status + verbs: + - get + - list + - watch diff --git a/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_kubeflow-tfjobs-admin.yaml b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_kubeflow-tfjobs-admin.yaml new file mode 100644 index 000000000..453d3fe57 --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_kubeflow-tfjobs-admin.yaml @@ -0,0 +1,18 @@ +aggregationRule: + clusterRoleSelectors: + - matchLabels: + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-tfjobs-admin: "true" +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + app.kubernetes.io/component: tfjob + app.kubernetes.io/instance: tf-job-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: tf-job-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: tf-job-operator + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-admin: "true" + name: kubeflow-tfjobs-admin +rules: [] diff --git a/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_kubeflow-tfjobs-edit.yaml b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_kubeflow-tfjobs-edit.yaml new file mode 100644 index 000000000..5fa96cb3c --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_kubeflow-tfjobs-edit.yaml @@ -0,0 +1,29 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + app.kubernetes.io/component: tfjob + app.kubernetes.io/instance: tf-job-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: tf-job-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: tf-job-operator + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-edit: "true" + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-tfjobs-admin: "true" + name: kubeflow-tfjobs-edit +rules: +- apiGroups: + - kubeflow.org + resources: + - tfjobs + - tfjobs/status + verbs: + - get + - list + - watch + - create + - delete + - deletecollection + - patch + - update diff --git a/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_kubeflow-tfjobs-view.yaml b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_kubeflow-tfjobs-view.yaml new file mode 100644 index 000000000..057db34a5 --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_kubeflow-tfjobs-view.yaml @@ -0,0 +1,23 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + app.kubernetes.io/component: tfjob + app.kubernetes.io/instance: tf-job-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: tf-job-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: tf-job-operator + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-view: "true" + name: kubeflow-tfjobs-view +rules: +- apiGroups: + - kubeflow.org + resources: + - tfjobs + - tfjobs/status + verbs: + - get + - list + - watch diff --git a/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_notebook-controller-kubeflow-notebooks-admin.yaml b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_notebook-controller-kubeflow-notebooks-admin.yaml new file mode 100644 index 000000000..9d16cdeae --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_notebook-controller-kubeflow-notebooks-admin.yaml @@ -0,0 +1,19 @@ +aggregationRule: + clusterRoleSelectors: + - matchLabels: + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-notebooks-admin: "true" +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + app: notebook-controller + app.kubernetes.io/component: notebook-controller + app.kubernetes.io/instance: notebook-controller-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: notebook-controller + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + kustomize.component: notebook-controller + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-admin: "true" + name: notebook-controller-kubeflow-notebooks-admin +rules: [] diff --git a/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_notebook-controller-kubeflow-notebooks-edit.yaml b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_notebook-controller-kubeflow-notebooks-edit.yaml new file mode 100644 index 000000000..af3ddf015 --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_notebook-controller-kubeflow-notebooks-edit.yaml @@ -0,0 +1,30 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + app: notebook-controller + app.kubernetes.io/component: notebook-controller + app.kubernetes.io/instance: notebook-controller-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: notebook-controller + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + kustomize.component: notebook-controller + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-edit: "true" + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-notebooks-admin: "true" + name: notebook-controller-kubeflow-notebooks-edit +rules: +- apiGroups: + - kubeflow.org + resources: + - notebooks + - notebooks/status + verbs: + - get + - list + - watch + - create + - delete + - deletecollection + - patch + - update diff --git a/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_notebook-controller-kubeflow-notebooks-view.yaml b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_notebook-controller-kubeflow-notebooks-view.yaml new file mode 100644 index 000000000..494d9f376 --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_notebook-controller-kubeflow-notebooks-view.yaml @@ -0,0 +1,24 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + app: notebook-controller + app.kubernetes.io/component: notebook-controller + app.kubernetes.io/instance: notebook-controller-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: notebook-controller + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + kustomize.component: notebook-controller + rbac.authorization.kubeflow.org/aggregate-to-kubeflow-view: "true" + name: notebook-controller-kubeflow-notebooks-view +rules: +- apiGroups: + - kubeflow.org + resources: + - notebooks + - notebooks/status + verbs: + - get + - list + - watch diff --git a/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_notebook-controller-role.yaml b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_notebook-controller-role.yaml new file mode 100644 index 000000000..3fa199395 --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrole_notebook-controller-role.yaml @@ -0,0 +1,58 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + app: notebook-controller + app.kubernetes.io/component: notebook-controller + app.kubernetes.io/instance: notebook-controller-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: notebook-controller + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + kustomize.component: notebook-controller + name: notebook-controller-role +rules: +- apiGroups: + - apps + resources: + - statefulsets + - deployments + verbs: + - '*' +- apiGroups: + - "" + resources: + - pods + verbs: + - get + - list + - watch +- apiGroups: + - "" + resources: + - services + verbs: + - '*' +- apiGroups: + - "" + resources: + - events + verbs: + - get + - list + - watch + - create +- apiGroups: + - kubeflow.org + resources: + - notebooks + - notebooks/status + - notebooks/finalizers + verbs: + - '*' +- apiGroups: + - networking.istio.io + resources: + - virtualservices + verbs: + - '*' diff --git a/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrolebinding_admission-webhook-cluster-role-binding.yaml b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrolebinding_admission-webhook-cluster-role-binding.yaml new file mode 100644 index 000000000..f1eb264bf --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrolebinding_admission-webhook-cluster-role-binding.yaml @@ -0,0 +1,21 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + labels: + app: admission-webhook + app.kubernetes.io/component: poddefaults + app.kubernetes.io/instance: poddefaults-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: poddefaults + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: admission-webhook + name: admission-webhook-cluster-role-binding +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: admission-webhook-cluster-role +subjects: +- kind: ServiceAccount + name: admission-webhook-service-account + namespace: kubeflow diff --git a/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrolebinding_centraldashboard.yaml b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrolebinding_centraldashboard.yaml new file mode 100644 index 000000000..76a9a9e59 --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrolebinding_centraldashboard.yaml @@ -0,0 +1,20 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + labels: + app: centraldashboard + app.kubernetes.io/component: centraldashboard + app.kubernetes.io/instance: centraldashboard-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: centraldashboard + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + name: centraldashboard +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: centraldashboard +subjects: +- kind: ServiceAccount + name: centraldashboard + namespace: kubeflow diff --git a/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrolebinding_jupyter-web-app-cluster-role-binding.yaml b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrolebinding_jupyter-web-app-cluster-role-binding.yaml new file mode 100644 index 000000000..925b70ec6 --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrolebinding_jupyter-web-app-cluster-role-binding.yaml @@ -0,0 +1,15 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + labels: + app: jupyter-web-app + kustomize.component: jupyter-web-app + name: jupyter-web-app-cluster-role-binding +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: jupyter-web-app-cluster-role +subjects: +- kind: ServiceAccount + name: jupyter-web-app-service-account + namespace: kubeflow diff --git a/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrolebinding_notebook-controller-role-binding.yaml b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrolebinding_notebook-controller-role-binding.yaml new file mode 100644 index 000000000..68874191e --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrolebinding_notebook-controller-role-binding.yaml @@ -0,0 +1,21 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + labels: + app: notebook-controller + app.kubernetes.io/component: notebook-controller + app.kubernetes.io/instance: notebook-controller-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: notebook-controller + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + kustomize.component: notebook-controller + name: notebook-controller-role-binding +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: notebook-controller-role +subjects: +- kind: ServiceAccount + name: notebook-controller-service-account + namespace: kubeflow diff --git a/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrolebinding_profiles-cluster-role-binding.yaml b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrolebinding_profiles-cluster-role-binding.yaml new file mode 100644 index 000000000..663e87dbc --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_clusterrolebinding_profiles-cluster-role-binding.yaml @@ -0,0 +1,14 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + labels: + kustomize.component: profiles + name: profiles-cluster-role-binding +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: cluster-admin +subjects: +- kind: ServiceAccount + name: profiles-controller-service-account + namespace: kubeflow diff --git a/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_role_centraldashboard.yaml b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_role_centraldashboard.yaml new file mode 100644 index 000000000..b33cb8481 --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_role_centraldashboard.yaml @@ -0,0 +1,32 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + labels: + app: centraldashboard + app.kubernetes.io/component: centraldashboard + app.kubernetes.io/instance: centraldashboard-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: centraldashboard + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + name: centraldashboard + namespace: kubeflow +rules: +- apiGroups: + - "" + - app.k8s.io + resources: + - applications + - pods + - pods/exec + - pods/log + verbs: + - get + - list + - watch +- apiGroups: + - "" + resources: + - secrets + verbs: + - get diff --git a/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_rolebinding_centraldashboard.yaml b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_rolebinding_centraldashboard.yaml new file mode 100644 index 000000000..bf48de73c --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1_rolebinding_centraldashboard.yaml @@ -0,0 +1,21 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + labels: + app: centraldashboard + app.kubernetes.io/component: centraldashboard + app.kubernetes.io/instance: centraldashboard-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: centraldashboard + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + name: centraldashboard + namespace: kubeflow +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: centraldashboard +subjects: +- kind: ServiceAccount + name: centraldashboard + namespace: kubeflow diff --git a/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1beta1_clusterrole_pytorch-operator.yaml b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1beta1_clusterrole_pytorch-operator.yaml new file mode 100644 index 000000000..71b6c0296 --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1beta1_clusterrole_pytorch-operator.yaml @@ -0,0 +1,36 @@ +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: ClusterRole +metadata: + labels: + app: pytorch-operator + app.kubernetes.io/component: pytorch + app.kubernetes.io/instance: pytorch-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: pytorch-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: pytorch-operator + name: pytorch-operator +rules: +- apiGroups: + - kubeflow.org + resources: + - pytorchjobs + - pytorchjobs/status + verbs: + - '*' +- apiGroups: + - apiextensions.k8s.io + resources: + - customresourcedefinitions + verbs: + - '*' +- apiGroups: + - "" + resources: + - pods + - services + - endpoints + - events + verbs: + - '*' diff --git a/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1beta1_clusterrole_tf-job-operator.yaml b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1beta1_clusterrole_tf-job-operator.yaml new file mode 100644 index 000000000..a6580bc60 --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1beta1_clusterrole_tf-job-operator.yaml @@ -0,0 +1,44 @@ +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: ClusterRole +metadata: + labels: + app: tf-job-operator + app.kubernetes.io/component: tfjob + app.kubernetes.io/instance: tf-job-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: tf-job-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: tf-job-operator + name: tf-job-operator +rules: +- apiGroups: + - kubeflow.org + resources: + - tfjobs + - tfjobs/status + - tfjobs/finalizers + verbs: + - '*' +- apiGroups: + - apiextensions.k8s.io + resources: + - customresourcedefinitions + verbs: + - '*' +- apiGroups: + - "" + resources: + - pods + - services + - endpoints + - events + verbs: + - '*' +- apiGroups: + - apps + - extensions + resources: + - deployments + verbs: + - '*' diff --git a/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1beta1_clusterrolebinding_pytorch-operator.yaml b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1beta1_clusterrolebinding_pytorch-operator.yaml new file mode 100644 index 000000000..9dc6cd007 --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1beta1_clusterrolebinding_pytorch-operator.yaml @@ -0,0 +1,21 @@ +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: ClusterRoleBinding +metadata: + labels: + app: pytorch-operator + app.kubernetes.io/component: pytorch + app.kubernetes.io/instance: pytorch-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: pytorch-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: pytorch-operator + name: pytorch-operator +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: pytorch-operator +subjects: +- kind: ServiceAccount + name: pytorch-operator + namespace: kubeflow diff --git a/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1beta1_clusterrolebinding_tf-job-operator.yaml b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1beta1_clusterrolebinding_tf-job-operator.yaml new file mode 100644 index 000000000..019534f94 --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1beta1_clusterrolebinding_tf-job-operator.yaml @@ -0,0 +1,21 @@ +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: ClusterRoleBinding +metadata: + labels: + app: tf-job-operator + app.kubernetes.io/component: tfjob + app.kubernetes.io/instance: tf-job-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: tf-job-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: tf-job-operator + name: tf-job-operator +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: tf-job-operator +subjects: +- kind: ServiceAccount + name: tf-job-operator + namespace: kubeflow diff --git a/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1beta1_role_jupyter-web-app-jupyter-notebook-role.yaml b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1beta1_role_jupyter-web-app-jupyter-notebook-role.yaml new file mode 100644 index 000000000..0c57d76f0 --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1beta1_role_jupyter-web-app-jupyter-notebook-role.yaml @@ -0,0 +1,39 @@ +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: Role +metadata: + labels: + app: jupyter-web-app + kustomize.component: jupyter-web-app + name: jupyter-web-app-jupyter-notebook-role + namespace: kubeflow +rules: +- apiGroups: + - "" + resources: + - pods + - pods/log + - secrets + - services + verbs: + - '*' +- apiGroups: + - "" + - apps + - extensions + resources: + - deployments + - replicasets + verbs: + - '*' +- apiGroups: + - kubeflow.org + resources: + - '*' + verbs: + - '*' +- apiGroups: + - batch + resources: + - jobs + verbs: + - '*' diff --git a/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1beta1_rolebinding_jupyter-web-app-jupyter-notebook-role-binding.yaml b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1beta1_rolebinding_jupyter-web-app-jupyter-notebook-role-binding.yaml new file mode 100644 index 000000000..e07f86991 --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/rbac.authorization.k8s.io_v1beta1_rolebinding_jupyter-web-app-jupyter-notebook-role-binding.yaml @@ -0,0 +1,15 @@ +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: RoleBinding +metadata: + labels: + app: jupyter-web-app + kustomize.component: jupyter-web-app + name: jupyter-web-app-jupyter-notebook-role-binding + namespace: kubeflow +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: jupyter-web-app-jupyter-notebook-role +subjects: +- kind: ServiceAccount + name: jupyter-notebook diff --git a/tests/stacks/gcp/test_data/expected/~g_v1_configmap_admission-webhook-admission-webhook-parameters.yaml b/tests/stacks/gcp/test_data/expected/~g_v1_configmap_admission-webhook-admission-webhook-parameters.yaml new file mode 100644 index 000000000..eaf2baac9 --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/~g_v1_configmap_admission-webhook-admission-webhook-parameters.yaml @@ -0,0 +1,18 @@ +apiVersion: v1 +data: + issuer: kubeflow-self-signing-issuer + namespace: kubeflow +kind: ConfigMap +metadata: + annotations: {} + labels: + app: admission-webhook + app.kubernetes.io/component: poddefaults + app.kubernetes.io/instance: poddefaults-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: poddefaults + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: admission-webhook + name: admission-webhook-admission-webhook-parameters + namespace: kubeflow diff --git a/tests/jupyter/jupyter-web-app/base_v3/test_data/expected/~g_v1_configmap_jupyter-web-app-jupyter-web-app-config-dhcbh64467.yaml b/tests/stacks/gcp/test_data/expected/~g_v1_configmap_jupyter-web-app-jupyter-web-app-config-dhcbh64467.yaml similarity index 100% rename from tests/jupyter/jupyter-web-app/base_v3/test_data/expected/~g_v1_configmap_jupyter-web-app-jupyter-web-app-config-dhcbh64467.yaml rename to tests/stacks/gcp/test_data/expected/~g_v1_configmap_jupyter-web-app-jupyter-web-app-config-dhcbh64467.yaml diff --git a/tests/stacks/gcp/test_data/expected/~g_v1_configmap_kubeflow-config-988m2m9m87.yaml b/tests/stacks/gcp/test_data/expected/~g_v1_configmap_kubeflow-config-988m2m9m87.yaml new file mode 100644 index 000000000..9ba0edebb --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/~g_v1_configmap_kubeflow-config-988m2m9m87.yaml @@ -0,0 +1,9 @@ +apiVersion: v1 +data: + clusterDomain: cluster.local + userid-header: X-Goog-Authenticated-User-Email + userid-prefix: 'accounts.google.com:' +kind: ConfigMap +metadata: + name: kubeflow-config-988m2m9m87 + namespace: kubeflow diff --git a/tests/stacks/gcp/test_data/expected/~g_v1_configmap_notebook-controller-notebook-controller-config-h4d668t5tb.yaml b/tests/stacks/gcp/test_data/expected/~g_v1_configmap_notebook-controller-notebook-controller-config-h4d668t5tb.yaml new file mode 100644 index 000000000..17e759ee8 --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/~g_v1_configmap_notebook-controller-notebook-controller-config-h4d668t5tb.yaml @@ -0,0 +1,17 @@ +apiVersion: v1 +data: + ISTIO_GATEWAY: kubeflow/kubeflow-gateway + USE_ISTIO: "true" +kind: ConfigMap +metadata: + labels: + app: notebook-controller + app.kubernetes.io/component: notebook-controller + app.kubernetes.io/instance: notebook-controller-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: notebook-controller + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + kustomize.component: notebook-controller + name: notebook-controller-notebook-controller-config-h4d668t5tb + namespace: kubeflow diff --git a/tests/stacks/gcp/test_data/expected/~g_v1_configmap_profiles-profiles-config-4mgcmtgk6t.yaml b/tests/stacks/gcp/test_data/expected/~g_v1_configmap_profiles-profiles-config-4mgcmtgk6t.yaml new file mode 100644 index 000000000..e77d6f69e --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/~g_v1_configmap_profiles-profiles-config-4mgcmtgk6t.yaml @@ -0,0 +1,10 @@ +apiVersion: v1 +data: + admin: "" + gcp-sa: "" +kind: ConfigMap +metadata: + labels: + kustomize.component: profiles + name: profiles-profiles-config-4mgcmtgk6t + namespace: kubeflow diff --git a/tests/stacks/gcp/test_data/expected/~g_v1_service_admission-webhook-service.yaml b/tests/stacks/gcp/test_data/expected/~g_v1_service_admission-webhook-service.yaml new file mode 100644 index 000000000..d8a0413c6 --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/~g_v1_service_admission-webhook-service.yaml @@ -0,0 +1,27 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app: admission-webhook + app.kubernetes.io/component: poddefaults + app.kubernetes.io/instance: poddefaults-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: poddefaults + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: admission-webhook + name: admission-webhook-service + namespace: kubeflow +spec: + ports: + - port: 443 + targetPort: 443 + selector: + app: admission-webhook + app.kubernetes.io/component: poddefaults + app.kubernetes.io/instance: poddefaults-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: poddefaults + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: admission-webhook diff --git a/tests/stacks/gcp/test_data/expected/~g_v1_service_centraldashboard.yaml b/tests/stacks/gcp/test_data/expected/~g_v1_service_centraldashboard.yaml new file mode 100644 index 000000000..76c10812a --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/~g_v1_service_centraldashboard.yaml @@ -0,0 +1,37 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + getambassador.io/config: |- + --- + apiVersion: ambassador/v0 + kind: Mapping + name: centralui-mapping + prefix: / + rewrite: / + service: centraldashboard.$(namespace) + labels: + app: centraldashboard + app.kubernetes.io/component: centraldashboard + app.kubernetes.io/instance: centraldashboard-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: centraldashboard + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + name: centraldashboard + namespace: kubeflow +spec: + ports: + - port: 80 + protocol: TCP + targetPort: 8082 + selector: + app: centraldashboard + app.kubernetes.io/component: centraldashboard + app.kubernetes.io/instance: centraldashboard-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: centraldashboard + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + sessionAffinity: None + type: ClusterIP diff --git a/tests/stacks/gcp/test_data/expected/~g_v1_service_jupyter-web-app-service.yaml b/tests/stacks/gcp/test_data/expected/~g_v1_service_jupyter-web-app-service.yaml new file mode 100644 index 000000000..cbc5e87e2 --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/~g_v1_service_jupyter-web-app-service.yaml @@ -0,0 +1,29 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + getambassador.io/config: |- + --- + apiVersion: ambassador/v0 + kind: Mapping + name: webapp_mapping + prefix: /$(prefix)/ + service: jupyter-web-app-service.$(namespace) + add_request_headers: + x-forwarded-prefix: /jupyter + labels: + app: jupyter-web-app + kustomize.component: jupyter-web-app + run: jupyter-web-app + name: jupyter-web-app-service + namespace: kubeflow +spec: + ports: + - name: http + port: 80 + protocol: TCP + targetPort: 5000 + selector: + app: jupyter-web-app + kustomize.component: jupyter-web-app + type: ClusterIP diff --git a/tests/stacks/gcp/test_data/expected/~g_v1_service_notebook-controller-service.yaml b/tests/stacks/gcp/test_data/expected/~g_v1_service_notebook-controller-service.yaml new file mode 100644 index 000000000..7e47bc3eb --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/~g_v1_service_notebook-controller-service.yaml @@ -0,0 +1,26 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app: notebook-controller + app.kubernetes.io/component: notebook-controller + app.kubernetes.io/instance: notebook-controller-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: notebook-controller + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + kustomize.component: notebook-controller + name: notebook-controller-service + namespace: kubeflow +spec: + ports: + - port: 443 + selector: + app: notebook-controller + app.kubernetes.io/component: notebook-controller + app.kubernetes.io/instance: notebook-controller-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: notebook-controller + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + kustomize.component: notebook-controller diff --git a/tests/stacks/gcp/test_data/expected/~g_v1_service_profiles-kfam.yaml b/tests/stacks/gcp/test_data/expected/~g_v1_service_profiles-kfam.yaml new file mode 100644 index 000000000..db1f50bd7 --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/~g_v1_service_profiles-kfam.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + kustomize.component: profiles + name: profiles-kfam + namespace: kubeflow +spec: + ports: + - port: 8081 + selector: + kustomize.component: profiles diff --git a/tests/stacks/gcp/test_data/expected/~g_v1_service_pytorch-operator.yaml b/tests/stacks/gcp/test_data/expected/~g_v1_service_pytorch-operator.yaml new file mode 100644 index 000000000..ea68e87d8 --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/~g_v1_service_pytorch-operator.yaml @@ -0,0 +1,33 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + prometheus.io/path: /metrics + prometheus.io/port: "8443" + prometheus.io/scrape: "true" + labels: + app: pytorch-operator + app.kubernetes.io/component: pytorch + app.kubernetes.io/instance: pytorch-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: pytorch-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: pytorch-operator + name: pytorch-operator + namespace: kubeflow +spec: + ports: + - name: monitoring-port + port: 8443 + targetPort: 8443 + selector: + app.kubernetes.io/component: pytorch + app.kubernetes.io/instance: pytorch-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: pytorch-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: pytorch-operator + name: pytorch-operator + type: ClusterIP diff --git a/tests/stacks/gcp/test_data/expected/~g_v1_service_tf-job-operator.yaml b/tests/stacks/gcp/test_data/expected/~g_v1_service_tf-job-operator.yaml new file mode 100644 index 000000000..225d41703 --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/~g_v1_service_tf-job-operator.yaml @@ -0,0 +1,33 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + prometheus.io/path: /metrics + prometheus.io/port: "8443" + prometheus.io/scrape: "true" + labels: + app: tf-job-operator + app.kubernetes.io/component: tfjob + app.kubernetes.io/instance: tf-job-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: tf-job-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: tf-job-operator + name: tf-job-operator + namespace: kubeflow +spec: + ports: + - name: monitoring-port + port: 8443 + targetPort: 8443 + selector: + app.kubernetes.io/component: tfjob + app.kubernetes.io/instance: tf-job-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: tf-job-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: tf-job-operator + name: tf-job-operator + type: ClusterIP diff --git a/tests/stacks/gcp/test_data/expected/~g_v1_serviceaccount_admission-webhook-service-account.yaml b/tests/stacks/gcp/test_data/expected/~g_v1_serviceaccount_admission-webhook-service-account.yaml new file mode 100644 index 000000000..936f4baae --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/~g_v1_serviceaccount_admission-webhook-service-account.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + app: admission-webhook + app.kubernetes.io/component: poddefaults + app.kubernetes.io/instance: poddefaults-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: poddefaults + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: admission-webhook + name: admission-webhook-service-account + namespace: kubeflow diff --git a/tests/stacks/gcp/test_data/expected/~g_v1_serviceaccount_centraldashboard.yaml b/tests/stacks/gcp/test_data/expected/~g_v1_serviceaccount_centraldashboard.yaml new file mode 100644 index 000000000..9781f4a44 --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/~g_v1_serviceaccount_centraldashboard.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + app.kubernetes.io/component: centraldashboard + app.kubernetes.io/instance: centraldashboard-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: centraldashboard + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + name: centraldashboard + namespace: kubeflow diff --git a/tests/stacks/gcp/test_data/expected/~g_v1_serviceaccount_jupyter-web-app-service-account.yaml b/tests/stacks/gcp/test_data/expected/~g_v1_serviceaccount_jupyter-web-app-service-account.yaml new file mode 100644 index 000000000..926d7e9b7 --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/~g_v1_serviceaccount_jupyter-web-app-service-account.yaml @@ -0,0 +1,8 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + app: jupyter-web-app + kustomize.component: jupyter-web-app + name: jupyter-web-app-service-account + namespace: kubeflow diff --git a/tests/stacks/gcp/test_data/expected/~g_v1_serviceaccount_notebook-controller-service-account.yaml b/tests/stacks/gcp/test_data/expected/~g_v1_serviceaccount_notebook-controller-service-account.yaml new file mode 100644 index 000000000..6f534aa3a --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/~g_v1_serviceaccount_notebook-controller-service-account.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + app: notebook-controller + app.kubernetes.io/component: notebook-controller + app.kubernetes.io/instance: notebook-controller-v1.0.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: notebook-controller + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v1.0.0 + kustomize.component: notebook-controller + name: notebook-controller-service-account + namespace: kubeflow diff --git a/tests/stacks/gcp/test_data/expected/~g_v1_serviceaccount_profiles-controller-service-account.yaml b/tests/stacks/gcp/test_data/expected/~g_v1_serviceaccount_profiles-controller-service-account.yaml new file mode 100644 index 000000000..881ccbf1b --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/~g_v1_serviceaccount_profiles-controller-service-account.yaml @@ -0,0 +1,7 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + kustomize.component: profiles + name: profiles-controller-service-account + namespace: kubeflow diff --git a/tests/stacks/gcp/test_data/expected/~g_v1_serviceaccount_pytorch-operator.yaml b/tests/stacks/gcp/test_data/expected/~g_v1_serviceaccount_pytorch-operator.yaml new file mode 100644 index 000000000..8fbfe5c5c --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/~g_v1_serviceaccount_pytorch-operator.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + app: pytorch-operator + app.kubernetes.io/component: pytorch + app.kubernetes.io/instance: pytorch-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: pytorch-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: pytorch-operator + name: pytorch-operator + namespace: kubeflow diff --git a/tests/stacks/gcp/test_data/expected/~g_v1_serviceaccount_tf-job-dashboard.yaml b/tests/stacks/gcp/test_data/expected/~g_v1_serviceaccount_tf-job-dashboard.yaml new file mode 100644 index 000000000..bcf465b43 --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/~g_v1_serviceaccount_tf-job-dashboard.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + app: tf-job-dashboard + app.kubernetes.io/component: tfjob + app.kubernetes.io/instance: tf-job-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: tf-job-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: tf-job-operator + name: tf-job-dashboard + namespace: kubeflow diff --git a/tests/stacks/gcp/test_data/expected/~g_v1_serviceaccount_tf-job-operator.yaml b/tests/stacks/gcp/test_data/expected/~g_v1_serviceaccount_tf-job-operator.yaml new file mode 100644 index 000000000..8ef6c8396 --- /dev/null +++ b/tests/stacks/gcp/test_data/expected/~g_v1_serviceaccount_tf-job-operator.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + app: tf-job-operator + app.kubernetes.io/component: tfjob + app.kubernetes.io/instance: tf-job-operator-v0.7.0 + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/name: tf-job-operator + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.7.0 + kustomize.component: tf-job-operator + name: tf-job-operator + namespace: kubeflow diff --git a/tests/tests/legacy_kustomizations/centraldashboard/test_data/expected/rbac.authorization.k8s.io_v1_clusterrolebinding_centraldashboard.yaml b/tests/tests/legacy_kustomizations/centraldashboard/test_data/expected/rbac.authorization.k8s.io_v1_clusterrolebinding_centraldashboard.yaml index 080d0ca08..c59166067 100644 --- a/tests/tests/legacy_kustomizations/centraldashboard/test_data/expected/rbac.authorization.k8s.io_v1_clusterrolebinding_centraldashboard.yaml +++ b/tests/tests/legacy_kustomizations/centraldashboard/test_data/expected/rbac.authorization.k8s.io_v1_clusterrolebinding_centraldashboard.yaml @@ -18,4 +18,4 @@ roleRef: subjects: - kind: ServiceAccount name: centraldashboard - namespace: $(namespace) + namespace: kubeflow diff --git a/tests/tests/legacy_kustomizations/centraldashboard/test_data/expected/rbac.authorization.k8s.io_v1_rolebinding_centraldashboard.yaml b/tests/tests/legacy_kustomizations/centraldashboard/test_data/expected/rbac.authorization.k8s.io_v1_rolebinding_centraldashboard.yaml index 0bc2c2938..04ed56d84 100644 --- a/tests/tests/legacy_kustomizations/centraldashboard/test_data/expected/rbac.authorization.k8s.io_v1_rolebinding_centraldashboard.yaml +++ b/tests/tests/legacy_kustomizations/centraldashboard/test_data/expected/rbac.authorization.k8s.io_v1_rolebinding_centraldashboard.yaml @@ -19,4 +19,4 @@ roleRef: subjects: - kind: ServiceAccount name: centraldashboard - namespace: $(namespace) + namespace: kubeflow diff --git a/tests/tests/legacy_kustomizations/notebook-controller/test_data/expected/apps_v1_deployment_notebook-controller-deployment.yaml b/tests/tests/legacy_kustomizations/notebook-controller/test_data/expected/apps_v1_deployment_notebook-controller-deployment.yaml index f25af0700..2e5f74527 100644 --- a/tests/tests/legacy_kustomizations/notebook-controller/test_data/expected/apps_v1_deployment_notebook-controller-deployment.yaml +++ b/tests/tests/legacy_kustomizations/notebook-controller/test_data/expected/apps_v1_deployment_notebook-controller-deployment.yaml @@ -45,8 +45,6 @@ spec: value: "false" - name: ISTIO_GATEWAY value: kubeflow/kubeflow-gateway - - name: POD_LABELS - value: gcp-cred-secret=user-gcp-sa,gcp-cred-secret-filename=user-gcp-sa.json image: gcr.io/kubeflow-images-public/notebook-controller:vmaster-gf39279c0 imagePullPolicy: Always livenessProbe: