in cli/aws_orbit/remote_files/kubectl.py [0:0]
def deploy_env(context: "Context") -> None:
eks_stack_name: str = f"eksctl-orbit-{context.name}-cluster"
_logger.debug("EKSCTL stack name: %s", eks_stack_name)
if cfn.does_stack_exist(stack_name=eks_stack_name):
k8s_context = get_k8s_context(context=context)
_logger.debug("k8s_context: %s", k8s_context)
# orbit-system kustomizations
output_paths = _generate_orbit_system_kustomizations(context=context)
for path in output_paths:
sh.run(f"kubectl apply -k {path} --context {k8s_context} --wait")
# Wait until cert-manager webhook is available
_confirm_endpoints(name="cert-manager-webhook", namespace="cert-manager", k8s_context=k8s_context)
_confirm_readiness(name="cert-manager", namespace="cert-manager", type="Deployment", k8s_context=k8s_context)
_confirm_readiness(
name="cert-manager-cainjector", namespace="cert-manager", type="Deployment", k8s_context=k8s_context
)
output_path: Optional[str] = _generate_orbit_system_manifest(context=context, clean_up=True)
sh.run(f"kubectl apply -f {output_path} --context {k8s_context} --wait")
output_path = _generate_orbit_image_replicator_manifest(context=context, clean_up=True)
if output_path is not None:
sh.run(f"kubectl apply -f {output_path} --context {k8s_context} --wait")
# Commented until we confirm this isn't needed
# Restart orbit-system deployments and statefulsets to force reload of caches etc
# sh.run(f"kubectl rollout restart deployments -n orbit-system --context {k8s_context}")
_confirm_readiness(
name="podsetting-operator", namespace="orbit-system", type="deployment", k8s_context=k8s_context
)
_confirm_readiness(
name="teamspace-operator", namespace="orbit-system", type="deployment", k8s_context=k8s_context
)
_confirm_readiness(
name="userspace-operator", namespace="orbit-system", type="deployment", k8s_context=k8s_context
)
_confirm_endpoints(name="podsetting-pod-webhook", namespace="orbit-system", k8s_context=k8s_context)
if context.install_image_replicator or not context.networking.data.internet_accessible:
_confirm_readiness(
name="imagereplication-operator", namespace="orbit-system", type="deployment", k8s_context=k8s_context
)
_confirm_endpoints(name="imagereplication-pod-webhook", namespace="orbit-system", k8s_context=k8s_context)
sh.run(
"kubectl rollout restart daemonsets -n orbit-system-ssm-daemons "
f"ssm-agent-installer --context {k8s_context}"
)
# kube-system kustomizations
output_paths = _generate_kube_system_kustomizations(context=context)
for output_path in output_paths:
sh.run(f"kubectl apply -k {output_path} --context {k8s_context} --wait")
# kube-system manifests
output_path = _generate_kube_system_manifest(context=context)
sh.run(f"kubectl apply -f {output_path} --context {k8s_context} --wait")
# Enable ENIs
_enable_eni(k8s_context=k8s_context)
# kubeflow-namespaces
output_path = _kubeflow_namespaces(context=context)
sh.run(f"kubectl apply -f {output_path} --context {k8s_context} --wait")
kubeflow.deploy_kubeflow(context=context)
# env
output_paths = _generate_orbit_system_env_kustomizations(context=context)
for output_path in output_paths:
sh.run(f"kubectl apply -k {output_path} --context {k8s_context} --wait")
# Patch Kubeflow
_logger.debug("Orbit applying KubeFlow patch")
jupyter_launcher_config_map, patch = _generate_kubeflow_patch(context=context)
sh.run(f"kubectl apply -f {jupyter_launcher_config_map} --context {k8s_context} --wait")
sh.run(f'kubectl patch deployment -n kubeflow jupyter-web-app-deployment --patch "{patch}"')
sh.run("kubectl rollout restart deployment jupyter-web-app-deployment -n kubeflow")
_apply_deployment_patch_force_env_nodes("istio-system")
_apply_deployment_patch_force_env_nodes("knative-serving")
_apply_deployment_patch_force_env_nodes("kube-system")
_apply_deployment_patch_force_env_nodes("kubeflow")
# Patch Pods to push into Fargate when deploying in an isolated subnet
if not context.networking.data.internet_accessible:
patch = (
'{"spec":{"template":{"metadata":{"labels":{"orbit/node-type":"fargate"}},'
'"spec":{"nodeSelector": null}}}}'
)
sh.run(f"kubectl patch deployment -n istio-system authzadaptor --patch '{patch}'")
patch = (
'{"spec":{"template":{"metadata":{"labels":{"orbit/node-type":"fargate"}},'
'"spec":{"nodeSelector": null, "containers":[{"name":"alb-ingress-controller","args":'
'["--ingress-class=alb","--cluster-name=$(CLUSTER_NAME)","--aws-vpc-id=VPC_ID"]}]}}}}'
)
patch = patch.replace("VPC_ID", cast(str, context.networking.vpc_id))
sh.run(f"kubectl patch deployment -n kubeflow alb-ingress-controller --patch '{patch}'")
# Patch the kubeflow mpi-operator deployment to version lock the images to v0.2.3
patch = (
'{"spec":{"template":{"spec":{"containers":[{"name":"mpi-operator","args":["-alsologtostderr",'
'"--lock-namespace","kubeflow","--kubectl-delivery-image","mpioperator/kubectl-delivery:v0.2.3"],'
'"image":"mpioperator/mpi-operator:v0.2.3"}]}}}}'
)
sh.run(f"kubectl patch deployment -n kubeflow mpi-operator --patch '{patch}'")
# Confirm env Service Endpoints
_confirm_endpoints(name="landing-page-service", namespace="orbit-system", k8s_context=k8s_context)