├── .github └── workflows │ └── build-the-docs.yml ├── .gitignore ├── .pre-commit-config.yaml ├── LICENSE.txt ├── README.rst ├── TERMS_OF_USE.txt ├── buildhtml.bat ├── config.template ├── containthedocs-bash.sh ├── containthedocs-build.sh ├── containthedocs-clean.sh ├── containthedocs-cleanbuild.sh ├── containthedocs-convert.sh ├── containthedocs-image ├── containthedocs-singlehtml.sh ├── containthedocs-spelling.sh ├── containthedocs-wget ├── docs ├── Makefile ├── _static │ ├── css │ │ └── custom.css │ └── intro │ │ ├── AG-2021-light.jpg │ │ ├── UDFDocumentationTab.png │ │ ├── UDFJoinClass.png │ │ ├── account-activated.png │ │ ├── activate-account.png │ │ ├── create-account.png │ │ ├── email-invite.png │ │ ├── jumpbox-start.png │ │ ├── launch-course.png │ │ ├── mfa-setup.png │ │ ├── udf-login.png │ │ └── udf-start.png ├── _templates │ ├── breadcrumb.html │ ├── header.html │ └── layout.html ├── appendix │ ├── appendix.rst │ ├── appendix1 │ │ ├── appendix1.rst │ │ └── module1 │ │ │ ├── images │ │ │ ├── MremoteNG.png │ │ │ ├── docker-hello-world-yes.png │ │ │ ├── docker-ps-myapache.png │ │ │ ├── myapache.png │ │ │ └── rootuser.png │ │ │ ├── lab1.rst │ │ │ ├── lab2.rst │ │ │ └── module1.rst │ ├── appendix2 │ │ ├── appendix2.rst │ │ ├── images │ │ │ ├── MremoteNG.png │ │ │ ├── cluster-setup-guide-access-ui.png │ │ │ ├── cluster-setup-guide-check-port-ui.png │ │ │ ├── cluster-setup-guide-kubeadm-init-master.png │ │ │ ├── cluster-setup-guide-kubeadmin-init-check-cluster-get-pods.png │ │ │ ├── cluster-setup-guide-kubeadmin-init-check-cluster-info.png │ │ │ ├── cluster-setup-guide-kubeadmin-init-check-cluster.png │ │ │ ├── cluster-setup-guide-kubeadmin-init-check.png │ │ │ ├── cluster-setup-guide-node-setup-check-nodes.png │ │ │ ├── cluster-setup-guide-node-setup-check-services.png │ │ │ ├── cluster-setup-guide-node-setup-join-master.png │ │ │ ├── disable-swap.png │ │ │ ├── goodEOL.png │ │ │ ├── rootuser.png │ │ │ ├── top.png │ │ │ └── ubuntu-hosts-file.png │ │ ├── kubernetes │ │ │ └── kube-dashboard.yaml │ │ ├── lab1.rst │ │ ├── lab2.rst │ │ ├── lab3.rst │ │ └── lab4.rst │ ├── appendix3 │ │ ├── appendix3.rst │ │ ├── images │ │ │ ├── MremoteNG.png │ │ │ ├── centos-hosts-file.png │ │ │ └── setup-test-docker.png │ │ ├── lab1.rst │ │ └── lab2.rst │ ├── appendix4 │ │ ├── appendix4.rst │ │ ├── module1 │ │ │ ├── images │ │ │ │ ├── 10-containers.png │ │ │ │ ├── bigip01-tunnel-ip.png │ │ │ │ ├── device-group-sync.png │ │ │ │ ├── floating.png │ │ │ │ ├── ha-cluster.jpg │ │ │ │ ├── kube-system.png │ │ │ │ ├── license.png │ │ │ │ ├── net-arp-entries.png │ │ │ │ ├── net-fdb-entries.png │ │ │ │ ├── oc-get-deployment.png │ │ │ │ ├── oc-get-hostsubnet.png │ │ │ │ ├── oc-get-pods.png │ │ │ │ ├── partition.png │ │ │ │ ├── pool-members.png │ │ │ │ ├── self-ip-bigip01-ha.png │ │ │ │ ├── self-ip-bigip01.png │ │ │ │ ├── self-ip-bigip02-ha.png │ │ │ │ ├── self-ip-bigip02.png │ │ │ │ ├── success.png │ │ │ │ ├── synced.png │ │ │ │ └── vlans.png │ │ │ ├── lab1.rst │ │ │ ├── lab2.rst │ │ │ ├── lab3.rst │ │ │ ├── lab4.rst │ │ │ └── module1.rst │ │ ├── module2 │ │ │ ├── images │ │ │ │ ├── bigip-blue-green-pool-stats.png │ │ │ │ ├── bigip01-bookmark.png │ │ │ │ ├── bigip01-login-page.png │ │ │ │ ├── bigip01-network-map-cfgmap.png │ │ │ │ ├── bigip01-network-map-route-bg.png │ │ │ │ ├── bigip01-network-map-route.png │ │ │ │ ├── bigip01-network-map-scaled.png │ │ │ │ ├── bigip01-route-bg-pool.png │ │ │ │ ├── bigip01-route-policy-list.png │ │ │ │ ├── bigip01-route-policy.png │ │ │ │ ├── bigip01-route-rule.png │ │ │ │ ├── bigip01-route-vs-hover.png │ │ │ │ ├── bigip01-vs-ip-hover.png │ │ │ │ ├── f5-demo-app-bg-url.png │ │ │ │ ├── f5-demo-app-blue.png │ │ │ │ ├── f5-demo-app-green.png │ │ │ │ ├── f5-demo-app-route.png │ │ │ │ ├── f5-demo-app-url.png │ │ │ │ ├── oc-get-deployment1.png │ │ │ │ └── oc-get-route.png │ │ │ ├── lab1.rst │ │ │ ├── lab2.rst │ │ │ ├── lab3.rst │ │ │ └── module2.rst │ │ └── openshift │ │ │ └── advanced │ │ │ ├── apps │ │ │ ├── f5demo │ │ │ │ ├── f5demo.yaml │ │ │ │ └── f5service.yaml │ │ │ ├── guestbook │ │ │ │ ├── frontend-deployment.yaml │ │ │ │ ├── frontend-service.yaml │ │ │ │ ├── gb-f5-cc.yaml │ │ │ │ ├── gb-f5-vs.yaml │ │ │ │ ├── redis-master-deployment.yaml │ │ │ │ ├── redis-master-service.yaml │ │ │ │ ├── redis-slave-deployment.yaml │ │ │ │ ├── redis-slave-service.yaml │ │ │ │ ├── start.sh │ │ │ │ └── stop.sh │ │ │ ├── module2 │ │ │ │ ├── f5-demo-app-bg-deployment.yaml │ │ │ │ ├── f5-demo-app-bg-route.yaml │ │ │ │ ├── f5-demo-app-blue-deployment.yaml │ │ │ │ ├── f5-demo-app-configmap.yaml │ │ │ │ ├── f5-demo-app-deployment.yaml │ │ │ │ ├── f5-demo-app-green-deployment.yaml │ │ │ │ ├── f5-demo-app-iapp-configmap.yaml │ │ │ │ ├── f5-demo-app-ingress.yaml │ │ │ │ ├── f5-demo-app-route-deployment.yaml │ │ │ │ ├── f5-demo-app-route-route.yaml │ │ │ │ └── f5-demo-app-service.yaml │ │ │ └── yelb-app │ │ │ │ ├── yelb-app.yaml │ │ │ │ └── yelb-f5-perms.yaml │ │ │ ├── bigip │ │ │ ├── bigipoverlay.sh │ │ │ └── bigipprep.sh │ │ │ └── ocp │ │ │ ├── bigip1-cc.yaml │ │ │ ├── bigip2-cc.yaml │ │ │ ├── f5-kctlr-openshift-clusterrole.yaml │ │ │ ├── gb-f5-vs.yaml │ │ │ ├── hs-bigip-float.yaml │ │ │ ├── hs-bigip1.yaml │ │ │ ├── hs-bigip2.yaml │ │ │ ├── pool-only.yaml │ │ │ ├── secret.sh │ │ │ └── yelb80iapp.yaml │ ├── appendix5 │ │ ├── appendix5.rst │ │ ├── lab1.rst │ │ ├── lab2.rst │ │ ├── lab3.rst │ │ ├── lab4.rst │ │ └── openshift │ │ │ ├── cc-bigip1-10.yaml │ │ │ ├── cc-bigip1-20.yaml │ │ │ ├── cc-bigip2-10.yaml │ │ │ ├── cc-bigip2-20.yaml │ │ │ ├── create-f5-cluster-10 │ │ │ ├── create-f5-cluster-20 │ │ │ ├── delete-f5-cluster-10 │ │ │ ├── delete-f5-cluster-20 │ │ │ ├── f5-hello-world-configmap-10.yaml │ │ │ ├── f5-hello-world-configmap-20.yaml │ │ │ ├── f5-hello-world-deployment.yaml │ │ │ ├── f5-hello-world-service.yaml │ │ │ ├── hs-bigip-float-10.yaml │ │ │ ├── hs-bigip-float-20.yaml │ │ │ ├── hs-bigip1-10.yaml │ │ │ ├── hs-bigip1-20.yaml │ │ │ ├── hs-bigip2-10.yaml │ │ │ └── hs-bigip2-20.yaml │ ├── appendix6 │ │ ├── appendix6.rst │ │ ├── images │ │ │ ├── MremoteNG.png │ │ │ ├── setup-master-about-marathon.png │ │ │ ├── setup-master-check-UI-marathon.png │ │ │ ├── setup-master-check-UI-mesos-master.png │ │ │ ├── setup-master-check-service-marathon.png │ │ │ ├── setup-master-check-service-mesos-master.png │ │ │ ├── setup-master-test-HA-marathon.png │ │ │ ├── setup-mesos-dns-test-create-app.png │ │ │ ├── setup-mesos-dns-test-ping-app.png │ │ │ ├── setup-mesos-dns-test.png │ │ │ ├── setup-slave-check-agent-registration.png │ │ │ ├── setup-slave-test-create-application-button.png │ │ │ ├── setup-slave-test-create-application-command-def.png │ │ │ ├── setup-slave-test-create-application-command-delete.png │ │ │ ├── setup-slave-test-create-application-command-exec1.png │ │ │ ├── setup-slave-test-create-application-command-exec2.png │ │ │ ├── setup-slave-test-create-container-access.png │ │ │ ├── setup-slave-test-create-container-check-port.png │ │ │ ├── setup-slave-test-create-container-def.png │ │ │ ├── setup-slave-test-create-container-run.png │ │ │ ├── setup-test-docker.png │ │ │ └── ubuntu-hosts-file.png │ │ ├── lab1.rst │ │ ├── lab2.rst │ │ ├── lab3.rst │ │ └── lab4.rst │ ├── appendix7 │ │ ├── appendix6.rst │ │ ├── marathon │ │ │ ├── ansible │ │ │ │ ├── ansible.cfg │ │ │ │ ├── inventory │ │ │ │ │ └── hosts │ │ │ │ └── playbooks │ │ │ │ │ ├── deploy-mesos.yaml │ │ │ │ │ ├── install-docker.yaml │ │ │ │ │ ├── mesos-agent.yaml │ │ │ │ │ ├── mesos-master.yaml │ │ │ │ │ ├── prep-mesos.yaml │ │ │ │ │ ├── update-hosts.yaml │ │ │ │ │ └── update-ubuntu.yaml │ │ │ ├── f5-bigip-ctlr.json │ │ │ └── f5-hello-world-app.json │ │ ├── module1 │ │ │ ├── images │ │ │ │ ├── Mesos_Architecture.png │ │ │ │ └── mesos-framework-example.png │ │ │ ├── lab1.rst │ │ │ └── module1.rst │ │ └── module2 │ │ │ ├── images │ │ │ ├── F5-container-connector-overview-f5-solution-architecture.png │ │ │ ├── f5-container-connector-access-BIGIP-VS.png │ │ │ ├── f5-container-connector-access-application-instance.png │ │ │ ├── f5-container-connector-bigip-partition-setup.png │ │ │ ├── f5-container-connector-check-app-on-BIG-IP-Pool_members.png │ │ │ ├── f5-container-connector-check-app-on-BIG-IP-VS.png │ │ │ ├── f5-container-connector-check-application-instance.png │ │ │ ├── f5-container-connector-check-application-running.png │ │ │ ├── f5-container-connector-check-logs-bigip-ctlr.png │ │ │ ├── f5-container-connector-clickF5folder.png │ │ │ ├── f5-container-connector-create-application-button.png │ │ │ ├── f5-container-connector-create-f5-cc.png │ │ │ ├── f5-container-connector-f5-folder-shown.png │ │ │ ├── f5-container-connector-get-bigip-ctlr-container-id.png │ │ │ ├── f5-container-connector-json-mode.png │ │ │ ├── f5-container-connector-locate-bigip-controller.png │ │ │ ├── f5-container-connector-logs.png │ │ │ ├── f5-container-connector-scale-application-BIGIP-10-done.png │ │ │ ├── f5-container-connector-scale-application-UI-10-done.png │ │ │ └── f5-container-connector-scale-application-UI.png │ │ │ ├── lab1.rst │ │ │ ├── lab2.rst │ │ │ └── module2.rst │ ├── appendix8 │ │ ├── appendix8.rst │ │ └── images │ │ │ ├── calicopods.png │ │ │ ├── caligetnodes.png │ │ │ ├── enablebgp.png │ │ │ ├── getpods.png │ │ │ ├── newclusterdeployment.png │ │ │ ├── noflannelpods.png │ │ │ ├── routes.png │ │ │ ├── sshtokubemaster1.png │ │ │ ├── start-term.png │ │ │ └── updatecidr.png │ └── appendix9 │ │ ├── appendix9.rst │ │ ├── images │ │ └── start-term.png │ │ └── lab1.rst ├── class1 │ ├── class1.rst │ ├── images │ │ ├── TMUI.png │ │ ├── TMUILicense.png │ │ ├── TMUILogin.png │ │ ├── UDFJoinClass.png │ │ ├── WEBSHELL.png │ │ ├── WEBSHELLroot.png │ │ ├── account-activated.png │ │ ├── activate-account.png │ │ ├── cafe-example-com-cofee.png │ │ ├── cafe-example-com-tea.png │ │ ├── confirm-as3-installed.png │ │ ├── create-account.png │ │ ├── create-bigip1.png │ │ ├── create-fl-vxlan-profile.png │ │ ├── create-fl-vxlan-selfip.png │ │ ├── create-fl-vxlan-tunnel.png │ │ ├── email-invite.png │ │ ├── f5-check-partition.png │ │ ├── f5-cis-describe-clusterip-service2.png │ │ ├── f5-cis-describe-clusterip2-service.png │ │ ├── f5-container-connector-access-app.png │ │ ├── f5-container-connector-bigip-clusterrolebinding.png │ │ ├── f5-container-connector-bigip-partition-setup.png │ │ ├── f5-container-connector-bigip-secret.png │ │ ├── f5-container-connector-bigip-serviceaccount.png │ │ ├── f5-container-connector-check-app-bigip-stats-as3.png │ │ ├── f5-container-connector-check-app-bigip-stats-cluster-as3.png │ │ ├── f5-container-connector-check-app-bigip-stats-ingress-clusterip.png │ │ ├── f5-container-connector-check-app-bigipconfig-as3.png │ │ ├── f5-container-connector-check-app-definition-configmap.png │ │ ├── f5-container-connector-check-app-definition-ingress.png │ │ ├── f5-container-connector-check-app-ingress-pool.png │ │ ├── f5-container-connector-check-app-ingress-pool2.png │ │ ├── f5-container-connector-check-app-ingress-stats.png │ │ ├── f5-container-connector-check-app-ingress.png │ │ ├── f5-container-connector-check-app-ingress2.png │ │ ├── f5-container-connector-check-app-pool-as3.png │ │ ├── f5-container-connector-check-app-pool-cluster-as3.png │ │ ├── f5-container-connector-check-logs-controller-container.png │ │ ├── f5-container-connector-check-logs-kubectl.png │ │ ├── f5-container-connector-check-logs-kubectl2.png │ │ ├── f5-container-connector-find-dockerID--controller-container.png │ │ ├── f5-container-connector-launch-app-clusterip.png │ │ ├── f5-container-connector-launch-app-ingress2.png │ │ ├── f5-container-connector-launch-configmap-app.png │ │ ├── f5-container-connector-launch-deployment-controller.png │ │ ├── f5-container-connector-launch-deployment-controller2.png │ │ ├── f5-container-connector-launch-ingress-app.png │ │ ├── f5-container-connector-locate-controller-container.png │ │ ├── f5-container-connector-locate-controller-container2.png │ │ ├── f5-hello-world-pods-clusterip.png │ │ ├── f5-hello-world-pods-scale10.png │ │ ├── f5-hello-world-pods.png │ │ ├── f5-hello-world-pods2.png │ │ ├── f5-hello-world-pods3.png │ │ ├── f5-hello-world-pool-scale10-as3-clusterip.png │ │ ├── f5-hello-world-pool-scale10-as3.png │ │ ├── ffhelloworld.png │ │ ├── get-fl-tunnel-mac-addr.png │ │ ├── gitrepo.png │ │ ├── hello-world-svc.png │ │ ├── ingress-link-pool.png │ │ ├── ingress-link-vs.png │ │ ├── ingresslink-architecture-diagram.png │ │ ├── k8s-ingresslink.png │ │ ├── kube-describe-node.png │ │ ├── kube-get-nodes.png │ │ ├── launch-course.png │ │ ├── mfa-setup.png │ │ ├── nginx-access-app.png │ │ ├── nginx-cis-web_pool.png │ │ ├── nginx-deployment.png │ │ ├── nginx-ingress-endpoint.png │ │ ├── nginx-ingress-launch-app.png │ │ ├── nginx-ingresslink-svc.png │ │ ├── nginx-nodeport.png │ │ ├── nginx-pod-ip.png │ │ ├── nginx-service.png │ │ ├── sshtokubemaster1.png │ │ ├── start-term.png │ │ ├── udf-login.png │ │ └── udffirefox.png │ ├── kubernetes │ │ ├── bigip-node.yaml │ │ ├── cafe-example │ │ │ ├── cafe-ingress.yaml │ │ │ ├── cafe-secret.yaml │ │ │ └── cafe.yaml │ │ ├── calico │ │ │ ├── calicoctl.cfg │ │ │ ├── caliconf.yaml │ │ │ └── calipeer.yaml │ │ ├── cis-configmap.yaml │ │ ├── cis-service.yaml │ │ ├── cluster-deployment.yaml │ │ ├── clusterip-service-hello-world.yaml │ │ ├── configmap-hello-world.yaml │ │ ├── delete-hello-world.yaml │ │ ├── deployment-hello-world.yaml │ │ ├── ingress-hello-world.yaml │ │ ├── ingresslink │ │ │ ├── Proxy_Protocol_iRule │ │ │ ├── ingresslink-customresourcedefinition.yaml │ │ │ ├── ingresslink-deployment.yaml │ │ │ ├── nginx-config.yaml │ │ │ ├── nginx-service.yaml │ │ │ └── vs-ingresslink.yaml │ │ ├── lab-scripts │ │ │ ├── lab1.1-create │ │ │ ├── lab1.1-delete │ │ │ ├── lab1.2-create │ │ │ ├── lab1.2-delete │ │ │ ├── lab1.3-create │ │ │ ├── lab1.3-delete │ │ │ ├── lab2.1-create │ │ │ ├── lab2.1-delete │ │ │ ├── lab2.2-create │ │ │ ├── lab2.2-delete │ │ │ ├── lab2.3-create │ │ │ ├── lab2.3-delete │ │ │ ├── lab3.1-create │ │ │ ├── lab3.1-delete │ │ │ ├── lab3.2-create │ │ │ ├── lab3.2-delete │ │ │ ├── lab4.1-create │ │ │ ├── lab4.1-delete │ │ │ ├── lab4.2-create │ │ │ └── lab4.2-delete │ │ ├── nginx-ingress-hello-world.yaml │ │ ├── nodeport-deployment.yaml │ │ └── nodeport-service-hello-world.yaml │ ├── module1 │ │ ├── lab1.rst │ │ ├── lab2.rst │ │ ├── lab3.rst │ │ └── module1.rst │ ├── module2 │ │ ├── lab1.rst │ │ ├── lab2.rst │ │ ├── lab3.rst │ │ └── module2.rst │ ├── module3 │ │ ├── lab1.rst │ │ ├── lab2.rst │ │ └── module3.rst │ └── module4 │ │ ├── lab1.rst │ │ ├── lab2.rst │ │ └── module4.rst ├── class2 │ ├── class2.rst │ ├── images │ │ ├── F5-CTRL-RUNNING.png │ │ ├── F5-OC-HOSTSUBNET1.png │ │ ├── F5-OC-HOSTSUBNET2.png │ │ ├── F5-OS-NODE.png │ │ ├── OC-DEMOuser-Login.png │ │ ├── OKDWEBSHELL.png │ │ ├── OKDWEBSHELLroot.png │ │ ├── confirm-as3-installed.png │ │ ├── create-okd-vxlan-profile.png │ │ ├── create-okd-vxlan-selfip.png │ │ ├── create-okd-vxlan-tunnel.png │ │ ├── f5-check-ltm-policy-route.png │ │ ├── f5-check-partition.png │ │ ├── f5-cis-describe-clusterip-route-service.png │ │ ├── f5-container-connector-access-app.png │ │ ├── f5-container-connector-access-app2.png │ │ ├── f5-container-connector-bigip-clusterrolebinding.png │ │ ├── f5-container-connector-bigip-partition-setup.png │ │ ├── f5-container-connector-bigip-secret.png │ │ ├── f5-container-connector-bigip-serviceaccount.png │ │ ├── f5-container-connector-check-app-bigipconfig-as3.png │ │ ├── f5-container-connector-check-app-definition-route.png │ │ ├── f5-container-connector-check-app-route-bigipconfig.png │ │ ├── f5-container-connector-check-app-route-pool-clusterip.png │ │ ├── f5-container-connector-check-app-route-pool.png │ │ ├── f5-container-connector-check-app-web-pool-as3.png │ │ ├── f5-container-connector-check-app-web-pool.png │ │ ├── f5-container-connector-check-logs-controller-container.png │ │ ├── f5-container-connector-check-logs-kubectl.png │ │ ├── f5-container-connector-check-logs-kubectl2.png │ │ ├── f5-container-connector-find-dockerID--controller-container.png │ │ ├── f5-container-connector-launch-app-clusterip-route.png │ │ ├── f5-container-connector-launch-app-route.png │ │ ├── f5-container-connector-launch-app.png │ │ ├── f5-container-connector-launch-deployment-controller.png │ │ ├── f5-container-connector-launch-node-deployment-controller.png │ │ ├── f5-container-connector-locate-node-controller-container.png │ │ ├── f5-hello-world-cluster-route-pods.png │ │ ├── f5-hello-world-pods-configmap.png │ │ ├── f5-hello-world-pods-route.png │ │ ├── f5-hello-world-pods-scale10-2.png │ │ ├── f5-hello-world-pods-scale10.png │ │ ├── f5-hello-world-pool-scale10-clusterip.png │ │ ├── f5-hello-world-pool-scale10-node-as3.png │ │ ├── f5-okd-check-app-bigip-stats-as3.png │ │ ├── f5-okd-check-app-bigip-stats-clusterip.png │ │ ├── f5-okd-check-app-definition-node.png │ │ ├── f5-okd-check-app-definition.png │ │ ├── f5-okd-hello-world-pods.png │ │ ├── f5-okd-launch-configmap-app.png │ │ ├── oc-describe-node.png │ │ ├── oc-get-nodes.png │ │ ├── oc-get-projects.png │ │ ├── oc-status.png │ │ ├── start-term.png │ │ ├── udf-access-bigip-tmui.png │ │ ├── udf-access-ocp-provisioner.png │ │ ├── udf-bigip-loginscreen.png │ │ ├── udf-ocp-partition.png │ │ └── udf-step8-webpage.png │ ├── module1 │ │ ├── lab1.rst │ │ ├── lab2.rst │ │ ├── lab3.rst │ │ └── module1.rst │ ├── module2 │ │ ├── lab1.rst │ │ ├── lab2.rst │ │ ├── lab3.rst │ │ └── module2.rst │ └── openshift │ │ ├── bigip-hostsubnet.yaml │ │ ├── cluster-deployment.yaml │ │ ├── clusterip-service-hello-world.yaml │ │ ├── configmap-hello-world.yaml │ │ ├── delete-hello-world.yaml │ │ ├── deployment-hello-world.yaml │ │ ├── lab1.1-create │ │ ├── lab1.1-delete │ │ ├── lab1.2-create │ │ ├── lab1.2-delete │ │ ├── lab1.3-create │ │ ├── lab1.3-delete │ │ ├── lab2.1-create │ │ ├── lab2.1-delete │ │ ├── lab2.2-create │ │ ├── lab2.2-delete │ │ ├── lab2.3-create │ │ ├── lab2.3-delete │ │ ├── nodeport-deployment.yaml │ │ ├── nodeport-service-hello-world.yaml │ │ └── route-hello-world.yaml ├── conf.py ├── index.rst ├── intro.rst ├── make.bat └── preamble.tex ├── get_udf_aws_keys.sh ├── requirements.txt ├── scripts ├── convertdocx.sh ├── server └── server-dependencies ├── terraform ├── OLD │ ├── bigip │ │ ├── bigip.tf │ │ ├── cloudinit_data.tpl │ │ ├── do_data.tpl │ │ └── variables.tf │ ├── kubernetes │ │ ├── ansible │ │ │ ├── ansible.cfg │ │ │ └── playbooks │ │ │ │ ├── deploy-kube.yaml │ │ │ │ ├── install-docker.yaml │ │ │ │ ├── kube-master.yaml │ │ │ │ ├── kube-node.yaml │ │ │ │ ├── prep-kube.yaml │ │ │ │ ├── update-hosts.yaml │ │ │ │ └── update-ubuntu.yaml │ │ ├── kube.tf │ │ └── variables.tf │ ├── main.tf │ ├── openshift │ │ ├── ansible │ │ │ ├── ansible.cfg │ │ │ └── playbooks │ │ │ │ ├── deploy-okd.yaml │ │ │ │ ├── prep-all.yaml │ │ │ │ ├── prep-master.yaml │ │ │ │ ├── update-centos.yaml │ │ │ │ └── update-hosts.yaml │ │ ├── okd.tf │ │ └── variables.tf │ ├── outputs.tf │ ├── terraform.tfvars │ ├── variables.tf │ └── versions.tf ├── main.tf ├── okd │ ├── ansible │ │ ├── ansible.cfg │ │ └── playbooks │ │ │ ├── prep-all.yaml │ │ │ ├── prep-fcos.yaml │ │ │ ├── prep-master.yaml │ │ │ └── update-hosts.yaml │ ├── ignition │ │ ├── cluster-dns-02-config.yml │ │ ├── cluster-ingress-default-ingresscontroller.yaml │ │ └── install-config.yaml │ ├── okd.tf │ └── variables.tf ├── outputs.tf ├── scripts │ ├── deploy_okd.sh │ ├── get_aws_creds.sh │ ├── get_okd_masterigncert.sh │ ├── get_okd_masterignloc.sh │ ├── get_okd_name.sh │ ├── get_okd_workerigncert.sh │ ├── get_okd_workerignloc.sh │ └── update_hosts.sh ├── terraform.tfvars ├── variables.tf └── versions.tf └── wordlist /.github/workflows/build-the-docs.yml: -------------------------------------------------------------------------------- 1 | name: Build the Docs 2 | on: push 3 | 4 | jobs: 5 | deploy: 6 | runs-on: ubuntu-latest 7 | env: 8 | S3_DIR: containers 9 | 10 | steps: 11 | - uses: actions/checkout@v2 12 | 13 | - run: ./containthedocs-build.sh 14 | 15 | - name: Configure AWS credentials 16 | uses: aws-actions/configure-aws-credentials@v1 17 | with: 18 | aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} 19 | aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} 20 | aws-region: us-east-1 21 | 22 | - name: Copy files to s3 (Staging Clouddocs) 23 | # Develop branch only 24 | if: github.ref == 'refs/heads/develop' 25 | run: | 26 | aws s3 sync --delete $PWD/docs/_build/html/ s3://clouddocs.f5networks.net/training/community/$S3_DIR/html/ 27 | - name: Copy files to s3 (Production Clouddocs) 28 | # Master branch only 29 | if: github.ref == 'refs/heads/master' 30 | run: | 31 | aws s3 sync --delete $PWD/docs/_build/html/ s3://clouddocs.f5.com/training/community/$S3_DIR/html/ 32 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | docs/_build/* 2 | media/ 3 | .DS_Store 4 | pdf/* 5 | .vscode 6 | *.sublime-* 7 | .terraform* 8 | terraform.tfstate* 9 | *.rpm 10 | *.swp 11 | terraform/ignition/* 12 | cloudAccounts.json 13 | install_OKD 14 | -------------------------------------------------------------------------------- /.pre-commit-config.yaml: -------------------------------------------------------------------------------- 1 | # See https://pre-commit.com for more information 2 | # See https://pre-commit.com/hooks.html for more hooks 3 | repos: 4 | - repo: https://github.com/pre-commit/pre-commit-hooks 5 | rev: v3.4.0 6 | hooks: 7 | - id: check-yaml 8 | args: [--allow-multiple-documents] 9 | - id: check-added-large-files 10 | - id: detect-private-key 11 | - id: end-of-file-fixer 12 | - id: requirements-txt-fixer 13 | - id: trailing-whitespace 14 | - repo: https://github.com/python/black 15 | rev: 21.5b1 16 | hooks: 17 | - id: black 18 | description: python code formatter 19 | - repo: https://github.com/pycqa/flake8 20 | rev: 3.9.2 21 | hooks: 22 | - id: flake8 23 | description: enforcing style consistency across Python projects 24 | entry: flake8 --max-line-length 128 --max-doc-length 256 --ignore E501 25 | - repo: https://github.com/pycqa/doc8 26 | rev: 0.9.0a1 27 | hooks: 28 | - id: doc8 29 | description: linting for rst files 30 | entry: doc8 --ignore-path docs/_build/ -e rst docs/ 31 | require_serial: true 32 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | Copyright (c) 2015, F5 Networks, Inc. 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 4 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 5 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 6 | -------------------------------------------------------------------------------- /README.rst: -------------------------------------------------------------------------------- 1 | Welcome to the F5 Agility Container Lab Documentation! 2 | ====================================================== 3 | 4 | The purpose of these labs is to give you better understanding of... 5 | 6 | - Kubernetes with F5 Container Ingress Service (CIS) 7 | - Introduction to Kubernetes 8 | - How to install and configure F5 CIS 9 | - How to launch a simple web server using NodePort & ClusterIP mode 10 | 11 | - OpenShift with F5 Container Ingress Service (CIS) 12 | - Introduction to OpenShift 13 | - How to install and configure F5 CIS 14 | - How to launch a simple web server using NodePort & ClusterIP mode 15 | 16 | .. attention:: 17 | 18 | * The lab guide is hosted here: 19 | https://clouddocs.f5.com/training/community/containers/html/ 20 | 21 | * The lab is based on UDF blueprint 22 | ``Containers - Kubernetes & OpenShift Integration with BIG-IP`` 23 | -------------------------------------------------------------------------------- /buildhtml.bat: -------------------------------------------------------------------------------- 1 | docker run --rm -it -v %cd%:/data -w /data f5devcentral/containthedocs:latest make -C docs html 2 | -------------------------------------------------------------------------------- /config.template: -------------------------------------------------------------------------------- 1 | [default] 2 | aws_secret_access_key = $AWS_SECRET_ACCESS_KEY 3 | aws_access_key_id = $AWS_ACCESS_KEY_ID 4 | region = us-west-1 5 | output = json 6 | -------------------------------------------------------------------------------- /containthedocs-bash.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -x 4 | 5 | COMMAND="/bin/bash" 6 | 7 | . ./containthedocs-image 8 | 9 | exec sudo docker run --rm -it \ 10 | -v "$PWD":"$PWD" --workdir "$PWD" \ 11 | ${DOCKER_RUN_ARGS} \ 12 | -e "LOCAL_USER_ID=$(id -u)" \ 13 | ${DOC_IMG} ${COMMAND} 14 | -------------------------------------------------------------------------------- /containthedocs-build.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -x 4 | 5 | COMMAND=(/bin/bash -c "sudo pip install -r requirements.txt -U ; make -C docs clean html") 6 | 7 | . ./containthedocs-image 8 | 9 | exec docker run --rm -t \ 10 | -v "$PWD":"$PWD" --workdir "$PWD" \ 11 | ${DOCKER_RUN_ARGS} \ 12 | -e "LOCAL_USER_ID=$(id -u)" \ 13 | ${DOC_IMG} "${COMMAND[@]}" 14 | -------------------------------------------------------------------------------- /containthedocs-clean.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -x 4 | 5 | COMMAND="make -C docs clean" 6 | 7 | . ./containthedocs-image 8 | 9 | exec docker run --rm -it \ 10 | -v "$PWD":"$PWD" --workdir "$PWD" \ 11 | ${DOCKER_RUN_ARGS} \ 12 | -e "LOCAL_USER_ID=$(id -u)" \ 13 | ${DOC_IMG} ${COMMAND} 14 | -------------------------------------------------------------------------------- /containthedocs-cleanbuild.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -x 4 | 5 | COMMAND="make -C docs clean html" 6 | 7 | . ./containthedocs-image 8 | 9 | exec docker run --rm -it \ 10 | -v "$PWD":"$PWD" --workdir "$PWD" \ 11 | ${DOCKER_RUN_ARGS} \ 12 | -e "LOCAL_USER_ID=$(id -u)" \ 13 | ${DOC_IMG} ${COMMAND} 14 | -------------------------------------------------------------------------------- /containthedocs-convert.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -x 4 | 5 | if [ "$#" -ne 1 ]; then 6 | echo "Usage $0 " 7 | exit 1 8 | fi 9 | 10 | COMMAND="scripts/convertdocx.sh $1" 11 | 12 | . ./containthedocs-image 13 | 14 | exec docker run --rm -it \ 15 | -v "$PWD":"$PWD" --workdir "$PWD" \ 16 | ${DOCKER_RUN_ARGS} \ 17 | -e "LOCAL_USER_ID=$(id -u)" \ 18 | ${DOC_IMG} ${COMMAND} 19 | -------------------------------------------------------------------------------- /containthedocs-image: -------------------------------------------------------------------------------- 1 | : ${DOC_IMG:=f5devcentral/containthedocs:latest} 2 | -------------------------------------------------------------------------------- /containthedocs-singlehtml.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -x 4 | 5 | COMMAND="make -C docs singlehtml" 6 | 7 | . ./containthedocs-image 8 | 9 | exec docker run --rm -it \ 10 | -v "$PWD":"$PWD" --workdir "$PWD" \ 11 | ${DOCKER_RUN_ARGS} \ 12 | -e "LOCAL_USER_ID=$(id -u)" \ 13 | ${DOC_IMG} ${COMMAND} 14 | -------------------------------------------------------------------------------- /containthedocs-spelling.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -x 4 | 5 | COMMAND="make -C docs spelling" 6 | 7 | . ./containthedocs-image 8 | 9 | exec docker run --rm -it \ 10 | -v "$PWD":"$PWD" --workdir "$PWD" \ 11 | ${DOCKER_RUN_ARGS} \ 12 | -e "LOCAL_USER_ID=$(id -u)" \ 13 | ${DOC_IMG} ${COMMAND} 14 | -------------------------------------------------------------------------------- /containthedocs-wget: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -x 4 | 5 | . ../../containthedocs-image 6 | 7 | exec docker run --rm -it \ 8 | -v "$PWD":"$PWD" --workdir "$PWD" \ 9 | ${DOCKER_RUN_ARGS} \ 10 | -e "LOCAL_USER_ID=$(id -u)" \ 11 | ${DOC_IMG} wget -x -nH $1 12 | -------------------------------------------------------------------------------- /docs/Makefile: -------------------------------------------------------------------------------- 1 | # Minimal makefile for Sphinx documentation 2 | # 3 | 4 | # You can set these variables from the command line. 5 | SPHINXOPTS = 6 | SPHINXBUILD = sphinx-build 7 | SPHINXPROJ = F5AgilityLabs 8 | SOURCEDIR = . 9 | BUILDDIR = _build 10 | 11 | # Put it first so that "make" without argument is like "make help". 12 | help: 13 | @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) 14 | 15 | .PHONY: help Makefile 16 | 17 | # Catch-all target: route all unknown targets to Sphinx using the new 18 | # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). 19 | %: Makefile 20 | @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) 21 | -------------------------------------------------------------------------------- /docs/_static/css/custom.css: -------------------------------------------------------------------------------- 1 | img { 2 | margin-bottom: 12px; 3 | } 4 | 5 | table { 6 | margin-bottom: 12px; 7 | } 8 | 9 | .section ol.loweralpha > li { 10 | list-style: lower-alpha; 11 | padding-bottom: 5px; 12 | } 13 | 14 | .section ol.upperalpha > li { 15 | list-style: upper-alpha; 16 | padding-bottom: 5px; 17 | } 18 | 19 | .section ol.arabic > li { 20 | list-style: decimal; 21 | padding-bottom: 5px; 22 | } 23 | 24 | .section ol.lowerroman > li { 25 | list-style: lower-roman; 26 | padding-bottom: 5px; 27 | } 28 | 29 | .section ol.upperroman > li { 30 | list-style: upper-roman; 31 | padding-bottom: 5px; 32 | } 33 | 34 | .align-center { 35 | display: block; 36 | margin-left: auto; 37 | margin-right: auto; 38 | } 39 | 40 | .align-right { 41 | display: block; 42 | margin-left: auto; 43 | margin-right: 0; 44 | } 45 | 46 | .red { 47 | color: rgb(192, 0, 0); 48 | } 49 | 50 | .bred { 51 | color: rgb(192, 0, 0); 52 | font-weight: bold; 53 | } 54 | 55 | ul { 56 | padding-left: 20px; 57 | padding-top: 5px; 58 | padding-bottom: 5px; 59 | } 60 | 61 | ul.simple { 62 | padding-left: 20px; 63 | padding-top: 5px; 64 | padding-bottom: 5px; 65 | } 66 | -------------------------------------------------------------------------------- /docs/_static/intro/AG-2021-light.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/_static/intro/AG-2021-light.jpg -------------------------------------------------------------------------------- /docs/_static/intro/UDFDocumentationTab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/_static/intro/UDFDocumentationTab.png -------------------------------------------------------------------------------- /docs/_static/intro/UDFJoinClass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/_static/intro/UDFJoinClass.png -------------------------------------------------------------------------------- /docs/_static/intro/account-activated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/_static/intro/account-activated.png -------------------------------------------------------------------------------- /docs/_static/intro/activate-account.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/_static/intro/activate-account.png -------------------------------------------------------------------------------- /docs/_static/intro/create-account.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/_static/intro/create-account.png -------------------------------------------------------------------------------- /docs/_static/intro/email-invite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/_static/intro/email-invite.png -------------------------------------------------------------------------------- /docs/_static/intro/jumpbox-start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/_static/intro/jumpbox-start.png -------------------------------------------------------------------------------- /docs/_static/intro/launch-course.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/_static/intro/launch-course.png -------------------------------------------------------------------------------- /docs/_static/intro/mfa-setup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/_static/intro/mfa-setup.png -------------------------------------------------------------------------------- /docs/_static/intro/udf-login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/_static/intro/udf-login.png -------------------------------------------------------------------------------- /docs/_static/intro/udf-start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/_static/intro/udf-start.png -------------------------------------------------------------------------------- /docs/_templates/breadcrumb.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | {%- if master_doc == pagename %} 4 | F5 Community Training & Labs 5 | {%- else %} 6 | {{ project|striptags|e }} 7 | {%- endif %} 8 | {%- if parents|length > 0 %} 9 | {%- for parent in parents %} 10 | > {{ parents[loop.index0].title|striptags|e }} 11 | {%- endfor %} 12 | {%- endif %} 13 | 14 | 15 | {%- if show_source and has_source and sourcename %} 16 | Source | 17 | {%- endif %} 18 | {%- if github_url is defined %} 19 | Edit on 20 | {%- endif %} 21 | 22 |
23 | 24 | -------------------------------------------------------------------------------- /docs/appendix/appendix.rst: -------------------------------------------------------------------------------- 1 | Appendix 2 | ======== 3 | 4 | This appendix includes several old but valid information/documentation from 5 | Agility 2018. 6 | 7 | .. toctree:: 8 | :maxdepth: 1 9 | :caption: Contents: 10 | :glob: 11 | 12 | appendix*/appendix* 13 | -------------------------------------------------------------------------------- /docs/appendix/appendix1/appendix1.rst: -------------------------------------------------------------------------------- 1 | Appendix 1: Introduction to Docker 2 | ================================== 3 | 4 | This introductory class covers the following topics: 5 | 6 | .. toctree:: 7 | :maxdepth: 1 8 | :glob: 9 | 10 | module*/module* 11 | 12 | Expected time to complete: **15 minutes** 13 | 14 | Lab Setup 15 | --------- 16 | 17 | We will leverage the kubernetes VM's to configure the Docker environment. 18 | 19 | .. list-table:: 20 | :header-rows: 1 21 | 22 | * - **Hostname** 23 | - **IP-ADDR** 24 | - **Credentials** 25 | * - jumpbox 26 | - 10.1.1.250 27 | - user/Student!Agility! 28 | * - bigip1 29 | - 10.1.1.245 30 | 31 | 10.1.10.60 32 | 33 | - admin/admin 34 | 35 | root/default 36 | * - kube-master1 37 | - 10.1.10.21 38 | - ubuntu/ubuntu 39 | 40 | root/default 41 | * - kube-node1 42 | - 10.1.10.22 43 | - ubuntu/ubuntu 44 | 45 | root/default 46 | * - kube-node2 47 | - 10.1.10.23 48 | - ubuntu/ubuntu 49 | 50 | root/default 51 | -------------------------------------------------------------------------------- /docs/appendix/appendix1/module1/images/MremoteNG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix1/module1/images/MremoteNG.png -------------------------------------------------------------------------------- /docs/appendix/appendix1/module1/images/docker-hello-world-yes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix1/module1/images/docker-hello-world-yes.png -------------------------------------------------------------------------------- /docs/appendix/appendix1/module1/images/docker-ps-myapache.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix1/module1/images/docker-ps-myapache.png -------------------------------------------------------------------------------- /docs/appendix/appendix1/module1/images/myapache.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix1/module1/images/myapache.png -------------------------------------------------------------------------------- /docs/appendix/appendix1/module1/images/rootuser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix1/module1/images/rootuser.png -------------------------------------------------------------------------------- /docs/appendix/appendix2/appendix2.rst: -------------------------------------------------------------------------------- 1 | Appendix 2: Build a Kubernetes Cluster 2 | ====================================== 3 | 4 | .. attention:: **THE CLASS BLUEPRINT IS PRE-CONFIGURED WITH A WORKING CLUSTER. 5 | THIS APPENDIX IS FOR DOCUMENTION PURPOSES ONLY.** 6 | 7 | In this module, we will build a 3 node cluster (1x master and 2x nodes) 8 | utilizing Ubuntu server images. 9 | 10 | As a reminder, in this module, our cluster setup is: 11 | 12 | .. list-table:: 13 | :header-rows: 1 14 | 15 | * - **Hostname** 16 | - **IP-ADDR** 17 | - **Role** 18 | * - kube-master1 19 | - 10.1.1.7 20 | - Master 21 | * - kube-node1 22 | - 10.1.1.8 23 | - Node 24 | * - kube-node2 25 | - 10.1.1.9 26 | - Node 27 | 28 | .. toctree:: 29 | :maxdepth: 1 30 | :glob: 31 | 32 | lab* 33 | -------------------------------------------------------------------------------- /docs/appendix/appendix2/images/MremoteNG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix2/images/MremoteNG.png -------------------------------------------------------------------------------- /docs/appendix/appendix2/images/cluster-setup-guide-access-ui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix2/images/cluster-setup-guide-access-ui.png -------------------------------------------------------------------------------- /docs/appendix/appendix2/images/cluster-setup-guide-check-port-ui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix2/images/cluster-setup-guide-check-port-ui.png -------------------------------------------------------------------------------- /docs/appendix/appendix2/images/cluster-setup-guide-kubeadm-init-master.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix2/images/cluster-setup-guide-kubeadm-init-master.png -------------------------------------------------------------------------------- /docs/appendix/appendix2/images/cluster-setup-guide-kubeadmin-init-check-cluster-get-pods.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix2/images/cluster-setup-guide-kubeadmin-init-check-cluster-get-pods.png -------------------------------------------------------------------------------- /docs/appendix/appendix2/images/cluster-setup-guide-kubeadmin-init-check-cluster-info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix2/images/cluster-setup-guide-kubeadmin-init-check-cluster-info.png -------------------------------------------------------------------------------- /docs/appendix/appendix2/images/cluster-setup-guide-kubeadmin-init-check-cluster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix2/images/cluster-setup-guide-kubeadmin-init-check-cluster.png -------------------------------------------------------------------------------- /docs/appendix/appendix2/images/cluster-setup-guide-kubeadmin-init-check.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix2/images/cluster-setup-guide-kubeadmin-init-check.png -------------------------------------------------------------------------------- /docs/appendix/appendix2/images/cluster-setup-guide-node-setup-check-nodes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix2/images/cluster-setup-guide-node-setup-check-nodes.png -------------------------------------------------------------------------------- /docs/appendix/appendix2/images/cluster-setup-guide-node-setup-check-services.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix2/images/cluster-setup-guide-node-setup-check-services.png -------------------------------------------------------------------------------- /docs/appendix/appendix2/images/cluster-setup-guide-node-setup-join-master.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix2/images/cluster-setup-guide-node-setup-join-master.png -------------------------------------------------------------------------------- /docs/appendix/appendix2/images/disable-swap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix2/images/disable-swap.png -------------------------------------------------------------------------------- /docs/appendix/appendix2/images/goodEOL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix2/images/goodEOL.png -------------------------------------------------------------------------------- /docs/appendix/appendix2/images/rootuser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix2/images/rootuser.png -------------------------------------------------------------------------------- /docs/appendix/appendix2/images/top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix2/images/top.png -------------------------------------------------------------------------------- /docs/appendix/appendix2/images/ubuntu-hosts-file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix2/images/ubuntu-hosts-file.png -------------------------------------------------------------------------------- /docs/appendix/appendix3/appendix3.rst: -------------------------------------------------------------------------------- 1 | Appendix 3: Build an Openshift v3 Cluster 2 | ========================================= 3 | 4 | .. attention:: **THE CLASS BLUEPRINT IS PRE-CONFIGURED WITH A WORKING CLUSTER. 5 | THIS APPENDIX IS FOR DOCUMENTION PURPOSES ONLY.** 6 | 7 | .. important:: These instructions are for OKD 3.11. 8 | 9 | In this module, we will build a 3 node cluster (1x master and 2x nodes) 10 | utilizing CentOS server images. 11 | 12 | As a reminder, in this module, our cluster setup is: 13 | 14 | .. list-table:: 15 | :header-rows: 1 16 | 17 | * - **Hostname** 18 | - **IP-ADDR** 19 | - **Role** 20 | * - okd-master1 21 | - 10.1.1.10 22 | - Master 23 | * - okd-node1 24 | - 10.1.1.11 25 | - Node 26 | * - okd-node2 27 | - 10.1.1.12 28 | - Node 29 | 30 | .. toctree:: 31 | :maxdepth: 1 32 | :glob: 33 | 34 | lab* 35 | -------------------------------------------------------------------------------- /docs/appendix/appendix3/images/MremoteNG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix3/images/MremoteNG.png -------------------------------------------------------------------------------- /docs/appendix/appendix3/images/centos-hosts-file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix3/images/centos-hosts-file.png -------------------------------------------------------------------------------- /docs/appendix/appendix3/images/setup-test-docker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix3/images/setup-test-docker.png -------------------------------------------------------------------------------- /docs/appendix/appendix4/appendix4.rst: -------------------------------------------------------------------------------- 1 | Appendix 4: Advanced OpenShift Topics 2 | ===================================== 3 | 4 | The purpose of this lab is to give you more visibility on 5 | 6 | .. toctree:: 7 | :maxdepth: 1 8 | :glob: 9 | 10 | module*/module* 11 | 12 | Expected time to complete: **3 hours** 13 | 14 | Lab Setup 15 | --------- 16 | 17 | In the environment, there is a three-node OpenShift cluster with one master 18 | and two nodes. There is a pair of BIG-IPs setup in an HA configuration: 19 | 20 | .. list-table:: 21 | :header-rows: 1 22 | 23 | * - **Hostname** 24 | - **IP-ADDR** 25 | - **Credentials** 26 | * - jumpbox 27 | - 10.1.1.250 28 | - user/Student!Agility! 29 | * - bigip1 30 | - 10.1.1.245 31 | 32 | 10.3.10.60 33 | 34 | - admin/admin 35 | 36 | root/default 37 | * - bigip2 38 | - 10.1.1.246 39 | 40 | 10.3.10.61 41 | 42 | - admin/admin 43 | 44 | root/default 45 | * - ose-master1 46 | - 10.3.10.21 47 | - centos/centos 48 | 49 | root/default 50 | * - ose-node1 51 | - 10.3.10.22 52 | - centos/centos 53 | 54 | root/default 55 | * - ose-node2 56 | - 10.3.10.23 57 | - centos/centos 58 | 59 | root/default 60 | -------------------------------------------------------------------------------- /docs/appendix/appendix4/module1/images/10-containers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix4/module1/images/10-containers.png -------------------------------------------------------------------------------- /docs/appendix/appendix4/module1/images/bigip01-tunnel-ip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix4/module1/images/bigip01-tunnel-ip.png -------------------------------------------------------------------------------- /docs/appendix/appendix4/module1/images/device-group-sync.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix4/module1/images/device-group-sync.png -------------------------------------------------------------------------------- /docs/appendix/appendix4/module1/images/floating.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix4/module1/images/floating.png -------------------------------------------------------------------------------- /docs/appendix/appendix4/module1/images/ha-cluster.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix4/module1/images/ha-cluster.jpg -------------------------------------------------------------------------------- /docs/appendix/appendix4/module1/images/kube-system.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix4/module1/images/kube-system.png -------------------------------------------------------------------------------- /docs/appendix/appendix4/module1/images/license.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix4/module1/images/license.png -------------------------------------------------------------------------------- /docs/appendix/appendix4/module1/images/net-arp-entries.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix4/module1/images/net-arp-entries.png -------------------------------------------------------------------------------- /docs/appendix/appendix4/module1/images/net-fdb-entries.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix4/module1/images/net-fdb-entries.png -------------------------------------------------------------------------------- /docs/appendix/appendix4/module1/images/oc-get-deployment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix4/module1/images/oc-get-deployment.png -------------------------------------------------------------------------------- /docs/appendix/appendix4/module1/images/oc-get-hostsubnet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix4/module1/images/oc-get-hostsubnet.png -------------------------------------------------------------------------------- /docs/appendix/appendix4/module1/images/oc-get-pods.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix4/module1/images/oc-get-pods.png -------------------------------------------------------------------------------- /docs/appendix/appendix4/module1/images/partition.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix4/module1/images/partition.png -------------------------------------------------------------------------------- /docs/appendix/appendix4/module1/images/pool-members.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix4/module1/images/pool-members.png -------------------------------------------------------------------------------- /docs/appendix/appendix4/module1/images/self-ip-bigip01-ha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix4/module1/images/self-ip-bigip01-ha.png -------------------------------------------------------------------------------- /docs/appendix/appendix4/module1/images/self-ip-bigip01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix4/module1/images/self-ip-bigip01.png -------------------------------------------------------------------------------- /docs/appendix/appendix4/module1/images/self-ip-bigip02-ha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix4/module1/images/self-ip-bigip02-ha.png -------------------------------------------------------------------------------- /docs/appendix/appendix4/module1/images/self-ip-bigip02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix4/module1/images/self-ip-bigip02.png -------------------------------------------------------------------------------- /docs/appendix/appendix4/module1/images/success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix4/module1/images/success.png -------------------------------------------------------------------------------- /docs/appendix/appendix4/module1/images/synced.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix4/module1/images/synced.png -------------------------------------------------------------------------------- /docs/appendix/appendix4/module1/images/vlans.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix4/module1/images/vlans.png -------------------------------------------------------------------------------- /docs/appendix/appendix4/module2/images/bigip-blue-green-pool-stats.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix4/module2/images/bigip-blue-green-pool-stats.png -------------------------------------------------------------------------------- /docs/appendix/appendix4/module2/images/bigip01-bookmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix4/module2/images/bigip01-bookmark.png -------------------------------------------------------------------------------- /docs/appendix/appendix4/module2/images/bigip01-login-page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix4/module2/images/bigip01-login-page.png -------------------------------------------------------------------------------- /docs/appendix/appendix4/module2/images/bigip01-network-map-cfgmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix4/module2/images/bigip01-network-map-cfgmap.png -------------------------------------------------------------------------------- /docs/appendix/appendix4/module2/images/bigip01-network-map-route-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix4/module2/images/bigip01-network-map-route-bg.png -------------------------------------------------------------------------------- /docs/appendix/appendix4/module2/images/bigip01-network-map-route.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix4/module2/images/bigip01-network-map-route.png -------------------------------------------------------------------------------- /docs/appendix/appendix4/module2/images/bigip01-network-map-scaled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix4/module2/images/bigip01-network-map-scaled.png -------------------------------------------------------------------------------- /docs/appendix/appendix4/module2/images/bigip01-route-bg-pool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix4/module2/images/bigip01-route-bg-pool.png -------------------------------------------------------------------------------- /docs/appendix/appendix4/module2/images/bigip01-route-policy-list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix4/module2/images/bigip01-route-policy-list.png -------------------------------------------------------------------------------- /docs/appendix/appendix4/module2/images/bigip01-route-policy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix4/module2/images/bigip01-route-policy.png -------------------------------------------------------------------------------- /docs/appendix/appendix4/module2/images/bigip01-route-rule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix4/module2/images/bigip01-route-rule.png -------------------------------------------------------------------------------- /docs/appendix/appendix4/module2/images/bigip01-route-vs-hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix4/module2/images/bigip01-route-vs-hover.png -------------------------------------------------------------------------------- /docs/appendix/appendix4/module2/images/bigip01-vs-ip-hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix4/module2/images/bigip01-vs-ip-hover.png -------------------------------------------------------------------------------- /docs/appendix/appendix4/module2/images/f5-demo-app-bg-url.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix4/module2/images/f5-demo-app-bg-url.png -------------------------------------------------------------------------------- /docs/appendix/appendix4/module2/images/f5-demo-app-blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix4/module2/images/f5-demo-app-blue.png -------------------------------------------------------------------------------- /docs/appendix/appendix4/module2/images/f5-demo-app-green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix4/module2/images/f5-demo-app-green.png -------------------------------------------------------------------------------- /docs/appendix/appendix4/module2/images/f5-demo-app-route.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix4/module2/images/f5-demo-app-route.png -------------------------------------------------------------------------------- /docs/appendix/appendix4/module2/images/f5-demo-app-url.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix4/module2/images/f5-demo-app-url.png -------------------------------------------------------------------------------- /docs/appendix/appendix4/module2/images/oc-get-deployment1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix4/module2/images/oc-get-deployment1.png -------------------------------------------------------------------------------- /docs/appendix/appendix4/module2/images/oc-get-route.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix4/module2/images/oc-get-route.png -------------------------------------------------------------------------------- /docs/appendix/appendix4/openshift/advanced/apps/f5demo/f5demo.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: extensions/v1beta1 2 | kind: Deployment 3 | metadata: 4 | name: f5demo 5 | spec: 6 | replicas: 3 7 | template: 8 | metadata: 9 | labels: 10 | app: f5demo 11 | tier: frontend 12 | spec: 13 | containers: 14 | - name: f5demo 15 | image: kmunson1973/f5demo:1.0.0 16 | ports: 17 | - containerPort: 8080 18 | -------------------------------------------------------------------------------- /docs/appendix/appendix4/openshift/advanced/apps/f5demo/f5service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: f5demo 5 | labels: 6 | app: f5demo 7 | tier: frontend 8 | spec: 9 | # if your cluster supports it, uncomment the following to automatically create 10 | # an external load-balanced IP for the frontend service. 11 | # type: LoadBalancer 12 | ports: 13 | - port: 8080 14 | selector: 15 | app: f5demo 16 | tier: frontend 17 | -------------------------------------------------------------------------------- /docs/appendix/appendix4/openshift/advanced/apps/guestbook/frontend-deployment.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: extensions/v1beta1 2 | kind: Deployment 3 | metadata: 4 | name: frontend 5 | spec: 6 | replicas: 3 7 | template: 8 | metadata: 9 | labels: 10 | app: guestbook 11 | tier: frontend 12 | spec: 13 | containers: 14 | - name: php-redis 15 | image: gcr.io/google-samples/gb-frontend:v4 16 | resources: 17 | requests: 18 | cpu: 100m 19 | memory: 100Mi 20 | env: 21 | - name: GET_HOSTS_FROM 22 | value: dns 23 | # If your cluster config does not include a dns service, then to 24 | # instead access environment variables to find service host 25 | # info, comment out the 'value: dns' line above, and uncomment the 26 | # line below: 27 | # value: env 28 | ports: 29 | - containerPort: 80 30 | -------------------------------------------------------------------------------- /docs/appendix/appendix4/openshift/advanced/apps/guestbook/frontend-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: frontend 5 | labels: 6 | app: guestbook 7 | tier: frontend 8 | spec: 9 | # if your cluster supports it, uncomment the following to automatically create 10 | # an external load-balanced IP for the frontend service. 11 | # type: LoadBalancer 12 | ports: 13 | - port: 80 14 | selector: 15 | app: guestbook 16 | tier: frontend 17 | -------------------------------------------------------------------------------- /docs/appendix/appendix4/openshift/advanced/apps/guestbook/gb-f5-cc.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: extensions/v1beta1 2 | kind: Deployment 3 | metadata: 4 | name: k8s-bigip-ctlr 5 | namespace: guestbook 6 | spec: 7 | replicas: 1 8 | template: 9 | metadata: 10 | name: k8s-bigip-ctlr 11 | labels: 12 | app: k8s-bigip-ctlr 13 | spec: 14 | containers: 15 | - name: k8s-bigip-ctlr 16 | image: "f5networks/k8s-bigip-ctlr:latest" 17 | command: ["/app/bin/k8s-bigip-ctlr"] 18 | args: [ 19 | "--bigip-username=admin", 20 | "--bigip-password=admin", 21 | "--bigip-url=10.105.157.201", 22 | "--bigip-partition=guestbook", 23 | "--namespace=guestbook", 24 | "--pool-member-type=cluster" 25 | ] 26 | imagePullSecrets: 27 | - name: f5-docker-images 28 | -------------------------------------------------------------------------------- /docs/appendix/appendix4/openshift/advanced/apps/guestbook/gb-f5-vs.yaml: -------------------------------------------------------------------------------- 1 | 2 | # te: Remove all comments before uploading to kubernetes 3 | kind: ConfigMap 4 | apiVersion: v1 5 | metadata: 6 | # name of the resource to create on the BIG-IP 7 | name: gb-k8s.vs 8 | # the namespace to create the object in; must match the namespace of the 9 | # service you want to proxy and the namespace the k8s-bigip-ctlr is 10 | # configured to watch 11 | namespace: guestbook 12 | labels: 13 | # the type of resource you want to create on the BIG-IP 14 | f5type: virtual-server 15 | data: 16 | schema: "f5schemadb://bigip-virtual-server_v0.1.2.json" 17 | data: | 18 | { 19 | "virtualServer": { 20 | "backend": { 21 | "servicePort": 80, 22 | "serviceName": "frontend", 23 | "healthMonitors": [{ 24 | "interval": 5, 25 | "protocol": "http", 26 | "send": "GET", 27 | "timeout": 16 28 | }] 29 | }, 30 | "frontend": { 31 | "virtualAddress": { 32 | "port": 80, 33 | "bindAddr": "10.105.156.132" 34 | }, 35 | "partition": "guestbook", 36 | "balance": "round-robin", 37 | "mode": "http" 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /docs/appendix/appendix4/openshift/advanced/apps/guestbook/redis-master-deployment.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: extensions/v1beta1 2 | kind: Deployment 3 | metadata: 4 | name: redis-master 5 | spec: 6 | replicas: 1 7 | template: 8 | metadata: 9 | labels: 10 | app: redis 11 | role: master 12 | tier: backend 13 | spec: 14 | containers: 15 | - name: master 16 | image: gcr.io/google_containers/redis:e2e # or just image: redis 17 | resources: 18 | requests: 19 | cpu: 100m 20 | memory: 100Mi 21 | ports: 22 | - containerPort: 6379 23 | -------------------------------------------------------------------------------- /docs/appendix/appendix4/openshift/advanced/apps/guestbook/redis-master-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: redis-master 5 | labels: 6 | app: redis 7 | role: master 8 | tier: backend 9 | spec: 10 | ports: 11 | - port: 6379 12 | targetPort: 6379 13 | selector: 14 | app: redis 15 | role: master 16 | tier: backend 17 | -------------------------------------------------------------------------------- /docs/appendix/appendix4/openshift/advanced/apps/guestbook/redis-slave-deployment.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: extensions/v1beta1 2 | kind: Deployment 3 | metadata: 4 | name: redis-slave 5 | spec: 6 | replicas: 2 7 | template: 8 | metadata: 9 | labels: 10 | app: redis 11 | role: slave 12 | tier: backend 13 | spec: 14 | containers: 15 | - name: slave 16 | image: gcr.io/google_samples/gb-redisslave:v1 17 | resources: 18 | requests: 19 | cpu: 100m 20 | memory: 100Mi 21 | env: 22 | - name: GET_HOSTS_FROM 23 | value: dns 24 | # If your cluster config does not include a dns service, then to 25 | # instead access an environment variable to find the master 26 | # service's host, comment out the 'value: dns' line above, and 27 | # uncomment the line below: 28 | # value: env 29 | ports: 30 | - containerPort: 6379 31 | -------------------------------------------------------------------------------- /docs/appendix/appendix4/openshift/advanced/apps/guestbook/redis-slave-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: redis-slave 5 | labels: 6 | app: redis 7 | role: slave 8 | tier: backend 9 | spec: 10 | ports: 11 | - port: 6379 12 | selector: 13 | app: redis 14 | role: slave 15 | tier: backend 16 | -------------------------------------------------------------------------------- /docs/appendix/appendix4/openshift/advanced/apps/guestbook/start.sh: -------------------------------------------------------------------------------- 1 | oc create -f redis-master-deployment.yaml 2 | oc create -f redis-master-service.yaml 3 | oc create -f redis-slave-deployment.yaml 4 | oc create -f redis-slave-service.yaml 5 | oc create -f frontend-deployment.yaml 6 | oc create -f frontend-service.yaml 7 | -------------------------------------------------------------------------------- /docs/appendix/appendix4/openshift/advanced/apps/guestbook/stop.sh: -------------------------------------------------------------------------------- 1 | oc delete -f redis-slave-service.yaml 2 | oc delete -f frontend-deployment.yaml 3 | oc delete -f frontend-service.yaml 4 | oc delete -f redis-slave-deployment.yaml 5 | oc delete -f redis-slave-service.yaml 6 | oc delete -f redis-master-deployment.yaml 7 | oc delete -f redis-master-service.yaml 8 | -------------------------------------------------------------------------------- /docs/appendix/appendix4/openshift/advanced/apps/module2/f5-demo-app-bg-route.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Route 3 | metadata: 4 | labels: 5 | name: f5-demo-app-bg-route 6 | name: f5-demo-app-bg-route 7 | namespace: f5demo 8 | annotations: 9 | # Specify a supported BIG-IP load balancing mode 10 | virtual-server.f5.com/balance: least-connections-node 11 | virtual-server.f5.com/health: | 12 | [ 13 | { 14 | "path": "mysite-bg.f5demo.com/", 15 | "send": "HTTP GET /", 16 | "interval": 5, 17 | "timeout": 10 18 | } 19 | ] 20 | spec: 21 | host: mysite-bg.f5demo.com 22 | port: 23 | targetPort: 8080 24 | to: 25 | kind: Service 26 | name: node-blue 27 | weight: 20 28 | alternateBackends: 29 | - kind: Service 30 | name: node-green 31 | weight: 10 32 | -------------------------------------------------------------------------------- /docs/appendix/appendix4/openshift/advanced/apps/module2/f5-demo-app-deployment.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: extensions/v1beta1 2 | kind: Deployment 3 | metadata: 4 | name: f5-demo-app 5 | namespace: f5demo 6 | spec: 7 | replicas: 1 8 | template: 9 | metadata: 10 | labels: 11 | app: f5-demo-app 12 | spec: 13 | containers: 14 | - name: f5-demo-app 15 | image: chen23/f5-demo-app:openshift 16 | ports: 17 | - containerPort: 8080 18 | protocol: TCP 19 | -------------------------------------------------------------------------------- /docs/appendix/appendix4/openshift/advanced/apps/module2/f5-demo-app-ingress.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: extensions/v1beta1 2 | kind: Ingress 3 | metadata: 4 | name: vs-f5demo-ingress 5 | namespace: f5demo 6 | annotations: 7 | virtual-server.f5.com/partition: "ocp" 8 | virtual-server.f5.com/balance: "round-robin" 9 | virtual-server.f5.com/health: | 10 | [ 11 | { 12 | "path": "www.f5.com/", 13 | "send": "GET / HTTP/1.1\r\nHost: \r\nConnection: Close\r\n\r\n", 14 | "interval": 5, 15 | "timeout": 16 16 | } 17 | ] 18 | spec: 19 | rules: 20 | - host: www.f5.com 21 | http: 22 | paths: 23 | - backend: 24 | serviceName: f5-demo-app 25 | servicePort: 8080 26 | -------------------------------------------------------------------------------- /docs/appendix/appendix4/openshift/advanced/apps/module2/f5-demo-app-route-deployment.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: extensions/v1beta1 2 | kind: Deployment 3 | metadata: 4 | name: f5-demo-app-route 5 | spec: 6 | replicas: 1 7 | template: 8 | metadata: 9 | labels: 10 | app: f5-demo-app-route 11 | spec: 12 | containers: 13 | - name: f5-demo-app-route 14 | image: chen23/f5-demo-app:openshift 15 | ports: 16 | - containerPort: 8080 17 | protocol: TCP 18 | 19 | --- 20 | 21 | apiVersion: v1 22 | kind: Service 23 | metadata: 24 | name: f5-demo-app-route 25 | labels: 26 | name: f5-demo-app-route 27 | namespace: f5demo 28 | spec: 29 | type: ClusterIP 30 | ports: 31 | - port: 8080 32 | targetPort: 8080 33 | selector: 34 | app: f5-demo-app-route 35 | -------------------------------------------------------------------------------- /docs/appendix/appendix4/openshift/advanced/apps/module2/f5-demo-app-route-route.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Route 3 | metadata: 4 | labels: 5 | name: f5-demo-app-route 6 | name: f5-demo-app-route 7 | namespace: f5demo 8 | annotations: 9 | # Specify a supported BIG-IP load balancing mode 10 | virtual-server.f5.com/balance: least-connections-node 11 | virtual-server.f5.com/health: | 12 | [ 13 | { 14 | "path": "mysite.f5demo.com/", 15 | "send": "HTTP GET /", 16 | "interval": 5, 17 | "timeout": 10 18 | } 19 | ] 20 | spec: 21 | host: mysite.f5demo.com 22 | path: "/" 23 | port: 24 | targetPort: 8080 25 | to: 26 | kind: Service 27 | name: f5-demo-app-route 28 | -------------------------------------------------------------------------------- /docs/appendix/appendix4/openshift/advanced/apps/module2/f5-demo-app-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: f5-demo-app 5 | labels: 6 | name: f5-demo-app 7 | namespace: f5demo 8 | spec: 9 | type: ClusterIP 10 | ports: 11 | - port: 8080 12 | targetPort: 8080 13 | selector: 14 | app: f5-demo-app 15 | -------------------------------------------------------------------------------- /docs/appendix/appendix4/openshift/advanced/apps/yelb-app/yelb-f5-perms.yaml: -------------------------------------------------------------------------------- 1 | kind: ClusterRoleBinding 2 | apiVersion: rbac.authorization.k8s.io/v1beta1 3 | metadata: 4 | name: yelb-admin 5 | roleRef: 6 | apiGroup: rbac.authorization.k8s.io 7 | kind: ClusterRole 8 | name: cluster-admin 9 | subjects: 10 | - kind: ServiceAccount 11 | name: default 12 | namespace: yelb-app 13 | -------------------------------------------------------------------------------- /docs/appendix/appendix4/openshift/advanced/bigip/bigipoverlay.sh: -------------------------------------------------------------------------------- 1 | echo Creating overlay self-ip 2 | ssh root@10.10.200.98 tmsh create net self 10.131.0.98/14 vlan ocp-tunnel 3 | ssh root@10.10.200.99 tmsh create net self 10.131.2.99/14 vlan ocp-tunnel 4 | 5 | echo Creating floating IP for overlay network 6 | ssh root@10.10.200.98 tmsh create net self 10.131.4.200/14 vlan ocp-tunnel traffic-group traffic-group-1 7 | ssh root@10.10.200.98 tmsh run cm config-sync to-group ocp-devicegroup 8 | 9 | echo Saving configuration 10 | 11 | ssh root@10.10.200.98 tmsh save sys config 12 | ssh root@10.10.200.99 tmsh save sys config 13 | -------------------------------------------------------------------------------- /docs/appendix/appendix4/openshift/advanced/bigip/bigipprep.sh: -------------------------------------------------------------------------------- 1 | echo Creating OCP Partition 2 | ssh root@10.10.200.98 tmsh create auth partition ocp 3 | ssh root@10.10.200.99 tmsh create auth partition ocp 4 | 5 | echo Creating ocp-profile 6 | ssh root@10.10.200.98 tmsh create net tunnels vxlan ocp-profile flooding-type multipoint 7 | ssh root@10.10.200.99 tmsh create net tunnels vxlan ocp-profile flooding-type multipoint 8 | 9 | echo Creating floating IP for underlay network 10 | ssh root@10.10.200.98 tmsh create net self 10.10.199.200/24 vlan internal traffic-group traffic-group-1 11 | ssh root@10.10.200.98 tmsh run cm config-sync to-group ocp-devicegroup 12 | 13 | echo Creating vxlan tunnel ocp-tunnel 14 | ssh root@10.10.200.98 tmsh create net tunnels tunnel ocp-tunnel key 0 profile ocp-profile local-address 10.10.199.200 secondary-address 10.10.199.98 traffic-group traffic-group-1 15 | ssh root@10.10.200.99 tmsh create net tunnels tunnel ocp-tunnel key 0 profile ocp-profile local-address 10.10.199.200 secondary-address 10.10.199.99 traffic-group traffic-group-1 16 | 17 | echo Saving configuration 18 | ssh root@10.10.200.98 tmsh save sys config 19 | ssh root@10.10.200.99 tmsh save sys config 20 | -------------------------------------------------------------------------------- /docs/appendix/appendix4/openshift/advanced/ocp/f5-kctlr-openshift-clusterrole.yaml: -------------------------------------------------------------------------------- 1 | # For use in OpenShift clusters 2 | apiVersion: v1 3 | kind: ClusterRole 4 | metadata: 5 | annotations: 6 | authorization.openshift.io/system-only: "true" 7 | name: system:bigip-ctlr 8 | rules: 9 | - apiGroups: ["", "extensions"] 10 | resources: ["nodes", "services", "endpoints", "namespaces", "ingresses", "routes" ] 11 | verbs: ["get", "list", "watch"] 12 | - apiGroups: ["", "extensions"] 13 | resources: ["configmaps", "events", "ingresses/status"] 14 | verbs: ["get", "list", "watch", "update", "create", "patch" ] 15 | - apiGroups: ["", "extensions"] 16 | resources: ["secrets"] 17 | resourceNames: [""] 18 | verbs: ["get", "list", "watch"] 19 | 20 | --- 21 | 22 | apiVersion: v1 23 | kind: ClusterRoleBinding 24 | metadata: 25 | name: bigip-ctlr-role 26 | userNames: 27 | - system:serviceaccount:kube-system:bigip-ctlr 28 | subjects: 29 | - kind: ServiceAccount 30 | name: bigip-ctlr 31 | roleRef: 32 | name: system:bigip-ctlr 33 | -------------------------------------------------------------------------------- /docs/appendix/appendix4/openshift/advanced/ocp/gb-f5-vs.yaml: -------------------------------------------------------------------------------- 1 | 2 | # te: Remove all comments before uploading to kubernetes 3 | kind: ConfigMap 4 | apiVersion: v1 5 | metadata: 6 | # name of the resource to create on the BIG-IP 7 | name: gb-k8s.vs 8 | # the namespace to create the object in; must match the namespace of the 9 | # service you want to proxy and the namespace the k8s-bigip-ctlr is 10 | # configured to watch 11 | namespace: guestbook 12 | labels: 13 | # the type of resource you want to create on the BIG-IP 14 | f5type: virtual-server 15 | data: 16 | schema: "f5schemadb://bigip-virtual-server_v0.1.2.json" 17 | data: | 18 | { 19 | "virtualServer": { 20 | "backend": { 21 | "servicePort": 80, 22 | "serviceName": "frontend", 23 | "healthMonitors": [{ 24 | "interval": 5, 25 | "protocol": "http", 26 | "send": "GET", 27 | "timeout": 16 28 | }] 29 | }, 30 | "frontend": { 31 | "virtualAddress": { 32 | "port": 80, 33 | "bindAddr": "10.20.201.201" 34 | }, 35 | "partition": "ocp", 36 | "balance": "round-robin", 37 | "mode": "http" 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /docs/appendix/appendix4/openshift/advanced/ocp/hs-bigip-float.yaml: -------------------------------------------------------------------------------- 1 | { 2 | "apiVersion": "v1", 3 | "host": "openshift-f5-bigip-float", 4 | "hostIP": "10.3.10.59", 5 | "kind": "HostSubnet", 6 | "metadata": { 7 | "name": "openshift-f5-bigip-float" 8 | }, 9 | "subnet": "10.131.4.0/23" 10 | } 11 | -------------------------------------------------------------------------------- /docs/appendix/appendix4/openshift/advanced/ocp/hs-bigip1.yaml: -------------------------------------------------------------------------------- 1 | { 2 | "apiVersion": "v1", 3 | "host": "openshift-f5-bigip1", 4 | "hostIP": "10.3.10.60", 5 | "kind": "HostSubnet", 6 | "metadata": { 7 | "name": "openshift-f5-bigip1" 8 | }, 9 | "subnet": "10.131.0.0/23" 10 | } 11 | -------------------------------------------------------------------------------- /docs/appendix/appendix4/openshift/advanced/ocp/hs-bigip2.yaml: -------------------------------------------------------------------------------- 1 | { 2 | "apiVersion": "v1", 3 | "host": "openshift-f5-bigip2", 4 | "hostIP": "10.3.10.61", 5 | "kind": "HostSubnet", 6 | "metadata": { 7 | "name": "openshift-f5-bigip2" 8 | }, 9 | "subnet": "10.131.2.0/23" 10 | } 11 | -------------------------------------------------------------------------------- /docs/appendix/appendix4/openshift/advanced/ocp/pool-only.yaml: -------------------------------------------------------------------------------- 1 | kind: ConfigMap 2 | apiVersion: v1 3 | metadata: 4 | # name of the resource to create on the BIG-IP 5 | name: k8s.poolonly 6 | # the namespace to create the object in 7 | # As of v1.1, the k8s-bigip-ctlr watches all namespaces by default 8 | # If the k8s-bigip-ctlr is watching a specific namespace(s), 9 | # this setting must match the namespace of the Service you want to proxy 10 | # -AND- the namespace(s) the k8s-bigip-ctlr watches 11 | namespace: f5demo 12 | labels: 13 | # the type of resource you want to create on the BIG-IP 14 | f5type: virtual-server 15 | data: 16 | schema: "f5schemadb://bigip-virtual-server_v0.1.7.json" 17 | data: | 18 | { 19 | "virtualServer": { 20 | "backend": { 21 | "servicePort": 8080, 22 | "serviceName": "f5demo", 23 | "healthMonitors": [{ 24 | "interval": 3, 25 | "protocol": "http", 26 | "send": "GET /\r\n", 27 | "timeout": 10 28 | }] 29 | }, 30 | "frontend": { 31 | "virtualAddress": { 32 | "port": 80 33 | }, 34 | "partition": "ocp", 35 | "balance": "round-robin", 36 | "mode": "http" 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /docs/appendix/appendix4/openshift/advanced/ocp/secret.sh: -------------------------------------------------------------------------------- 1 | oc create secret generic bigip-login --namespace kube-system --from-literal=username=admin --from-literal=password=admin 2 | -------------------------------------------------------------------------------- /docs/appendix/appendix5/openshift/cc-bigip1-10.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: extensions/v1beta1 2 | kind: Deployment 3 | metadata: 4 | name: bigip1-ctlr 5 | namespace: kube-system 6 | spec: 7 | replicas: 1 8 | template: 9 | metadata: 10 | name: k8s-bigip-ctlr 11 | labels: 12 | app: k8s-bigip-ctlr 13 | spec: 14 | serviceAccountName: bigip-ctlr 15 | containers: 16 | - name: k8s-bigip-ctlr 17 | image: "f5networks/k8s-bigip-ctlr:latest" 18 | imagePullPolicy: IfNotPresent 19 | env: 20 | - name: BIGIP_USERNAME 21 | valueFrom: 22 | secretKeyRef: 23 | name: bigip-login 24 | key: username 25 | - name: BIGIP_PASSWORD 26 | valueFrom: 27 | secretKeyRef: 28 | name: bigip-login 29 | key: password 30 | command: ["/app/bin/k8s-bigip-ctlr"] 31 | args: [ 32 | "--bigip-username=$(BIGIP_USERNAME)", 33 | "--bigip-password=$(BIGIP_PASSWORD)", 34 | "--bigip-url=10.1.10.4", 35 | "--bigip-partition=okd10", 36 | "--namespace=default", 37 | "--pool-member-type=cluster", 38 | "--openshift-sdn-name=/Common/okd-tunnel-10" 39 | ] 40 | -------------------------------------------------------------------------------- /docs/appendix/appendix5/openshift/cc-bigip1-20.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: extensions/v1beta1 2 | kind: Deployment 3 | metadata: 4 | name: bigip1-ctlr 5 | namespace: kube-system 6 | spec: 7 | replicas: 1 8 | template: 9 | metadata: 10 | name: k8s-bigip-ctlr 11 | labels: 12 | app: k8s-bigip-ctlr 13 | spec: 14 | serviceAccountName: bigip-ctlr 15 | containers: 16 | - name: k8s-bigip-ctlr 17 | image: "f5networks/k8s-bigip-ctlr:latest" 18 | imagePullPolicy: IfNotPresent 19 | env: 20 | - name: BIGIP_USERNAME 21 | valueFrom: 22 | secretKeyRef: 23 | name: bigip-login 24 | key: username 25 | - name: BIGIP_PASSWORD 26 | valueFrom: 27 | secretKeyRef: 28 | name: bigip-login 29 | key: password 30 | command: ["/app/bin/k8s-bigip-ctlr"] 31 | args: [ 32 | "--bigip-username=$(BIGIP_USERNAME)", 33 | "--bigip-password=$(BIGIP_PASSWORD)", 34 | "--bigip-url=10.1.10.4", 35 | "--bigip-partition=okd20", 36 | "--namespace=default", 37 | "--pool-member-type=cluster", 38 | "--openshift-sdn-name=/Common/okd-tunnel-20" 39 | ] 40 | -------------------------------------------------------------------------------- /docs/appendix/appendix5/openshift/create-f5-cluster-10: -------------------------------------------------------------------------------- 1 | oc create secret generic bigip-login -n kube-system --from-literal=username=admin --from-literal=password=admin 2 | oc create serviceaccount bigip-ctlr -n kube-system 3 | oc create clusterrolebinding bigip-ctlr-clusteradmin --clusterrole=cluster-admin --serviceaccount=kube-system:bigip-ctlr 4 | 5 | oc create -f hs-bigip1-10.yaml 6 | oc create -f hs-bigip2-10.yaml 7 | oc create -f hs-bigip-float-10.yaml 8 | 9 | oc create -f cc-bigip1-10.yaml 10 | oc create -f cc-bigip2-10.yaml 11 | -------------------------------------------------------------------------------- /docs/appendix/appendix5/openshift/create-f5-cluster-20: -------------------------------------------------------------------------------- 1 | oc create secret generic bigip-login -n kube-system --from-literal=username=admin --from-literal=password=admin 2 | oc create serviceaccount bigip-ctlr -n kube-system 3 | oc create clusterrolebinding bigip-ctlr-clusteradmin --clusterrole=cluster-admin --serviceaccount=kube-system:bigip-ctlr 4 | 5 | oc create -f hs-bigip1-20.yaml 6 | oc create -f hs-bigip2-20.yaml 7 | oc create -f hs-bigip-float-20.yaml 8 | 9 | oc create -f cc-bigip1-20.yaml 10 | oc create -f cc-bigip2-20.yaml 11 | -------------------------------------------------------------------------------- /docs/appendix/appendix5/openshift/delete-f5-cluster-10: -------------------------------------------------------------------------------- 1 | oc delete -f cc-bigip1-10.yaml 2 | oc delete -f cc-bigip2-10.yaml 3 | 4 | oc delete -f hs-bigip1-10.yaml 5 | oc delete -f hs-bigip2-10.yaml 6 | oc delete -f hs-bigip-float-10.yaml 7 | 8 | oc delete clusterrolebinding bigip-ctlr-clusteradmin 9 | oc delete serviceaccount bigip-ctlr -n kube-system 10 | oc delete secret bigip-login -n kube-system 11 | -------------------------------------------------------------------------------- /docs/appendix/appendix5/openshift/delete-f5-cluster-20: -------------------------------------------------------------------------------- 1 | oc delete -f cc-bigip1-20.yaml 2 | oc delete -f cc-bigip2-20.yaml 3 | 4 | oc delete -f hs-bigip1-20.yaml 5 | oc delete -f hs-bigip2-20.yaml 6 | oc delete -f hs-bigip-float-20.yaml 7 | 8 | oc delete clusterrolebinding bigip-ctlr-clusteradmin 9 | oc delete serviceaccount bigip-ctlr -n kube-system 10 | oc delete secret bigip-login -n kube-system 11 | -------------------------------------------------------------------------------- /docs/appendix/appendix5/openshift/f5-hello-world-configmap-10.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | name: f5-hello-world 5 | namespace: default 6 | labels: 7 | f5type: virtual-server 8 | data: 9 | schema: "f5schemadb://bigip-virtual-server_v0.1.7.json" 10 | data: | 11 | { 12 | "virtualServer": { 13 | "frontend": { 14 | "balance": "round-robin", 15 | "mode": "http", 16 | "partition": "okd10", 17 | "virtualAddress": { 18 | "bindAddr": "10.1.10.80%0", 19 | "port": 80 20 | } 21 | }, 22 | "backend": { 23 | "serviceName": "f5-hello-world", 24 | "servicePort": 8080, 25 | "healthMonitors": [{ 26 | "interval": 5, 27 | "protocol": "http", 28 | "send": "HEAD / HTTP/1.0\r\n\r\n", 29 | "timeout": 16 30 | }] 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /docs/appendix/appendix5/openshift/f5-hello-world-configmap-20.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | name: f5-hello-world 5 | namespace: default 6 | labels: 7 | f5type: virtual-server 8 | data: 9 | schema: "f5schemadb://bigip-virtual-server_v0.1.7.json" 10 | data: | 11 | { 12 | "virtualServer": { 13 | "frontend": { 14 | "balance": "round-robin", 15 | "mode": "http", 16 | "partition": "okd20", 17 | "virtualAddress": { 18 | "bindAddr": "10.1.10.81%0", 19 | "port": 80 20 | } 21 | }, 22 | "backend": { 23 | "serviceName": "f5-hello-world", 24 | "servicePort": 8080, 25 | "healthMonitors": [{ 26 | "interval": 5, 27 | "protocol": "http", 28 | "send": "HEAD / HTTP/1.0\r\n\r\n", 29 | "timeout": 16 30 | }] 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /docs/appendix/appendix5/openshift/f5-hello-world-deployment.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: extensions/v1beta1 2 | kind: Deployment 3 | metadata: 4 | name: f5-hello-world 5 | spec: 6 | replicas: 2 7 | template: 8 | metadata: 9 | labels: 10 | run: f5-hello-world 11 | spec: 12 | containers: 13 | - name: f5-hello-world 14 | image: "f5devcentral/f5-hello-world:develop" 15 | imagePullPolicy: IfNotPresent 16 | ports: 17 | - containerPort: 8080 18 | protocol: TCP 19 | -------------------------------------------------------------------------------- /docs/appendix/appendix5/openshift/f5-hello-world-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: f5-hello-world 5 | labels: 6 | run: f5-hello-world 7 | spec: 8 | ports: 9 | - port: 8080 10 | protocol: TCP 11 | targetPort: 8080 12 | type: ClusterIP 13 | selector: 14 | run: f5-hello-world 15 | -------------------------------------------------------------------------------- /docs/appendix/appendix5/openshift/hs-bigip-float-10.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: HostSubnet 3 | metadata: 4 | name: openshift-f5-bigip-float-10 5 | annotations: 6 | pod.network.openshift.io/fixed-vnid-host: "0" 7 | host: openshift-f5-bigip-float-10 8 | hostIP: 10.1.10.60 9 | subnet: "10.131.4.0/23" 10 | -------------------------------------------------------------------------------- /docs/appendix/appendix5/openshift/hs-bigip-float-20.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: HostSubnet 3 | metadata: 4 | name: openshift-f5-bigip-float-20 5 | annotations: 6 | pod.network.openshift.io/fixed-vnid-host: "1" 7 | host: openshift-f5-bigip-float-20 8 | hostIP: 10.1.10.61 9 | subnet: "10.131.4.0/23" 10 | -------------------------------------------------------------------------------- /docs/appendix/appendix5/openshift/hs-bigip1-10.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: HostSubnet 3 | metadata: 4 | name: openshift-f5-bigip1-10 5 | annotations: 6 | pod.network.openshift.io/fixed-vnid-host: "0" 7 | host: openshift-f5-bigip1-10 8 | hostIP: 10.1.10.4 9 | subnet: "10.131.0.0/23" 10 | -------------------------------------------------------------------------------- /docs/appendix/appendix5/openshift/hs-bigip1-20.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: HostSubnet 3 | metadata: 4 | name: openshift-f5-bigip1-20 5 | annotations: 6 | pod.network.openshift.io/fixed-vnid-host: "1" 7 | host: openshift-f5-bigip1-20 8 | hostIP: 10.1.10.4 9 | subnet: "10.131.0.0/23" 10 | -------------------------------------------------------------------------------- /docs/appendix/appendix5/openshift/hs-bigip2-10.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: HostSubnet 3 | metadata: 4 | name: openshift-f5-bigip2-10 5 | annotations: 6 | pod.network.openshift.io/fixed-vnid-host: "0" 7 | host: openshift-f5-bigip2-10 8 | hostIP: 10.1.10.5 9 | subnet: "10.131.2.0/23" 10 | -------------------------------------------------------------------------------- /docs/appendix/appendix5/openshift/hs-bigip2-20.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: HostSubnet 3 | metadata: 4 | name: openshift-f5-bigip2-20 5 | annotations: 6 | pod.network.openshift.io/fixed-vnid-host: "1" 7 | host: openshift-f5-bigip2-20 8 | hostIP: 10.1.10.5 9 | subnet: "10.131.2.0/23" 10 | -------------------------------------------------------------------------------- /docs/appendix/appendix6/appendix6.rst: -------------------------------------------------------------------------------- 1 | Appendix 6: Build a Mesos / Marathon Cluster 2 | ============================================ 3 | 4 | .. attention:: **THE CLASS BLUEPRINT IS PRE-CONFIGURED WITH A WORKING CLUSTER. 5 | THIS APPENDIX IS FOR DOCUMENTION PURPOSES ONLY.** 6 | 7 | In this module, we will build a 3 node cluster (1x master and 2x nodes) 8 | utilizing Ubuntu server images. 9 | 10 | As a reminder, in this module, our cluster setup is: 11 | 12 | .. list-table:: 13 | :header-rows: 1 14 | 15 | * - **Hostname** 16 | - **IP-ADDR** 17 | - **Role** 18 | * - mesos-master1 19 | - 10.2.10.21 20 | - Master 21 | * - mesos-agent1 22 | - 10.2.10.22 23 | - Agent 24 | * - mesos-agent2 25 | - 10.2.10.23 26 | - Agent 27 | 28 | .. toctree:: 29 | :maxdepth: 1 30 | :glob: 31 | 32 | lab* 33 | -------------------------------------------------------------------------------- /docs/appendix/appendix6/images/MremoteNG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix6/images/MremoteNG.png -------------------------------------------------------------------------------- /docs/appendix/appendix6/images/setup-master-about-marathon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix6/images/setup-master-about-marathon.png -------------------------------------------------------------------------------- /docs/appendix/appendix6/images/setup-master-check-UI-marathon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix6/images/setup-master-check-UI-marathon.png -------------------------------------------------------------------------------- /docs/appendix/appendix6/images/setup-master-check-UI-mesos-master.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix6/images/setup-master-check-UI-mesos-master.png -------------------------------------------------------------------------------- /docs/appendix/appendix6/images/setup-master-check-service-marathon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix6/images/setup-master-check-service-marathon.png -------------------------------------------------------------------------------- /docs/appendix/appendix6/images/setup-master-check-service-mesos-master.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix6/images/setup-master-check-service-mesos-master.png -------------------------------------------------------------------------------- /docs/appendix/appendix6/images/setup-master-test-HA-marathon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix6/images/setup-master-test-HA-marathon.png -------------------------------------------------------------------------------- /docs/appendix/appendix6/images/setup-mesos-dns-test-create-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix6/images/setup-mesos-dns-test-create-app.png -------------------------------------------------------------------------------- /docs/appendix/appendix6/images/setup-mesos-dns-test-ping-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix6/images/setup-mesos-dns-test-ping-app.png -------------------------------------------------------------------------------- /docs/appendix/appendix6/images/setup-mesos-dns-test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix6/images/setup-mesos-dns-test.png -------------------------------------------------------------------------------- /docs/appendix/appendix6/images/setup-slave-check-agent-registration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix6/images/setup-slave-check-agent-registration.png -------------------------------------------------------------------------------- /docs/appendix/appendix6/images/setup-slave-test-create-application-button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix6/images/setup-slave-test-create-application-button.png -------------------------------------------------------------------------------- /docs/appendix/appendix6/images/setup-slave-test-create-application-command-def.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix6/images/setup-slave-test-create-application-command-def.png -------------------------------------------------------------------------------- /docs/appendix/appendix6/images/setup-slave-test-create-application-command-delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix6/images/setup-slave-test-create-application-command-delete.png -------------------------------------------------------------------------------- /docs/appendix/appendix6/images/setup-slave-test-create-application-command-exec1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix6/images/setup-slave-test-create-application-command-exec1.png -------------------------------------------------------------------------------- /docs/appendix/appendix6/images/setup-slave-test-create-application-command-exec2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix6/images/setup-slave-test-create-application-command-exec2.png -------------------------------------------------------------------------------- /docs/appendix/appendix6/images/setup-slave-test-create-container-access.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix6/images/setup-slave-test-create-container-access.png -------------------------------------------------------------------------------- /docs/appendix/appendix6/images/setup-slave-test-create-container-check-port.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix6/images/setup-slave-test-create-container-check-port.png -------------------------------------------------------------------------------- /docs/appendix/appendix6/images/setup-slave-test-create-container-def.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix6/images/setup-slave-test-create-container-def.png -------------------------------------------------------------------------------- /docs/appendix/appendix6/images/setup-slave-test-create-container-run.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix6/images/setup-slave-test-create-container-run.png -------------------------------------------------------------------------------- /docs/appendix/appendix6/images/setup-test-docker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix6/images/setup-test-docker.png -------------------------------------------------------------------------------- /docs/appendix/appendix6/images/ubuntu-hosts-file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix6/images/ubuntu-hosts-file.png -------------------------------------------------------------------------------- /docs/appendix/appendix7/appendix6.rst: -------------------------------------------------------------------------------- 1 | Appendix 7: Introduction to Mesos / Marathon 2 | ============================================ 3 | 4 | This introductory class covers the following topics: 5 | 6 | .. toctree:: 7 | :maxdepth: 1 8 | :glob: 9 | 10 | module*/module* 11 | 12 | Expected time to complete: **30 minutes** 13 | 14 | Lab Setup 15 | --------- 16 | 17 | We will leverage the following setup to configure the Mesos / Marathon 18 | environment. 19 | 20 | .. list-table:: 21 | :header-rows: 1 22 | 23 | * - **Hostname** 24 | - **IP-ADDR** 25 | - **Credentials** 26 | * - jumpbox 27 | - 10.1.1.250 28 | - user/Student!Agility! 29 | * - bigip1 30 | - 10.1.1.245 31 | 32 | 10.2.10.60 33 | 34 | - admin/admin 35 | 36 | root/default 37 | * - mesos-master1 38 | - 10.2.10.21 39 | - ubuntu/ubuntu 40 | 41 | root/default 42 | * - mesos-agent1 43 | - 10.2.10.22 44 | - ubuntu/ubuntu 45 | 46 | root/default 47 | * - mesos-agent2 48 | - 10.2.10.23 49 | - ubuntu/ubuntu 50 | 51 | root/default 52 | -------------------------------------------------------------------------------- /docs/appendix/appendix7/marathon/ansible/ansible.cfg: -------------------------------------------------------------------------------- 1 | [defaults] 2 | retry_files_enabled = False 3 | host_key_checking = False 4 | inventory = ./inventory/hosts 5 | -------------------------------------------------------------------------------- /docs/appendix/appendix7/marathon/ansible/inventory/hosts: -------------------------------------------------------------------------------- 1 | [mesos-all] 2 | mesos-master1 ansible_host=10.2.10.21 3 | mesos-agent1 ansible_host=10.2.10.22 4 | mesos-agent2 ansible_host=10.2.10.23 5 | 6 | [mesos-masters] 7 | mesos-master1 ansible_host=10.2.10.21 8 | 9 | [mesos-agents] 10 | mesos-agent1 ansible_host=10.2.10.22 11 | mesos-agent2 ansible_host=10.2.10.23 12 | -------------------------------------------------------------------------------- /docs/appendix/appendix7/marathon/ansible/playbooks/deploy-mesos.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | - name: Prep Ubuntu 4 | hosts: mesos-all 5 | become: yes 6 | tasks: 7 | - import_tasks: update-ubuntu.yaml 8 | - import_tasks: update-hosts.yaml 9 | - import_tasks: install-docker.yaml 10 | - import_tasks: prep-mesos.yaml 11 | 12 | - name: Initialize Master 13 | hosts: mesos-masters 14 | become: yes 15 | gather_facts: no 16 | tasks: 17 | - import_tasks: mesos-master.yaml 18 | 19 | - name: Initialize Agent 20 | hosts: mesos-agents 21 | become: yes 22 | gather_facts: no 23 | tasks: 24 | - import_tasks: mesos-agent.yaml 25 | -------------------------------------------------------------------------------- /docs/appendix/appendix7/marathon/ansible/playbooks/install-docker.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | - name: Add docker GPG key 4 | apt_key: 5 | url: https://download.docker.com/linux/ubuntu/gpg 6 | state: present 7 | 8 | - name: Add docker repo 9 | apt_repository: 10 | filename: docker 11 | repo: deb [arch=amd64] https://download.docker.com/linux/ubuntu {{ansible_distribution_release}} stable 12 | state: present 13 | 14 | - name: Install docker-ce 15 | apt: 16 | name: docker-ce 17 | update_cache: yes 18 | state: present 19 | -------------------------------------------------------------------------------- /docs/appendix/appendix7/marathon/ansible/playbooks/prep-mesos.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | - name: Install JAVA 4 | apt: 5 | name: openjdk-8-jdk 6 | state: present 7 | 8 | - name: Expoert JAVA_HOME environment variable 9 | lineinfile: 10 | path: /etc/environment 11 | insertafter: EOF 12 | line: "export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/" 13 | state: present 14 | 15 | - name: Add Mesos GPG key 16 | apt_key: 17 | keyserver: keyserver.ubuntu.com 18 | id: E56151BF 19 | state: present 20 | 21 | - name: Add Mesos repo 22 | apt_repository: 23 | filename: mesosphere 24 | repo: deb http://repos.mesosphere.com/ubuntu {{ansible_distribution_release}} main 25 | state: present 26 | -------------------------------------------------------------------------------- /docs/appendix/appendix7/marathon/ansible/playbooks/update-hosts.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | - name: Add all kubernete nodes to /etc/hosts 4 | lineinfile: 5 | dest: /etc/hosts 6 | insertafter: EOF 7 | line: '{{ hostvars[item].ansible_host }} {{ item }}' 8 | state: present 9 | with_items: '{{ groups["mesos-all"] }}' 10 | -------------------------------------------------------------------------------- /docs/appendix/appendix7/marathon/ansible/playbooks/update-ubuntu.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | - name: Fix dpkg 4 | shell: "dpkg --configure -a" 5 | 6 | - name: Update All Packages 7 | apt: 8 | name: "*" 9 | force_apt_get: yes 10 | update_cache: yes 11 | autoremove: yes 12 | state: latest 13 | -------------------------------------------------------------------------------- /docs/appendix/appendix7/marathon/f5-bigip-ctlr.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "f5/marathon-bigip-ctlr", 3 | "cpus": 0.5, 4 | "mem": 64.0, 5 | "instances": 1, 6 | "container": { 7 | "type": "DOCKER", 8 | "docker": { 9 | "image": "f5networks/marathon-bigip-ctlr:latest", 10 | "network": "BRIDGE" 11 | } 12 | }, 13 | "env": { 14 | "MARATHON_URL": "http://10.2.10.21:8080", 15 | "F5_CC_PARTITIONS": "mesos", 16 | "F5_CC_BIGIP_HOSTNAME": "10.2.10.60", 17 | "F5_CC_BIGIP_USERNAME": "admin", 18 | "F5_CC_BIGIP_PASSWORD": "admin" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /docs/appendix/appendix7/marathon/f5-hello-world-app.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "f5-hello-world", 3 | "cpus": 0.1, 4 | "mem": 128.0, 5 | "instances": 2, 6 | "container": { 7 | "type": "DOCKER", 8 | "docker": { 9 | "image": "f5devcentral/f5-hello-world:latest", 10 | "network": "BRIDGE", 11 | "forcePullImage": false, 12 | "portMappings": [ 13 | { "containerPort": 8080, "hostPort": 0, "protocol": "tcp" } 14 | ] 15 | } 16 | }, 17 | "labels": { 18 | "F5_PARTITION": "mesos", 19 | "F5_0_BIND_ADDR": "10.2.10.81", 20 | "F5_0_MODE": "http", 21 | "F5_0_BALANCE": "round-robin", 22 | "F5_0_PORT": "80" 23 | }, 24 | "healthChecks": [ 25 | { 26 | "protocol": "HTTP", 27 | "portIndex": 0, 28 | "path": "/", 29 | "gracePeriodSeconds": 5, 30 | "intervalSeconds": 16, 31 | "maxConsecutiveFailures": 3 32 | } 33 | ] 34 | } 35 | -------------------------------------------------------------------------------- /docs/appendix/appendix7/module1/images/Mesos_Architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix7/module1/images/Mesos_Architecture.png -------------------------------------------------------------------------------- /docs/appendix/appendix7/module1/images/mesos-framework-example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix7/module1/images/mesos-framework-example.png -------------------------------------------------------------------------------- /docs/appendix/appendix7/module1/module1.rst: -------------------------------------------------------------------------------- 1 | Module 1: Introduction to Mesos / Marathon 2 | ========================================== 3 | 4 | The purpose of this module is to give you a basic understanding of Mesos / 5 | Marathon concepts and components 6 | 7 | .. toctree:: 8 | :maxdepth: 1 9 | :glob: 10 | 11 | lab* 12 | -------------------------------------------------------------------------------- /docs/appendix/appendix7/module2/images/F5-container-connector-overview-f5-solution-architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix7/module2/images/F5-container-connector-overview-f5-solution-architecture.png -------------------------------------------------------------------------------- /docs/appendix/appendix7/module2/images/f5-container-connector-access-BIGIP-VS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix7/module2/images/f5-container-connector-access-BIGIP-VS.png -------------------------------------------------------------------------------- /docs/appendix/appendix7/module2/images/f5-container-connector-access-application-instance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix7/module2/images/f5-container-connector-access-application-instance.png -------------------------------------------------------------------------------- /docs/appendix/appendix7/module2/images/f5-container-connector-bigip-partition-setup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix7/module2/images/f5-container-connector-bigip-partition-setup.png -------------------------------------------------------------------------------- /docs/appendix/appendix7/module2/images/f5-container-connector-check-app-on-BIG-IP-Pool_members.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix7/module2/images/f5-container-connector-check-app-on-BIG-IP-Pool_members.png -------------------------------------------------------------------------------- /docs/appendix/appendix7/module2/images/f5-container-connector-check-app-on-BIG-IP-VS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix7/module2/images/f5-container-connector-check-app-on-BIG-IP-VS.png -------------------------------------------------------------------------------- /docs/appendix/appendix7/module2/images/f5-container-connector-check-application-instance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix7/module2/images/f5-container-connector-check-application-instance.png -------------------------------------------------------------------------------- /docs/appendix/appendix7/module2/images/f5-container-connector-check-application-running.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix7/module2/images/f5-container-connector-check-application-running.png -------------------------------------------------------------------------------- /docs/appendix/appendix7/module2/images/f5-container-connector-check-logs-bigip-ctlr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix7/module2/images/f5-container-connector-check-logs-bigip-ctlr.png -------------------------------------------------------------------------------- /docs/appendix/appendix7/module2/images/f5-container-connector-clickF5folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix7/module2/images/f5-container-connector-clickF5folder.png -------------------------------------------------------------------------------- /docs/appendix/appendix7/module2/images/f5-container-connector-create-application-button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix7/module2/images/f5-container-connector-create-application-button.png -------------------------------------------------------------------------------- /docs/appendix/appendix7/module2/images/f5-container-connector-create-f5-cc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix7/module2/images/f5-container-connector-create-f5-cc.png -------------------------------------------------------------------------------- /docs/appendix/appendix7/module2/images/f5-container-connector-f5-folder-shown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix7/module2/images/f5-container-connector-f5-folder-shown.png -------------------------------------------------------------------------------- /docs/appendix/appendix7/module2/images/f5-container-connector-get-bigip-ctlr-container-id.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix7/module2/images/f5-container-connector-get-bigip-ctlr-container-id.png -------------------------------------------------------------------------------- /docs/appendix/appendix7/module2/images/f5-container-connector-json-mode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix7/module2/images/f5-container-connector-json-mode.png -------------------------------------------------------------------------------- /docs/appendix/appendix7/module2/images/f5-container-connector-locate-bigip-controller.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix7/module2/images/f5-container-connector-locate-bigip-controller.png -------------------------------------------------------------------------------- /docs/appendix/appendix7/module2/images/f5-container-connector-logs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix7/module2/images/f5-container-connector-logs.png -------------------------------------------------------------------------------- /docs/appendix/appendix7/module2/images/f5-container-connector-scale-application-BIGIP-10-done.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix7/module2/images/f5-container-connector-scale-application-BIGIP-10-done.png -------------------------------------------------------------------------------- /docs/appendix/appendix7/module2/images/f5-container-connector-scale-application-UI-10-done.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix7/module2/images/f5-container-connector-scale-application-UI-10-done.png -------------------------------------------------------------------------------- /docs/appendix/appendix7/module2/images/f5-container-connector-scale-application-UI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix7/module2/images/f5-container-connector-scale-application-UI.png -------------------------------------------------------------------------------- /docs/appendix/appendix8/images/calicopods.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix8/images/calicopods.png -------------------------------------------------------------------------------- /docs/appendix/appendix8/images/caligetnodes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix8/images/caligetnodes.png -------------------------------------------------------------------------------- /docs/appendix/appendix8/images/enablebgp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix8/images/enablebgp.png -------------------------------------------------------------------------------- /docs/appendix/appendix8/images/getpods.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix8/images/getpods.png -------------------------------------------------------------------------------- /docs/appendix/appendix8/images/newclusterdeployment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix8/images/newclusterdeployment.png -------------------------------------------------------------------------------- /docs/appendix/appendix8/images/noflannelpods.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix8/images/noflannelpods.png -------------------------------------------------------------------------------- /docs/appendix/appendix8/images/routes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix8/images/routes.png -------------------------------------------------------------------------------- /docs/appendix/appendix8/images/sshtokubemaster1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix8/images/sshtokubemaster1.png -------------------------------------------------------------------------------- /docs/appendix/appendix8/images/start-term.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix8/images/start-term.png -------------------------------------------------------------------------------- /docs/appendix/appendix8/images/updatecidr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix8/images/updatecidr.png -------------------------------------------------------------------------------- /docs/appendix/appendix9/appendix9.rst: -------------------------------------------------------------------------------- 1 | Appendix 9: Build an Openshift v4 Cluster 2 | ========================================= 3 | 4 | .. important:: These instructions are for OKD 4.8.0. 5 | 6 | `Client tools for OpenShift `_ 7 | 8 | In this module we will use Terraform to deploy a 5 node cluster (3x master and 9 | 2x worker) on AWS utilizing Fedora CoreOS server images. 10 | 11 | .. toctree:: 12 | :maxdepth: 1 13 | :glob: 14 | 15 | lab* 16 | -------------------------------------------------------------------------------- /docs/appendix/appendix9/images/start-term.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/appendix/appendix9/images/start-term.png -------------------------------------------------------------------------------- /docs/class1/class1.rst: -------------------------------------------------------------------------------- 1 | Class 1: Kubernetes with F5 Container Ingress Service 2 | ===================================================== 3 | 4 | This introductory class covers the following topics: 5 | 6 | .. toctree:: 7 | :maxdepth: 1 8 | :glob: 9 | 10 | module*/module* 11 | 12 | Expected time to complete: **1 hour** 13 | 14 | Lab Setup 15 | --------- 16 | 17 | We will leverage the following setup to configure the Kubernetes environment. 18 | 19 | .. list-table:: 20 | :header-rows: 1 21 | 22 | * - **Hostname** 23 | - **IP-ADDR** 24 | - **Credentials** 25 | * - superjump 26 | - 10.1.1.5 27 | - ubuntu/HelloUDF 28 | * - bigip1 29 | - 10.1.1.4 30 | - admin/admin 31 | * - kube-master1 32 | - 10.1.1.7 33 | - ubuntu/ubuntu 34 | 35 | root/default 36 | * - kube-node1 37 | - 10.1.1.8 38 | - ubuntu/ubuntu 39 | 40 | root/default 41 | * - kube-node2 42 | - 10.1.1.9 43 | - ubuntu/ubuntu 44 | 45 | root/default 46 | -------------------------------------------------------------------------------- /docs/class1/images/TMUI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/TMUI.png -------------------------------------------------------------------------------- /docs/class1/images/TMUILicense.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/TMUILicense.png -------------------------------------------------------------------------------- /docs/class1/images/TMUILogin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/TMUILogin.png -------------------------------------------------------------------------------- /docs/class1/images/UDFJoinClass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/UDFJoinClass.png -------------------------------------------------------------------------------- /docs/class1/images/WEBSHELL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/WEBSHELL.png -------------------------------------------------------------------------------- /docs/class1/images/WEBSHELLroot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/WEBSHELLroot.png -------------------------------------------------------------------------------- /docs/class1/images/account-activated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/account-activated.png -------------------------------------------------------------------------------- /docs/class1/images/activate-account.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/activate-account.png -------------------------------------------------------------------------------- /docs/class1/images/cafe-example-com-cofee.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/cafe-example-com-cofee.png -------------------------------------------------------------------------------- /docs/class1/images/cafe-example-com-tea.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/cafe-example-com-tea.png -------------------------------------------------------------------------------- /docs/class1/images/confirm-as3-installed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/confirm-as3-installed.png -------------------------------------------------------------------------------- /docs/class1/images/create-account.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/create-account.png -------------------------------------------------------------------------------- /docs/class1/images/create-bigip1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/create-bigip1.png -------------------------------------------------------------------------------- /docs/class1/images/create-fl-vxlan-profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/create-fl-vxlan-profile.png -------------------------------------------------------------------------------- /docs/class1/images/create-fl-vxlan-selfip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/create-fl-vxlan-selfip.png -------------------------------------------------------------------------------- /docs/class1/images/create-fl-vxlan-tunnel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/create-fl-vxlan-tunnel.png -------------------------------------------------------------------------------- /docs/class1/images/email-invite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/email-invite.png -------------------------------------------------------------------------------- /docs/class1/images/f5-check-partition.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/f5-check-partition.png -------------------------------------------------------------------------------- /docs/class1/images/f5-cis-describe-clusterip-service2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/f5-cis-describe-clusterip-service2.png -------------------------------------------------------------------------------- /docs/class1/images/f5-cis-describe-clusterip2-service.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/f5-cis-describe-clusterip2-service.png -------------------------------------------------------------------------------- /docs/class1/images/f5-container-connector-access-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/f5-container-connector-access-app.png -------------------------------------------------------------------------------- /docs/class1/images/f5-container-connector-bigip-clusterrolebinding.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/f5-container-connector-bigip-clusterrolebinding.png -------------------------------------------------------------------------------- /docs/class1/images/f5-container-connector-bigip-partition-setup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/f5-container-connector-bigip-partition-setup.png -------------------------------------------------------------------------------- /docs/class1/images/f5-container-connector-bigip-secret.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/f5-container-connector-bigip-secret.png -------------------------------------------------------------------------------- /docs/class1/images/f5-container-connector-bigip-serviceaccount.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/f5-container-connector-bigip-serviceaccount.png -------------------------------------------------------------------------------- /docs/class1/images/f5-container-connector-check-app-bigip-stats-as3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/f5-container-connector-check-app-bigip-stats-as3.png -------------------------------------------------------------------------------- /docs/class1/images/f5-container-connector-check-app-bigip-stats-cluster-as3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/f5-container-connector-check-app-bigip-stats-cluster-as3.png -------------------------------------------------------------------------------- /docs/class1/images/f5-container-connector-check-app-bigip-stats-ingress-clusterip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/f5-container-connector-check-app-bigip-stats-ingress-clusterip.png -------------------------------------------------------------------------------- /docs/class1/images/f5-container-connector-check-app-bigipconfig-as3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/f5-container-connector-check-app-bigipconfig-as3.png -------------------------------------------------------------------------------- /docs/class1/images/f5-container-connector-check-app-definition-configmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/f5-container-connector-check-app-definition-configmap.png -------------------------------------------------------------------------------- /docs/class1/images/f5-container-connector-check-app-definition-ingress.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/f5-container-connector-check-app-definition-ingress.png -------------------------------------------------------------------------------- /docs/class1/images/f5-container-connector-check-app-ingress-pool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/f5-container-connector-check-app-ingress-pool.png -------------------------------------------------------------------------------- /docs/class1/images/f5-container-connector-check-app-ingress-pool2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/f5-container-connector-check-app-ingress-pool2.png -------------------------------------------------------------------------------- /docs/class1/images/f5-container-connector-check-app-ingress-stats.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/f5-container-connector-check-app-ingress-stats.png -------------------------------------------------------------------------------- /docs/class1/images/f5-container-connector-check-app-ingress.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/f5-container-connector-check-app-ingress.png -------------------------------------------------------------------------------- /docs/class1/images/f5-container-connector-check-app-ingress2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/f5-container-connector-check-app-ingress2.png -------------------------------------------------------------------------------- /docs/class1/images/f5-container-connector-check-app-pool-as3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/f5-container-connector-check-app-pool-as3.png -------------------------------------------------------------------------------- /docs/class1/images/f5-container-connector-check-app-pool-cluster-as3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/f5-container-connector-check-app-pool-cluster-as3.png -------------------------------------------------------------------------------- /docs/class1/images/f5-container-connector-check-logs-controller-container.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/f5-container-connector-check-logs-controller-container.png -------------------------------------------------------------------------------- /docs/class1/images/f5-container-connector-check-logs-kubectl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/f5-container-connector-check-logs-kubectl.png -------------------------------------------------------------------------------- /docs/class1/images/f5-container-connector-check-logs-kubectl2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/f5-container-connector-check-logs-kubectl2.png -------------------------------------------------------------------------------- /docs/class1/images/f5-container-connector-find-dockerID--controller-container.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/f5-container-connector-find-dockerID--controller-container.png -------------------------------------------------------------------------------- /docs/class1/images/f5-container-connector-launch-app-clusterip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/f5-container-connector-launch-app-clusterip.png -------------------------------------------------------------------------------- /docs/class1/images/f5-container-connector-launch-app-ingress2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/f5-container-connector-launch-app-ingress2.png -------------------------------------------------------------------------------- /docs/class1/images/f5-container-connector-launch-configmap-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/f5-container-connector-launch-configmap-app.png -------------------------------------------------------------------------------- /docs/class1/images/f5-container-connector-launch-deployment-controller.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/f5-container-connector-launch-deployment-controller.png -------------------------------------------------------------------------------- /docs/class1/images/f5-container-connector-launch-deployment-controller2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/f5-container-connector-launch-deployment-controller2.png -------------------------------------------------------------------------------- /docs/class1/images/f5-container-connector-launch-ingress-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/f5-container-connector-launch-ingress-app.png -------------------------------------------------------------------------------- /docs/class1/images/f5-container-connector-locate-controller-container.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/f5-container-connector-locate-controller-container.png -------------------------------------------------------------------------------- /docs/class1/images/f5-container-connector-locate-controller-container2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/f5-container-connector-locate-controller-container2.png -------------------------------------------------------------------------------- /docs/class1/images/f5-hello-world-pods-clusterip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/f5-hello-world-pods-clusterip.png -------------------------------------------------------------------------------- /docs/class1/images/f5-hello-world-pods-scale10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/f5-hello-world-pods-scale10.png -------------------------------------------------------------------------------- /docs/class1/images/f5-hello-world-pods.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/f5-hello-world-pods.png -------------------------------------------------------------------------------- /docs/class1/images/f5-hello-world-pods2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/f5-hello-world-pods2.png -------------------------------------------------------------------------------- /docs/class1/images/f5-hello-world-pods3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/f5-hello-world-pods3.png -------------------------------------------------------------------------------- /docs/class1/images/f5-hello-world-pool-scale10-as3-clusterip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/f5-hello-world-pool-scale10-as3-clusterip.png -------------------------------------------------------------------------------- /docs/class1/images/f5-hello-world-pool-scale10-as3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/f5-hello-world-pool-scale10-as3.png -------------------------------------------------------------------------------- /docs/class1/images/ffhelloworld.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/ffhelloworld.png -------------------------------------------------------------------------------- /docs/class1/images/get-fl-tunnel-mac-addr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/get-fl-tunnel-mac-addr.png -------------------------------------------------------------------------------- /docs/class1/images/gitrepo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/gitrepo.png -------------------------------------------------------------------------------- /docs/class1/images/hello-world-svc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/hello-world-svc.png -------------------------------------------------------------------------------- /docs/class1/images/ingress-link-pool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/ingress-link-pool.png -------------------------------------------------------------------------------- /docs/class1/images/ingress-link-vs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/ingress-link-vs.png -------------------------------------------------------------------------------- /docs/class1/images/ingresslink-architecture-diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/ingresslink-architecture-diagram.png -------------------------------------------------------------------------------- /docs/class1/images/k8s-ingresslink.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/k8s-ingresslink.png -------------------------------------------------------------------------------- /docs/class1/images/kube-describe-node.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/kube-describe-node.png -------------------------------------------------------------------------------- /docs/class1/images/kube-get-nodes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/kube-get-nodes.png -------------------------------------------------------------------------------- /docs/class1/images/launch-course.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/launch-course.png -------------------------------------------------------------------------------- /docs/class1/images/mfa-setup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/mfa-setup.png -------------------------------------------------------------------------------- /docs/class1/images/nginx-access-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/nginx-access-app.png -------------------------------------------------------------------------------- /docs/class1/images/nginx-cis-web_pool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/nginx-cis-web_pool.png -------------------------------------------------------------------------------- /docs/class1/images/nginx-deployment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/nginx-deployment.png -------------------------------------------------------------------------------- /docs/class1/images/nginx-ingress-endpoint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/nginx-ingress-endpoint.png -------------------------------------------------------------------------------- /docs/class1/images/nginx-ingress-launch-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/nginx-ingress-launch-app.png -------------------------------------------------------------------------------- /docs/class1/images/nginx-ingresslink-svc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/nginx-ingresslink-svc.png -------------------------------------------------------------------------------- /docs/class1/images/nginx-nodeport.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/nginx-nodeport.png -------------------------------------------------------------------------------- /docs/class1/images/nginx-pod-ip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/nginx-pod-ip.png -------------------------------------------------------------------------------- /docs/class1/images/nginx-service.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/nginx-service.png -------------------------------------------------------------------------------- /docs/class1/images/sshtokubemaster1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/sshtokubemaster1.png -------------------------------------------------------------------------------- /docs/class1/images/start-term.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/start-term.png -------------------------------------------------------------------------------- /docs/class1/images/udf-login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/udf-login.png -------------------------------------------------------------------------------- /docs/class1/images/udffirefox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class1/images/udffirefox.png -------------------------------------------------------------------------------- /docs/class1/kubernetes/bigip-node.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Node 3 | metadata: 4 | name: bigip1 5 | annotations: 6 | #Replace IP with Self-IP for your deployment 7 | flannel.alpha.coreos.com/public-ip: "10.1.1.4" 8 | #Replace MAC with your BIGIP Flannel VXLAN Tunnel MAC 9 | flannel.alpha.coreos.com/backend-data: '{"VtepMAC":"02:20:ae:2f:e0:60"}' 10 | flannel.alpha.coreos.com/backend-type: "vxlan" 11 | flannel.alpha.coreos.com/kube-subnet-manager: "true" 12 | spec: 13 | #Replace Subnet with your BIGIP Flannel Subnet 14 | podCIDR: "10.244.20.0/24" 15 | -------------------------------------------------------------------------------- /docs/class1/kubernetes/cafe-example/cafe-ingress.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: networking.k8s.io/v1beta1 2 | kind: Ingress 3 | metadata: 4 | name: cafe-ingress 5 | spec: 6 | ingressClassName: nginx # use only with k8s version >= 1.18.0 7 | tls: 8 | - hosts: 9 | - cafe.example.com 10 | secretName: cafe-secret 11 | rules: 12 | - host: cafe.example.com 13 | http: 14 | paths: 15 | - path: /tea 16 | backend: 17 | serviceName: tea-svc 18 | servicePort: 80 19 | - path: /coffee 20 | backend: 21 | serviceName: coffee-svc 22 | servicePort: 80 23 | -------------------------------------------------------------------------------- /docs/class1/kubernetes/cafe-example/cafe.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: coffee 5 | spec: 6 | replicas: 2 7 | selector: 8 | matchLabels: 9 | app: coffee 10 | template: 11 | metadata: 12 | labels: 13 | app: coffee 14 | spec: 15 | containers: 16 | - name: coffee 17 | image: pleshakov/nginx-hello:0.1 18 | ports: 19 | - containerPort: 8080 20 | --- 21 | apiVersion: v1 22 | kind: Service 23 | metadata: 24 | name: coffee-svc 25 | spec: 26 | ports: 27 | - port: 80 28 | targetPort: 8080 29 | protocol: TCP 30 | name: http 31 | selector: 32 | app: coffee 33 | --- 34 | apiVersion: apps/v1 35 | kind: Deployment 36 | metadata: 37 | name: tea 38 | spec: 39 | replicas: 3 40 | selector: 41 | matchLabels: 42 | app: tea 43 | template: 44 | metadata: 45 | labels: 46 | app: tea 47 | spec: 48 | containers: 49 | - name: tea 50 | image: pleshakov/nginx-hello:0.1 51 | ports: 52 | - containerPort: 8080 53 | --- 54 | apiVersion: v1 55 | kind: Service 56 | metadata: 57 | name: tea-svc 58 | labels: 59 | spec: 60 | ports: 61 | - port: 80 62 | targetPort: 8080 63 | protocol: TCP 64 | name: http 65 | selector: 66 | app: tea 67 | -------------------------------------------------------------------------------- /docs/class1/kubernetes/calico/calicoctl.cfg: -------------------------------------------------------------------------------- 1 | apiVersion: projectcalico.org/v3 2 | kind: CalicoAPIConfig 3 | metadata: 4 | spec: 5 | datastoreType: "kubernetes" 6 | kubeconfig: "/home/ubuntu/.kube/config" 7 | -------------------------------------------------------------------------------- /docs/class1/kubernetes/calico/caliconf.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: projectcalico.org/v3 2 | kind: BGPConfiguration 3 | metadata: 4 | name: default 5 | spec: 6 | logSeverityScreen: Info 7 | nodeToNodeMeshEnabled: true 8 | asNumber: 64512 9 | -------------------------------------------------------------------------------- /docs/class1/kubernetes/calico/calipeer.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: projectcalico.org/v3 2 | kind: BGPPeer 3 | metadata: 4 | name: bgppeer-global-bigip1 5 | spec: 6 | peerIP: 10.1.1.4 7 | asNumber: 64512 8 | -------------------------------------------------------------------------------- /docs/class1/kubernetes/cis-configmap.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | name: f5-as3-declaration 5 | namespace: nginx-ingress 6 | labels: 7 | f5type: virtual-server 8 | as3: "true" 9 | data: 10 | template: | 11 | { 12 | "class": "AS3", 13 | "declaration": { 14 | "class": "ADC", 15 | "schemaVersion": "3.10.0", 16 | "id": "urn:uuid:33045210-3ab8-4636-9b2a-c98d22ab915d", 17 | "label": "http", 18 | "remark": "A1 example", 19 | "AS3": { 20 | "class": "Tenant", 21 | "A1": { 22 | "class": "Application", 23 | "template": "http", 24 | "serviceMain": { 25 | "class": "Service_HTTP", 26 | "virtualAddresses": [ 27 | "10.1.1.4" 28 | ], 29 | "pool": "web_pool", 30 | "virtualPort": 80 31 | }, 32 | "web_pool": { 33 | "class": "Pool", 34 | "monitors": [ 35 | "http" 36 | ], 37 | "members": [ 38 | { 39 | "servicePort": 80, 40 | "serverAddresses": [] 41 | } 42 | ] 43 | } 44 | } 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /docs/class1/kubernetes/cis-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: nginx-ingress-hello-world 5 | namespace: nginx-ingress 6 | labels: 7 | cis.f5.com/as3-tenant: AS3 8 | cis.f5.com/as3-app: A1 9 | cis.f5.com/as3-pool: web_pool 10 | spec: 11 | type: NodePort 12 | ports: 13 | - port: 80 14 | targetPort: 80 15 | protocol: TCP 16 | name: http 17 | selector: 18 | app: nginx-ingress 19 | -------------------------------------------------------------------------------- /docs/class1/kubernetes/clusterip-service-hello-world.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: f5-hello-world-web 5 | namespace: default 6 | labels: 7 | app: f5-hello-world-web 8 | cis.f5.com/as3-tenant: AS3 9 | cis.f5.com/as3-app: A1 10 | cis.f5.com/as3-pool: web_pool 11 | spec: 12 | ports: 13 | - name: f5-hello-world-web 14 | port: 8080 15 | protocol: TCP 16 | targetPort: 8080 17 | type: ClusterIP 18 | selector: 19 | app: f5-hello-world-web 20 | -------------------------------------------------------------------------------- /docs/class1/kubernetes/delete-hello-world.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | name: f5-as3-declaration 5 | namespace: default 6 | labels: 7 | f5type: virtual-server 8 | as3: "true" 9 | data: 10 | template: | 11 | { 12 | "class": "AS3", 13 | "declaration": { 14 | "class": "ADC", 15 | "schemaVersion": "3.10.0", 16 | "id": "urn:uuid:33045210-3ab8-4636-9b2a-c98d22ab915d", 17 | "label": "http", 18 | "remark": "Remove A1 example", 19 | "AS3": { 20 | "class": "Tenant" 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /docs/class1/kubernetes/deployment-hello-world.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: f5-hello-world-web 5 | namespace: default 6 | spec: 7 | replicas: 2 8 | selector: 9 | matchLabels: 10 | app: f5-hello-world-web 11 | template: 12 | metadata: 13 | labels: 14 | app: f5-hello-world-web 15 | spec: 16 | containers: 17 | - env: 18 | - name: service_name 19 | value: f5-hello-world-web 20 | image: f5devcentral/f5-hello-world:latest 21 | imagePullPolicy: IfNotPresent 22 | name: f5-hello-world-web 23 | ports: 24 | - containerPort: 8080 25 | protocol: TCP 26 | -------------------------------------------------------------------------------- /docs/class1/kubernetes/ingress-hello-world.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: networking.k8s.io/v1 2 | kind: Ingress 3 | metadata: 4 | name: f5-hello-world-web 5 | namespace: default 6 | annotations: 7 | virtual-server.f5.com/partition: "kubernetes" 8 | virtual-server.f5.com/ip: 10.1.1.4 9 | virtual-server.f5.com/http-port: "80" 10 | virtual-server.f5.com/ssl-redirect: "false" 11 | virtual-server.f5.com/balance: "round-robin" 12 | virtual-server.f5.com/health: | 13 | [ 14 | { 15 | "path": "f5.hello.world/", 16 | "send": "HTTP GET /", 17 | "interval": 5, 18 | "timeout": 10 19 | } 20 | ] 21 | spec: 22 | rules: 23 | - http: 24 | paths: 25 | - path: / 26 | pathType: Prefix 27 | backend: 28 | service: 29 | name: f5-hello-world-web 30 | port: 31 | number: 8080 32 | -------------------------------------------------------------------------------- /docs/class1/kubernetes/ingresslink/Proxy_Protocol_iRule: -------------------------------------------------------------------------------- 1 | # PROXY Protocol Receiver iRule 2 | # iRule used for F5 IngressLink 3 | # Layer 4 irule since BIG-IP is passthrough 4 | 5 | when CLIENT_ACCEPTED { 6 | set proxyheader "PROXY " 7 | if {[IP::version] eq 4} { 8 | append proxyheader "TCP4 " 9 | } else { 10 | append proxyheader "TCP6 " 11 | } 12 | append proxyheader "[IP::remote_addr] [IP::local_addr] [TCP::remote_port] [TCP::local_port]\r\n" 13 | } 14 | 15 | when SERVER_CONNECTED { 16 | TCP::respond $proxyheader 17 | } 18 | -------------------------------------------------------------------------------- /docs/class1/kubernetes/ingresslink/nginx-config.yaml: -------------------------------------------------------------------------------- 1 | kind: ConfigMap 2 | apiVersion: v1 3 | metadata: 4 | name: nginx-config 5 | namespace: nginx-ingress 6 | data: 7 | proxy-protocol: "True" 8 | real-ip-header: "proxy_protocol" 9 | set-real-ip-from: "0.0.0.0/0" 10 | -------------------------------------------------------------------------------- /docs/class1/kubernetes/ingresslink/nginx-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: nginx-ingress-ingresslink 5 | namespace: nginx-ingress 6 | labels: 7 | app: nginx-ingress 8 | spec: 9 | ports: 10 | - port: 80 11 | targetPort: 80 12 | protocol: TCP 13 | name: http 14 | - port: 443 15 | targetPort: 443 16 | protocol: TCP 17 | name: https 18 | selector: 19 | app: nginx-ingress 20 | type: ClusterIP 21 | -------------------------------------------------------------------------------- /docs/class1/kubernetes/ingresslink/vs-ingresslink.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: "cis.f5.com/v1" 2 | kind: IngressLink 3 | metadata: 4 | name: vs-ingresslink 5 | namespace: nginx-ingress 6 | spec: 7 | virtualServerAddress: "10.1.1.4" 8 | iRules: 9 | - /Common/Proxy_Protocol_iRule 10 | selector: 11 | matchLabels: 12 | app: nginx-ingress 13 | -------------------------------------------------------------------------------- /docs/class1/kubernetes/lab-scripts/lab1.1-create: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #create kubernetes bigip container connecter w/ nodeport, authentication and RBAC 4 | kubectl create secret generic bigip-login -n kube-system --from-literal=username=admin --from-literal=password=admin 5 | kubectl create serviceaccount k8s-bigip-ctlr -n kube-system 6 | kubectl create clusterrolebinding k8s-bigip-ctlr-clusteradmin --clusterrole=cluster-admin --serviceaccount=kube-system:k8s-bigip-ctlr 7 | kubectl create -f nodeport-deployment.yaml 8 | -------------------------------------------------------------------------------- /docs/class1/kubernetes/lab-scripts/lab1.1-delete: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #delete kubernetes bigip container connecter w/ nodeport, authentication and RBAC 4 | kubectl delete -f nodeport-deployment.yaml 5 | kubectl delete clusterrolebinding k8s-bigip-ctlr-clusteradmin 6 | kubectl delete serviceaccount k8s-bigip-ctlr -n kube-system 7 | kubectl delete secret bigip-login -n kube-system 8 | -------------------------------------------------------------------------------- /docs/class1/kubernetes/lab-scripts/lab1.2-create: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #create container f5-hello-world w/ ingress 4 | kubectl create -f deployment-hello-world.yaml 5 | kubectl create -f nodeport-service-hello-world.yaml 6 | kubectl create -f ingress-hello-world.yaml 7 | -------------------------------------------------------------------------------- /docs/class1/kubernetes/lab-scripts/lab1.2-delete: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #delete container f5-hello-world w/ ingress 4 | kubectl delete -f ingress-hello-world.yaml 5 | kubectl delete -f nodeport-service-hello-world.yaml 6 | kubectl delete -f deployment-hello-world.yaml 7 | -------------------------------------------------------------------------------- /docs/class1/kubernetes/lab-scripts/lab1.3-create: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #create container f5-hello-world w/ configmap 4 | kubectl create -f deployment-hello-world.yaml 5 | kubectl create -f nodeport-service-hello-world.yaml 6 | kubectl create -f configmap-hello-world.yaml 7 | -------------------------------------------------------------------------------- /docs/class1/kubernetes/lab-scripts/lab1.3-delete: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #delete container f5-hello-world w/ configmap 4 | kubectl delete -f configmap-hello-world.yaml 5 | kubectl delete -f nodeport-service-hello-world.yaml 6 | kubectl delete -f deployment-hello-world.yaml 7 | 8 | kubectl create -f delete-hello-world.yaml 9 | kubectl delete -f delete-hello-world.yaml 10 | -------------------------------------------------------------------------------- /docs/class1/kubernetes/lab-scripts/lab2.1-create: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #create kubernetes bigip container connecter w/ clusterip, authentication and RBAC 4 | kubectl create secret generic bigip-login -n kube-system --from-literal=username=admin --from-literal=password=admin 5 | kubectl create serviceaccount k8s-bigip-ctlr -n kube-system 6 | kubectl create clusterrolebinding k8s-bigip-ctlr-clusteradmin --clusterrole=cluster-admin --serviceaccount=kube-system:k8s-bigip-ctlr 7 | kubectl create -f bigip-node.yaml 8 | kubectl create -f cluster-deployment.yaml 9 | -------------------------------------------------------------------------------- /docs/class1/kubernetes/lab-scripts/lab2.1-delete: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #delete kubernetes bigip container connecter w/ clusterip, authentication and RBAC 4 | kubectl delete -f cluster-deployment.yaml 5 | kubectl delete -f bigip-node.yaml 6 | kubectl delete clusterrolebinding k8s-bigip-ctlr-clusteradmin 7 | kubectl delete serviceaccount k8s-bigip-ctlr -n kube-system 8 | kubectl delete secret bigip-login -n kube-system 9 | -------------------------------------------------------------------------------- /docs/class1/kubernetes/lab-scripts/lab2.2-create: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #create container f5-hello-world w/ ingress 4 | kubectl create -f deployment-hello-world.yaml 5 | kubectl create -f clusterip-service-hello-world.yaml 6 | kubectl create -f ingress-hello-world.yaml 7 | -------------------------------------------------------------------------------- /docs/class1/kubernetes/lab-scripts/lab2.2-delete: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #delete container f5-hello-world w/ ingress 4 | kubectl delete -f ingress-hello-world.yaml 5 | kubectl delete -f clusterip-service-hello-world.yaml 6 | kubectl delete -f deployment-hello-world.yaml 7 | -------------------------------------------------------------------------------- /docs/class1/kubernetes/lab-scripts/lab2.3-create: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #create container f5-hello-world w/ configmap 4 | kubectl create -f deployment-hello-world.yaml 5 | kubectl create -f clusterip-service-hello-world.yaml 6 | kubectl create -f configmap-hello-world.yaml 7 | -------------------------------------------------------------------------------- /docs/class1/kubernetes/lab-scripts/lab2.3-delete: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #delete container f5-hello-world w/ configmap 4 | kubectl delete -f configmap-hello-world.yaml 5 | kubectl delete -f clusterip-service-hello-world.yaml 6 | kubectl delete -f deployment-hello-world.yaml 7 | 8 | kubectl create -f delete-hello-world.yaml 9 | kubectl delete -f delete-hello-world.yaml 10 | -------------------------------------------------------------------------------- /docs/class1/kubernetes/lab-scripts/lab3.1-create: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | git clone https://github.com/nginxinc/kubernetes-ingress/ ~/kubernetes-ingress 4 | cd ~/kubernetes-ingress/deployments/ 5 | 6 | #deploy nginx ingress controller 7 | kubectl apply -f common/ns-and-sa.yaml 8 | kubectl apply -f rbac/rbac.yaml 9 | kubectl apply -f common/crds/k8s.nginx.org_virtualservers.yaml 10 | kubectl apply -f common/crds/k8s.nginx.org_virtualserverroutes.yaml 11 | kubectl apply -f common/crds/k8s.nginx.org_transportservers.yaml 12 | kubectl apply -f common/crds/k8s.nginx.org_policies.yaml 13 | kubectl apply -f common/default-server-secret.yaml 14 | kubectl apply -f common/nginx-config.yaml 15 | kubectl apply -f common/ingress-class.yaml 16 | kubectl apply -f deployment/nginx-ingress.yaml 17 | kubectl create -f service/nodeport.yaml 18 | 19 | cd ~/agilitydocs/docs/class1/kubernetes 20 | -------------------------------------------------------------------------------- /docs/class1/kubernetes/lab-scripts/lab3.1-delete: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd ~/kubernetes-ingress/deployments/ 4 | 5 | #delete nginx ingress controller 6 | kubectl delete -f service/nodeport.yaml 7 | kubectl delete -f deployment/nginx-ingress.yaml 8 | kubectl delete -f common/ingress-class.yaml 9 | kubectl delete -f common/nginx-config.yaml 10 | kubectl delete -f common/default-server-secret.yaml 11 | kubectl delete -f common/crds/k8s.nginx.org_policies.yaml 12 | kubectl delete -f common/crds/k8s.nginx.org_transportservers.yaml 13 | kubectl delete -f common/crds/k8s.nginx.org_virtualserverroutes.yaml 14 | kubectl delete -f common/crds/k8s.nginx.org_virtualservers.yaml 15 | kubectl delete -f rbac/rbac.yaml 16 | kubectl delete -f common/ns-and-sa.yaml 17 | 18 | cd ~/agilitydocs/docs/class1/kubernetes 19 | -------------------------------------------------------------------------------- /docs/class1/kubernetes/lab-scripts/lab3.2-create: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd ~/agilitydocs/docs/class1/kubernetes 4 | 5 | #create hello world 6 | kubectl create -f deployment-hello-world.yaml 7 | kubectl create -f clusterip-service-hello-world.yaml 8 | kubectl create -f nginx-ingress-hello-world.yaml 9 | kubectl create -f cis-service.yaml 10 | kubectl create -f cis-configmap.yaml 11 | -------------------------------------------------------------------------------- /docs/class1/kubernetes/lab-scripts/lab3.2-delete: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd ~/agilitydocs/docs/class1/kubernetes 4 | 5 | #delete hello world 6 | kubectl create -f cis-configmap.yaml 7 | kubectl create -f cis-service.yaml 8 | kubectl create -f nginx-ingress-hello-world.yaml 9 | kubectl create -f clusterip-service-hello-world.yaml 10 | kubectl create -f deployment-hello-world.yaml 11 | -------------------------------------------------------------------------------- /docs/class1/kubernetes/lab-scripts/lab4.1-create: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd ~/agilitydocs/docs/class1/kubernetes/ 4 | 5 | #delete previous CIS deployment 6 | kubectl delete -f cluster-deployment.yaml 7 | 8 | #create ingresslink service 9 | kubectl create -f ingresslink/ingresslink-customresourcedefinition.yaml 10 | kubectl create -f ingresslink/nginx-service.yaml 11 | kubectl apply -f ingresslink/nginx-config.yaml 12 | kubectl create -f ingresslink/ingresslink-deployment.yaml 13 | kubectl create -f ingresslink/vs-ingresslink.yaml 14 | -------------------------------------------------------------------------------- /docs/class1/kubernetes/lab-scripts/lab4.1-delete: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd ~/agilitydocs/docs/class1/kubernetes/ 4 | 5 | #delete previous CIS deployment 6 | kubectl delete -f cluster-deployment.yaml 7 | 8 | #delete ingresslink service 9 | kubectl delete -f ingresslink/vs-ingresslink.yaml 10 | kubectl delete -f ingresslink/ingresslink-deployment.yaml 11 | kubectl delete -f ingresslink/nginx-config.yaml 12 | kubectl delete -f ingresslink/nginx-service.yaml 13 | kubectl delete -f ingresslink/ingresslink-customresourcedefinition.yaml 14 | -------------------------------------------------------------------------------- /docs/class1/kubernetes/lab-scripts/lab4.2-create: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #create cafe application 4 | kubectl create -f cafe-example/cafe.yaml 5 | kubectl create -f cafe-example/cafe-secret.yaml 6 | kubectl create -f cafe-example/cafe-ingress.yaml 7 | -------------------------------------------------------------------------------- /docs/class1/kubernetes/lab-scripts/lab4.2-delete: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #delete cafe application 4 | kubectl delete -f cafe-example/cafe.yaml 5 | kubectl delete -f cafe-example/cafe-secret.yaml 6 | kubectl delete -f cafe-example/cafe-ingress.yaml 7 | -------------------------------------------------------------------------------- /docs/class1/kubernetes/nginx-ingress-hello-world.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: networking.k8s.io/v1 2 | kind: Ingress 3 | metadata: 4 | name: f5-hello-world-ingress 5 | annotations: 6 | kubernetes.io/ingress.class: "nginx" 7 | spec: 8 | rules: 9 | - host: mysite.f5demo.com 10 | http: 11 | paths: 12 | - path: / 13 | pathType: Prefix 14 | backend: 15 | service: 16 | name: f5-hello-world-web 17 | port: 18 | number: 8080 19 | -------------------------------------------------------------------------------- /docs/class1/kubernetes/nodeport-service-hello-world.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: f5-hello-world-web 5 | namespace: default 6 | labels: 7 | app: f5-hello-world-web 8 | cis.f5.com/as3-tenant: AS3 9 | cis.f5.com/as3-app: A1 10 | cis.f5.com/as3-pool: web_pool 11 | spec: 12 | ports: 13 | - name: f5-hello-world-web 14 | port: 8080 15 | protocol: TCP 16 | targetPort: 8080 17 | type: NodePort 18 | selector: 19 | app: f5-hello-world-web 20 | -------------------------------------------------------------------------------- /docs/class1/module1/module1.rst: -------------------------------------------------------------------------------- 1 | Module 1: CIS Using NodePort Mode 2 | ================================= 3 | 4 | Overview 5 | -------- 6 | 7 | CIS makes L4-L7 services available to users deploying microservices-based 8 | applications in a containerized infrastructure. CIS - Kubernetes allows you 9 | to expose a Kubernetes Service outside the cluster as a virtual server on a 10 | BIG-IP device entirely through the Kubernetes API. 11 | 12 | .. Attention:: In this module we'll use **NodePort Mode** to communicate 13 | with CIS. 14 | 15 | .. seealso:: The official F5 documentation is here: 16 | `F5 Container Ingress Services - Kubernetes `_ 17 | 18 | Prerequisites 19 | ------------- 20 | 21 | Before being able to use F5 CIS, you need to confirm the following: 22 | 23 | - You must have a fully active/licensed BIG-IP (SDN must be licensed) 24 | - A BIG-IP partition needs to be setup for exclusive use by CIS 25 | - You need a user with administrative access to this partition 26 | - Your kubernetes environment must be up and running 27 | 28 | .. note:: The following labs will walk you through these prerequisites. 29 | 30 | .. toctree:: 31 | :maxdepth: 1 32 | :glob: 33 | 34 | lab* 35 | -------------------------------------------------------------------------------- /docs/class1/module2/module2.rst: -------------------------------------------------------------------------------- 1 | Module 2: CIS Using ClusterIP Mode 2 | ================================== 3 | 4 | Overview 5 | -------- 6 | 7 | CIS makes L4-L7 services available to users deploying microservices-based 8 | applications in a containerized infrastructure. CIS - Kubernetes allows you 9 | to expose a Kubernetes Service outside the cluster as a virtual server on a 10 | BIG-IP device entirely through the Kubernetes API. 11 | 12 | .. Attention:: In this module we'll use **ClusterIP Mode** to communicate 13 | with CIS. 14 | 15 | .. seealso:: The official F5 documentation is here: 16 | `F5 Container Ingress Services - Kubernetes `_ 17 | 18 | Prerequisites 19 | ------------- 20 | 21 | Before being able to use F5 CIS, you need to confirm the following: 22 | 23 | - You must have a fully active/licensed BIG-IP (SDN must be licensed) 24 | - A BIG-IP partition needs to be setup for exclusive use by CIS 25 | - You need a user with administrative access to this partition 26 | - Your kubernetes environment must be up and running 27 | 28 | .. note:: The following labs will walk you through these prerequisites. 29 | 30 | .. toctree:: 31 | :maxdepth: 1 32 | :glob: 33 | 34 | lab* 35 | -------------------------------------------------------------------------------- /docs/class1/module3/module3.rst: -------------------------------------------------------------------------------- 1 | Module 3: Expose Service with NGINX Ingress Controller 2 | ====================================================== 3 | 4 | Overview 5 | -------- 6 | 7 | In this module you will build on the CIS deployment from the previous modules 8 | and expose the "F5-Hello-World" app with NGINX ingress controller. 9 | 10 | .. important:: This module and following labs assume Module2/Lab1 were 11 | atempted and working without issue. This module reuses the deployed objects. 12 | If you haven't done so be sure to attempt this lab now. You can review the 13 | content here: 14 | 15 | `Lab 2.1 - Install & Configure CIS in ClusterIP Mode <../module2/lab1.html>`_ 16 | 17 | .. toctree:: 18 | :maxdepth: 1 19 | :glob: 20 | 21 | lab* 22 | -------------------------------------------------------------------------------- /docs/class2/class2.rst: -------------------------------------------------------------------------------- 1 | Class 2: OpenShift with F5 Container Ingress Service 2 | ==================================================== 3 | 4 | This introductory class covers the following topics: 5 | 6 | .. toctree:: 7 | :maxdepth: 1 8 | :glob: 9 | 10 | module*/module* 11 | 12 | Expected time to complete: **1 hour** 13 | 14 | Lab Setup 15 | --------- 16 | 17 | We will leverage the following setup to configure the OpenShift environment. 18 | 19 | .. list-table:: 20 | :header-rows: 1 21 | 22 | * - **Hostname** 23 | - **IP-ADDR** 24 | - **Credentials** 25 | * - bigip1 26 | - 10.1.1.4 27 | - admin/F5site02@ 28 | -------------------------------------------------------------------------------- /docs/class2/images/F5-CTRL-RUNNING.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/F5-CTRL-RUNNING.png -------------------------------------------------------------------------------- /docs/class2/images/F5-OC-HOSTSUBNET1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/F5-OC-HOSTSUBNET1.png -------------------------------------------------------------------------------- /docs/class2/images/F5-OC-HOSTSUBNET2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/F5-OC-HOSTSUBNET2.png -------------------------------------------------------------------------------- /docs/class2/images/F5-OS-NODE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/F5-OS-NODE.png -------------------------------------------------------------------------------- /docs/class2/images/OC-DEMOuser-Login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/OC-DEMOuser-Login.png -------------------------------------------------------------------------------- /docs/class2/images/OKDWEBSHELL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/OKDWEBSHELL.png -------------------------------------------------------------------------------- /docs/class2/images/OKDWEBSHELLroot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/OKDWEBSHELLroot.png -------------------------------------------------------------------------------- /docs/class2/images/confirm-as3-installed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/confirm-as3-installed.png -------------------------------------------------------------------------------- /docs/class2/images/create-okd-vxlan-profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/create-okd-vxlan-profile.png -------------------------------------------------------------------------------- /docs/class2/images/create-okd-vxlan-selfip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/create-okd-vxlan-selfip.png -------------------------------------------------------------------------------- /docs/class2/images/create-okd-vxlan-tunnel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/create-okd-vxlan-tunnel.png -------------------------------------------------------------------------------- /docs/class2/images/f5-check-ltm-policy-route.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/f5-check-ltm-policy-route.png -------------------------------------------------------------------------------- /docs/class2/images/f5-check-partition.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/f5-check-partition.png -------------------------------------------------------------------------------- /docs/class2/images/f5-cis-describe-clusterip-route-service.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/f5-cis-describe-clusterip-route-service.png -------------------------------------------------------------------------------- /docs/class2/images/f5-container-connector-access-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/f5-container-connector-access-app.png -------------------------------------------------------------------------------- /docs/class2/images/f5-container-connector-access-app2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/f5-container-connector-access-app2.png -------------------------------------------------------------------------------- /docs/class2/images/f5-container-connector-bigip-clusterrolebinding.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/f5-container-connector-bigip-clusterrolebinding.png -------------------------------------------------------------------------------- /docs/class2/images/f5-container-connector-bigip-partition-setup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/f5-container-connector-bigip-partition-setup.png -------------------------------------------------------------------------------- /docs/class2/images/f5-container-connector-bigip-secret.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/f5-container-connector-bigip-secret.png -------------------------------------------------------------------------------- /docs/class2/images/f5-container-connector-bigip-serviceaccount.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/f5-container-connector-bigip-serviceaccount.png -------------------------------------------------------------------------------- /docs/class2/images/f5-container-connector-check-app-bigipconfig-as3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/f5-container-connector-check-app-bigipconfig-as3.png -------------------------------------------------------------------------------- /docs/class2/images/f5-container-connector-check-app-definition-route.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/f5-container-connector-check-app-definition-route.png -------------------------------------------------------------------------------- /docs/class2/images/f5-container-connector-check-app-route-bigipconfig.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/f5-container-connector-check-app-route-bigipconfig.png -------------------------------------------------------------------------------- /docs/class2/images/f5-container-connector-check-app-route-pool-clusterip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/f5-container-connector-check-app-route-pool-clusterip.png -------------------------------------------------------------------------------- /docs/class2/images/f5-container-connector-check-app-route-pool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/f5-container-connector-check-app-route-pool.png -------------------------------------------------------------------------------- /docs/class2/images/f5-container-connector-check-app-web-pool-as3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/f5-container-connector-check-app-web-pool-as3.png -------------------------------------------------------------------------------- /docs/class2/images/f5-container-connector-check-app-web-pool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/f5-container-connector-check-app-web-pool.png -------------------------------------------------------------------------------- /docs/class2/images/f5-container-connector-check-logs-controller-container.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/f5-container-connector-check-logs-controller-container.png -------------------------------------------------------------------------------- /docs/class2/images/f5-container-connector-check-logs-kubectl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/f5-container-connector-check-logs-kubectl.png -------------------------------------------------------------------------------- /docs/class2/images/f5-container-connector-check-logs-kubectl2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/f5-container-connector-check-logs-kubectl2.png -------------------------------------------------------------------------------- /docs/class2/images/f5-container-connector-find-dockerID--controller-container.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/f5-container-connector-find-dockerID--controller-container.png -------------------------------------------------------------------------------- /docs/class2/images/f5-container-connector-launch-app-clusterip-route.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/f5-container-connector-launch-app-clusterip-route.png -------------------------------------------------------------------------------- /docs/class2/images/f5-container-connector-launch-app-route.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/f5-container-connector-launch-app-route.png -------------------------------------------------------------------------------- /docs/class2/images/f5-container-connector-launch-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/f5-container-connector-launch-app.png -------------------------------------------------------------------------------- /docs/class2/images/f5-container-connector-launch-deployment-controller.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/f5-container-connector-launch-deployment-controller.png -------------------------------------------------------------------------------- /docs/class2/images/f5-container-connector-launch-node-deployment-controller.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/f5-container-connector-launch-node-deployment-controller.png -------------------------------------------------------------------------------- /docs/class2/images/f5-container-connector-locate-node-controller-container.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/f5-container-connector-locate-node-controller-container.png -------------------------------------------------------------------------------- /docs/class2/images/f5-hello-world-cluster-route-pods.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/f5-hello-world-cluster-route-pods.png -------------------------------------------------------------------------------- /docs/class2/images/f5-hello-world-pods-configmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/f5-hello-world-pods-configmap.png -------------------------------------------------------------------------------- /docs/class2/images/f5-hello-world-pods-route.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/f5-hello-world-pods-route.png -------------------------------------------------------------------------------- /docs/class2/images/f5-hello-world-pods-scale10-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/f5-hello-world-pods-scale10-2.png -------------------------------------------------------------------------------- /docs/class2/images/f5-hello-world-pods-scale10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/f5-hello-world-pods-scale10.png -------------------------------------------------------------------------------- /docs/class2/images/f5-hello-world-pool-scale10-clusterip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/f5-hello-world-pool-scale10-clusterip.png -------------------------------------------------------------------------------- /docs/class2/images/f5-hello-world-pool-scale10-node-as3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/f5-hello-world-pool-scale10-node-as3.png -------------------------------------------------------------------------------- /docs/class2/images/f5-okd-check-app-bigip-stats-as3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/f5-okd-check-app-bigip-stats-as3.png -------------------------------------------------------------------------------- /docs/class2/images/f5-okd-check-app-bigip-stats-clusterip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/f5-okd-check-app-bigip-stats-clusterip.png -------------------------------------------------------------------------------- /docs/class2/images/f5-okd-check-app-definition-node.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/f5-okd-check-app-definition-node.png -------------------------------------------------------------------------------- /docs/class2/images/f5-okd-check-app-definition.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/f5-okd-check-app-definition.png -------------------------------------------------------------------------------- /docs/class2/images/f5-okd-hello-world-pods.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/f5-okd-hello-world-pods.png -------------------------------------------------------------------------------- /docs/class2/images/f5-okd-launch-configmap-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/f5-okd-launch-configmap-app.png -------------------------------------------------------------------------------- /docs/class2/images/oc-describe-node.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/oc-describe-node.png -------------------------------------------------------------------------------- /docs/class2/images/oc-get-nodes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/oc-get-nodes.png -------------------------------------------------------------------------------- /docs/class2/images/oc-get-projects.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/oc-get-projects.png -------------------------------------------------------------------------------- /docs/class2/images/oc-status.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/oc-status.png -------------------------------------------------------------------------------- /docs/class2/images/start-term.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/start-term.png -------------------------------------------------------------------------------- /docs/class2/images/udf-access-bigip-tmui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/udf-access-bigip-tmui.png -------------------------------------------------------------------------------- /docs/class2/images/udf-access-ocp-provisioner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/udf-access-ocp-provisioner.png -------------------------------------------------------------------------------- /docs/class2/images/udf-bigip-loginscreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/udf-bigip-loginscreen.png -------------------------------------------------------------------------------- /docs/class2/images/udf-ocp-partition.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/udf-ocp-partition.png -------------------------------------------------------------------------------- /docs/class2/images/udf-step8-webpage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/f5devcentral/f5-agility-labs-containers/8f522066ddeb6bc7653f15653f6f03fb179d13be/docs/class2/images/udf-step8-webpage.png -------------------------------------------------------------------------------- /docs/class2/module1/module1.rst: -------------------------------------------------------------------------------- 1 | Module 1: CIS Using NodePort Mode 2 | ================================= 3 | 4 | Overview 5 | -------- 6 | 7 | The F5 Integration for Kubernetes overview describes how the BIG-IP Controller 8 | works with Kubernetes. Because OpenShift has a native Kubernetes integration, 9 | the BIG-IP Controller works essentially the same in both environments. It does 10 | have a few OpenShift-specific prerequisites. 11 | 12 | .. Attention:: In this module we'll use **NodePort Mode** to communicate 13 | with CIS. 14 | 15 | .. seealso:: The official F5 documentation is here: 16 | `F5 Container Connector - OpenShift `_ 17 | 18 | Prerequisites 19 | ------------- 20 | 21 | Before being able to use F5 CIS, you need to confirm the following: 22 | 23 | - You must have a fully active/licensed BIG-IP (SDN must be licensed) 24 | - A BIG-IP partition needs to be setup for exclusive use by CIS 25 | - You need a user with administrative access to this partition 26 | - Your openshift environment must be up and running 27 | 28 | .. note:: The following labs will walk you through these prerequisites. 29 | 30 | .. toctree:: 31 | :maxdepth: 1 32 | :glob: 33 | 34 | lab* 35 | -------------------------------------------------------------------------------- /docs/class2/module2/module2.rst: -------------------------------------------------------------------------------- 1 | Module 2: CIS Using ClusterIP Mode 2 | ================================== 3 | 4 | Overview 5 | -------- 6 | 7 | The F5 Integration for Kubernetes overview describes how the BIG-IP Controller 8 | works with Kubernetes. Because OpenShift has a native Kubernetes integration, 9 | the BIG-IP Controller works essentially the same in both environments. It does 10 | have a few OpenShift-specific prerequisites. 11 | 12 | .. Attention:: In this module we'll use **ClusterIP Mode** to communicate 13 | with CIS. 14 | 15 | .. seealso:: The official F5 documentation is here: 16 | `F5 Container Connector - OpenShift `_ 17 | 18 | Prerequisites 19 | ------------- 20 | 21 | Before being able to use F5 CIS, you need to confirm the following: 22 | 23 | - You must have a fully active/licensed BIG-IP (SDN must be licensed) 24 | - A BIG-IP partition needs to be setup for exclusive use by CIS 25 | - You need a user with administrative access to this partition 26 | - Your openshift environment must be up and running 27 | 28 | .. note:: The following labs will walk you through these prerequisites. 29 | 30 | .. toctree:: 31 | :maxdepth: 1 32 | :glob: 33 | 34 | lab* 35 | -------------------------------------------------------------------------------- /docs/class2/openshift/bigip-hostsubnet.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: HostSubnet 3 | metadata: 4 | name: openshift-f5-node 5 | annotations: 6 | pod.network.openshift.io/fixed-vnid-host: "0" 7 | host: openshift-f5-node 8 | hostIP: 10.1.1.4 9 | subnet: "10.131.0.0/23" 10 | -------------------------------------------------------------------------------- /docs/class2/openshift/clusterip-service-hello-world.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: f5-hello-world-web 5 | namespace: default 6 | labels: 7 | app: f5-hello-world-web 8 | cis.f5.com/as3-tenant: AS3 9 | cis.f5.com/as3-app: A1 10 | cis.f5.com/as3-pool: web_pool 11 | spec: 12 | ports: 13 | - name: f5-hello-world-web 14 | port: 8080 15 | protocol: TCP 16 | targetPort: 8080 17 | type: ClusterIP 18 | selector: 19 | app: f5-hello-world-web 20 | -------------------------------------------------------------------------------- /docs/class2/openshift/delete-hello-world.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | name: f5-as3-declaration 5 | namespace: default 6 | labels: 7 | f5type: virtual-server 8 | as3: "true" 9 | data: 10 | template: | 11 | { 12 | "class": "AS3", 13 | "declaration": { 14 | "class": "ADC", 15 | "schemaVersion": "3.10.0", 16 | "id": "urn:uuid:33045210-3ab8-4636-9b2a-c98d22ab915d", 17 | "label": "http", 18 | "remark": "Remove A1 example", 19 | "AS3": { 20 | "class": "Tenant" 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /docs/class2/openshift/deployment-hello-world.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: f5-hello-world-web 5 | namespace: default 6 | spec: 7 | replicas: 2 8 | selector: 9 | matchLabels: 10 | app: f5-hello-world-web 11 | template: 12 | metadata: 13 | labels: 14 | app: f5-hello-world-web 15 | spec: 16 | containers: 17 | - env: 18 | - name: service_name 19 | value: f5-hello-world-web 20 | image: f5devcentral/f5-hello-world:develop 21 | imagePullPolicy: IfNotPresent 22 | name: f5-hello-world-web 23 | ports: 24 | - containerPort: 8080 25 | protocol: TCP 26 | -------------------------------------------------------------------------------- /docs/class2/openshift/lab1.1-create: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #create kubernetes bigip container connecter w/ nodeport, authentication and RBAC 4 | oc create secret generic bigip-login -n kube-system --from-literal=username=admin --from-literal=password=admin 5 | oc create serviceaccount k8s-bigip-ctlr -n kube-system 6 | oc create clusterrolebinding k8s-bigip-ctlr-clusteradmin --clusterrole=cluster-admin --serviceaccount=kube-system:k8s-bigip-ctlr 7 | oc create -f nodeport-deployment.yaml 8 | -------------------------------------------------------------------------------- /docs/class2/openshift/lab1.1-delete: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #delete kubernetes bigip container connecter w/ nodeport, authentication and RBAC 4 | oc delete -f nodeport-deployment.yaml 5 | oc delete clusterrolebinding k8s-bigip-ctlr-clusteradmin 6 | oc delete serviceaccount k8s-bigip-ctlr -n kube-system 7 | oc delete secret bigip-login -n kube-system 8 | -------------------------------------------------------------------------------- /docs/class2/openshift/lab1.2-create: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #create container f5-hello-world w/ route 4 | oc create -f deployment-hello-world.yaml 5 | oc create -f nodeport-service-hello-world.yaml 6 | oc create -f route-hello-world.yaml 7 | -------------------------------------------------------------------------------- /docs/class2/openshift/lab1.2-delete: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #delete container f5-hello-world w/ route 4 | oc delete -f route-hello-world.yaml 5 | oc delete -f nodeport-service-hello-world.yaml 6 | oc delete -f deployment-hello-world.yaml 7 | -------------------------------------------------------------------------------- /docs/class2/openshift/lab1.3-create: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #create container f5-hello-world w/ configmap 4 | oc create -f deployment-hello-world.yaml 5 | oc create -f nodeport-service-hello-world.yaml 6 | oc create -f configmap-hello-world.yaml 7 | -------------------------------------------------------------------------------- /docs/class2/openshift/lab1.3-delete: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #delete container f5-hello-world w/ configmap 4 | oc delete -f configmap-hello-world.yaml 5 | oc delete -f nodeport-service-hello-world.yaml 6 | oc delete -f deployment-hello-world.yaml 7 | -------------------------------------------------------------------------------- /docs/class2/openshift/lab2.1-create: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #create kubernetes bigip container connecter w/ clusterip, authentication and RBAC 4 | oc create secret generic bigip-login -n kube-system --from-literal=username=admin --from-literal=password=admin 5 | oc create serviceaccount k8s-bigip-ctlr -n kube-system 6 | oc create clusterrolebinding k8s-bigip-ctlr-clusteradmin --clusterrole=cluster-admin --serviceaccount=kube-system:k8s-bigip-ctlr 7 | oc create -f bigip-hostsubnet.yaml 8 | oc create -f cluster-deployment.yaml 9 | -------------------------------------------------------------------------------- /docs/class2/openshift/lab2.1-delete: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #delete kubernetes bigip container connecter w/ clusterip, authentication and RBAC 4 | oc delete -f cluster-deployment.yaml 5 | oc delete -f bigip-hostsubnet.yaml 6 | oc delete clusterrolebinding k8s-bigip-ctlr-clusteradmin 7 | oc delete serviceaccount k8s-bigip-ctlr -n kube-system 8 | oc delete secret bigip-login -n kube-system 9 | -------------------------------------------------------------------------------- /docs/class2/openshift/lab2.2-create: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #create container f5-hello-world w/ route 4 | oc create -f deployment-hello-world.yaml 5 | oc create -f clusterip-service-hello-world.yaml 6 | oc create -f route-hello-world.yaml 7 | -------------------------------------------------------------------------------- /docs/class2/openshift/lab2.2-delete: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #delete container f5-hello-world w/ route 4 | oc delete -f route-hello-world.yaml 5 | oc delete -f clusterip-service-hello-world.yaml 6 | oc delete -f deployment-hello-world.yaml 7 | -------------------------------------------------------------------------------- /docs/class2/openshift/lab2.3-create: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #create container f5-hello-world w/ configmap 4 | oc create -f deployment-hello-world.yaml 5 | oc create -f clusterip-service-hello-world.yaml 6 | oc create -f configmap-hello-world.yaml 7 | -------------------------------------------------------------------------------- /docs/class2/openshift/lab2.3-delete: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #delete container f5-hello-world w/ configmap 4 | oc delete -f configmap-hello-world.yaml 5 | oc delete -f clusterip-service-hello-world.yaml 6 | oc delete -f deployment-hello-world.yaml 7 | -------------------------------------------------------------------------------- /docs/class2/openshift/nodeport-service-hello-world.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: f5-hello-world-web 5 | namespace: default 6 | labels: 7 | app: f5-hello-world-web 8 | cis.f5.com/as3-tenant: AS3 9 | cis.f5.com/as3-app: A1 10 | cis.f5.com/as3-pool: web_pool 11 | spec: 12 | ports: 13 | - name: f5-hello-world-web 14 | port: 8080 15 | protocol: TCP 16 | targetPort: 8080 17 | type: NodePort 18 | selector: 19 | app: f5-hello-world-web 20 | -------------------------------------------------------------------------------- /docs/class2/openshift/route-hello-world.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Route 3 | metadata: 4 | labels: 5 | f5type: hello-world 6 | name: f5-hello-world-web 7 | name: f5-hello-world-web 8 | namespace: default 9 | annotations: 10 | virtual-server.f5.com/balance: round-robin 11 | virtual-server.f5.com/health: | 12 | [ 13 | { 14 | "path": "mysite.f5demo.com/", 15 | "send": "HTTP GET /", 16 | "interval": 5, 17 | "timeout": 10 18 | } 19 | ] 20 | spec: 21 | host: mysite.f5demo.com 22 | path: "/" 23 | port: 24 | targetPort: 8080 25 | to: 26 | kind: Service 27 | name: f5-hello-world-web 28 | -------------------------------------------------------------------------------- /docs/make.bat: -------------------------------------------------------------------------------- 1 | @ECHO OFF 2 | 3 | pushd %~dp0 4 | 5 | REM Command file for Sphinx documentation 6 | 7 | if "%SPHINXBUILD%" == "" ( 8 | set SPHINXBUILD=sphinx-build 9 | ) 10 | set SOURCEDIR=. 11 | set BUILDDIR=_build 12 | set SPHINXPROJ=F5AgilityLabs 13 | 14 | if "%1" == "" Browse to help 15 | 16 | %SPHINXBUILD% >NUL 2>NUL 17 | if errorlevel 9009 ( 18 | echo. 19 | echo.The 'sphinx-build' command was not found. Make sure you have Sphinx 20 | echo.installed, then set the SPHINXBUILD environment variable to point 21 | echo.to the full path of the 'sphinx-build' executable. Alternatively you 22 | echo.may add the Sphinx directory to PATH. 23 | echo. 24 | echo.If you don't have Sphinx installed, grab it from 25 | echo.http://sphinx-doc.org/ 26 | exit /b 1 27 | ) 28 | 29 | %SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% 30 | Browse to end 31 | 32 | :help 33 | %SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% 34 | 35 | :end 36 | popd 37 | -------------------------------------------------------------------------------- /get_udf_aws_keys.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | curl -s 10.1.1.254/cloudAccounts > cloudAccounts.json 4 | 5 | export AWS_ACCESS_KEY_ID=$(jq -r '.cloudAccounts[].apiKey' < ./cloudAccounts.json) 6 | export AWS_SECRET_ACCESS_KEY=$(jq -r '.cloudAccounts[].apiSecret' < ./cloudAccounts.json) 7 | export AWS_ACCCOUNT_ID=$(jq -r '.cloudAccounts[].accountId' < ./cloudAccounts.json) 8 | export AWS_CONSOLE_LINK=$(printf https://${AWS_ACCCOUNT_ID}.signin.aws.amazon.com/console) 9 | export AWS_USER=$( jq -r '.cloudAccounts[].consoleUsername' < ./cloudAccounts.json) 10 | export AWS_PASSWORD="$(jq -r '.cloudAccounts[].consolePassword' < ./cloudAccounts.json)" 11 | 12 | if [ ! -d ~/.aws ]; then 13 | mkdir ~/.aws 14 | envsubst < ./config.template > ~/.aws/config 15 | else 16 | envsubst < ./config.template > ~/.aws/config 17 | fi 18 | 19 | printf "AWS Access Key ID: \n%s\n\n" ${AWS_ACCESS_KEY_ID} 20 | printf "AWS Secret key: \n%s\n\n" ${AWS_SECRET_ACCESS_KEY} 21 | printf "AWS Console URL:\n%s\n\n" ${AWS_CONSOLE_LINK} 22 | printf "AWS Console Username:\n%s\n\n" ${AWS_USER} 23 | printf "AWS Console Password:\n%s\n\n" ${AWS_PASSWORD} 24 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | f5_sphinx_theme 2 | pre-commit 3 | recommonmark 4 | sphinx 5 | sphinx-copybutton 6 | sphinxcontrib-blockdiag 7 | sphinxcontrib-nwdiag 8 | sphinxcontrib-serializinghtml 9 | sphinx-js 10 | -------------------------------------------------------------------------------- /scripts/convertdocx.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -x 4 | 5 | 6 | DOCNAME=${1%.docx} 7 | echo $1 8 | echo $DOCNAME 9 | 10 | pandoc -f docx $1 -t rst -o $DOCNAME.rst 11 | mkdir -p tmp media 12 | cd tmp 13 | unzip ../$1 14 | cp -Rf ./word/media/* ../media 15 | cd .. 16 | rm -Rf tmp 17 | -------------------------------------------------------------------------------- /scripts/server: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ $# -eq 0 ]; then 4 | PORT=8000 5 | else 6 | PORT=$1 7 | fi 8 | 9 | if [ -d docs/_build ]; then 10 | echo "Starting server on TCP/$PORT..." 11 | echo "Enter to stop the server..." 12 | cd docs/_build 13 | for i in `cat ../../scripts/server-dependencies` 14 | do 15 | ../../containthedocs-wget $i; 16 | done 17 | python3 -m http.server $PORT 18 | else 19 | echo "The docs/_build directory doesn't exist... try building the doc first, './containthedocs-build.sh'" 20 | exit 1 21 | fi 22 | -------------------------------------------------------------------------------- /scripts/server-dependencies: -------------------------------------------------------------------------------- 1 | https://clouddocs.f5.com/assets/css/bootstrap.min.css 2 | https://clouddocs.f5.com/assets/css/f5.css 3 | https://clouddocs.f5.com/assets/js/bootstrap.min.js 4 | https://clouddocs.f5.com/assets/js/clouddocs.js 5 | https://clouddocs.f5.com/assets/images/CLOUD-TOP-LEVEL-HERO-lg.jpeg 6 | https://clouddocs.f5.com/assets/fonts/ProximaMedium.woff2 7 | https://clouddocs.f5.com/assets/fonts/ProximaBold.woff2 8 | https://clouddocs.f5.com/header.html 9 | https://clouddocs.f5.com/footer.html 10 | -------------------------------------------------------------------------------- /terraform/OLD/bigip/cloudinit_data.tpl: -------------------------------------------------------------------------------- 1 | #cloud-config 2 | runcmd: 3 | - echo "${admin_username}:${admin_password}" | chpasswd 4 | -------------------------------------------------------------------------------- /terraform/OLD/bigip/variables.tf: -------------------------------------------------------------------------------- 1 | variable "myIP" { 2 | } 3 | 4 | variable "aws_region" { 5 | } 6 | 7 | variable "aws_profile" { 8 | } 9 | 10 | variable "key_name" { 11 | } 12 | 13 | variable "instance_type" { 14 | } 15 | 16 | variable "vpc_id" { 17 | } 18 | 19 | variable "vpc_cidr" { 20 | } 21 | 22 | variable "vpc_subnet" { 23 | type = list(string) 24 | } 25 | 26 | variable "bigip_admin" { 27 | } 28 | 29 | variable "bigip_count" { 30 | } 31 | 32 | variable "bigip_ami_prod_code" { 33 | } 34 | 35 | variable "bigip_ami_name_filt" { 36 | } 37 | 38 | variable "do_rpm" { 39 | } 40 | 41 | variable "as3_rpm" { 42 | } 43 | -------------------------------------------------------------------------------- /terraform/OLD/kubernetes/ansible/ansible.cfg: -------------------------------------------------------------------------------- 1 | [defaults] 2 | retry_files_enabled = False 3 | host_key_checking = False 4 | inventory = ./inventory.ini 5 | -------------------------------------------------------------------------------- /terraform/OLD/kubernetes/ansible/playbooks/deploy-kube.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | - name: Prep Ubuntu 4 | hosts: all 5 | become: yes 6 | tasks: 7 | - import_tasks: update-hosts.yaml 8 | - import_tasks: update-ubuntu.yaml 9 | - import_tasks: install-docker.yaml 10 | - import_tasks: prep-kube.yaml 11 | 12 | - name: Initialize Master 13 | hosts: masters 14 | become: yes 15 | gather_facts: no 16 | tasks: 17 | - import_tasks: kube-master.yaml 18 | 19 | - name: Initialize Nodes 20 | hosts: nodes 21 | become: yes 22 | gather_facts: no 23 | tasks: 24 | - import_tasks: kube-node.yaml 25 | -------------------------------------------------------------------------------- /terraform/OLD/kubernetes/ansible/playbooks/install-docker.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | - name: Add docker GPG key 4 | apt_key: 5 | url: https://download.docker.com/linux/ubuntu/gpg 6 | state: present 7 | 8 | - name: Add docker repo 9 | apt_repository: 10 | filename: docker 11 | repo: deb [arch=amd64] https://download.docker.com/linux/ubuntu {{ansible_distribution_release}} stable 12 | state: present 13 | 14 | - name: Install docker-ce 15 | apt: 16 | name: docker-ce 17 | force_apt_get: yes 18 | update_cache: yes 19 | state: present 20 | 21 | - name: Update cgroupdriver 22 | copy: 23 | dest: /etc/docker/daemon.json 24 | content: | 25 | { 26 | "exec-opts": ["native.cgroupdriver=cgroupfs"] 27 | } 28 | -------------------------------------------------------------------------------- /terraform/OLD/kubernetes/ansible/playbooks/kube-node.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | - name: Reset kubernetes node 4 | shell: "kubeadm reset --force" 5 | register: reset_cluster 6 | 7 | - name: Initialize nodes 8 | when: reset_cluster is successful 9 | shell: "{{ hostvars['kube-master1']['kubeadm_join'] }}" 10 | -------------------------------------------------------------------------------- /terraform/OLD/kubernetes/ansible/playbooks/prep-kube.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | - name: Remove swapfile from /etc/fstab 4 | replace: 5 | dest: /etc/fstab 6 | backup: yes 7 | regexp: '(^UUID=.*none.*swap.*)' 8 | replace: '#\1' 9 | 10 | - name: Disable swap 11 | shell: "swapoff -a" 12 | when: ansible_swaptotal_mb > 0 13 | 14 | - name: Update cgroupdriver 15 | copy: 16 | dest: /etc/docker/daemon.json 17 | content: | 18 | { 19 | "exec-opts": ["native.cgroupdriver=cgroupfs"] 20 | } 21 | 22 | - name: Add kubernetes GPG key 23 | apt_key: 24 | url: https://packages.cloud.google.com/apt/doc/apt-key.gpg 25 | state: present 26 | 27 | - name: Add kubernetes repo 28 | apt_repository: 29 | filename: kubernetes 30 | repo: deb http://apt.kubernetes.io/ kubernetes-xenial main 31 | state: present 32 | 33 | - name: Install kubelet kubeadm kubectl 34 | apt: 35 | name: "{{ packages }}" 36 | force_apt_get: yes 37 | update_cache: yes 38 | state: present 39 | vars: 40 | packages: 41 | - kubelet 42 | - kubeadm 43 | - kubectl 44 | -------------------------------------------------------------------------------- /terraform/OLD/kubernetes/ansible/playbooks/update-hosts.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | - name: Update VM hostname 4 | hostname: 5 | name: "{{ inventory_hostname }}" 6 | 7 | - name: Add all kubernete nodes to /etc/hosts 8 | lineinfile: 9 | dest: /etc/hosts 10 | insertafter: EOF 11 | line: '{{ hostvars[item].private_ip }} {{ item }}' 12 | state: present 13 | with_items: '{{ groups["all"] }}' 14 | -------------------------------------------------------------------------------- /terraform/OLD/kubernetes/ansible/playbooks/update-ubuntu.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | - name: Fix dpkg 4 | shell: "dpkg --configure -a" 5 | 6 | - name: Update All Packages 7 | apt: 8 | name: "*" 9 | force_apt_get: yes 10 | update_cache: yes 11 | autoremove: yes 12 | state: latest 13 | register: reboot_node 14 | 15 | - name: Reboot system if required 16 | when: reboot_node is changed 17 | reboot: 18 | post_reboot_delay: 180 19 | reboot_timeout: 900 20 | -------------------------------------------------------------------------------- /terraform/OLD/kubernetes/variables.tf: -------------------------------------------------------------------------------- 1 | variable "aws_region" { 2 | } 3 | 4 | variable "aws_profile" { 5 | } 6 | 7 | variable "myIP" { 8 | } 9 | 10 | variable "key_name" { 11 | } 12 | 13 | variable "instance_type" { 14 | } 15 | 16 | variable "kube_count" { 17 | } 18 | 19 | variable "vpc_id" { 20 | } 21 | 22 | variable "vpc_cidr" { 23 | } 24 | 25 | variable "vpc_subnet" { 26 | type = list(string) 27 | } 28 | -------------------------------------------------------------------------------- /terraform/OLD/openshift/ansible/ansible.cfg: -------------------------------------------------------------------------------- 1 | [defaults] 2 | retry_files_enabled = False 3 | host_key_checking = False 4 | inventory = ./inventory.ini 5 | -------------------------------------------------------------------------------- /terraform/OLD/openshift/ansible/playbooks/deploy-okd.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | - name: Prep CentOS 4 | hosts: all 5 | become: yes 6 | tasks: 7 | - import_tasks: update-hosts.yaml 8 | - import_tasks: update-centos.yaml 9 | - import_tasks: prep-all.yaml 10 | 11 | - name: Prep Master 12 | hosts: masters 13 | become: yes 14 | gather_facts: no 15 | tasks: 16 | - import_tasks: prep-master.yaml 17 | -------------------------------------------------------------------------------- /terraform/OLD/openshift/ansible/playbooks/prep-all.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | - name: Install various support packages 4 | yum: 5 | name: "{{ packages }}" 6 | update_cache: yes 7 | state: present 8 | vars: 9 | packages: 10 | - vim 11 | - ntp 12 | - make 13 | - python 14 | - git 15 | - curl 16 | - tcpdump 17 | - NetworkManager 18 | - docker 19 | 20 | - name: Start and Enable NetworkManager 21 | systemd: 22 | name: NetworkManager 23 | state: started 24 | enabled: yes 25 | 26 | - name: Start and Enable Docker 27 | systemd: 28 | name: docker 29 | state: started 30 | enabled: yes 31 | -------------------------------------------------------------------------------- /terraform/OLD/openshift/ansible/playbooks/update-centos.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | - name: Update All Packages 4 | yum: 5 | name: "*" 6 | update_cache: yes 7 | state: latest 8 | register: reboot_node 9 | 10 | - name: Reboot system if required 11 | when: reboot_node is changed 12 | reboot: 13 | post_reboot_delay: 180 14 | reboot_timeout: 900 15 | -------------------------------------------------------------------------------- /terraform/OLD/openshift/ansible/playbooks/update-hosts.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | - name: Update VM hostname 4 | hostname: 5 | name: "{{ inventory_hostname }}" 6 | 7 | - name: Add all okd nodes to /etc/hosts 8 | lineinfile: 9 | dest: /etc/hosts 10 | insertafter: EOF 11 | line: '{{ hostvars[item].private_ip }} {{ item }}' 12 | state: present 13 | with_items: '{{ groups["all"] }}' 14 | -------------------------------------------------------------------------------- /terraform/OLD/openshift/variables.tf: -------------------------------------------------------------------------------- 1 | variable "aws_region" { 2 | } 3 | 4 | variable "aws_profile" { 5 | } 6 | 7 | variable "myIP" { 8 | } 9 | 10 | variable "key_name" { 11 | } 12 | 13 | variable "instance_type" { 14 | } 15 | 16 | variable "okd_count" { 17 | } 18 | 19 | variable "vpc_id" { 20 | } 21 | 22 | variable "vpc_cidr" { 23 | } 24 | 25 | variable "vpc_subnet" { 26 | type = list(string) 27 | } 28 | -------------------------------------------------------------------------------- /terraform/OLD/outputs.tf: -------------------------------------------------------------------------------- 1 | #--------root/outputs.tf-------- 2 | output "BIGIP_Admin_URL" { 3 | value = module.bigip.public_dns 4 | } 5 | 6 | output "BIIGP_Mgmt_IP" { 7 | value = module.bigip.public_ip 8 | } 9 | 10 | output "BIGIP_Admin_Password" { 11 | value = module.bigip.password 12 | } 13 | 14 | output "KUBE_Cluster_IPs" { 15 | value = module.kube.public_ip 16 | } 17 | 18 | output "OKD_Cluster_IPs" { 19 | value = module.okd.public_ip 20 | } 21 | -------------------------------------------------------------------------------- /terraform/OLD/terraform.tfvars: -------------------------------------------------------------------------------- 1 | aws_profile = "default" 2 | aws_region = "us-west-2" 3 | vpc_cidr = "10.1.0.0/16" 4 | 5 | cidrs = { 6 | mgmt1 = "10.1.1.0/24" 7 | kubernetes = "10.1.10.0/24" 8 | openshift = "10.1.20.0/24" 9 | } 10 | 11 | key_name = "container-lab-key" 12 | public_key_path = "~/.ssh/id_rsa.pub" 13 | kube_instance_type = "t3.medium" 14 | kube_count = 3 15 | okd_instance_type = "t3.medium" 16 | okd_count = 3 17 | bigip_instance_type = "m5.large" 18 | bigip_count = 1 19 | 20 | # BYOL 21 | #bigip_ami_prod_code = "6h6xg9ndbxsrp5iyuotryhl0q" 22 | #bigip_ami_name_filt = "F5 BIGIP-14.1* BYOL-LTM 2Boot*" 23 | 24 | # PAYG 25 | bigip_ami_prod_code = "3ouya04g99e5euh4vbxtao1jz" 26 | bigip_ami_name_filt = "F5 BIGIP-15.0* PAYG-Best 25M*" 27 | #bigip_ami_name_filt = "F5 BIGIP-14.1* PAYG-Best 25M*" 28 | #bigip_ami_name_filt = "F5 Networks BIGIP-14.0* PAYG - Best 25M*" 29 | #bigip_ami_name_filt = "F5 Networks BIGIP-13.1* PAYG - Best 25M*" 30 | #bigip_ami_name_filt = "F5 Networks Licensed Hourly BIGIP-12.1* Best 25M*" 31 | 32 | bigip_admin = "admin" 33 | do_rpm = "f5-declarative-onboarding-1.9.0-1.noarch.rpm" 34 | as3_rpm = "f5-appsvcs-3.16.0-6.noarch.rpm" 35 | -------------------------------------------------------------------------------- /terraform/OLD/variables.tf: -------------------------------------------------------------------------------- 1 | variable "aws_profile" { 2 | } 3 | 4 | variable "aws_region" { 5 | } 6 | 7 | variable "vpc_cidr" { 8 | } 9 | 10 | data "aws_availability_zones" "available" { 11 | } 12 | 13 | variable "cidrs" { 14 | type = map(string) 15 | } 16 | 17 | data "http" "myIP" { 18 | url = "http://ipv4.icanhazip.com" 19 | } 20 | 21 | variable "key_name" { 22 | } 23 | 24 | variable "public_key_path" { 25 | } 26 | 27 | variable "kube_instance_type" { 28 | } 29 | 30 | variable "kube_count" { 31 | } 32 | 33 | variable "okd_instance_type" { 34 | } 35 | 36 | variable "okd_count" { 37 | } 38 | 39 | variable "bigip_instance_type" { 40 | } 41 | 42 | variable "bigip_count" { 43 | } 44 | 45 | variable "bigip_ami_prod_code" { 46 | } 47 | 48 | variable "bigip_ami_name_filt" { 49 | } 50 | 51 | variable "bigip_admin" { 52 | } 53 | 54 | variable "do_rpm" { 55 | } 56 | 57 | variable "as3_rpm" { 58 | } 59 | -------------------------------------------------------------------------------- /terraform/OLD/versions.tf: -------------------------------------------------------------------------------- 1 | 2 | terraform { 3 | required_version = ">= 0.12" 4 | } 5 | -------------------------------------------------------------------------------- /terraform/okd/ansible/ansible.cfg: -------------------------------------------------------------------------------- 1 | [defaults] 2 | retry_files_enabled = False 3 | host_key_checking = False 4 | inventory = ./inventory.ini 5 | -------------------------------------------------------------------------------- /terraform/okd/ansible/playbooks/prep-all.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | - name: Install various support packages 4 | yum: 5 | name: "{{ packages }}" 6 | update_cache: yes 7 | state: present 8 | vars: 9 | packages: 10 | - vim 11 | - ntp 12 | - make 13 | - python 14 | - git 15 | - curl 16 | - tcpdump 17 | - NetworkManager 18 | - docker 19 | 20 | - name: Start and Enable NetworkManager 21 | systemd: 22 | name: NetworkManager 23 | state: started 24 | enabled: yes 25 | 26 | - name: Start and Enable Docker 27 | systemd: 28 | name: docker 29 | state: started 30 | enabled: yes 31 | -------------------------------------------------------------------------------- /terraform/okd/ansible/playbooks/prep-fcos.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | - name: Prep FCOS 4 | hosts: all 5 | become: yes 6 | tasks: 7 | - import_tasks: update-hosts.yaml 8 | 9 | -------------------------------------------------------------------------------- /terraform/okd/ansible/playbooks/update-hosts.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | - name: Update VM hostname 4 | hostname: 5 | name: "{{ inventory_hostname }}" 6 | 7 | - name: Add all okd nodes to /etc/hosts 8 | lineinfile: 9 | dest: /etc/hosts 10 | insertafter: EOF 11 | line: '{{ hostvars[item].private_ip }} {{ item }}' 12 | state: present 13 | with_items: '{{ groups["all"] }}' 14 | -------------------------------------------------------------------------------- /terraform/okd/ignition/cluster-dns-02-config.yml: -------------------------------------------------------------------------------- 1 | apiVersion: config.openshift.io/v1 2 | kind: DNS 3 | metadata: 4 | creationTimestamp: null 5 | name: cluster 6 | spec: 7 | baseDomain: okd-terra.vtogf5.net 8 | status: {} 9 | -------------------------------------------------------------------------------- /terraform/okd/ignition/cluster-ingress-default-ingresscontroller.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: operator.openshift.io/v1 2 | kind: IngressController 3 | metadata: 4 | name: default 5 | namespace: openshift-ingress-operator 6 | spec: 7 | endpointPublishingStrategy: 8 | type: HostNetwork 9 | -------------------------------------------------------------------------------- /terraform/okd/ignition/install-config.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | baseDomain: agility.lab 3 | credentialsMode: Passthrough 4 | compute: 5 | - architecture: amd64 6 | hyperthreading: Enabled 7 | name: worker 8 | platform: {} 9 | replicas: 3 10 | controlPlane: 11 | architecture: amd64 12 | hyperthreading: Enabled 13 | name: master 14 | platform: {} 15 | replicas: 3 16 | metadata: 17 | creationTimestamp: null 18 | name: okd4 19 | networking: 20 | clusterNetwork: 21 | - cidr: 10.128.0.0/14 22 | hostPrefix: 23 23 | machineNetwork: 24 | - cidr: 10.0.0.0/16 25 | networkType: OVNKubernetes 26 | serviceNetwork: 27 | - 172.30.0.0/16 28 | platform: 29 | aws: 30 | region: us-west-1 31 | publish: Internal 32 | pullSecret: '{"auths":{"fake":{"auth":"aWQ6cGFzcwo="}}}' 33 | sshKey: | 34 | -------------------------------------------------------------------------------- /terraform/okd/variables.tf: -------------------------------------------------------------------------------- 1 | variable "aws_region" { 2 | } 3 | 4 | variable "aws_profile" { 5 | } 6 | 7 | variable "myIP" { 8 | } 9 | 10 | variable "key_name" { 11 | } 12 | 13 | variable "master_inst_type" { 14 | } 15 | 16 | variable "master_count" { 17 | } 18 | 19 | variable "worker_inst_type" { 20 | } 21 | 22 | variable "worker_count" { 23 | } 24 | 25 | variable "vpc_id" { 26 | } 27 | 28 | variable "vpc_cidr" { 29 | } 30 | 31 | variable "vpc_subnet" { 32 | type = list(string) 33 | } 34 | 35 | variable "private_domain" { 36 | } 37 | 38 | variable "private_domain_id" { 39 | } 40 | 41 | variable "cluster_name" { 42 | } 43 | 44 | variable "okd_name" { 45 | } 46 | 47 | variable "int_tg_22623" { 48 | } 49 | 50 | variable "int_tg_6443" { 51 | } 52 | 53 | variable "int_tg_80" { 54 | } 55 | 56 | variable "int_tg_443" { 57 | } 58 | 59 | variable "ext_tg_6443" { 60 | } 61 | 62 | variable "ext_tg_80" { 63 | } 64 | 65 | variable "ext_tg_443" { 66 | } 67 | 68 | variable "okd_ips" { 69 | default = { 70 | "0" = "10.1.1.20" 71 | "1" = "10.1.1.21" 72 | "2" = "10.1.1.22" 73 | "3" = "10.1.1.23" 74 | "4" = "10.1.1.24" 75 | "5" = "10.1.1.25" 76 | } 77 | } 78 | 79 | -------------------------------------------------------------------------------- /terraform/outputs.tf: -------------------------------------------------------------------------------- 1 | #--------root/outputs.tf-------- 2 | #output "OKD-Services_IPs" { 3 | # value = module.svc.public_ip 4 | #} 5 | 6 | #output "OKD-Master_IPs" { 7 | # value = module.okd.master-public_ip 8 | #} 9 | 10 | #output "OKD-Worker_IPs" { 11 | # value = module.okd.worker-public_ip 12 | #} 13 | 14 | -------------------------------------------------------------------------------- /terraform/scripts/get_aws_creds.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | aws_api_key=$(curl -s metadata.udf/cloudAccounts | jq -r '.cloudAccounts[].apiKey') 4 | aws_api_secret=$(curl -s metadata.udf/cloudAccounts | jq -r '.cloudAccounts[].apiSecret') 5 | 6 | #echo "aws_access_key_id=${aws_api_key}" 7 | #echo "aws_secret_access_key=${aws_api_secret}" 8 | 9 | sed -i "s|aws_access_key_id=.*|aws_access_key_id=$aws_api_key|" ~/.aws/credentials 10 | sed -i "s|aws_secret_access_key=.*|aws_secret_access_key=$aws_api_secret|" ~/.aws/credentials 11 | -------------------------------------------------------------------------------- /terraform/scripts/get_okd_masterigncert.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | masterigncert=$(jq '.ignition.security.tls.certificateAuthorities[].source' $PWD/ignition/master.ign) 4 | 5 | echo -n "{\"masterigncert\":${masterigncert}}" 6 | -------------------------------------------------------------------------------- /terraform/scripts/get_okd_masterignloc.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | masterignloc=$(jq '.ignition.config.merge[].source' $PWD/ignition/master.ign) 4 | 5 | echo -n "{\"masterignloc\":${masterignloc}}" 6 | -------------------------------------------------------------------------------- /terraform/scripts/get_okd_name.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | name=$(jq .infraID $PWD/ignition/metadata.json) 4 | 5 | echo -n "{\"name\":${name}}" 6 | -------------------------------------------------------------------------------- /terraform/scripts/get_okd_workerigncert.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | workerigncert=$(jq '.ignition.security.tls.certificateAuthorities[].source' $PWD/ignition/worker.ign) 4 | 5 | echo -n "{\"workerigncert\":${workerigncert}}" 6 | -------------------------------------------------------------------------------- /terraform/scripts/get_okd_workerignloc.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | workerignloc=$(jq '.ignition.config.merge[].source' $PWD/ignition/worker.ign) 4 | 5 | echo -n "{\"workerignloc\":${workerignloc}}" 6 | -------------------------------------------------------------------------------- /terraform/scripts/update_hosts.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | extlbip=`aws ec2 describe-network-interfaces --filters Name=description,Values="ELB net/okd4-extlb/*" --query 'NetworkInterfaces[*].PrivateIpAddresses[*].Association.PublicIp' --output text` 4 | 5 | printf "\n${extlbip} api.okd4.agility.lab\n" | sudo tee -a /etc/hosts 6 | printf "${extlbip} oauth-openshift.apps.okd4.agility.lab\n" | sudo tee -a /etc/hosts 7 | printf "${extlbip} console-openshift-console.apps.okd4.agility.lab\n" | sudo tee -a /etc/hosts 8 | 9 | -------------------------------------------------------------------------------- /terraform/terraform.tfvars: -------------------------------------------------------------------------------- 1 | aws_profile = "default" 2 | aws_region = "us-west-1" 3 | 4 | vpc_cidr = "10.0.0.0/16" 5 | 6 | cidrs = { 7 | az1 = "10.0.0.0/20" 8 | az2 = "10.0.16.0/20" 9 | az3 = "10.0.32.0/20" 10 | } 11 | 12 | key_name = "container-lab-key" 13 | public_key_path = "~/.ssh/id_rsa.pub" 14 | 15 | master_inst_type = "m5.xlarge" 16 | master_count = 3 17 | worker_inst_type = "m5.xlarge" 18 | worker_count = 2 19 | 20 | public_domain = "agility.lab" 21 | cluster_name = "okd4" 22 | 23 | -------------------------------------------------------------------------------- /terraform/variables.tf: -------------------------------------------------------------------------------- 1 | variable "aws_profile" { 2 | } 3 | 4 | variable "aws_region" { 5 | } 6 | 7 | variable "vpc_cidr" { 8 | } 9 | 10 | data "aws_availability_zones" "available" { 11 | } 12 | 13 | variable "cidrs" { 14 | type = map(string) 15 | } 16 | 17 | data "http" "myIP" { 18 | url = "https://api.ipify.org/" 19 | } 20 | 21 | variable "key_name" { 22 | } 23 | 24 | variable "public_key_path" { 25 | } 26 | 27 | variable "master_inst_type" { 28 | } 29 | 30 | variable "master_count" { 31 | } 32 | 33 | variable "worker_inst_type" { 34 | } 35 | 36 | variable "worker_count" { 37 | } 38 | 39 | variable "public_domain" { 40 | } 41 | 42 | variable "cluster_name" { 43 | } 44 | 45 | data "external" "okd_name" { 46 | program = ["bash", "scripts/get_okd_name.sh"] 47 | } 48 | 49 | -------------------------------------------------------------------------------- /terraform/versions.tf: -------------------------------------------------------------------------------- 1 | 2 | terraform { 3 | required_version = ">= 0.15" 4 | } 5 | -------------------------------------------------------------------------------- /wordlist: -------------------------------------------------------------------------------- 1 | todo 2 | username 3 | iWorkflow 4 | webserver 5 | hypervisor 6 | tmsh 7 | hyperlinks 8 | callouts 9 | xubuntu 10 | ubuntu 11 | datacenter 12 | jumphost 13 | rackmount 14 | rst 15 | pre 16 | reStructuredText 17 | rST 18 | --------------------------------------------------------------------------------