├── .gitignore ├── .gitmodules ├── LICENSE.MD ├── README.md ├── diagrams ├── Istio-Components.jpg ├── K8s-Arch.jpg ├── K8s-CNI-Comparison.jpg ├── K8s-Demo-1.jpg ├── K8s-Demo-1.png ├── K8s-Demo-2.jpg ├── K8s-Demo-2.png ├── K8s-Demo-3.jpg ├── K8s-Demo-3.png ├── K8s-Demo-4.jpg ├── K8s-Demo-4.png ├── K8s-Demo-5.jpg ├── K8s-Demo-5.png ├── K8s-Demo-6.jpg ├── K8s-Demo-6.png ├── K8s-Docker-Linux-Win.jpg ├── K8s-LB-NodePort-ClusterIP.jpg ├── K8s-Network-Policy.jpg └── Linux-Containers.jpg ├── docker.sh ├── docker ├── images │ ├── hello-docker │ │ ├── Dockerfile │ │ ├── build.sh │ │ └── hello │ │ │ └── index.html │ ├── jdk │ │ └── Dockerfile │ ├── oshell │ │ ├── Dockerfile │ │ ├── build.sh │ │ └── gb.sh │ ├── podshell │ │ ├── Dockerfile │ │ └── build.sh │ ├── podshellJava │ │ ├── .bashrc │ │ ├── Dockerfile │ │ └── build.sh │ ├── podshellNode │ │ ├── Dockerfile │ │ └── build.sh │ ├── podshellapache │ │ ├── Dockerfile │ │ ├── build.sh │ │ ├── index.html │ │ └── start.sh │ ├── podshelltomcat │ │ ├── Dockerfile │ │ ├── build.sh │ │ └── tc9 │ │ │ ├── BUILDING.txt │ │ │ ├── CONTRIBUTING.md │ │ │ ├── LICENSE │ │ │ ├── NOTICE │ │ │ ├── README.md │ │ │ ├── RELEASE-NOTES │ │ │ ├── RUNNING.txt │ │ │ ├── bin │ │ │ ├── bootstrap.jar │ │ │ ├── catalina-tasks.xml │ │ │ ├── catalina.bat │ │ │ ├── catalina.sh │ │ │ ├── ciphers.bat │ │ │ ├── ciphers.sh │ │ │ ├── commons-daemon-native.tar.gz │ │ │ ├── commons-daemon.jar │ │ │ ├── configtest.bat │ │ │ ├── configtest.sh │ │ │ ├── daemon.sh │ │ │ ├── digest.bat │ │ │ ├── digest.sh │ │ │ ├── makebase.bat │ │ │ ├── makebase.sh │ │ │ ├── setclasspath.bat │ │ │ ├── setclasspath.sh │ │ │ ├── shutdown.bat │ │ │ ├── shutdown.sh │ │ │ ├── startup.bat │ │ │ ├── startup.sh │ │ │ ├── tomcat-juli.jar │ │ │ ├── tomcat-native.tar.gz │ │ │ ├── tool-wrapper.bat │ │ │ ├── tool-wrapper.sh │ │ │ ├── version.bat │ │ │ └── version.sh │ │ │ ├── conf │ │ │ ├── catalina.policy │ │ │ ├── catalina.properties │ │ │ ├── context.xml │ │ │ ├── jaspic-providers.xml │ │ │ ├── jaspic-providers.xsd │ │ │ ├── logging.properties │ │ │ ├── server.xml │ │ │ ├── tomcat-users.xml │ │ │ ├── tomcat-users.xsd │ │ │ └── web.xml │ │ │ ├── lib │ │ │ ├── annotations-api.jar │ │ │ ├── catalina-ant.jar │ │ │ ├── catalina-ha.jar │ │ │ ├── catalina-storeconfig.jar │ │ │ ├── catalina-tribes.jar │ │ │ ├── catalina.jar │ │ │ ├── ecj-4.7.3a.jar │ │ │ ├── el-api.jar │ │ │ ├── jasper-el.jar │ │ │ ├── jasper.jar │ │ │ ├── jaspic-api.jar │ │ │ ├── jsp-api.jar │ │ │ ├── servlet-api.jar │ │ │ ├── tomcat-api.jar │ │ │ ├── tomcat-coyote.jar │ │ │ ├── tomcat-dbcp.jar │ │ │ ├── tomcat-i18n-es.jar │ │ │ ├── tomcat-i18n-fr.jar │ │ │ ├── tomcat-i18n-ja.jar │ │ │ ├── tomcat-i18n-ru.jar │ │ │ ├── tomcat-jdbc.jar │ │ │ ├── tomcat-jni.jar │ │ │ ├── tomcat-util-scan.jar │ │ │ ├── tomcat-util.jar │ │ │ ├── tomcat-websocket.jar │ │ │ └── websocket-api.jar │ │ │ ├── logs │ │ │ ├── catalina.2018-10-08.log │ │ │ ├── catalina.out │ │ │ ├── host-manager.2018-10-08.log │ │ │ ├── localhost.2018-10-08.log │ │ │ ├── localhost_access_log.2018-10-08.txt │ │ │ └── manager.2018-10-08.log │ │ │ ├── temp │ │ │ └── safeToDelete.tmp │ │ │ ├── webapps │ │ │ ├── ROOT │ │ │ │ ├── RELEASE-NOTES.txt │ │ │ │ ├── WEB-INF │ │ │ │ │ └── web.xml │ │ │ │ ├── asf-logo-wide.svg │ │ │ │ ├── bg-button.png │ │ │ │ ├── bg-middle.png │ │ │ │ ├── bg-nav.png │ │ │ │ ├── bg-upper.png │ │ │ │ ├── favicon.ico │ │ │ │ ├── index.jsp │ │ │ │ ├── tomcat-power.gif │ │ │ │ ├── tomcat.css │ │ │ │ ├── tomcat.gif │ │ │ │ ├── tomcat.png │ │ │ │ └── tomcat.svg │ │ │ ├── docs │ │ │ │ ├── BUILDING.txt │ │ │ │ ├── RELEASE-NOTES.txt │ │ │ │ ├── RUNNING.txt │ │ │ │ ├── WEB-INF │ │ │ │ │ └── web.xml │ │ │ │ ├── aio.html │ │ │ │ ├── api │ │ │ │ │ └── index.html │ │ │ │ ├── appdev │ │ │ │ │ ├── build.xml.txt │ │ │ │ │ ├── deployment.html │ │ │ │ │ ├── index.html │ │ │ │ │ ├── installation.html │ │ │ │ │ ├── introduction.html │ │ │ │ │ ├── processes.html │ │ │ │ │ ├── sample │ │ │ │ │ │ ├── build.xml │ │ │ │ │ │ ├── docs │ │ │ │ │ │ │ └── README.txt │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ ├── sample.war │ │ │ │ │ │ ├── src │ │ │ │ │ │ │ └── mypackage │ │ │ │ │ │ │ │ └── Hello.java │ │ │ │ │ │ └── web │ │ │ │ │ │ │ ├── WEB-INF │ │ │ │ │ │ │ └── web.xml │ │ │ │ │ │ │ ├── hello.jsp │ │ │ │ │ │ │ ├── images │ │ │ │ │ │ │ └── tomcat.gif │ │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── source.html │ │ │ │ │ └── web.xml.txt │ │ │ │ ├── apr.html │ │ │ │ ├── architecture │ │ │ │ │ ├── index.html │ │ │ │ │ ├── overview.html │ │ │ │ │ ├── requestProcess.html │ │ │ │ │ ├── requestProcess │ │ │ │ │ │ ├── authentication-process.png │ │ │ │ │ │ └── request-process.png │ │ │ │ │ ├── startup.html │ │ │ │ │ └── startup │ │ │ │ │ │ ├── serverStartup.pdf │ │ │ │ │ │ └── serverStartup.txt │ │ │ │ ├── balancer-howto.html │ │ │ │ ├── building.html │ │ │ │ ├── cgi-howto.html │ │ │ │ ├── changelog.html │ │ │ │ ├── class-loader-howto.html │ │ │ │ ├── cluster-howto.html │ │ │ │ ├── comments.html │ │ │ │ ├── config │ │ │ │ │ ├── ajp.html │ │ │ │ │ ├── automatic-deployment.html │ │ │ │ │ ├── cluster-channel.html │ │ │ │ │ ├── cluster-deployer.html │ │ │ │ │ ├── cluster-interceptor.html │ │ │ │ │ ├── cluster-listener.html │ │ │ │ │ ├── cluster-manager.html │ │ │ │ │ ├── cluster-membership.html │ │ │ │ │ ├── cluster-receiver.html │ │ │ │ │ ├── cluster-sender.html │ │ │ │ │ ├── cluster-valve.html │ │ │ │ │ ├── cluster.html │ │ │ │ │ ├── context.html │ │ │ │ │ ├── cookie-processor.html │ │ │ │ │ ├── credentialhandler.html │ │ │ │ │ ├── engine.html │ │ │ │ │ ├── executor.html │ │ │ │ │ ├── filter.html │ │ │ │ │ ├── globalresources.html │ │ │ │ │ ├── host.html │ │ │ │ │ ├── http.html │ │ │ │ │ ├── http2.html │ │ │ │ │ ├── index.html │ │ │ │ │ ├── jar-scan-filter.html │ │ │ │ │ ├── jar-scanner.html │ │ │ │ │ ├── jaspic.html │ │ │ │ │ ├── listeners.html │ │ │ │ │ ├── loader.html │ │ │ │ │ ├── manager.html │ │ │ │ │ ├── realm.html │ │ │ │ │ ├── resources.html │ │ │ │ │ ├── server.html │ │ │ │ │ ├── service.html │ │ │ │ │ ├── sessionidgenerator.html │ │ │ │ │ ├── systemprops.html │ │ │ │ │ └── valve.html │ │ │ │ ├── connectors.html │ │ │ │ ├── default-servlet.html │ │ │ │ ├── deployer-howto.html │ │ │ │ ├── developers.html │ │ │ │ ├── elapi │ │ │ │ │ └── index.html │ │ │ │ ├── extras.html │ │ │ │ ├── funcspecs │ │ │ │ │ ├── fs-admin-apps.html │ │ │ │ │ ├── fs-admin-objects.html │ │ │ │ │ ├── fs-admin-opers.html │ │ │ │ │ ├── fs-default.html │ │ │ │ │ ├── fs-jdbc-realm.html │ │ │ │ │ ├── fs-jndi-realm.html │ │ │ │ │ ├── fs-memory-realm.html │ │ │ │ │ ├── index.html │ │ │ │ │ └── mbean-names.html │ │ │ │ ├── host-manager-howto.html │ │ │ │ ├── html-host-manager-howto.html │ │ │ │ ├── html-manager-howto.html │ │ │ │ ├── images │ │ │ │ │ ├── add.gif │ │ │ │ │ ├── asf-logo.svg │ │ │ │ │ ├── code.gif │ │ │ │ │ ├── cors-flowchart.png │ │ │ │ │ ├── design.gif │ │ │ │ │ ├── docs-stylesheet.css │ │ │ │ │ ├── docs.gif │ │ │ │ │ ├── fix.gif │ │ │ │ │ ├── fonts │ │ │ │ │ │ ├── OpenSans400.woff │ │ │ │ │ │ ├── OpenSans400italic.woff │ │ │ │ │ │ ├── OpenSans600.woff │ │ │ │ │ │ ├── OpenSans600italic.woff │ │ │ │ │ │ ├── OpenSans700.woff │ │ │ │ │ │ ├── OpenSans700italic.woff │ │ │ │ │ │ └── fonts.css │ │ │ │ │ ├── tomcat.gif │ │ │ │ │ ├── tomcat.png │ │ │ │ │ ├── update.gif │ │ │ │ │ └── void.gif │ │ │ │ ├── index.html │ │ │ │ ├── introduction.html │ │ │ │ ├── jasper-howto.html │ │ │ │ ├── jdbc-pool.html │ │ │ │ ├── jndi-datasource-examples-howto.html │ │ │ │ ├── jndi-resources-howto.html │ │ │ │ ├── jspapi │ │ │ │ │ └── index.html │ │ │ │ ├── logging.html │ │ │ │ ├── manager-howto.html │ │ │ │ ├── maven-jars.html │ │ │ │ ├── mbeans-descriptors-howto.html │ │ │ │ ├── mbeans-descriptors.dtd │ │ │ │ ├── monitoring.html │ │ │ │ ├── proxy-howto.html │ │ │ │ ├── realm-howto.html │ │ │ │ ├── rewrite.html │ │ │ │ ├── security-howto.html │ │ │ │ ├── security-manager-howto.html │ │ │ │ ├── servletapi │ │ │ │ │ └── index.html │ │ │ │ ├── setup.html │ │ │ │ ├── ssi-howto.html │ │ │ │ ├── ssl-howto.html │ │ │ │ ├── tribes │ │ │ │ │ ├── developers.html │ │ │ │ │ ├── faq.html │ │ │ │ │ ├── interceptors.html │ │ │ │ │ ├── introduction.html │ │ │ │ │ ├── membership.html │ │ │ │ │ ├── setup.html │ │ │ │ │ ├── status.html │ │ │ │ │ └── transport.html │ │ │ │ ├── virtual-hosting-howto.html │ │ │ │ ├── web-socket-howto.html │ │ │ │ ├── websocketapi │ │ │ │ │ └── index.html │ │ │ │ ├── windows-auth-howto.html │ │ │ │ └── windows-service-howto.html │ │ │ ├── examples │ │ │ │ ├── WEB-INF │ │ │ │ │ ├── classes │ │ │ │ │ │ ├── CookieExample.class │ │ │ │ │ │ ├── CookieExample.java │ │ │ │ │ │ ├── HelloWorldExample.class │ │ │ │ │ │ ├── HelloWorldExample.java │ │ │ │ │ │ ├── LocalStrings.properties │ │ │ │ │ │ ├── LocalStrings_en.properties │ │ │ │ │ │ ├── LocalStrings_es.properties │ │ │ │ │ │ ├── LocalStrings_fr.properties │ │ │ │ │ │ ├── LocalStrings_pt.properties │ │ │ │ │ │ ├── RequestHeaderExample.class │ │ │ │ │ │ ├── RequestHeaderExample.java │ │ │ │ │ │ ├── RequestInfoExample.class │ │ │ │ │ │ ├── RequestInfoExample.java │ │ │ │ │ │ ├── RequestParamExample.class │ │ │ │ │ │ ├── RequestParamExample.java │ │ │ │ │ │ ├── ServletToJsp.class │ │ │ │ │ │ ├── ServletToJsp.java │ │ │ │ │ │ ├── SessionExample.class │ │ │ │ │ │ ├── SessionExample.java │ │ │ │ │ │ ├── async │ │ │ │ │ │ │ ├── Async0$1.class │ │ │ │ │ │ │ ├── Async0.class │ │ │ │ │ │ │ ├── Async0.java │ │ │ │ │ │ │ ├── Async1$1.class │ │ │ │ │ │ │ ├── Async1.class │ │ │ │ │ │ │ ├── Async1.java │ │ │ │ │ │ │ ├── Async2$1.class │ │ │ │ │ │ │ ├── Async2.class │ │ │ │ │ │ │ ├── Async2.java │ │ │ │ │ │ │ ├── Async3.class │ │ │ │ │ │ │ ├── Async3.java │ │ │ │ │ │ │ ├── AsyncStockContextListener.class │ │ │ │ │ │ │ ├── AsyncStockContextListener.java │ │ │ │ │ │ │ ├── AsyncStockServlet.class │ │ │ │ │ │ │ ├── AsyncStockServlet.java │ │ │ │ │ │ │ ├── Stockticker$Stock.class │ │ │ │ │ │ │ ├── Stockticker$TickListener.class │ │ │ │ │ │ │ ├── Stockticker.class │ │ │ │ │ │ │ └── Stockticker.java │ │ │ │ │ │ ├── cal │ │ │ │ │ │ │ ├── Entries.class │ │ │ │ │ │ │ ├── Entries.java │ │ │ │ │ │ │ ├── Entry.class │ │ │ │ │ │ │ ├── Entry.java │ │ │ │ │ │ │ ├── JspCalendar.class │ │ │ │ │ │ │ ├── JspCalendar.java │ │ │ │ │ │ │ ├── TableBean.class │ │ │ │ │ │ │ └── TableBean.java │ │ │ │ │ │ ├── checkbox │ │ │ │ │ │ │ ├── CheckTest.class │ │ │ │ │ │ │ └── CheckTest.java │ │ │ │ │ │ ├── colors │ │ │ │ │ │ │ ├── ColorGameBean.class │ │ │ │ │ │ │ └── ColorGameBean.java │ │ │ │ │ │ ├── compressionFilters │ │ │ │ │ │ │ ├── CompressionFilter.class │ │ │ │ │ │ │ ├── CompressionFilter.java │ │ │ │ │ │ │ ├── CompressionFilterTestServlet.class │ │ │ │ │ │ │ ├── CompressionFilterTestServlet.java │ │ │ │ │ │ │ ├── CompressionResponseStream.class │ │ │ │ │ │ │ ├── CompressionResponseStream.java │ │ │ │ │ │ │ ├── CompressionServletResponseWrapper.class │ │ │ │ │ │ │ └── CompressionServletResponseWrapper.java │ │ │ │ │ │ ├── dates │ │ │ │ │ │ │ ├── JspCalendar.class │ │ │ │ │ │ │ └── JspCalendar.java │ │ │ │ │ │ ├── error │ │ │ │ │ │ │ ├── Smart.class │ │ │ │ │ │ │ └── Smart.java │ │ │ │ │ │ ├── examples │ │ │ │ │ │ │ ├── ExampleTagBase.class │ │ │ │ │ │ │ ├── ExampleTagBase.java │ │ │ │ │ │ │ ├── FooTag.class │ │ │ │ │ │ │ ├── FooTag.java │ │ │ │ │ │ │ ├── FooTagExtraInfo.class │ │ │ │ │ │ │ ├── FooTagExtraInfo.java │ │ │ │ │ │ │ ├── LogTag.class │ │ │ │ │ │ │ ├── LogTag.java │ │ │ │ │ │ │ ├── ShowSource.class │ │ │ │ │ │ │ ├── ShowSource.java │ │ │ │ │ │ │ ├── ValuesTag.class │ │ │ │ │ │ │ └── ValuesTag.java │ │ │ │ │ │ ├── filters │ │ │ │ │ │ │ ├── ExampleFilter.class │ │ │ │ │ │ │ └── ExampleFilter.java │ │ │ │ │ │ ├── http2 │ │ │ │ │ │ │ ├── SimpleImagePush.class │ │ │ │ │ │ │ └── SimpleImagePush.java │ │ │ │ │ │ ├── jsp2 │ │ │ │ │ │ │ └── examples │ │ │ │ │ │ │ │ ├── BookBean.class │ │ │ │ │ │ │ │ ├── BookBean.java │ │ │ │ │ │ │ │ ├── FooBean.class │ │ │ │ │ │ │ │ ├── FooBean.java │ │ │ │ │ │ │ │ ├── ValuesBean.class │ │ │ │ │ │ │ │ ├── ValuesBean.java │ │ │ │ │ │ │ │ ├── el │ │ │ │ │ │ │ │ ├── Functions.class │ │ │ │ │ │ │ │ └── Functions.java │ │ │ │ │ │ │ │ └── simpletag │ │ │ │ │ │ │ │ ├── EchoAttributesTag.class │ │ │ │ │ │ │ │ ├── EchoAttributesTag.java │ │ │ │ │ │ │ │ ├── FindBookSimpleTag.class │ │ │ │ │ │ │ │ ├── FindBookSimpleTag.java │ │ │ │ │ │ │ │ ├── HelloWorldSimpleTag.class │ │ │ │ │ │ │ │ ├── HelloWorldSimpleTag.java │ │ │ │ │ │ │ │ ├── RepeatSimpleTag.class │ │ │ │ │ │ │ │ ├── RepeatSimpleTag.java │ │ │ │ │ │ │ │ ├── ShuffleSimpleTag.class │ │ │ │ │ │ │ │ ├── ShuffleSimpleTag.java │ │ │ │ │ │ │ │ ├── TileSimpleTag.class │ │ │ │ │ │ │ │ └── TileSimpleTag.java │ │ │ │ │ │ ├── listeners │ │ │ │ │ │ │ ├── ContextListener.class │ │ │ │ │ │ │ ├── ContextListener.java │ │ │ │ │ │ │ ├── SessionListener.class │ │ │ │ │ │ │ └── SessionListener.java │ │ │ │ │ │ ├── nonblocking │ │ │ │ │ │ │ ├── ByteCounter$1.class │ │ │ │ │ │ │ ├── ByteCounter$CounterListener.class │ │ │ │ │ │ │ ├── ByteCounter.class │ │ │ │ │ │ │ ├── ByteCounter.java │ │ │ │ │ │ │ ├── NumberWriter$1.class │ │ │ │ │ │ │ ├── NumberWriter$NumberWriterListener.class │ │ │ │ │ │ │ ├── NumberWriter.class │ │ │ │ │ │ │ └── NumberWriter.java │ │ │ │ │ │ ├── num │ │ │ │ │ │ │ ├── NumberGuessBean.class │ │ │ │ │ │ │ └── NumberGuessBean.java │ │ │ │ │ │ ├── sessions │ │ │ │ │ │ │ ├── DummyCart.class │ │ │ │ │ │ │ └── DummyCart.java │ │ │ │ │ │ ├── trailers │ │ │ │ │ │ │ ├── ResponseTrailers$1.class │ │ │ │ │ │ │ ├── ResponseTrailers$TrailerFieldSupplier.class │ │ │ │ │ │ │ ├── ResponseTrailers.class │ │ │ │ │ │ │ └── ResponseTrailers.java │ │ │ │ │ │ ├── util │ │ │ │ │ │ │ ├── CookieFilter.class │ │ │ │ │ │ │ ├── CookieFilter.java │ │ │ │ │ │ │ ├── HTMLFilter.class │ │ │ │ │ │ │ └── HTMLFilter.java │ │ │ │ │ │ ├── validators │ │ │ │ │ │ │ ├── DebugValidator.class │ │ │ │ │ │ │ └── DebugValidator.java │ │ │ │ │ │ └── websocket │ │ │ │ │ │ │ ├── ExamplesConfig.class │ │ │ │ │ │ │ ├── ExamplesConfig.java │ │ │ │ │ │ │ ├── chat │ │ │ │ │ │ │ ├── ChatAnnotation.class │ │ │ │ │ │ │ └── ChatAnnotation.java │ │ │ │ │ │ │ ├── drawboard │ │ │ │ │ │ │ ├── Client$1.class │ │ │ │ │ │ │ ├── Client.class │ │ │ │ │ │ │ ├── Client.java │ │ │ │ │ │ │ ├── DrawMessage$ParseException.class │ │ │ │ │ │ │ ├── DrawMessage.class │ │ │ │ │ │ │ ├── DrawMessage.java │ │ │ │ │ │ │ ├── DrawboardContextListener.class │ │ │ │ │ │ │ ├── DrawboardContextListener.java │ │ │ │ │ │ │ ├── DrawboardEndpoint$1.class │ │ │ │ │ │ │ ├── DrawboardEndpoint$2.class │ │ │ │ │ │ │ ├── DrawboardEndpoint$3$1.class │ │ │ │ │ │ │ ├── DrawboardEndpoint$3.class │ │ │ │ │ │ │ ├── DrawboardEndpoint.class │ │ │ │ │ │ │ ├── DrawboardEndpoint.java │ │ │ │ │ │ │ ├── Room$1$1.class │ │ │ │ │ │ │ ├── Room$1.class │ │ │ │ │ │ │ ├── Room$2.class │ │ │ │ │ │ │ ├── Room$MessageType.class │ │ │ │ │ │ │ ├── Room$Player.class │ │ │ │ │ │ │ ├── Room.class │ │ │ │ │ │ │ ├── Room.java │ │ │ │ │ │ │ └── wsmessages │ │ │ │ │ │ │ │ ├── AbstractWebsocketMessage.class │ │ │ │ │ │ │ │ ├── AbstractWebsocketMessage.java │ │ │ │ │ │ │ │ ├── BinaryWebsocketMessage.class │ │ │ │ │ │ │ │ ├── BinaryWebsocketMessage.java │ │ │ │ │ │ │ │ ├── CloseWebsocketMessage.class │ │ │ │ │ │ │ │ ├── CloseWebsocketMessage.java │ │ │ │ │ │ │ │ ├── StringWebsocketMessage.class │ │ │ │ │ │ │ │ └── StringWebsocketMessage.java │ │ │ │ │ │ │ ├── echo │ │ │ │ │ │ │ ├── EchoAnnotation.class │ │ │ │ │ │ │ ├── EchoAnnotation.java │ │ │ │ │ │ │ ├── EchoAsyncAnnotation$1.class │ │ │ │ │ │ │ ├── EchoAsyncAnnotation$CompletedFuture.class │ │ │ │ │ │ │ ├── EchoAsyncAnnotation.class │ │ │ │ │ │ │ ├── EchoAsyncAnnotation.java │ │ │ │ │ │ │ ├── EchoEndpoint$1.class │ │ │ │ │ │ │ ├── EchoEndpoint$EchoMessageHandlerBinary.class │ │ │ │ │ │ │ ├── EchoEndpoint$EchoMessageHandlerText.class │ │ │ │ │ │ │ ├── EchoEndpoint.class │ │ │ │ │ │ │ ├── EchoEndpoint.java │ │ │ │ │ │ │ ├── EchoStreamAnnotation.class │ │ │ │ │ │ │ ├── EchoStreamAnnotation.java │ │ │ │ │ │ │ └── servers.json │ │ │ │ │ │ │ └── snake │ │ │ │ │ │ │ ├── Direction.class │ │ │ │ │ │ │ ├── Direction.java │ │ │ │ │ │ │ ├── Location$1.class │ │ │ │ │ │ │ ├── Location.class │ │ │ │ │ │ │ ├── Location.java │ │ │ │ │ │ │ ├── Snake.class │ │ │ │ │ │ │ ├── Snake.java │ │ │ │ │ │ │ ├── SnakeAnnotation.class │ │ │ │ │ │ │ ├── SnakeAnnotation.java │ │ │ │ │ │ │ ├── SnakeTimer$1.class │ │ │ │ │ │ │ ├── SnakeTimer.class │ │ │ │ │ │ │ └── SnakeTimer.java │ │ │ │ │ ├── jsp │ │ │ │ │ │ ├── applet │ │ │ │ │ │ │ └── Clock2.java │ │ │ │ │ │ ├── debug-taglib.tld │ │ │ │ │ │ └── example-taglib.tld │ │ │ │ │ ├── jsp2 │ │ │ │ │ │ └── jsp2-example-taglib.tld │ │ │ │ │ ├── lib │ │ │ │ │ │ ├── taglibs-standard-impl-1.2.5.jar │ │ │ │ │ │ └── taglibs-standard-spec-1.2.5.jar │ │ │ │ │ ├── tags │ │ │ │ │ │ ├── displayProducts.tag │ │ │ │ │ │ ├── helloWorld.tag │ │ │ │ │ │ └── panel.tag │ │ │ │ │ └── web.xml │ │ │ │ ├── index.html │ │ │ │ ├── jsp │ │ │ │ │ ├── async │ │ │ │ │ │ ├── async1.jsp │ │ │ │ │ │ ├── async1.jsp.html │ │ │ │ │ │ ├── async3.jsp │ │ │ │ │ │ ├── async3.jsp.html │ │ │ │ │ │ ├── index.jsp │ │ │ │ │ │ └── index.jsp.html │ │ │ │ │ ├── cal │ │ │ │ │ │ ├── Entries.java.html │ │ │ │ │ │ ├── Entry.java.html │ │ │ │ │ │ ├── JspCalendar.java.html │ │ │ │ │ │ ├── TableBean.java.html │ │ │ │ │ │ ├── cal1.jsp │ │ │ │ │ │ ├── cal1.jsp.html │ │ │ │ │ │ ├── cal2.jsp │ │ │ │ │ │ ├── cal2.jsp.html │ │ │ │ │ │ ├── calendar.html │ │ │ │ │ │ └── login.html │ │ │ │ │ ├── checkbox │ │ │ │ │ │ ├── CheckTest.html │ │ │ │ │ │ ├── check.html │ │ │ │ │ │ ├── checkresult.jsp │ │ │ │ │ │ ├── checkresult.jsp.html │ │ │ │ │ │ └── cresult.html │ │ │ │ │ ├── colors │ │ │ │ │ │ ├── ColorGameBean.html │ │ │ │ │ │ ├── clr.html │ │ │ │ │ │ ├── colors.html │ │ │ │ │ │ ├── colrs.jsp │ │ │ │ │ │ └── colrs.jsp.html │ │ │ │ │ ├── dates │ │ │ │ │ │ ├── date.html │ │ │ │ │ │ ├── date.jsp │ │ │ │ │ │ └── date.jsp.html │ │ │ │ │ ├── error │ │ │ │ │ │ ├── er.html │ │ │ │ │ │ ├── err.jsp │ │ │ │ │ │ ├── err.jsp.html │ │ │ │ │ │ ├── error.html │ │ │ │ │ │ ├── errorpge.jsp │ │ │ │ │ │ └── errorpge.jsp.html │ │ │ │ │ ├── forward │ │ │ │ │ │ ├── forward.jsp │ │ │ │ │ │ ├── forward.jsp.html │ │ │ │ │ │ ├── fwd.html │ │ │ │ │ │ ├── one.jsp │ │ │ │ │ │ ├── one.jsp.html │ │ │ │ │ │ └── two.html │ │ │ │ │ ├── images │ │ │ │ │ │ ├── code.gif │ │ │ │ │ │ ├── execute.gif │ │ │ │ │ │ └── return.gif │ │ │ │ │ ├── include │ │ │ │ │ │ ├── foo.html │ │ │ │ │ │ ├── foo.jsp │ │ │ │ │ │ ├── foo.jsp.html │ │ │ │ │ │ ├── inc.html │ │ │ │ │ │ ├── include.jsp │ │ │ │ │ │ └── include.jsp.html │ │ │ │ │ ├── index.html │ │ │ │ │ ├── jsp2 │ │ │ │ │ │ ├── el │ │ │ │ │ │ │ ├── Functions.java.html │ │ │ │ │ │ │ ├── ValuesBean.java.html │ │ │ │ │ │ │ ├── ValuesTag.java.html │ │ │ │ │ │ │ ├── basic-arithmetic.html │ │ │ │ │ │ │ ├── basic-arithmetic.jsp │ │ │ │ │ │ │ ├── basic-arithmetic.jsp.html │ │ │ │ │ │ │ ├── basic-comparisons.html │ │ │ │ │ │ │ ├── basic-comparisons.jsp │ │ │ │ │ │ │ ├── basic-comparisons.jsp.html │ │ │ │ │ │ │ ├── composite.html │ │ │ │ │ │ │ ├── composite.jsp │ │ │ │ │ │ │ ├── composite.jsp.html │ │ │ │ │ │ │ ├── functions.html │ │ │ │ │ │ │ ├── functions.jsp │ │ │ │ │ │ │ ├── functions.jsp.html │ │ │ │ │ │ │ ├── implicit-objects.html │ │ │ │ │ │ │ ├── implicit-objects.jsp │ │ │ │ │ │ │ └── implicit-objects.jsp.html │ │ │ │ │ │ ├── jspattribute │ │ │ │ │ │ │ ├── FooBean.java.html │ │ │ │ │ │ │ ├── HelloWorldSimpleTag.java.html │ │ │ │ │ │ │ ├── ShuffleSimpleTag.java.html │ │ │ │ │ │ │ ├── TileSimpleTag.java.html │ │ │ │ │ │ │ ├── jspattribute.html │ │ │ │ │ │ │ ├── jspattribute.jsp │ │ │ │ │ │ │ ├── jspattribute.jsp.html │ │ │ │ │ │ │ ├── shuffle.html │ │ │ │ │ │ │ ├── shuffle.jsp │ │ │ │ │ │ │ └── shuffle.jsp.html │ │ │ │ │ │ ├── jspx │ │ │ │ │ │ │ ├── basic.html │ │ │ │ │ │ │ ├── basic.jspx │ │ │ │ │ │ │ ├── basic.jspx.html │ │ │ │ │ │ │ ├── svgexample.html │ │ │ │ │ │ │ ├── textRotate.html │ │ │ │ │ │ │ ├── textRotate.jpg │ │ │ │ │ │ │ ├── textRotate.jspx │ │ │ │ │ │ │ └── textRotate.jspx.html │ │ │ │ │ │ ├── misc │ │ │ │ │ │ │ ├── EchoAttributesTag.java.html │ │ │ │ │ │ │ ├── coda.jspf │ │ │ │ │ │ │ ├── coda.jspf.html │ │ │ │ │ │ │ ├── config.html │ │ │ │ │ │ │ ├── config.jsp │ │ │ │ │ │ │ ├── config.jsp.html │ │ │ │ │ │ │ ├── dynamicattrs.html │ │ │ │ │ │ │ ├── dynamicattrs.jsp │ │ │ │ │ │ │ ├── dynamicattrs.jsp.html │ │ │ │ │ │ │ ├── prelude.jspf │ │ │ │ │ │ │ └── prelude.jspf.html │ │ │ │ │ │ ├── simpletag │ │ │ │ │ │ │ ├── BookBean.java.html │ │ │ │ │ │ │ ├── FindBookSimpleTag.java.html │ │ │ │ │ │ │ ├── Functions.java.html │ │ │ │ │ │ │ ├── HelloWorldSimpleTag.java.html │ │ │ │ │ │ │ ├── RepeatSimpleTag.java.html │ │ │ │ │ │ │ ├── book.html │ │ │ │ │ │ │ ├── book.jsp │ │ │ │ │ │ │ ├── book.jsp.html │ │ │ │ │ │ │ ├── hello.html │ │ │ │ │ │ │ ├── hello.jsp │ │ │ │ │ │ │ ├── hello.jsp.html │ │ │ │ │ │ │ ├── repeat.html │ │ │ │ │ │ │ ├── repeat.jsp │ │ │ │ │ │ │ └── repeat.jsp.html │ │ │ │ │ │ └── tagfiles │ │ │ │ │ │ │ ├── displayProducts.tag.html │ │ │ │ │ │ │ ├── hello.html │ │ │ │ │ │ │ ├── hello.jsp │ │ │ │ │ │ │ ├── hello.jsp.html │ │ │ │ │ │ │ ├── helloWorld.tag.html │ │ │ │ │ │ │ ├── panel.html │ │ │ │ │ │ │ ├── panel.jsp │ │ │ │ │ │ │ ├── panel.jsp.html │ │ │ │ │ │ │ ├── panel.tag.html │ │ │ │ │ │ │ ├── products.html │ │ │ │ │ │ │ ├── products.jsp │ │ │ │ │ │ │ └── products.jsp.html │ │ │ │ │ ├── jsptoserv │ │ │ │ │ │ ├── ServletToJsp.java.html │ │ │ │ │ │ ├── hello.jsp │ │ │ │ │ │ ├── hello.jsp.html │ │ │ │ │ │ ├── jsptoservlet.jsp │ │ │ │ │ │ ├── jsptoservlet.jsp.html │ │ │ │ │ │ └── jts.html │ │ │ │ │ ├── num │ │ │ │ │ │ ├── numguess.html │ │ │ │ │ │ ├── numguess.jsp │ │ │ │ │ │ └── numguess.jsp.html │ │ │ │ │ ├── plugin │ │ │ │ │ │ ├── applet │ │ │ │ │ │ │ ├── Clock2.class │ │ │ │ │ │ │ └── Clock2.java │ │ │ │ │ │ ├── plugin.html │ │ │ │ │ │ ├── plugin.jsp │ │ │ │ │ │ └── plugin.jsp.html │ │ │ │ │ ├── security │ │ │ │ │ │ └── protected │ │ │ │ │ │ │ ├── error.jsp │ │ │ │ │ │ │ ├── error.jsp.html │ │ │ │ │ │ │ ├── index.jsp │ │ │ │ │ │ │ ├── index.jsp.html │ │ │ │ │ │ │ ├── login.jsp │ │ │ │ │ │ │ └── login.jsp.html │ │ │ │ │ ├── sessions │ │ │ │ │ │ ├── DummyCart.html │ │ │ │ │ │ ├── carts.html │ │ │ │ │ │ ├── carts.jsp │ │ │ │ │ │ ├── carts.jsp.html │ │ │ │ │ │ └── crt.html │ │ │ │ │ ├── simpletag │ │ │ │ │ │ ├── foo.html │ │ │ │ │ │ ├── foo.jsp │ │ │ │ │ │ └── foo.jsp.html │ │ │ │ │ ├── snp │ │ │ │ │ │ ├── snoop.html │ │ │ │ │ │ ├── snoop.jsp │ │ │ │ │ │ └── snoop.jsp.html │ │ │ │ │ ├── source.jsp │ │ │ │ │ ├── source.jsp.html │ │ │ │ │ ├── tagplugin │ │ │ │ │ │ ├── choose.html │ │ │ │ │ │ ├── choose.jsp │ │ │ │ │ │ ├── choose.jsp.html │ │ │ │ │ │ ├── foreach.html │ │ │ │ │ │ ├── foreach.jsp │ │ │ │ │ │ ├── foreach.jsp.html │ │ │ │ │ │ ├── howto.html │ │ │ │ │ │ ├── if.html │ │ │ │ │ │ ├── if.jsp │ │ │ │ │ │ ├── if.jsp.html │ │ │ │ │ │ └── notes.html │ │ │ │ │ └── xml │ │ │ │ │ │ ├── xml.html │ │ │ │ │ │ ├── xml.jsp │ │ │ │ │ │ └── xml.jsp.html │ │ │ │ ├── servlets │ │ │ │ │ ├── cookies.html │ │ │ │ │ ├── helloworld.html │ │ │ │ │ ├── images │ │ │ │ │ │ ├── code.gif │ │ │ │ │ │ ├── execute.gif │ │ │ │ │ │ └── return.gif │ │ │ │ │ ├── index.html │ │ │ │ │ ├── nonblocking │ │ │ │ │ │ └── bytecounter.html │ │ │ │ │ ├── reqheaders.html │ │ │ │ │ ├── reqinfo.html │ │ │ │ │ ├── reqparams.html │ │ │ │ │ └── sessions.html │ │ │ │ └── websocket │ │ │ │ │ ├── chat.xhtml │ │ │ │ │ ├── drawboard.xhtml │ │ │ │ │ ├── echo.xhtml │ │ │ │ │ ├── index.xhtml │ │ │ │ │ └── snake.xhtml │ │ │ ├── host-manager │ │ │ │ ├── META-INF │ │ │ │ │ └── context.xml │ │ │ │ ├── WEB-INF │ │ │ │ │ ├── jsp │ │ │ │ │ │ ├── 401.jsp │ │ │ │ │ │ ├── 403.jsp │ │ │ │ │ │ └── 404.jsp │ │ │ │ │ └── web.xml │ │ │ │ ├── images │ │ │ │ │ ├── asf-logo.svg │ │ │ │ │ └── tomcat.gif │ │ │ │ ├── index.jsp │ │ │ │ └── manager.xml │ │ │ └── manager │ │ │ │ ├── META-INF │ │ │ │ └── context.xml │ │ │ │ ├── WEB-INF │ │ │ │ ├── jsp │ │ │ │ │ ├── 401.jsp │ │ │ │ │ ├── 403.jsp │ │ │ │ │ ├── 404.jsp │ │ │ │ │ ├── connectorCerts.jsp │ │ │ │ │ ├── connectorCiphers.jsp │ │ │ │ │ ├── connectorTrustedCerts.jsp │ │ │ │ │ ├── sessionDetail.jsp │ │ │ │ │ └── sessionsList.jsp │ │ │ │ └── web.xml │ │ │ │ ├── images │ │ │ │ ├── asf-logo.svg │ │ │ │ └── tomcat.gif │ │ │ │ ├── index.jsp │ │ │ │ ├── status.xsd │ │ │ │ └── xform.xsl │ │ │ └── work │ │ │ └── Catalina │ │ │ └── localhost │ │ │ └── ROOT │ │ │ └── org │ │ │ └── apache │ │ │ └── jsp │ │ │ ├── index_jsp.class │ │ │ └── index_jsp.java │ ├── tomcat │ │ ├── Dockerfile │ │ ├── server.xml │ │ ├── supervisord.conf │ │ ├── tomcat-users.xml │ │ ├── tomcat-wrapper.sh │ │ └── webapps-Root-index.jsp │ └── ubuntu │ │ └── Dockerfile └── swarm │ ├── config-files │ ├── README.md │ ├── edgeserver.yml │ ├── eurekaserver.yml │ ├── orderlobaservice.yml │ ├── orderservice.yml │ ├── productlobaservice.yml │ ├── productservice.yml │ ├── shoppingcartlobaservice.yml │ ├── shoppingcartservice.yml │ ├── turbinedemo.yml │ ├── userauthlobaservice.yml │ └── userauthservice.yml │ ├── core │ ├── auth-loba │ │ └── Dockerfile │ ├── auth-service │ │ └── Dockerfile │ ├── order-loba │ │ └── Dockerfile │ ├── order-service │ │ └── Dockerfile │ ├── product-loba │ │ └── Dockerfile │ ├── product-service │ │ └── Dockerfile │ ├── shopping-cart-service │ │ └── Dockerfile │ └── shopping-loba │ │ └── Dockerfile │ └── infra │ ├── api-gateway │ └── Dockerfile │ ├── config-server │ └── Dockerfile │ └── service-discovery │ └── Dockerfile ├── images ├── K8s-Day-1-WS.jpg ├── K8s-Day-Schedule.jpg ├── K8s-Day2.jpg ├── K8s-Day3.jpg └── K8s-Workshop-Team.jpg ├── k8_workshop_canary_with_v1.0.sh ├── k8_workshop_delete.sh ├── k8_workshop_istio_v1.0.sh ├── k8_workshop_v1.0.sh ├── k8_workshop_v1.1.sh └── yaml ├── Logging-Monitoring ├── application-tracing │ └── README.md └── metrics_grafana │ ├── README.md │ ├── grafana.yaml │ ├── heapster.yaml │ ├── influxdb.yaml │ ├── productreview-deployment.yaml │ └── productreview-service.yaml ├── README.md ├── Service-Mesh-1-Routing ├── microservice │ ├── product │ │ ├── product-deployment.yaml │ │ ├── product-deployment_without_mysql.yaml │ │ ├── product-horizontal-scaler.yaml │ │ ├── product-secret.yaml │ │ └── product-service.yaml │ └── productreview │ │ ├── productreview-deployment.yaml │ │ └── productreview-service.yaml ├── product │ ├── product-destination.yaml │ ├── product-service.yaml │ ├── product-v1.yaml │ ├── product-v2.yaml │ └── product-virtualservice.yaml ├── productreview │ ├── productreview-service.yaml │ └── productreview-v1.yaml ├── shopping-ns.yaml ├── shoppingportal-gw.yaml ├── shoppingportal-virtualservice-weight.yaml ├── shoppingportal-virtualservice.yaml └── ui │ ├── ui-destination.yaml │ ├── ui-service.yaml │ ├── ui-v1.yaml │ └── ui-v2.yaml ├── Service-Mesh-2-Security ├── README.md ├── circuit-breaker │ ├── circuit-dr-product.yml │ ├── productreview-deploy.yml │ ├── productreviewservice.yml │ └── shoppingportal-ns.yml ├── istio_netflix │ ├── config-server-destination.yaml │ ├── config-server-service.yaml │ ├── config-server.yaml │ ├── eureka-server-destination.yaml │ ├── eureka-server-service.yaml │ ├── eureka-server.yaml │ ├── product-service.yaml │ ├── productservice-svc.yaml │ ├── shopping-ns.yaml │ ├── shoppingportal-gw.yaml │ └── shoppingportal-virtualservice.yaml ├── jwks.json ├── jwksnew.json ├── jwt-auth │ ├── README.md │ ├── keys │ │ ├── .jwks.json.swp │ │ ├── .jwksnew.json.swp │ │ ├── gen-jwt.py │ │ ├── jwks5.json │ │ ├── jwkslatest.json │ │ ├── jwksnew.json │ │ └── key.pem │ ├── product-destination.yaml │ ├── product-v1.yaml │ ├── shopping-tls-enable.yml │ ├── shoppingportal-gw.yaml │ ├── shoppingportal-jwt-enable.yaml │ └── shoppingportal-virtualservice-jwt.yaml ├── jwt-demo-token.jwt ├── jwt.json ├── mtls │ ├── mtls-ns-wide.yml │ ├── product-service.yaml │ ├── product-v1.yaml │ ├── productreview-service.yaml │ ├── productreview-v1.yaml │ ├── productreviewms-dr-mtls.yml │ ├── shopping-ns.yaml │ ├── shopping-tls-enable.yml │ └── shopping2-ns.yaml ├── rbac-mtls-shoppingportal-example │ ├── allow-productservice_get.yml │ ├── allow-ui_get.yml │ ├── allow_productreview_get.yml │ ├── product-destination.yaml │ ├── product-service.yaml │ ├── product-v1.yaml │ ├── productreview-service.yaml │ ├── productreview-v1.yaml │ ├── productreviewms-dr-mtls.yml │ ├── rbac-config-ON.yaml │ ├── sa-define.yml │ ├── shopping-ns.yaml │ ├── shoppingportal-gw.yaml │ ├── shoppingportal-virtualservice.yaml │ ├── ui-destination.yaml │ ├── ui-service.yaml │ ├── ui-v1.yaml │ └── ui-v2.yaml ├── rbac │ ├── k8-service-role-binding.yml │ ├── ns-shoppingportal2.yml │ ├── product-service.yaml │ ├── product-v1.yaml │ ├── productreview-service.yaml │ ├── productreview-v1.yaml │ ├── productservice-servicerole-binding.yml │ ├── rbac-config-ON.yaml │ ├── sa-define.yml │ └── shopping-ns.yaml └── timeout-fault-injection │ ├── README.md │ ├── fault-injection-virtualservice.yaml │ ├── productreview-service.yaml │ ├── productreview-v1.yaml │ ├── shoppingportal-vs-fault-abort.yml │ ├── shoppingportal-vs-fault.yml │ └── timeout-virtualservice.yaml ├── k8s-1-Basic ├── 1-namespace │ ├── READMe.md │ └── hello-ns.yml ├── 2-hello-world-pod │ ├── README.md │ ├── hello-pod.yml │ ├── hello-svc.yml │ └── hello-v1.1-pod.yaml ├── 3-replication-set │ ├── hello-rs.yml │ └── lb_service.yml ├── 4-deployment │ ├── README.md │ ├── productreview-deployment.yaml │ └── productreview-service.yaml ├── 5-service-discovery │ ├── README.md │ ├── product-deployment.yaml │ ├── product-secret.yaml │ ├── product-service.yaml │ ├── productreview-deployment.yaml │ └── productreview-service.yaml ├── 6-clusterip-svc │ ├── hello-clusterip-svc.yml │ └── hello-pod.yml ├── 7-rollout-versions │ ├── README.md │ ├── hello-dep.yml │ ├── hello-svc.yml │ └── hello-v1.1-dep.yaml ├── 8-autoscaling-hpa │ ├── README.md │ ├── auto-scaling-ex-2.yaml │ ├── product-horizontal-scaler.yaml │ ├── productreview-deployment.yaml │ ├── productreview-service.yaml │ └── shoppingportal-hpa.yaml ├── 9-app-2-shopping-portal │ ├── hello-ing.yml │ ├── hello-world-ns.yml │ ├── shopping-ingress-aws.yaml │ ├── shopping-ingress.yaml │ ├── shoppingportal-gke-ingress.yml │ ├── shoppiny-ns copy.yaml │ └── shoppiny-ns.yaml └── 9-app-2-ui │ ├── k8uiworkshop-deployment_canary_with_v1.0.yaml │ ├── k8uiworkshop-deploymentv1.0.yaml │ ├── k8uiworkshop-deploymentv1.1.yaml │ └── k8uiworkshop-service.yaml ├── k8s-2-App-setup ├── 2-configMap │ ├── configMap-literals.yml │ ├── configmap-vol-pod.yml │ └── configmaptest-pod.yml └── 4-secrets │ ├── README.md │ ├── productreview-deployment.yaml │ ├── productreview-secret.yaml │ ├── productreview-service.yaml │ └── secrets_stringdata.yml ├── k8s-3-Networking ├── 1-network-policy │ ├── 01-policy-demo-ns.yml │ ├── 02-networking-ns.yml │ ├── 03-web-pod.yml │ ├── 04-web-svc-networking.yml │ ├── 05-prod-pod.yml │ ├── 06-prod-ntw-svc.yml │ ├── 07-pod-np.yml │ ├── 08-prod-pd-pod.yml │ ├── 09-nginx-policydemo-svc.yml │ ├── 10-prod-svc-policy-demo.yml │ ├── 11-hello-pod.yml │ ├── 12-hello-svc.yml │ ├── 13-hello-pod-pd.yml │ ├── 14-hello-svc-pd.yml │ ├── 20-web-deny-all.yaml │ ├── 21-web-allow-prod.yml │ ├── 22-deny-from-other-namespaces.yaml │ ├── 23-web-allow-from-all-ns.yml │ ├── 24-allowall-ns.yml │ ├── README.md │ ├── allow-ns.policy.yml │ ├── block-np.yml │ ├── pod-np.yml │ └── policy-allow-pod.yml └── 2-cilium_demo │ ├── 01-policy-demo-ns.yml │ ├── 02-networking-ns.yml │ ├── 03-web-pod.yml │ ├── 04-web-svc-networking.yml │ ├── 05-prod-pod.yml │ ├── 06-prod-ntw-svc.yml │ ├── 07-pod-np.yml │ ├── 08-prod-pd-pod.yml │ ├── 09-nginx-policydemo-svc.yml │ ├── 10-prod-svc-policy-demo.yml │ ├── 11-hello-pod.yml │ ├── 12-hello-svc.yml │ ├── 13-hello-pod-pd.yml │ ├── 14-hello-svc-pd.yml │ ├── 20-web-deny-all.yaml │ ├── 21-web-allow-prod.yml │ ├── 22-deny-from-other-namespaces.yaml │ ├── 23-web-allow-from-all-ns.yml │ ├── 24-allowall-ns.yml │ ├── README.md │ ├── allow-2pod.yml │ ├── block-np.yml │ ├── cilium-allow-policy-demo-namespace.yml │ ├── cilium-product-productreview.yml │ ├── cilium_allow-within-namespace.yaml │ └── policy-allow-pod.yml ├── k8s-4-Advanced ├── Assigning Pods to Nodes │ ├── README.md │ └── pod-nginx-node.yml ├── external-services │ ├── README.md │ ├── endpoints.yml │ ├── ext-name-svc.yml │ └── hello-without-selector-svc.yml ├── jobs │ ├── README.md │ ├── cronjob.yml │ ├── hellokubernetes-job.yml │ └── perl-job.yml ├── liveness │ ├── README.md │ ├── productreview-deployment.yaml │ └── productreview-service.yaml ├── multipleport_services │ ├── hello-pod.yml │ └── multiport-svc.yml ├── mysqlfiles │ ├── mysql-dep.yaml │ ├── mysql-pv.yaml │ ├── mysql-pvc.yaml │ ├── mysql-secret.yaml │ └── mysql-svc.yaml └── stateful-set │ └── web.yaml ├── k8s-5-Volume ├── volume-Diagrams │ ├── K8s-Volume-1.jpg │ └── K8s-Volume-2.jpg ├── volume-aws │ ├── README.md │ ├── cleanup.sh │ ├── create_static_volume.sh │ ├── v-aws-omega-dep-dynamic.yml │ ├── v-aws-pvc-dynamic.yml │ ├── v-aws-pvc.yaml │ ├── v-aws-storage.yaml │ ├── v-aws-volume.yaml │ ├── v-omega-dep.yaml │ └── v-omega-ns.yaml ├── volume-examples │ ├── nfs-pvc.yml │ └── pod-volume.yml ├── volume-local │ ├── cleanup.sh │ ├── createLocalVolume.sh │ ├── v-local-dep-dynamic.yaml │ ├── v-local-dep.yaml │ ├── v-local-omega-ns.yaml │ ├── v-local-pvc-dynamic.yaml │ ├── v-local-pvc.yaml │ ├── v-local-storage.yaml │ └── v-local-volume.yaml ├── volume-nfs-gcppd-scenarios │ ├── README.MD │ ├── pv-nfs-rwx-1gb-disk.yaml │ ├── pv-nfs-rwx-2gb-disk.yaml │ ├── pv-nfs-rwx-3gb-disk.yaml │ ├── pv-nfs-rwx-4gb-disk.yaml │ ├── pvc-gce-pd-rwo-3gb-disk-tc1.yaml │ ├── pvc-nfs-rwx-1gb-disk.yaml │ ├── pvc-nfs-rwx-2gb-disk.yaml │ ├── pvc-nfs-rwx-3gb-disk.yaml │ ├── pvc-nfs-rwx-4gb-disk.yaml │ ├── sc-gce-pd-disk-tc1.yaml │ ├── tc1-gcp-pd-rwo-deploy.yaml │ ├── tc2-nfs-rom-deploy.yaml │ ├── tc2-nfs-rom-pv.yaml │ ├── tc2-nfs-rom-pvc-5gb.yaml │ ├── tc2-nfs-rwm-deploy.yaml │ ├── tc2-nfs-rwm-pv.yaml │ ├── tc2-nfs-rwm-pvc-10gb.yaml │ ├── tc3-gce-pd-rwo-pvc-3gb.yaml │ ├── tc3-gce-pd-rwo-sc.yaml │ ├── tc3-gce-pd-rwo-statefulset.yaml │ ├── tc4-nfs-rwm-pv.yaml │ ├── tc4-nfs-rwm-pvc-3gb.yaml │ ├── tc4-nfs-rwm-statefulset.yaml │ ├── tc5-nfs-rwx-deploy-4gi.yaml │ ├── tc6-nfs-rwx-deploy-3gi.yaml │ ├── tc7-nfs-rwx-deploy-2gi.yaml │ └── tc8-nfs-rwx-set.yaml ├── volume-nfs-setup │ ├── 001-nfs-server.yaml │ ├── 002-nfs-server-service.yaml │ └── README.MD ├── volume-nfs │ ├── README.md │ ├── efs-ns.yml │ ├── v-aws-dep-efs.yml │ ├── v-efs-provisioner-manifest.yml │ ├── v-efs-pvc.yml │ └── v-efs-volume.yml └── volume_with_storage │ ├── pvc-gke.yml │ └── storage-gke.yml ├── k8s-6-helm_charts ├── README.md ├── cluster-role-binding-tiller.yml └── sa-tiller.yml └── k8s-7-rbac ├── dep.yml ├── hello-ns.yml ├── hello-svc.yml ├── helloworld-sa.yml ├── rbac-helloworld.yml ├── role-helloworld.yml └── role-svc-helloworld /.gitignore: -------------------------------------------------------------------------------- 1 | *.DS_Store 2 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "product_ms"] 2 | path = product_ms 3 | url = https://github.com/meta-magic/product_ms.git 4 | [submodule "product_review_ms"] 5 | path = product_review_ms 6 | url = https://github.com/meta-magic/product_review_ms.git 7 | [submodule "k8_ui_workshop"] 8 | path = k8_ui_workshop 9 | url = https://github.com/meta-magic/k8_ui_workshop.git -------------------------------------------------------------------------------- /diagrams/Istio-Components.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/diagrams/Istio-Components.jpg -------------------------------------------------------------------------------- /diagrams/K8s-Arch.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/diagrams/K8s-Arch.jpg -------------------------------------------------------------------------------- /diagrams/K8s-CNI-Comparison.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/diagrams/K8s-CNI-Comparison.jpg -------------------------------------------------------------------------------- /diagrams/K8s-Demo-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/diagrams/K8s-Demo-1.jpg -------------------------------------------------------------------------------- /diagrams/K8s-Demo-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/diagrams/K8s-Demo-1.png -------------------------------------------------------------------------------- /diagrams/K8s-Demo-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/diagrams/K8s-Demo-2.jpg -------------------------------------------------------------------------------- /diagrams/K8s-Demo-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/diagrams/K8s-Demo-2.png -------------------------------------------------------------------------------- /diagrams/K8s-Demo-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/diagrams/K8s-Demo-3.jpg -------------------------------------------------------------------------------- /diagrams/K8s-Demo-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/diagrams/K8s-Demo-3.png -------------------------------------------------------------------------------- /diagrams/K8s-Demo-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/diagrams/K8s-Demo-4.jpg -------------------------------------------------------------------------------- /diagrams/K8s-Demo-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/diagrams/K8s-Demo-4.png -------------------------------------------------------------------------------- /diagrams/K8s-Demo-5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/diagrams/K8s-Demo-5.jpg -------------------------------------------------------------------------------- /diagrams/K8s-Demo-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/diagrams/K8s-Demo-5.png -------------------------------------------------------------------------------- /diagrams/K8s-Demo-6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/diagrams/K8s-Demo-6.jpg -------------------------------------------------------------------------------- /diagrams/K8s-Demo-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/diagrams/K8s-Demo-6.png -------------------------------------------------------------------------------- /diagrams/K8s-Docker-Linux-Win.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/diagrams/K8s-Docker-Linux-Win.jpg -------------------------------------------------------------------------------- /diagrams/K8s-LB-NodePort-ClusterIP.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/diagrams/K8s-LB-NodePort-ClusterIP.jpg -------------------------------------------------------------------------------- /diagrams/K8s-Network-Policy.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/diagrams/K8s-Network-Policy.jpg -------------------------------------------------------------------------------- /diagrams/Linux-Containers.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/diagrams/Linux-Containers.jpg -------------------------------------------------------------------------------- /docker.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | sudo apt-get -y update 3 | sudo apt-get -y install \ 4 | apt-transport-https \ 5 | ca-certificates \ 6 | curl \ 7 | software-properties-common 8 | curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - 9 | 10 | sudo apt-key fingerprint 0EBFCD88 11 | 12 | sudo add-apt-repository \ 13 | "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ 14 | $(lsb_release -cs) \ 15 | stable" 16 | 17 | sudo apt-get -y update 18 | 19 | sudo apt-get -y install docker-ce 20 | 21 | sudo docker run hello-world 22 | 23 | 24 | sudo groupadd docker 25 | 26 | sudo usermod -aG docker $1 27 | 28 | sudo reboot 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /docker/images/hello-docker/Dockerfile: -------------------------------------------------------------------------------- 1 | ######################################### 2 | # 3 | # 4 | # (C) MetaMagic Global Inc, NJ, USA, 2017 5 | # 6 | # Desire3D Micro Services Containers 7 | # 8 | # Version 0.1 9 | ######################################### 10 | # Base Version 11 | FROM metamagicglobal/ubuntu 12 | 13 | MAINTAINER Deepali Arvind 14 | 15 | RUN apt-get update && apt-get install -y apache2 && apt-get clean 16 | 17 | 18 | RUN chmod -R 777 /var/www/html/ 19 | ADD hello /var/www/html/ 20 | 21 | EXPOSE 80 22 | 23 | # when the container launches 24 | CMD apachectl -D FOREGROUND 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /docker/images/hello-docker/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | docker build -t metamagicglobal/hello:v1.0 . 3 | -------------------------------------------------------------------------------- /docker/images/hello-docker/hello/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |

Hello world

6 | 7 |

DEMO_DOCKER

8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /docker/images/jdk/Dockerfile: -------------------------------------------------------------------------------- 1 | ######################################### 2 | # Java Version 8 3 | # (C) MetaMagic Global Inc, NJ, USA, 2017 4 | # 5 | # Desire3D Micro Services Containers 6 | ######################################### 7 | 8 | # Base OS Version 9 | FROM metamagicglobal/ubuntu 10 | 11 | MAINTAINER Deepali Arvind 12 | 13 | # ADD JDK 8 14 | ADD jdk /Home/metaMagic/Softwares/ 15 | 16 | ENV JAVA_VERSION=8 17 | ENV JAVA_HOME=/Home/metaMagic/Softwares/jdk1.8.0_152/ 18 | ENV PATH="${PATH}:${JAVA_HOME}bin" 19 | 20 | # when the container launches 21 | CMD ["bash"] 22 | -------------------------------------------------------------------------------- /docker/images/oshell/Dockerfile: -------------------------------------------------------------------------------- 1 | ################################################################# 2 | # 3 | # PodShell - Developer Tool box to test Pods in Kubernetes 4 | # 5 | # (C) MetaMagic Global Inc, NJ, USA, 2017 6 | # 7 | # Desire3D Micro Services Containers 8 | # 9 | # Version 0.1 10 | ################################################################# 11 | # Base Version 12 | FROM metamagic/podshell 13 | 14 | MAINTAINER Araf Karsh Hamid 15 | 16 | RUN mkdir -p /home/bin 17 | RUN mkdir -p /home/data 18 | 19 | COPY gb.sh /home/bin 20 | 21 | WORKDIR /home/data 22 | 23 | 24 | ENTRYPOINT ["/home/bin/gb.sh"] 25 | -------------------------------------------------------------------------------- /docker/images/oshell/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | docker build -t metamagic/oshell . 3 | -------------------------------------------------------------------------------- /docker/images/oshell/gb.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | IP=$POD_IP 4 | FILE=$IP".txt" 5 | 6 | while : 7 | do 8 | DATA="`date`:Omega GB Volume Test for $IP : File = $FILE" 9 | echo $DATA 10 | echo $DATA >> $FILE 11 | sleep 2 12 | done; 13 | -------------------------------------------------------------------------------- /docker/images/podshell/Dockerfile: -------------------------------------------------------------------------------- 1 | ################################################################# 2 | # 3 | # PodShell - Developer Tool box to test Pods in Kubernetes 4 | # 5 | # (C) MetaMagic Global Inc, NJ, USA, 2017 6 | # 7 | # Desire3D Micro Services Containers 8 | # 9 | # Version 0.1 10 | ################################################################# 11 | # Base Version 12 | FROM metamagic/alpine 13 | 14 | MAINTAINER Araf Karsh Hamid 15 | 16 | RUN apk update && apk add wget && apk add curl && apk add nano 17 | 18 | # Install Network Utilities 19 | RUN apk add nuttcp 20 | #RUN apk add nutperf && apk add nuttcp 21 | 22 | ENTRYPOINT /bin/sh 23 | -------------------------------------------------------------------------------- /docker/images/podshell/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | docker build -t metamagic/podshell . 3 | -------------------------------------------------------------------------------- /docker/images/podshellJava/.bashrc: -------------------------------------------------------------------------------- 1 | 2 | df -h 3 | java -version 4 | pwd 5 | 6 | -------------------------------------------------------------------------------- /docker/images/podshellJava/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | docker build -t metamagic/podshelljava:8 . 3 | -------------------------------------------------------------------------------- /docker/images/podshellNode/Dockerfile: -------------------------------------------------------------------------------- 1 | ################################################################# 2 | # 3 | # PodShell - Developer Tool box to test Pods in Kubernetes 4 | # 5 | # (C) MetaMagic Global Inc, NJ, USA, 2017 6 | # 7 | # Desire3D Micro Services Containers 8 | # 9 | # Version 0.1 10 | ################################################################# 11 | # Base Version 12 | FROM mhart/alpine-node 13 | 14 | MAINTAINER Araf Karsh Hamid 15 | 16 | RUN apk update && apk add wget && apk add curl && apk add nano 17 | RUN npm install -g newman 18 | 19 | ENTRYPOINT /bin/sh 20 | -------------------------------------------------------------------------------- /docker/images/podshellNode/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | docker build -t metamagic/podshellnode . 3 | -------------------------------------------------------------------------------- /docker/images/podshellapache/Dockerfile: -------------------------------------------------------------------------------- 1 | ################################################################# 2 | # 3 | # PodShell - Developer Tool box to test Pods in Kubernetes 4 | # 5 | # (C) MetaMagic Global Inc, NJ, USA, 2018 6 | # 7 | # Desire3D Micro Services Containers - Apache 2 8 | # 9 | # Version 0.1 10 | ################################################################# 11 | FROM alpine:3.6 12 | 13 | MAINTAINER Araf Karsh Hamid 14 | 15 | RUN apk add --no-cache apache2 && \ 16 | mkdir -p /run/apache2 17 | 18 | # Copy Starting page for Apache 2 19 | COPY index.html /var/www/localhost/htdocs/index.html 20 | 21 | # Apache 2 on Port 80 22 | EXPOSE 80 23 | 24 | # Run Apache2 25 | ENTRYPOINT ["/usr/sbin/httpd", "-D", "FOREGROUND"] 26 | -------------------------------------------------------------------------------- /docker/images/podshellapache/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | docker build -t metamagic/podshellapache2 . 3 | -------------------------------------------------------------------------------- /docker/images/podshellapache/index.html: -------------------------------------------------------------------------------- 1 | 2 | Apache 2 Home 3 | 4 |

Apache 2 Web Server Running!

5 | 6 |

7 |

Hello World!

8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /docker/images/podshellapache/start.sh: -------------------------------------------------------------------------------- 1 | docker container run -d -p 80:80 metamagic/podshellapache2 2 | -------------------------------------------------------------------------------- /docker/images/podshelltomcat/Dockerfile: -------------------------------------------------------------------------------- 1 | ################################################################# 2 | # 3 | # PodShell - Developer Tool box to test Pods in Kubernetes 4 | # 5 | # (C) MetaMagic Global Inc, NJ, USA, 2017 6 | # 7 | # Desire3D Micro Services Containers - Tomcat 8 | # 9 | # Version 0.1 10 | ################################################################# 11 | # Base Version 12 | FROM metamagic/podshelljava:8 13 | 14 | MAINTAINER Araf Karsh Hamid 15 | 16 | RUN mkdir /Home/Softwares/tomcat/ 17 | 18 | # Copy Tomcat (Install) 19 | COPY --chown=podadmin:podadmin tc9 /Home/Softwares/tomcat/ 20 | RUN chmod 750 /Home/Softwares/tomcat/bin/* 21 | 22 | # Expose Tomcat port 23 | EXPOSE 8080 24 | 25 | # Start Tomcat 26 | ENTRYPOINT ["/Home/Softwares/tomcat/bin/catalina.sh", "run"] 27 | -------------------------------------------------------------------------------- /docker/images/podshelltomcat/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | docker build -t metamagic/podshelltomcat:9 . 3 | -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/bin/bootstrap.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/bin/bootstrap.jar -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/bin/commons-daemon-native.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/bin/commons-daemon-native.tar.gz -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/bin/commons-daemon.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/bin/commons-daemon.jar -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/bin/tomcat-juli.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/bin/tomcat-juli.jar -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/bin/tomcat-native.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/bin/tomcat-native.tar.gz -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/lib/annotations-api.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/lib/annotations-api.jar -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/lib/catalina-ant.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/lib/catalina-ant.jar -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/lib/catalina-ha.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/lib/catalina-ha.jar -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/lib/catalina-storeconfig.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/lib/catalina-storeconfig.jar -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/lib/catalina-tribes.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/lib/catalina-tribes.jar -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/lib/catalina.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/lib/catalina.jar -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/lib/ecj-4.7.3a.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/lib/ecj-4.7.3a.jar -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/lib/el-api.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/lib/el-api.jar -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/lib/jasper-el.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/lib/jasper-el.jar -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/lib/jasper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/lib/jasper.jar -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/lib/jaspic-api.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/lib/jaspic-api.jar -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/lib/jsp-api.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/lib/jsp-api.jar -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/lib/servlet-api.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/lib/servlet-api.jar -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/lib/tomcat-api.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/lib/tomcat-api.jar -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/lib/tomcat-coyote.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/lib/tomcat-coyote.jar -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/lib/tomcat-dbcp.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/lib/tomcat-dbcp.jar -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/lib/tomcat-i18n-es.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/lib/tomcat-i18n-es.jar -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/lib/tomcat-i18n-fr.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/lib/tomcat-i18n-fr.jar -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/lib/tomcat-i18n-ja.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/lib/tomcat-i18n-ja.jar -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/lib/tomcat-i18n-ru.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/lib/tomcat-i18n-ru.jar -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/lib/tomcat-jdbc.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/lib/tomcat-jdbc.jar -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/lib/tomcat-jni.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/lib/tomcat-jni.jar -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/lib/tomcat-util-scan.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/lib/tomcat-util-scan.jar -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/lib/tomcat-util.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/lib/tomcat-util.jar -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/lib/tomcat-websocket.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/lib/tomcat-websocket.jar -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/lib/websocket-api.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/lib/websocket-api.jar -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/logs/host-manager.2018-10-08.log: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/logs/host-manager.2018-10-08.log -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/logs/localhost_access_log.2018-10-08.txt: -------------------------------------------------------------------------------- 1 | 0:0:0:0:0:0:0:1 - - [08/Oct/2018:14:35:35 +0530] "GET / HTTP/1.1" 200 11286 2 | -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/logs/manager.2018-10-08.log: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/logs/manager.2018-10-08.log -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/temp/safeToDelete.tmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/temp/safeToDelete.tmp -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/ROOT/bg-button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/ROOT/bg-button.png -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/ROOT/bg-middle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/ROOT/bg-middle.png -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/ROOT/bg-nav.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/ROOT/bg-nav.png -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/ROOT/bg-upper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/ROOT/bg-upper.png -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/ROOT/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/ROOT/favicon.ico -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/ROOT/tomcat-power.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/ROOT/tomcat-power.gif -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/ROOT/tomcat.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/ROOT/tomcat.gif -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/ROOT/tomcat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/ROOT/tomcat.png -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/docs/appdev/sample/docs/README.txt: -------------------------------------------------------------------------------- 1 | Licensed to the Apache Software Foundation (ASF) under one or more 2 | contributor license agreements. See the NOTICE file distributed with 3 | this work for additional information regarding copyright ownership. 4 | The ASF licenses this file to You under the Apache License, Version 2.0 5 | (the "License"); you may not use this file except in compliance with 6 | the License. You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | 16 | This is a dummy README file for the sample 17 | web application. 18 | -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/docs/appdev/sample/sample.war: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/docs/appdev/sample/sample.war -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/docs/appdev/sample/web/images/tomcat.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/docs/appdev/sample/web/images/tomcat.gif -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/docs/architecture/requestProcess/authentication-process.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/docs/architecture/requestProcess/authentication-process.png -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/docs/architecture/requestProcess/request-process.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/docs/architecture/requestProcess/request-process.png -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/docs/architecture/startup/serverStartup.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/docs/architecture/startup/serverStartup.pdf -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/docs/images/add.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/docs/images/add.gif -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/docs/images/code.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/docs/images/code.gif -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/docs/images/cors-flowchart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/docs/images/cors-flowchart.png -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/docs/images/design.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/docs/images/design.gif -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/docs/images/docs.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/docs/images/docs.gif -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/docs/images/fix.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/docs/images/fix.gif -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/docs/images/fonts/OpenSans400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/docs/images/fonts/OpenSans400.woff -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/docs/images/fonts/OpenSans400italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/docs/images/fonts/OpenSans400italic.woff -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/docs/images/fonts/OpenSans600.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/docs/images/fonts/OpenSans600.woff -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/docs/images/fonts/OpenSans600italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/docs/images/fonts/OpenSans600italic.woff -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/docs/images/fonts/OpenSans700.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/docs/images/fonts/OpenSans700.woff -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/docs/images/fonts/OpenSans700italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/docs/images/fonts/OpenSans700italic.woff -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/docs/images/tomcat.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/docs/images/tomcat.gif -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/docs/images/tomcat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/docs/images/tomcat.png -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/docs/images/update.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/docs/images/update.gif -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/docs/images/void.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/docs/images/void.gif -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/CookieExample.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/CookieExample.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/HelloWorldExample.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/HelloWorldExample.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/RequestHeaderExample.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/RequestHeaderExample.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/RequestInfoExample.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/RequestInfoExample.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/RequestParamExample.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/RequestParamExample.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/ServletToJsp.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/ServletToJsp.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/SessionExample.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/SessionExample.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/async/Async0$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/async/Async0$1.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/async/Async0.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/async/Async0.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/async/Async1$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/async/Async1$1.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/async/Async1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/async/Async1.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/async/Async2$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/async/Async2$1.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/async/Async2.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/async/Async2.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/async/Async3.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/async/Async3.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/async/AsyncStockContextListener.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/async/AsyncStockContextListener.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/async/AsyncStockServlet.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/async/AsyncStockServlet.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/async/Stockticker$Stock.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/async/Stockticker$Stock.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/async/Stockticker$TickListener.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/async/Stockticker$TickListener.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/async/Stockticker.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/async/Stockticker.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/cal/Entries.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/cal/Entries.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/cal/Entry.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/cal/Entry.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/cal/JspCalendar.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/cal/JspCalendar.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/cal/TableBean.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/cal/TableBean.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/checkbox/CheckTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/checkbox/CheckTest.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/colors/ColorGameBean.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/colors/ColorGameBean.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilter.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilter.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilterTestServlet.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilterTestServlet.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/compressionFilters/CompressionResponseStream.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/compressionFilters/CompressionResponseStream.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/compressionFilters/CompressionServletResponseWrapper.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/compressionFilters/CompressionServletResponseWrapper.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/dates/JspCalendar.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/dates/JspCalendar.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/error/Smart.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/error/Smart.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/examples/ExampleTagBase.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/examples/ExampleTagBase.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/examples/FooTag.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/examples/FooTag.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/examples/FooTagExtraInfo.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/examples/FooTagExtraInfo.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/examples/LogTag.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/examples/LogTag.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/examples/ShowSource.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/examples/ShowSource.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/examples/ValuesTag.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/examples/ValuesTag.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/filters/ExampleFilter.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/filters/ExampleFilter.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/http2/SimpleImagePush.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/http2/SimpleImagePush.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/jsp2/examples/BookBean.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/jsp2/examples/BookBean.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/jsp2/examples/FooBean.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/jsp2/examples/FooBean.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/jsp2/examples/ValuesBean.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/jsp2/examples/ValuesBean.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/jsp2/examples/el/Functions.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/jsp2/examples/el/Functions.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/EchoAttributesTag.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/EchoAttributesTag.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/FindBookSimpleTag.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/FindBookSimpleTag.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/HelloWorldSimpleTag.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/HelloWorldSimpleTag.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/RepeatSimpleTag.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/RepeatSimpleTag.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/ShuffleSimpleTag.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/ShuffleSimpleTag.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/TileSimpleTag.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/TileSimpleTag.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/listeners/ContextListener.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/listeners/ContextListener.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/listeners/SessionListener.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/listeners/SessionListener.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/nonblocking/ByteCounter$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/nonblocking/ByteCounter$1.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/nonblocking/ByteCounter$CounterListener.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/nonblocking/ByteCounter$CounterListener.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/nonblocking/ByteCounter.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/nonblocking/ByteCounter.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/nonblocking/NumberWriter$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/nonblocking/NumberWriter$1.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/nonblocking/NumberWriter$NumberWriterListener.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/nonblocking/NumberWriter$NumberWriterListener.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/nonblocking/NumberWriter.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/nonblocking/NumberWriter.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/num/NumberGuessBean.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/num/NumberGuessBean.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/sessions/DummyCart.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/sessions/DummyCart.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/trailers/ResponseTrailers$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/trailers/ResponseTrailers$1.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/trailers/ResponseTrailers$TrailerFieldSupplier.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/trailers/ResponseTrailers$TrailerFieldSupplier.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/trailers/ResponseTrailers.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/trailers/ResponseTrailers.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/util/CookieFilter.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/util/CookieFilter.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/util/HTMLFilter.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/util/HTMLFilter.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/validators/DebugValidator.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/validators/DebugValidator.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/ExamplesConfig.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/ExamplesConfig.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/chat/ChatAnnotation.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/chat/ChatAnnotation.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/drawboard/Client$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/drawboard/Client$1.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/drawboard/Client.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/drawboard/Client.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawMessage$ParseException.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawMessage$ParseException.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawMessage.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawMessage.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawboardContextListener.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawboardContextListener.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawboardEndpoint$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawboardEndpoint$1.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawboardEndpoint$2.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawboardEndpoint$2.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawboardEndpoint$3$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawboardEndpoint$3$1.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawboardEndpoint$3.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawboardEndpoint$3.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawboardEndpoint.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawboardEndpoint.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/drawboard/Room$1$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/drawboard/Room$1$1.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/drawboard/Room$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/drawboard/Room$1.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/drawboard/Room$2.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/drawboard/Room$2.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/drawboard/Room$MessageType.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/drawboard/Room$MessageType.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/drawboard/Room$Player.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/drawboard/Room$Player.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/drawboard/Room.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/drawboard/Room.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/drawboard/wsmessages/AbstractWebsocketMessage.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/drawboard/wsmessages/AbstractWebsocketMessage.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/drawboard/wsmessages/BinaryWebsocketMessage.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/drawboard/wsmessages/BinaryWebsocketMessage.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/drawboard/wsmessages/CloseWebsocketMessage.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/drawboard/wsmessages/CloseWebsocketMessage.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/drawboard/wsmessages/StringWebsocketMessage.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/drawboard/wsmessages/StringWebsocketMessage.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/echo/EchoAnnotation.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/echo/EchoAnnotation.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/echo/EchoAsyncAnnotation$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/echo/EchoAsyncAnnotation$1.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/echo/EchoAsyncAnnotation$CompletedFuture.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/echo/EchoAsyncAnnotation$CompletedFuture.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/echo/EchoAsyncAnnotation.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/echo/EchoAsyncAnnotation.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/echo/EchoEndpoint$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/echo/EchoEndpoint$1.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/echo/EchoEndpoint$EchoMessageHandlerBinary.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/echo/EchoEndpoint$EchoMessageHandlerBinary.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/echo/EchoEndpoint$EchoMessageHandlerText.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/echo/EchoEndpoint$EchoMessageHandlerText.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/echo/EchoEndpoint.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/echo/EchoEndpoint.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/echo/EchoStreamAnnotation.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/echo/EchoStreamAnnotation.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/echo/servers.json: -------------------------------------------------------------------------------- 1 | { 2 | "options": {"failByDrop": false}, 3 | "outdir": "./reports/servers", 4 | 5 | "servers": [ 6 | {"agent": "Basic", 7 | "url": "ws://localhost:8080/examples/websocket/echoAnnotation", 8 | "options": {"version": 18}}, 9 | {"agent": "Stream", 10 | "url": "ws://localhost:8080/examples/websocket/echoStreamAnnotation", 11 | "options": {"version": 18}}, 12 | {"agent": "Async", 13 | "url": "ws://localhost:8080/examples/websocket/echoAsyncAnnotation", 14 | "options": {"version": 18}} 15 | ], 16 | 17 | "cases": ["*"], 18 | "exclude-cases": [], 19 | "exclude-agent-cases": {} 20 | } 21 | -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/snake/Direction.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/snake/Direction.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/snake/Location$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/snake/Location$1.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/snake/Location.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/snake/Location.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/snake/Snake.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/snake/Snake.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/snake/SnakeAnnotation.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/snake/SnakeAnnotation.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/snake/SnakeTimer$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/snake/SnakeTimer$1.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/snake/SnakeTimer.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/classes/websocket/snake/SnakeTimer.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/lib/taglibs-standard-impl-1.2.5.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/lib/taglibs-standard-impl-1.2.5.jar -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/lib/taglibs-standard-spec-1.2.5.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/lib/taglibs-standard-spec-1.2.5.jar -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/WEB-INF/tags/helloWorld.tag: -------------------------------------------------------------------------------- 1 | 17 | Hello, world! 18 | -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/jsp/images/code.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/jsp/images/code.gif -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/jsp/images/execute.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/jsp/images/execute.gif -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/jsp/images/return.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/jsp/images/return.gif -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/jsp/include/foo.html: -------------------------------------------------------------------------------- 1 | 17 | To get the current time in ms 18 | -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/jsp/include/foo.jsp: -------------------------------------------------------------------------------- 1 | <%-- 2 | Licensed to the Apache Software Foundation (ASF) under one or more 3 | contributor license agreements. See the NOTICE file distributed with 4 | this work for additional information regarding copyright ownership. 5 | The ASF licenses this file to You under the Apache License, Version 2.0 6 | (the "License"); you may not use this file except in compliance with 7 | the License. You may obtain a copy of the License at 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. 16 | 17 | --%><%= System.currentTimeMillis() %> 18 | -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/jsp/jsp2/jspx/textRotate.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/jsp/jsp2/jspx/textRotate.jpg -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/jsp/jsp2/misc/coda.jspf: -------------------------------------------------------------------------------- 1 | 17 |
18 |
19 | This banner included with <include-coda> 20 |
21 |
22 | -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/jsp/plugin/applet/Clock2.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/jsp/plugin/applet/Clock2.class -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/servlets/images/code.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/servlets/images/code.gif -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/servlets/images/execute.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/servlets/images/execute.gif -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/examples/servlets/images/return.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/examples/servlets/images/return.gif -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/host-manager/images/tomcat.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/host-manager/images/tomcat.gif -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/webapps/manager/images/tomcat.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/webapps/manager/images/tomcat.gif -------------------------------------------------------------------------------- /docker/images/podshelltomcat/tc9/work/Catalina/localhost/ROOT/org/apache/jsp/index_jsp.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/docker/images/podshelltomcat/tc9/work/Catalina/localhost/ROOT/org/apache/jsp/index_jsp.class -------------------------------------------------------------------------------- /docker/images/tomcat/supervisord.conf: -------------------------------------------------------------------------------- 1 | [supervisord] 2 | nodaemon=true 3 | 4 | [program:tomcat] 5 | #command=/opt/tomcat/bin/catalina.sh start 6 | command=/Home/metaMagic/Softwares/tc9/bin/tomcat-wrapper.sh 7 | numprocs=1 8 | stopsignal=QUIT 9 | startsecs=30 10 | autostart=true 11 | autorestart=true 12 | -------------------------------------------------------------------------------- /docker/images/tomcat/tomcat-wrapper.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Source: https://confluence.atlassian.com/plugins/viewsource/viewpagesrc.action?pageId=252348917 3 | function shutdown() 4 | { 5 | date 6 | echo "Shutting down Tomcat" 7 | # unset CATALINA_PID # Necessary in some cases 8 | # unset LD_LIBRARY_PATH # Necessary in some cases 9 | # unset JAVA_OPTS # Necessary in some cases 10 | 11 | /Home/metaMagic/Softwares/tc9/bin/catalina.sh stop 12 | } 13 | 14 | date 15 | echo "Starting Apache Tomcat 9.0.2" 16 | 17 | /Home/metaMagic/Softwares/tc9/bin/catalina.sh start 18 | 19 | # Allow any signal which would kill a process to stop Tomcat 20 | trap shutdown HUP INT QUIT ABRT KILL ALRM TERM TSTP 21 | 22 | echo "Waiting for `cat $CATALINA_PID`" 23 | wait `cat $CATALINA_PID` 24 | -------------------------------------------------------------------------------- /docker/swarm/config-files/README.md: -------------------------------------------------------------------------------- 1 | This folder has all configuration files for different microservice 2 | -------------------------------------------------------------------------------- /docker/swarm/config-files/turbinedemo.yml: -------------------------------------------------------------------------------- 1 | server: 2 | port: 3030 3 | 4 | spring: 5 | application: 6 | name: turbinedemo 7 | 8 | spring: 9 | datasource: 10 | username: dbuser 11 | password: '{cipher}FKSAJDFGYOS8F7GLHAKERGFHLSAJ' 12 | 13 | eureka: 14 | client: 15 | serviceUrl: 16 | defaultZone: http://localhost:7010/eureka/ 17 | healthcheck: 18 | enabled: true 19 | lease: 20 | duration: 5 21 | 22 | turbine: 23 | clusterNameExpression: new String("default") 24 | appConfig: userauthlobaservice, productlobaservice, orderlobaservice, shoppingcartlobaservice 25 | combineHostPort: true -------------------------------------------------------------------------------- /docker/swarm/infra/config-server/Dockerfile: -------------------------------------------------------------------------------- 1 | ######################################### 2 | # Config Server Installation 3 | # 4 | # (C) MetaMagic Global Inc, NJ, USA, 2017 5 | # 6 | # Desire3D Micro Services Containers 7 | # 8 | # Version 0.1 9 | ######################################### 10 | # Base Version 11 | FROM metamagicglobal/tomcat:9 12 | 13 | MAINTAINER Deepali Arvind 14 | 15 | # Copy Spring Config Server App to Tomcat WebApps 16 | ADD config /Home/metaMagic/Softwares/tc9/webapps/ 17 | 18 | RUN sed -i "s/8080/6061/g" /Home/metaMagic/Softwares/tc9/conf/server.xml 19 | RUN sed -i "s/config/configserver/g" /Home/metaMagic/Softwares/tc9/conf/server.xml 20 | RUN sed -i "s/Docker/Config Server Docker/g" /Home/metaMagic/Softwares/tc9/webapps/ROOT/index.jsp 21 | 22 | # Spring Config Server Port 23 | EXPOSE 6061 24 | 25 | # when the container launches 26 | CMD ["supervisord","-c", "/etc/supervisor/conf.d/tomcat.conf"] 27 | 28 | 29 | -------------------------------------------------------------------------------- /images/K8s-Day-1-WS.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/images/K8s-Day-1-WS.jpg -------------------------------------------------------------------------------- /images/K8s-Day-Schedule.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/images/K8s-Day-Schedule.jpg -------------------------------------------------------------------------------- /images/K8s-Day2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/images/K8s-Day2.jpg -------------------------------------------------------------------------------- /images/K8s-Day3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/images/K8s-Day3.jpg -------------------------------------------------------------------------------- /images/K8s-Workshop-Team.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/images/K8s-Workshop-Team.jpg -------------------------------------------------------------------------------- /k8_workshop_canary_with_v1.0.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Copyright (c) METAMAGIC GLOBAL INC, USA 4 | # 5 | # This script will create the database setup 6 | # 7 | kubectl apply -f https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/master/yaml/k8s-1-Basic/9-app-2-ui/k8uiworkshop-deployment_canary_with_v1.0.yaml 8 | 9 | 10 | -------------------------------------------------------------------------------- /k8_workshop_v1.1.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Copyright (c) METAMAGIC GLOBAL INC, USA 4 | # 5 | # This script will create the database setup 6 | # 7 | 8 | 9 | kubectl apply -f https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/master/yaml/k8s-1-Basic/9-app-2-ui/k8uiworkshop-deploymentv1.1.yaml 10 | 11 | echo "Thankyou Metamagic" 12 | -------------------------------------------------------------------------------- /yaml/Logging-Monitoring/metrics_grafana/productreview-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: productreviewservice 5 | namespace: shoppingportal 6 | spec: 7 | type: NodePort 8 | selector: 9 | name: productreview 10 | ports: 11 | - protocol: TCP 12 | targetPort: 8082 13 | port: 80 14 | name: http 15 | 16 | -------------------------------------------------------------------------------- /yaml/Service-Mesh-1-Routing/microservice/product/product-horizontal-scaler.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: autoscaling/v1 2 | kind: HorizontalPodAutoscaler 3 | metadata: 4 | name: product-hpa 5 | namespace: shoppingportal 6 | spec: 7 | scaleTargetRef: 8 | apiVersion: apps/v1beta2 9 | kind: Deployment 10 | name: productms-deploy 11 | minReplicas: 1 12 | maxReplicas: 10 13 | targetCPUUtilizationPercentage: 10 14 | -------------------------------------------------------------------------------- /yaml/Service-Mesh-1-Routing/microservice/product/product-secret.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Secret 3 | metadata: 4 | name: productmssecret 5 | namespace: shoppingportal 6 | type: Opaque 7 | data: 8 | mysqlpassword: cm9vdA== 9 | mysqluser: cm9vdA== 10 | mysqlconnectionurl: amRiYzpteXNxbDovL215c3FsL3N5cwo= 11 | -------------------------------------------------------------------------------- /yaml/Service-Mesh-1-Routing/microservice/product/product-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: productservice 5 | namespace: shoppingportal 6 | spec: 7 | type: NodePort 8 | selector: 9 | name: productms 10 | ports: 11 | - protocol: TCP 12 | targetPort: 8082 13 | port: 80 14 | name: http 15 | 16 | -------------------------------------------------------------------------------- /yaml/Service-Mesh-1-Routing/microservice/productreview/productreview-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: productreviewservice 5 | namespace: shoppingportal 6 | spec: 7 | type: NodePort 8 | selector: 9 | name: productreview 10 | ports: 11 | - protocol: TCP 12 | targetPort: 8082 13 | port: 80 14 | name: http 15 | 16 | -------------------------------------------------------------------------------- /yaml/Service-Mesh-1-Routing/product/product-destination.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: networking.istio.io/v1alpha3 2 | kind: DestinationRule 3 | metadata: 4 | name: product-destination-rules 5 | namespace: shoppingportal 6 | spec: 7 | host: productservice.shoppingportal.svc.cluster.local 8 | subsets: 9 | - name: stable 10 | labels: 11 | version: v1 12 | - name: canary 13 | labels: 14 | version: v2 -------------------------------------------------------------------------------- /yaml/Service-Mesh-1-Routing/product/product-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: productservice 5 | namespace: shoppingportal 6 | spec: 7 | selector: 8 | name: productms 9 | ports: 10 | - protocol: TCP 11 | targetPort: 8082 12 | port: 80 13 | name: http -------------------------------------------------------------------------------- /yaml/Service-Mesh-1-Routing/product/product-virtualservice.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: networking.istio.io/v1alpha3 2 | kind: VirtualService 3 | metadata: 4 | name: shoppingportal-productservice-vs 5 | namespace: shoppingportal 6 | spec: 7 | hosts: 8 | - "*" 9 | gateways: 10 | - shoppingportal-gateway 11 | http: 12 | - match: 13 | - headers: 14 | end-user: 15 | exact: metamagic 16 | route: 17 | - destination: 18 | host: productservice.shoppingportal.svc.cluster.local 19 | subset: canary # match v2 only 20 | port: 21 | number: 80 22 | - route: 23 | - destination: 24 | host: productservice.shoppingportal.svc.cluster.local 25 | subset: stable # match v1 only 26 | port: 27 | number: 80 -------------------------------------------------------------------------------- /yaml/Service-Mesh-1-Routing/productreview/productreview-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: productreviewservice 5 | namespace: shoppingportal 6 | spec: 7 | selector: 8 | name: productreviewms 9 | ports: 10 | - protocol: TCP 11 | targetPort: 8082 12 | port: 80 13 | name: http -------------------------------------------------------------------------------- /yaml/Service-Mesh-1-Routing/shopping-ns.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Namespace 3 | metadata: 4 | name: shoppingportal 5 | labels: 6 | name: shoppingportal 7 | istio-injection: enabled 8 | -------------------------------------------------------------------------------- /yaml/Service-Mesh-1-Routing/shoppingportal-gw.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: networking.istio.io/v1alpha3 2 | kind: Gateway 3 | metadata: 4 | name: shoppingportal-gateway 5 | namespace: shoppingportal 6 | spec: 7 | selector: 8 | istio: ingressgateway # use istio default controller 9 | servers: 10 | - port: 11 | number: 80 12 | name: http 13 | protocol: HTTP 14 | hosts: 15 | - "*" -------------------------------------------------------------------------------- /yaml/Service-Mesh-1-Routing/ui/ui-destination.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: networking.istio.io/v1alpha3 2 | kind: DestinationRule 3 | metadata: 4 | name: ui-destination-rules 5 | namespace: shoppingportal 6 | spec: 7 | host: k8uiworkshopservice.shoppingportal.svc.cluster.local 8 | subsets: 9 | - name: stable 10 | labels: 11 | version: v1 12 | - name: canary 13 | labels: 14 | version: v2 -------------------------------------------------------------------------------- /yaml/Service-Mesh-1-Routing/ui/ui-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: k8uiworkshopservice 5 | namespace: shoppingportal 6 | spec: 7 | selector: 8 | name: k8uiworkshop 9 | ports: 10 | - protocol: TCP 11 | targetPort: 80 12 | port: 80 13 | name: http -------------------------------------------------------------------------------- /yaml/Service-Mesh-1-Routing/ui/ui-v1.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: k8uiworkshop-deploy 5 | namespace: shoppingportal 6 | spec: 7 | replicas: 1 8 | selector: 9 | matchLabels: 10 | name: k8uiworkshop 11 | zone: prod 12 | minReadySeconds: 10 13 | strategy: 14 | type: RollingUpdate 15 | rollingUpdate: 16 | maxUnavailable: 1 17 | maxSurge: 1 18 | template: 19 | metadata: 20 | labels: 21 | name: k8uiworkshop 22 | version: v1 23 | release: stable 24 | tier: fe 25 | zone: prod 26 | managed-by: m2 27 | spec: 28 | containers: 29 | - name: k8uiworkshop-ctr 30 | image: metamagicglobal/k8uiworkshop:v1.0 31 | imagePullPolicy: Always 32 | ports: 33 | - containerPort: 80 34 | -------------------------------------------------------------------------------- /yaml/Service-Mesh-1-Routing/ui/ui-v2.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: k8uiworkshop-deploy-v2 5 | namespace: shoppingportal 6 | spec: 7 | replicas: 1 8 | selector: 9 | matchLabels: 10 | name: k8uiworkshop 11 | zone: prod 12 | minReadySeconds: 10 13 | strategy: 14 | type: RollingUpdate 15 | rollingUpdate: 16 | maxUnavailable: 1 17 | maxSurge: 1 18 | template: 19 | metadata: 20 | labels: 21 | name: k8uiworkshop 22 | version: v2 23 | release: canary 24 | tier: fe 25 | zone: prod 26 | managed-by: m2 27 | spec: 28 | containers: 29 | - name: k8uiworkshop-ctr 30 | image: metamagicglobal/k8uiworkshop:v1.2 31 | imagePullPolicy: Always 32 | ports: 33 | - containerPort: 80 34 | -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/circuit-breaker/circuit-dr-product.yml: -------------------------------------------------------------------------------- 1 | apiVersion: networking.istio.io/v1alpha3 2 | kind: DestinationRule 3 | metadata: 4 | name: circuit-dr-product 5 | namespace: shoppingportal 6 | spec: 7 | host: productreviewservice.shoppingportal.svc.cluster.local 8 | trafficPolicy: 9 | connectionPool: 10 | tcp: 11 | maxConnections: 1 12 | http: 13 | http1MaxPendingRequests: 1 14 | maxRequestsPerConnection: 1 15 | outlierDetection: 16 | consecutiveErrors: 1 17 | interval: 1s 18 | baseEjectionTime: 3m 19 | maxEjectionPercent: 100 20 | -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/circuit-breaker/productreview-deploy.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1beta2 2 | kind: Deployment 3 | metadata: 4 | name: productreview-deploy 5 | namespace: shoppingportal 6 | spec: 7 | replicas: 1 8 | selector: 9 | matchLabels: 10 | name: productreviewms 11 | zone: prod 12 | minReadySeconds: 10 13 | strategy: 14 | type: RollingUpdate 15 | rollingUpdate: 16 | maxUnavailable: 1 17 | maxSurge: 1 18 | template: 19 | metadata: 20 | labels: 21 | name: productreviewms 22 | version: v1 23 | release: stable 24 | tier: fe 25 | zone: prod 26 | managed-by: m2 27 | spec: 28 | containers: 29 | - name: productreview-ctr 30 | image: metamagicglobal/productreviewms 31 | imagePullPolicy: Always 32 | ports: 33 | - containerPort: 8082 34 | -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/circuit-breaker/productreviewservice.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: productreviewservice 5 | namespace: shoppingportal 6 | spec: 7 | selector: 8 | name: productreviewms 9 | ports: 10 | - protocol: TCP 11 | targetPort: 8082 12 | port: 80 13 | name: http 14 | -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/circuit-breaker/shoppingportal-ns.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Namespace 3 | metadata: 4 | name: shoppingportal 5 | labels: 6 | name: shoppingportal 7 | istio-injection: enabled 8 | -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/istio_netflix/config-server-destination.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: networking.istio.io/v1alpha3 2 | kind: DestinationRule 3 | metadata: 4 | name: config-destination-rules 5 | namespace: shoppingportal 6 | spec: 7 | host: configservice.shoppingportal.svc.cluster.local 8 | -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/istio_netflix/config-server-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: configserverservice 5 | namespace: shoppingportal 6 | spec: 7 | selector: 8 | name: configserver 9 | ports: 10 | - protocol: TCP 11 | targetPort: 6061 12 | port: 80 13 | name: http -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/istio_netflix/config-server.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1beta2 2 | kind: Deployment 3 | metadata: 4 | name: configserver-deploy 5 | namespace: shoppingportal 6 | spec: 7 | replicas: 1 8 | selector: 9 | matchLabels: 10 | name: configserver 11 | zone: prod 12 | minReadySeconds: 10 13 | strategy: 14 | type: RollingUpdate 15 | rollingUpdate: 16 | maxUnavailable: 1 17 | maxSurge: 1 18 | template: 19 | metadata: 20 | labels: 21 | name: configserver 22 | version: v1 23 | release: stable 24 | tier: fe 25 | zone: prod 26 | managed-by: m2 27 | spec: 28 | containers: 29 | - name: configserver-ctr 30 | image: metamagicglobal/config-wk 31 | imagePullPolicy: Always 32 | ports: 33 | - containerPort: 6061 34 | -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/istio_netflix/eureka-server-destination.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: networking.istio.io/v1alpha3 2 | kind: DestinationRule 3 | metadata: 4 | name: eureka-destination-rules 5 | namespace: shoppingportal 6 | spec: 7 | host: eurekaserverservice.shoppingportal.svc.cluster.local 8 | -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/istio_netflix/eureka-server-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: eurekaserverservice 5 | namespace: shoppingportal 6 | spec: 7 | selector: 8 | name: eurekaserver 9 | ports: 10 | - protocol: TCP 11 | targetPort: 7070 12 | port: 80 13 | name: http -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/istio_netflix/productservice-svc.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: productservicems 5 | namespace: shoppingportal 6 | spec: 7 | selector: 8 | name: productservicems 9 | ports: 10 | - protocol: TCP 11 | targetPort: 8081 12 | port: 80 13 | name: http -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/istio_netflix/shopping-ns.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Namespace 3 | metadata: 4 | name: shoppingportal 5 | labels: 6 | name: shoppingportal 7 | istio-injection: enabled 8 | -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/istio_netflix/shoppingportal-gw.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: networking.istio.io/v1alpha3 2 | kind: Gateway 3 | metadata: 4 | name: shoppingportal-gateway 5 | namespace: shoppingportal 6 | spec: 7 | selector: 8 | istio: ingressgateway # use istio default controller 9 | servers: 10 | - port: 11 | number: 80 12 | name: http 13 | protocol: HTTP 14 | hosts: 15 | - "*" -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/istio_netflix/shoppingportal-virtualservice.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: networking.istio.io/v1alpha3 2 | kind: VirtualService 3 | metadata: 4 | name: shoppingportal-vs 5 | namespace: shoppingportal 6 | spec: 7 | gateways: 8 | - shoppingportal-gateway 9 | hosts: 10 | - "*" 11 | http: 12 | - match: 13 | - uri: 14 | prefix: /configserver 15 | route: 16 | - destination: 17 | host: configserverservice.shoppingportal.svc.cluster.local 18 | port: 19 | number: 80 20 | - match: 21 | - uri: 22 | prefix: /eureka-server 23 | route: 24 | - destination: 25 | host: eurekaserverservice.shoppingportal.svc.cluster.local 26 | port: 27 | number: 80 28 | -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/jwks.json: -------------------------------------------------------------------------------- 1 | { "keys":[ {"e":"AQAB","kid":"bXV8zNmrzO7xOqosiQ6WkeAuQiu_rtW1MO-n3XsgFQU","kty":"RSA","n":"vKgErnmX9rBmfdvFkn-FmkobqnSIN2u_YWBbTiy3NHFwqBpD_HVO9q8wyPLzl4Xu-AwBnZ5L_TY-afA30t3qseGnZvFrN3PRy0M9Zn0ZepcyI36bCm9okk1utsk7GlsEzrA9O7-97tJVfJ652sISHZ6YrUhQ-VNu5N2MH6Hjzp2EY70akW_wEYSOP4h34GT5S5Lr8j-kUTSXi_CWmWHvAspH_-6l7NFuakDMkDonSa-Lwtkwrc8ZX262k6BBAoxPZRRjuKZZLBatAhihGi04kTb_kKAYGFTLWpGjCGMx26LshV4pNCoUp1qRmvry_cS3xUJh-Mu-zpwCC9XnW-V1kw"}]} 2 | -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/jwksnew.json: -------------------------------------------------------------------------------- 1 | { "keys":[ {"e":"AQAB","kid":"_SYNr3ZrjQ9OIIBOjqClwYD4GVfrSTJ27rzrbdMphfc","kty":"RSA","n":"5eCovRBNLNPP4hUB-SBXtqhCWntnrVPpzjQA9AiYj5SCkPZQhtaMCwMXSyZIGuLNJkfTX3uzNxVGAyIZ2PAAOp51fHGzAhqICWoa82nEj-K--kwbbRiKcFTGYFDBUmplaYBJgw6b-E7Q0DrUPMCRDZfEkPXoVadBPHU3eMtqcQdVEP4h__NDY7vXyYgODiIiWyWOr9pSbXOLcG8AXWqdiqA7gpjvlIejUJ7LPeXkNk_5ES_PL0RSB1p3nFl4VudxwnwlWNhLRcZ4wpOmsoYl51Q_0Zq79UcD8P-MP_LjFq9j0uyBJh_hGNH46TQbLB_dugctf7H4g5RCE3Qbm-W-2Q"}]} 2 | -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/jwt-auth/keys/.jwksnew.json.swp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/yaml/Service-Mesh-2-Security/jwt-auth/keys/.jwksnew.json.swp -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/jwt-auth/keys/jwks5.json: -------------------------------------------------------------------------------- 1 | { "keys":[ {"e":"AQAB","kid":"_SYNr3ZrjQ9OIIBOjqClwYD4GVfrSTJ27rzrbdMphfc","kty":"RSA","n":"5eCovRBNLNPP4hUB-SBXtqhCWntnrVPpzjQA9AiYj5SCkPZQhtaMCwMXSyZIGuLNJkfTX3uzNxVGAyIZ2PAAOp51fHGzAhqICWoa82nEj-K--kwbbRiKcFTGYFDBUmplaYBJgw6b-E7Q0DrUPMCRDZfEkPXoVadBPHU3eMtqcQdVEP4h__NDY7vXyYgODiIiWyWOr9pSbXOLcG8AXWqdiqA7gpjvlIejUJ7LPeXkNk_5ES_PL0RSB1p3nFl4VudxwnwlWNhLRcZ4wpOmsoYl51Q_0Zq79UcD8P-MP_LjFq9j0uyBJh_hGNH46TQbLB_dugctf7H4g5RCE3Qbm-W-2Q"}]} 2 | -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/jwt-auth/keys/jwkslatest.json: -------------------------------------------------------------------------------- 1 | { "keys":[ {"e":"AQAB","kid":"gre76G6p93Ckkh8Rgvg9WbWwS7rDjg1BSI02MXLe-Og","kty":"RSA","n":"7_DY-ohZ90llKnbwp1ZYHndreWfoPb6434FYeT9Za6fDDz673nlPNbUuyLPCwmdC4t3gFCZsMv6UE4RInCd7k0191IGfdgfTJczmkhvi2pgMVzkdSaGfpUg_nXt5CrEFr8FmHuC7zdvSjSrGMLpE8mr4DfD6QaXyHtaONk50gmjenfDqx-zEaoQrKnGiKrmosU0aLsdf9GB8yeYmtxBs5LwikRXe74fXcMus8tDYoCXfxWlYoA_iU5Rwzz4_A3UWFGlvgVb_il6uKVE9esYsZCG9PZfSNYlaGxxeeUz0UsAs1NHA-Sx_Y-MjUq07Rsfk_PniMqUn2lTNg-Jz6FeRNQ"}]} -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/jwt-auth/keys/jwksnew.json: -------------------------------------------------------------------------------- 1 | { "keys":[ {"e":"AQAB","kid":"_SYNr3ZrjQ9OIIBOjqClwYD4GVfrSTJ27rzrbdMphfc","kty":"RSA","n":"5eCovRBNLNPP4hUB-SBXtqhCWntnrVPpzjQA9AiYj5SCkPZQhtaMCwMXSyZIGuLNJkfTX3uzNxVGAyIZ2PAAOp51fHGzAhqICWoa82nEj-K--kwbbRiKcFTGYFDBUmplaYBJgw6b-E7Q0DrUPMCRDZfEkPXoVadBPHU3eMtqcQdVEP4h__NDY7vXyYgODiIiWyWOr9pSbXOLcG8AXWqdiqA7gpjvlIejUJ7LPeXkNk_5ES_PL0RSB1p3nFl4VudxwnwlWNhLRcZ4wpOmsoYl51Q_0Zq79UcD8P-MP_LjFq9j0uyBJh_hGNH46TQbLB_dugctf7H4g5RCE3Qbm-W-2Q"}]} 2 | -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/jwt-auth/product-destination.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: networking.istio.io/v1alpha3 2 | kind: DestinationRule 3 | metadata: 4 | name: product-destination-rules 5 | namespace: shoppingportal 6 | spec: 7 | host: "*.shoppingportal.svc.cluster.local" 8 | trafficPolicy: 9 | tls: 10 | mode: ISTIO_MUTUAL 11 | subsets: 12 | - name: stable 13 | labels: 14 | version: v1 15 | - name: canary 16 | labels: 17 | version: v2 -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/jwt-auth/shopping-tls-enable.yml: -------------------------------------------------------------------------------- 1 | apiVersion: authentication.istio.io/v1alpha1 2 | kind: "MeshPolicy" 3 | metadata: 4 | name: "default" 5 | spec: 6 | peers: 7 | - mtls: {} 8 | --- 9 | apiVersion: networking.istio.io/v1alpha3 10 | kind: DestinationRule 11 | metadata: 12 | name: "enable-mtls" 13 | namespace: "default" # even though we specify a namespace, this rule applies to all namespaces 14 | spec: 15 | host: "*.local" 16 | trafficPolicy: 17 | tls: 18 | mode: ISTIO_MUTUAL 19 | --- 20 | apiVersion: networking.istio.io/v1alpha3 21 | kind: DestinationRule 22 | metadata: 23 | name: "api-server" 24 | spec: 25 | host: "kubernetes.default.svc.cluster.local" 26 | trafficPolicy: 27 | tls: 28 | mode: DISABLE -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/jwt-auth/shoppingportal-gw.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: networking.istio.io/v1alpha3 2 | kind: Gateway 3 | metadata: 4 | name: shoppingportal-gateway 5 | namespace: shoppingportal 6 | spec: 7 | selector: 8 | istio: ingressgateway # use istio default controller 9 | servers: 10 | - port: 11 | number: 80 12 | name: http 13 | protocol: HTTP 14 | hosts: 15 | - "*" -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/jwt-auth/shoppingportal-jwt-enable.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: "authentication.istio.io/v1alpha1" 2 | kind: "Policy" 3 | metadata: 4 | name: "jwt-auth" 5 | namespace: shoppingportal 6 | spec: 7 | targets: 8 | - name: productservice 9 | peers: 10 | - mtls: {} 11 | origins: 12 | - jwt: 13 | issuer: "testing@secure.istio.io" 14 | jwksUri: https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/master/yaml/Service-Mesh-2-Security/jwt-auth/keys/jwks5.json 15 | principalBinding: USE_ORIGIN 16 | -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/jwt-auth/shoppingportal-virtualservice-jwt.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: networking.istio.io/v1alpha3 2 | kind: VirtualService 3 | metadata: 4 | name: shoppingportal-vs 5 | namespace: shoppingportal 6 | spec: 7 | gateways: 8 | - shoppingportal-gateway 9 | hosts: 10 | - "*" 11 | http: 12 | - match: 13 | - uri: 14 | prefix: /productms 15 | route: 16 | - destination: 17 | host: productservice.shoppingportal.svc.cluster.local 18 | subset: stable # match v2 only 19 | port: 20 | number: 80 -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/jwt-demo-token.jwt: -------------------------------------------------------------------------------- 1 | eyJhbGciOiJSUzI1NiIsImtpZCI6ImxPVE1yNG8talhPOTZyejlpVVFtU3BISDhmbzN1enJXMmZVRW1YUXJIaGsiLCJ0eXAiOiJKV1QifQ.eyJleHAiOjQ3MDg0MTU4MDEsImZvbyI6ImJhciIsImlhdCI6MTU1NDgxNTgwMSwiaXNzIjoibW1uZXd0ZXN0aW5nQG1ldGFtYWdpYy5pbiIsInN1YiI6Im1tbmV3dGVzdGluZ0BtZXRhbWFnaWMuaW4ifQ.dyge0_dgvSY0cpGORoI309MwzPQVkdp99eIEwn6epPcAOZmmdkH1LZ35zd4mX13laMbkmSHkUPewM1JBZgKFVGriyQjf89_IF7TOFIKDjIoKvLdbEAb_bFdgFGTb7IY3gsK46DZyJnc8U1nG_1EeLMYosoC8PVM2AN2a1ycP8yq1C-6uHQcec7jCywSgba4t5VacIL4oK0uL9URNaQRsbBu2McKN8yTXi3bJNotxJz_mIiN74Bi4g0OgPrNEfQdJDzTIH-s9TGeZKuWsLhBRjWlJmZtu0Mmik4XvE5JbV2_YX0YJYjhDQAeG0bzsG0CI-KEJusn0i72mK68h4m_j0Q 2 | -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/jwt.json: -------------------------------------------------------------------------------- 1 | { "keys":[ {"e":"AQAB","kid":"lOTMr4o-jXO96rz9iUQmSpHH8fo3uzrW2fUEmXQrHhk","kty":"RSA","n":"p7CTkme9rJ1OJVb1Q1PQ1bb-r9JFoWAf6GkBk1Vk1Ay5Dr2Lj7ZLED16NN-mACfpGwqaG2g5v5Yxj13iWIrsM3QiqjDwwQKnXAY2R3c44MAyaHKuuKznRaZ8b4m-yhimdtSJSQm31TCcDJo4RsKneu3FwQhXZHa40D1MqovA2a0Y7tSO5qZHQ3gZJhm5RjuIR9mXIOYjlm2y5_p39hU3zui4FpCSuLhUJb1oV4HewP1qeHQLU0sxC0x5ZcRfOugiEP0JWCpGJqK4wh7RHNTfkKvFD7ltGUXww1ZY64rBCZE9NPO3lqotC3MLpvFi-GjzdcFIcwCFRJ5i9XXA6-LNSw"}]} 2 | -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/mtls/mtls-ns-wide.yml: -------------------------------------------------------------------------------- 1 | apiVersion: "authentication.istio.io/v1alpha1" 2 | kind: "Policy" 3 | metadata: 4 | name: "default" 5 | namespace: "shoppingportal" 6 | spec: 7 | peers: 8 | - mtls: {} -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/mtls/product-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: productservice 5 | namespace: shoppingportal 6 | spec: 7 | selector: 8 | name: productms 9 | ports: 10 | - protocol: TCP 11 | targetPort: 8082 12 | port: 80 13 | name: http -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/mtls/productreview-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: productreviewservice 5 | namespace: shoppingportal2 6 | spec: 7 | selector: 8 | name: productreviewms 9 | ports: 10 | - protocol: TCP 11 | targetPort: 8082 12 | port: 80 13 | name: http -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/mtls/productreviewms-dr-mtls.yml: -------------------------------------------------------------------------------- 1 | apiVersion: networking.istio.io/v1alpha3 2 | kind: DestinationRule 3 | metadata: 4 | name: productreviewms-dr 5 | namespace: shoppingportal 6 | spec: 7 | host: "*.shoppingportal2.svc.cluster.local" 8 | trafficPolicy: 9 | tls: 10 | mode: DISABLE 11 | -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/mtls/shopping-ns.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Namespace 3 | metadata: 4 | name: shoppingportal 5 | labels: 6 | name: shoppingportal 7 | istio-injection: enabled 8 | -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/mtls/shopping-tls-enable.yml: -------------------------------------------------------------------------------- 1 | apiVersion: authentication.istio.io/v1alpha1 2 | kind: "MeshPolicy" 3 | metadata: 4 | name: "default" 5 | spec: 6 | peers: 7 | - mtls: {} 8 | --- 9 | apiVersion: networking.istio.io/v1alpha3 10 | kind: DestinationRule 11 | metadata: 12 | name: "enable-mtls" 13 | namespace: "default" # even though we specify a namespace, this rule applies to all namespaces 14 | spec: 15 | host: "*.local" 16 | trafficPolicy: 17 | tls: 18 | mode: ISTIO_MUTUAL 19 | --- 20 | apiVersion: networking.istio.io/v1alpha3 21 | kind: DestinationRule 22 | metadata: 23 | name: "api-server" 24 | spec: 25 | host: "kubernetes.default.svc.cluster.local" 26 | trafficPolicy: 27 | tls: 28 | mode: DISABLE -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/mtls/shopping2-ns.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Namespace 3 | metadata: 4 | name: shoppingportal2 5 | labels: 6 | name: shoppingportal2 7 | istio-injection: enabled 8 | -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/rbac-mtls-shoppingportal-example/allow-productservice_get.yml: -------------------------------------------------------------------------------- 1 | apiVersion: "rbac.istio.io/v1alpha1" 2 | kind: ServiceRole 3 | metadata: 4 | name: productservice-viewer 5 | namespace: shoppingportal 6 | spec: 7 | rules: 8 | - services: ["productservice.shoppingportal.svc.cluster.local"] 9 | methods: ["GET"] 10 | --- 11 | apiVersion: "rbac.istio.io/v1alpha1" 12 | kind: ServiceRoleBinding 13 | metadata: 14 | name: bind-productservice-viewer 15 | namespace: shoppingportal 16 | spec: 17 | subjects: 18 | - user: "*" 19 | roleRef: 20 | kind: ServiceRole 21 | name: "productservice-viewer" -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/rbac-mtls-shoppingportal-example/allow-ui_get.yml: -------------------------------------------------------------------------------- 1 | apiVersion: "rbac.istio.io/v1alpha1" 2 | kind: ServiceRole 3 | metadata: 4 | name: ui-viewer 5 | namespace: shoppingportal 6 | spec: 7 | rules: 8 | - services: ["k8uiworkshopservice.shoppingportal.svc.cluster.local"] 9 | methods: ["GET"] 10 | --- 11 | apiVersion: "rbac.istio.io/v1alpha1" 12 | kind: ServiceRoleBinding 13 | metadata: 14 | name: bind-ui-viewer 15 | namespace: shoppingportal 16 | spec: 17 | subjects: 18 | - user: "*" 19 | roleRef: 20 | kind: ServiceRole 21 | name: "ui-viewer" -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/rbac-mtls-shoppingportal-example/allow_productreview_get.yml: -------------------------------------------------------------------------------- 1 | apiVersion: "rbac.istio.io/v1alpha1" 2 | kind: ServiceRole 3 | metadata: 4 | name: productreviewservice-viewer 5 | namespace: shoppingportal 6 | spec: 7 | rules: 8 | - services: ["productreviewservice.shoppingportal.svc.cluster.local"] 9 | methods: ["GET"] 10 | --- 11 | apiVersion: "rbac.istio.io/v1alpha1" 12 | kind: ServiceRoleBinding 13 | metadata: 14 | name: bind-productreviewservice 15 | namespace: shoppingportal 16 | spec: 17 | subjects: 18 | - user: "*" 19 | roleRef: 20 | kind: ServiceRole 21 | name: "productreviewservice-viewer" -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/rbac-mtls-shoppingportal-example/product-destination.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: networking.istio.io/v1alpha3 2 | kind: DestinationRule 3 | metadata: 4 | name: product-destination-rules 5 | namespace: shoppingportal 6 | spec: 7 | host: productservice.shoppingportal.svc.cluster.local 8 | subsets: 9 | - name: stable 10 | labels: 11 | version: v1 12 | - name: canary 13 | labels: 14 | version: v2 15 | trafficPolicy: 16 | tls: 17 | mode: ISTIO_MUTUAL -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/rbac-mtls-shoppingportal-example/product-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: productservice 5 | namespace: shoppingportal 6 | spec: 7 | selector: 8 | name: productms 9 | ports: 10 | - protocol: TCP 11 | targetPort: 8082 12 | port: 80 13 | name: http -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/rbac-mtls-shoppingportal-example/productreview-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: productreviewservice 5 | namespace: shoppingportal 6 | spec: 7 | selector: 8 | name: productreviewms 9 | ports: 10 | - protocol: TCP 11 | targetPort: 8082 12 | port: 80 13 | name: http -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/rbac-mtls-shoppingportal-example/productreview-v1.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1beta2 2 | kind: Deployment 3 | metadata: 4 | name: productreview-deploy 5 | namespace: shoppingportal 6 | spec: 7 | replicas: 1 8 | selector: 9 | matchLabels: 10 | name: productreviewms 11 | zone: prod 12 | minReadySeconds: 10 13 | strategy: 14 | type: RollingUpdate 15 | rollingUpdate: 16 | maxUnavailable: 1 17 | maxSurge: 1 18 | template: 19 | metadata: 20 | labels: 21 | name: productreviewms 22 | version: v1 23 | release: stable 24 | tier: fe 25 | zone: prod 26 | managed-by: m2 27 | spec: 28 | serviceAccountName: productreviewms-sa 29 | containers: 30 | - name: productreview-ctr 31 | image: metamagicglobal/productreviewms 32 | imagePullPolicy: Always 33 | ports: 34 | - containerPort: 8082 -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/rbac-mtls-shoppingportal-example/productreviewms-dr-mtls.yml: -------------------------------------------------------------------------------- 1 | apiVersion: networking.istio.io/v1alpha3 2 | kind: DestinationRule 3 | metadata: 4 | name: productreviewms-dr 5 | namespace: shoppingportal 6 | spec: 7 | host: "*.shoppingportal2.svc.cluster.local" 8 | trafficPolicy: 9 | tls: 10 | mode: DISABLE 11 | -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/rbac-mtls-shoppingportal-example/rbac-config-ON.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: "rbac.istio.io/v1alpha1" 2 | kind: ClusterRbacConfig 3 | metadata: 4 | name: default 5 | spec: 6 | mode: 'ON_WITH_INCLUSION' 7 | inclusion: 8 | namespaces: ["shoppingportal"] -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/rbac-mtls-shoppingportal-example/sa-define.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ServiceAccount 3 | metadata: 4 | name: productms-sa 5 | namespace: shoppingportal 6 | --- 7 | apiVersion: v1 8 | kind: ServiceAccount 9 | metadata: 10 | name: productreviewms-sa 11 | namespace: shoppingportal 12 | --- 13 | apiVersion: v1 14 | kind: ServiceAccount 15 | metadata: 16 | name: ui-sa 17 | namespace: shoppingportal 18 | -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/rbac-mtls-shoppingportal-example/shopping-ns.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Namespace 3 | metadata: 4 | name: shoppingportal 5 | labels: 6 | name: shoppingportal 7 | istio-injection: enabled 8 | -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/rbac-mtls-shoppingportal-example/shoppingportal-gw.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: networking.istio.io/v1alpha3 2 | kind: Gateway 3 | metadata: 4 | name: shoppingportal-gateway 5 | namespace: shoppingportal 6 | spec: 7 | selector: 8 | istio: ingressgateway # use istio default controller 9 | servers: 10 | - port: 11 | number: 80 12 | name: http 13 | protocol: HTTP 14 | hosts: 15 | - "*" -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/rbac-mtls-shoppingportal-example/ui-destination.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: networking.istio.io/v1alpha3 2 | kind: DestinationRule 3 | metadata: 4 | name: ui-destination-rules 5 | namespace: shoppingportal 6 | spec: 7 | host: k8uiworkshopservice.shoppingportal.svc.cluster.local 8 | subsets: 9 | - name: stable 10 | labels: 11 | version: v1 12 | - name: canary 13 | labels: 14 | version: v2 15 | trafficPolicy: 16 | tls: 17 | mode: ISTIO_MUTUAL -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/rbac-mtls-shoppingportal-example/ui-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: k8uiworkshopservice 5 | namespace: shoppingportal 6 | spec: 7 | selector: 8 | name: k8uiworkshop 9 | ports: 10 | - protocol: TCP 11 | targetPort: 80 12 | port: 80 13 | name: http -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/rbac-mtls-shoppingportal-example/ui-v1.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1beta2 2 | kind: Deployment 3 | metadata: 4 | name: k8uiworkshop-deploy 5 | namespace: shoppingportal 6 | spec: 7 | replicas: 1 8 | selector: 9 | matchLabels: 10 | name: k8uiworkshop 11 | zone: prod 12 | minReadySeconds: 10 13 | strategy: 14 | type: RollingUpdate 15 | rollingUpdate: 16 | maxUnavailable: 1 17 | maxSurge: 1 18 | template: 19 | metadata: 20 | labels: 21 | name: k8uiworkshop 22 | version: v1 23 | release: stable 24 | tier: fe 25 | zone: prod 26 | managed-by: m2 27 | spec: 28 | serviceAccountName: ui-sa 29 | containers: 30 | - name: k8uiworkshop-ctr 31 | image: metamagicglobal/k8uiworkshop:v1.0 32 | imagePullPolicy: Always 33 | ports: 34 | - containerPort: 80 -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/rbac-mtls-shoppingportal-example/ui-v2.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1beta2 2 | kind: Deployment 3 | metadata: 4 | name: k8uiworkshop-deploy-v2 5 | namespace: shoppingportal 6 | spec: 7 | replicas: 1 8 | selector: 9 | matchLabels: 10 | name: k8uiworkshop 11 | zone: prod 12 | minReadySeconds: 10 13 | strategy: 14 | type: RollingUpdate 15 | rollingUpdate: 16 | maxUnavailable: 1 17 | maxSurge: 1 18 | template: 19 | metadata: 20 | labels: 21 | name: k8uiworkshop 22 | version: v2 23 | release: canary 24 | tier: fe 25 | zone: prod 26 | managed-by: m2 27 | spec: 28 | serviceAccountName: ui-sa 29 | containers: 30 | - name: k8uiworkshop-ctr 31 | image: metamagicglobal/k8uiworkshop:v1.2 32 | imagePullPolicy: Always 33 | ports: 34 | - containerPort: 80 -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/rbac/k8-service-role-binding.yml: -------------------------------------------------------------------------------- 1 | apiVersion: "rbac.istio.io/v1alpha1" 2 | kind: ServiceRole 3 | metadata: 4 | name: service-viewer 5 | namespace: shoppingportal 6 | spec: 7 | rules: 8 | - services: ["*.shoppingportal.svc.cluster.local"] 9 | methods: ["GET", "POST"] 10 | --- 11 | apiVersion: "rbac.istio.io/v1alpha1" 12 | kind: ServiceRoleBinding 13 | metadata: 14 | name: bind-service-viewer 15 | namespace: shoppingportal 16 | spec: 17 | subjects: 18 | - properties: 19 | source.namespace: "shoppingportal" 20 | roleRef: 21 | kind: ServiceRole 22 | name: "service-viewer" -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/rbac/ns-shoppingportal2.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Namespace 3 | metadata: 4 | name: shoppingportal2 5 | labels: 6 | name: shoppingportal2 7 | istio-injection: enabled -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/rbac/product-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: productservice 5 | namespace: shoppingportal 6 | spec: 7 | selector: 8 | name: productms 9 | ports: 10 | - protocol: TCP 11 | targetPort: 8082 12 | port: 80 13 | name: http -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/rbac/productreview-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: productreviewservice 5 | namespace: shoppingportal2 6 | spec: 7 | selector: 8 | name: productreviewms 9 | ports: 10 | - protocol: TCP 11 | targetPort: 8082 12 | port: 80 13 | name: http -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/rbac/productservice-servicerole-binding.yml: -------------------------------------------------------------------------------- 1 | apiVersion: "rbac.istio.io/v1alpha1" 2 | kind: ServiceRole 3 | metadata: 4 | name: productservice-viewer 5 | namespace: shoppingportal 6 | spec: 7 | rules: 8 | - services: ["*.shoppingportal.svc.cluster.local"] 9 | methods: ["GET", "POST"] 10 | --- 11 | apiVersion: "rbac.istio.io/v1alpha1" 12 | kind: ServiceRoleBinding 13 | metadata: 14 | name: bind-productservice 15 | namespace: shoppingportal 16 | spec: 17 | subjects: 18 | - properties: 19 | source.namespace: "shoppingportal2" 20 | roleRef: 21 | kind: ServiceRole 22 | name: "productservice-viewer" -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/rbac/rbac-config-ON.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: "rbac.istio.io/v1alpha1" 2 | kind: ClusterRbacConfig 3 | metadata: 4 | name: default 5 | spec: 6 | mode: 'ON_WITH_INCLUSION' 7 | inclusion: 8 | namespaces: ["shoppingportal"] -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/rbac/sa-define.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ServiceAccount 3 | metadata: 4 | name: productms-sa 5 | namespace: shoppingportal 6 | --- 7 | apiVersion: v1 8 | kind: ServiceAccount 9 | metadata: 10 | name: productreviewms-sa 11 | namespace: shoppingportal2 12 | -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/rbac/shopping-ns.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Namespace 3 | metadata: 4 | name: shoppingportal 5 | labels: 6 | name: shoppingportal 7 | istio-injection: enabled 8 | -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/timeout-fault-injection/fault-injection-virtualservice.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: networking.istio.io/v1alpha3 2 | kind: VirtualService 3 | metadata: 4 | name: shoppingportal-vs 5 | namespace: shoppingportal 6 | spec: 7 | gateways: 8 | - shoppingportal-gateway 9 | hosts: 10 | - "*" 11 | http: 12 | - match: 13 | - uri: 14 | prefix: /productreviewms 15 | route: 16 | - destination: 17 | host: productreviewservice.shoppingportal.svc.cluster.local 18 | port: 19 | number: 80 20 | fault: #This will put delay of 2 sec for every request to productreview service 21 | delay: 22 | percent: 100 23 | fixedDelay: 2s 24 | # Below Fault example, puts delay of 2 second and abort 10 percentage of request with 400 request 25 | # fault: 26 | # delay: 27 | # fixedDelay: 2s 28 | # abort: 29 | # percent: 10 30 | # httpStatus: 400 -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/timeout-fault-injection/productreview-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: productreviewservice 5 | namespace: shoppingportal 6 | spec: 7 | selector: 8 | name: productreviewms 9 | ports: 10 | - protocol: TCP 11 | targetPort: 8082 12 | port: 80 13 | name: http -------------------------------------------------------------------------------- /yaml/Service-Mesh-2-Security/timeout-fault-injection/timeout-virtualservice.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: networking.istio.io/v1alpha3 2 | kind: VirtualService 3 | metadata: 4 | name: shoppingportal-vs 5 | namespace: shoppingportal 6 | spec: 7 | gateways: 8 | - shoppingportal-gateway 9 | hosts: 10 | - "*" 11 | http: 12 | - match: 13 | - uri: 14 | prefix: /productreviewms 15 | route: 16 | - destination: 17 | host: productreviewservice.shoppingportal.svc.cluster.local 18 | port: 19 | number: 80 20 | timeout: 1s # timeout the service call if it is more then 1 sec, curl http://192.168.99.100:31380/productreviewms/productreview/timeout/1 - This endpoint has sleep of 5 sec 21 | -------------------------------------------------------------------------------- /yaml/k8s-1-Basic/1-namespace/READMe.md: -------------------------------------------------------------------------------- 1 | # [Namespace](https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/) 2 | Namespaces are intended for use in environments with many users spread across multiple teams, or projects. 3 | 4 | #### Viewing namespaces 5 | ```` 6 | kubectl get namespaces 7 | ```` 8 | screen shot 2018-10-06 at 1 16 13 pm 9 | 10 | #### Create new namespace 11 | ```` 12 | kubectl create -f https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/master/yaml/k8s-1-Basic/9-app-2-shopping-portal/shoppiny-ns.yaml 13 | ```` 14 | 15 | New namespace "shoppingportal" added 16 | 17 | screen shot 2018-10-06 at 1 17 36 pm 18 | 19 | -------------------------------------------------------------------------------- /yaml/k8s-1-Basic/1-namespace/hello-ns.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Namespace 3 | metadata: 4 | name: helloworld 5 | -------------------------------------------------------------------------------- /yaml/k8s-1-Basic/2-hello-world-pod/README.md: -------------------------------------------------------------------------------- 1 | # Required Fields: 2 | 3 | 1. apiVersion - Which version of the Kubernetes API you’re using to create this object 4 | 5 | 2. kind - What kind of object you want to create 6 | 7 | 3. metadata - Data that helps uniquely identify the object, including a name string, UID, and optional namespace 8 | 9 | -------------------------------------------------------------------------------- /yaml/k8s-1-Basic/2-hello-world-pod/hello-pod.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Pod 3 | metadata: 4 | name: hello-pod 5 | namespace: helloworld 6 | labels: 7 | app: hello 8 | zone: prod 9 | version: v1 10 | spec: 11 | containers: 12 | - name: hello-cntr 13 | image: metamagicglobal/hello:v1.0 14 | imagePullPolicy: IfNotPresent 15 | ports: 16 | - containerPort: 80 17 | -------------------------------------------------------------------------------- /yaml/k8s-1-Basic/2-hello-world-pod/hello-svc.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: hello-svc 5 | namespace: helloworld 6 | labels: 7 | app: hello-svc 8 | spec: 9 | selector: 10 | app: hello 11 | type: NodePort 12 | ports: 13 | - port: 80 14 | nodePort: 31100 15 | targetPort: 80 16 | -------------------------------------------------------------------------------- /yaml/k8s-1-Basic/2-hello-world-pod/hello-v1.1-pod.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Pod 3 | metadata: 4 | name: hello-pod 5 | namespace: helloworld 6 | labels: 7 | app: hello 8 | zone: prod 9 | version: v2 10 | spec: 11 | containers: 12 | - name: hello-cntr 13 | image: metamagicglobal/hello:v1.1 14 | imagePullPolicy: IfNotPresent 15 | ports: 16 | - containerPort: 80 17 | -------------------------------------------------------------------------------- /yaml/k8s-1-Basic/3-replication-set/hello-rs.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1beta2 2 | kind: ReplicaSet 3 | metadata: 4 | name: hello-rs 5 | namespace: helloworld 6 | labels: 7 | app: hello-rs 8 | zone: prod 9 | vesrion: v1 10 | spec: 11 | replicas: 3 12 | selector: 13 | matchLabels: 14 | app: hello-rs 15 | template: 16 | metadata: 17 | labels: 18 | app: hello-rs 19 | spec: 20 | containers: 21 | - name: hello-cntr-rs 22 | image: metamagicglobal/hello:v1.0 23 | imagePullPolicy: IfNotPresent 24 | ports: 25 | - containerPort: 80 26 | -------------------------------------------------------------------------------- /yaml/k8s-1-Basic/3-replication-set/lb_service.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: hello-lb-svc 5 | namespace: helloworld 6 | labels: 7 | app: hello-lb-svc 8 | spec: 9 | selector: 10 | app: hello-rs 11 | type: LoadBalancer 12 | ports: 13 | - port: 80 14 | targetPort: 80 15 | -------------------------------------------------------------------------------- /yaml/k8s-1-Basic/4-deployment/README.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /yaml/k8s-1-Basic/4-deployment/productreview-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: productreviewservice 5 | namespace: shoppingportal 6 | spec: 7 | type: NodePort 8 | selector: 9 | name: productreview 10 | ports: 11 | - protocol: TCP 12 | targetPort: 8082 13 | port: 80 14 | name: http -------------------------------------------------------------------------------- /yaml/k8s-1-Basic/5-service-discovery/product-secret.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Secret 3 | metadata: 4 | name: productmssecret 5 | namespace: shoppingportal 6 | type: Opaque 7 | data: 8 | mysqlpassword: cm9vdA== 9 | mysqluser: cm9vdA== 10 | mysqlconnectionurl: amRiYzpteXNxbDovL215c3FsL3N5cwo= 11 | -------------------------------------------------------------------------------- /yaml/k8s-1-Basic/5-service-discovery/product-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: productservice 5 | namespace: shoppingportal 6 | spec: 7 | selector: 8 | name: productms 9 | type: NodePort 10 | ports: 11 | - protocol: TCP 12 | targetPort: 8082 13 | port: 80 14 | name: http 15 | 16 | -------------------------------------------------------------------------------- /yaml/k8s-1-Basic/5-service-discovery/productreview-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: productreviewservice 5 | namespace: shoppingportal 6 | spec: 7 | selector: 8 | name: productreview 9 | ports: 10 | - protocol: TCP 11 | targetPort: 8082 12 | port: 80 13 | name: http 14 | 15 | -------------------------------------------------------------------------------- /yaml/k8s-1-Basic/6-clusterip-svc/hello-clusterip-svc.yml: -------------------------------------------------------------------------------- 1 | kind: Service 2 | apiVersion: v1 3 | metadata: 4 | name: helloworld-service 5 | namespace: helloworld 6 | spec: 7 | selector: 8 | app: hello-cip 9 | ports: 10 | - protocol: TCP 11 | port: 80 12 | targetPort: 80 -------------------------------------------------------------------------------- /yaml/k8s-1-Basic/6-clusterip-svc/hello-pod.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Pod 3 | metadata: 4 | name: hello-pod-cip 5 | namespace: helloworld 6 | labels: 7 | app: hello-cip 8 | zone: prod 9 | version: v1 10 | spec: 11 | containers: 12 | - name: hello-cntr 13 | image: metamagicglobal/hello:v1.0 14 | imagePullPolicy: IfNotPresent 15 | ports: 16 | - containerPort: 80 17 | -------------------------------------------------------------------------------- /yaml/k8s-1-Basic/7-rollout-versions/hello-dep.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1beta2 2 | kind: Deployment 3 | metadata: 4 | name: hello-deploy 5 | namespace: helloworld 6 | annotations: 7 | kubernetes.io/change-cause: image-update-v1.0 8 | spec: 9 | replicas: 3 10 | selector: 11 | matchLabels: 12 | desire3d.io/name: hello 13 | desire3d.io/zone: prod 14 | minReadySeconds: 10 15 | strategy: 16 | type: RollingUpdate 17 | rollingUpdate: 18 | maxUnavailable: 1 19 | maxSurge: 1 20 | template: 21 | metadata: 22 | labels: 23 | desire3d.io/name: hello 24 | desire3d.io/version: "1.0.0" 25 | desire3d.io/release: stable 26 | desire3d.io/tier: fe 27 | desire3d.io/zone: prod 28 | desire3d.io/managed-by: m2 29 | spec: 30 | containers: 31 | - name: hello-ctr-1 32 | image: metamagicglobal/hello:v1.0 33 | imagePullPolicy: Always 34 | ports: 35 | - containerPort: 80 36 | -------------------------------------------------------------------------------- /yaml/k8s-1-Basic/7-rollout-versions/hello-svc.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: hello-rollout-svc 5 | namespace: helloworld 6 | labels: 7 | desire3d.io/name: hello-svc 8 | spec: 9 | selector: 10 | desire3d.io/name: hello 11 | type: LoadBalancer 12 | ports: 13 | - port: 80 14 | targetPort: 80 15 | -------------------------------------------------------------------------------- /yaml/k8s-1-Basic/7-rollout-versions/hello-v1.1-dep.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1beta2 2 | kind: Deployment 3 | metadata: 4 | name: hello-deploy 5 | namespace: helloworld 6 | annotations: 7 | kubernetes.io/change-cause: image-update 8 | spec: 9 | replicas: 3 10 | selector: 11 | matchLabels: 12 | desire3d.io/name: hello 13 | desire3d.io/zone: prod 14 | minReadySeconds: 10 15 | strategy: 16 | type: RollingUpdate 17 | rollingUpdate: 18 | maxUnavailable: 1 19 | maxSurge: 1 20 | template: 21 | metadata: 22 | labels: 23 | desire3d.io/name: hello 24 | desire3d.io/version: "1.0.2" 25 | desire3d.io/release: stable 26 | desire3d.io/tier: fe 27 | desire3d.io/zone: prod 28 | desire3d.io/managed-by: m2 29 | spec: 30 | containers: 31 | - name: hello-ctr-1 32 | image: metamagicglobal/hello:v1.1 33 | imagePullPolicy: IfNotPresent 34 | ports: 35 | - containerPort: 80 36 | -------------------------------------------------------------------------------- /yaml/k8s-1-Basic/8-autoscaling-hpa/auto-scaling-ex-2.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: autoscaling/v2beta2 2 | kind: HorizontalPodAutoscaler 3 | metadata: 4 | name: product-hpa 5 | namespace: shoppingportal 6 | spec: 7 | scaleTargetRef: 8 | apiVersion: apps/v1 9 | kind: Deployment 10 | name: productreview-deploy 11 | minReplicas: 1 12 | maxReplicas: 10 13 | metrics: 14 | - type: Resource 15 | resource: 16 | name: cpu 17 | target: 18 | type: AverageUtilization 19 | averageUtilization: 50 20 | - type: Pods 21 | pods: 22 | metric: 23 | name: packets-per-second 24 | targetAverageValue: 1k 25 | - type: Object 26 | object: 27 | metric: 28 | name: requests-per-second 29 | describedObject: 30 | apiVersion: networking.k8s.io/v1beta1 31 | kind: Ingress 32 | name: main-route 33 | target: 34 | kind: Value 35 | value: 10k -------------------------------------------------------------------------------- /yaml/k8s-1-Basic/8-autoscaling-hpa/product-horizontal-scaler.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: autoscaling/v1 2 | kind: HorizontalPodAutoscaler 3 | metadata: 4 | name: product-hpa 5 | namespace: shoppingportal-hpa 6 | spec: 7 | scaleTargetRef: 8 | apiVersion: apps/v1beta2 9 | kind: Deployment 10 | name: productreview-deploy 11 | minReplicas: 1 12 | maxReplicas: 10 13 | targetCPUUtilizationPercentage: 10 14 | -------------------------------------------------------------------------------- /yaml/k8s-1-Basic/8-autoscaling-hpa/productreview-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: productreviewservice 5 | namespace: shoppingportal-hpa 6 | spec: 7 | type: LoadBalancer 8 | selector: 9 | name: productreview 10 | ports: 11 | - protocol: TCP 12 | targetPort: 8082 13 | port: 80 14 | name: http 15 | 16 | -------------------------------------------------------------------------------- /yaml/k8s-1-Basic/8-autoscaling-hpa/shoppingportal-hpa.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Namespace 3 | metadata: 4 | name: shoppingportal-hpa 5 | labels: 6 | name: shoppingportal-hpa 7 | -------------------------------------------------------------------------------- /yaml/k8s-1-Basic/9-app-2-shopping-portal/hello-ing.yml: -------------------------------------------------------------------------------- 1 | apiVersion: extensions/v1beta1 2 | kind: Ingress 3 | metadata: 4 | name: hello-ing 5 | namespace: helloworld 6 | spec: 7 | rules: 8 | - http: 9 | paths: 10 | - path: / 11 | backend: 12 | serviceName: hello-svc 13 | servicePort: 80 14 | -------------------------------------------------------------------------------- /yaml/k8s-1-Basic/9-app-2-shopping-portal/hello-world-ns.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Namespace 3 | metadata: 4 | name: helloworld -------------------------------------------------------------------------------- /yaml/k8s-1-Basic/9-app-2-shopping-portal/shopping-ingress-aws.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: extensions/v1beta1 2 | kind: Ingress 3 | metadata: 4 | name: workshop-ingress 5 | namespace: shoppingportal 6 | annotations: 7 | kubernetes.io/ingress.class: alb 8 | alb.ingress.kubernetes.io/target-type: ip 9 | alb.ingress.kubernetes.io/scheme: internet-facing 10 | alb.ingress.kubernetes.io/tags: Environment=dev,Team=test 11 | alb.ingress.kubernetes.io/subnets: subnet-05ea8630b67fadc35,subnet-06a596c44ee69daa3,subnet-0f3b316de0087896c 12 | spec: 13 | rules: 14 | - http: 15 | paths: 16 | - path: /ui/* 17 | backend: 18 | serviceName: k8uiworkshopservice 19 | servicePort: 80 20 | - path: /productms/* 21 | backend: 22 | serviceName: productservice 23 | servicePort: 80 24 | - path: /productreviewms/* 25 | backend: 26 | serviceName: productreviewservice 27 | servicePort: 80 28 | -------------------------------------------------------------------------------- /yaml/k8s-1-Basic/9-app-2-shopping-portal/shopping-ingress.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: extensions/v1beta1 2 | kind: Ingress 3 | metadata: 4 | name: shoppingportal-ingress 5 | namespace: shoppingportal 6 | annotations: 7 | nginx.ingress.kubernetes.io/ssl-redirect: \"false\" 8 | spec: 9 | rules: 10 | - http: 11 | paths: 12 | - path: /ui 13 | backend: 14 | serviceName: k8uiworkshopservice 15 | servicePort: 80 16 | - path: /productms 17 | backend: 18 | serviceName: productservice 19 | servicePort: 80 20 | - path: /productreviewms 21 | backend: 22 | serviceName: productreviewservice 23 | servicePort: 80 24 | -------------------------------------------------------------------------------- /yaml/k8s-1-Basic/9-app-2-shopping-portal/shoppingportal-gke-ingress.yml: -------------------------------------------------------------------------------- 1 | apiVersion: extensions/v1beta1 2 | kind: Ingress 3 | metadata: 4 | name: shoppingportal-gke-ingress 5 | namespace: shoppingportal 6 | annotations: 7 | nginx.ingress.kubernetes.io/ssl-redirect: \"false\" 8 | spec: 9 | rules: 10 | - http: 11 | paths: 12 | - path: /ui/* 13 | backend: 14 | serviceName: k8uiworkshopservice 15 | servicePort: 80 16 | - path: /productms/* 17 | backend: 18 | serviceName: productservice 19 | servicePort: 80 20 | - path: /productreviewms/* 21 | backend: 22 | serviceName: productreviewservice 23 | servicePort: 80 24 | -------------------------------------------------------------------------------- /yaml/k8s-1-Basic/9-app-2-shopping-portal/shoppiny-ns copy.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Namespace 3 | metadata: 4 | name: shoppingportal 5 | labels: 6 | name: shoppingportal -------------------------------------------------------------------------------- /yaml/k8s-1-Basic/9-app-2-shopping-portal/shoppiny-ns.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Namespace 3 | metadata: 4 | name: shoppingportal 5 | labels: 6 | name: shoppingportal -------------------------------------------------------------------------------- /yaml/k8s-1-Basic/9-app-2-ui/k8uiworkshop-deployment_canary_with_v1.0.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1beta2 2 | kind: Deployment 3 | metadata: 4 | name: k8uiworkshop-deploy-canary 5 | namespace: shoppingportal 6 | spec: 7 | replicas: 1 8 | selector: 9 | matchLabels: 10 | name: k8uiworkshop 11 | zone: prod 12 | minReadySeconds: 10 13 | strategy: 14 | type: RollingUpdate 15 | rollingUpdate: 16 | maxUnavailable: 1 17 | maxSurge: 1 18 | template: 19 | metadata: 20 | labels: 21 | name: k8uiworkshop 22 | version: "2.0.0" 23 | release: stable 24 | tier: fe 25 | zone: prod 26 | managed-by: m2 27 | spec: 28 | containers: 29 | - name: k8uiworkshop-ctr-canary 30 | image: metamagicglobal/k8uiworkshop:v1.1 31 | imagePullPolicy: Always 32 | ports: 33 | - containerPort: 80 34 | -------------------------------------------------------------------------------- /yaml/k8s-1-Basic/9-app-2-ui/k8uiworkshop-deploymentv1.0.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1beta2 2 | kind: Deployment 3 | metadata: 4 | name: k8uiworkshop-deploy 5 | namespace: shoppingportal 6 | spec: 7 | replicas: 1 8 | selector: 9 | matchLabels: 10 | name: k8uiworkshop 11 | zone: prod 12 | minReadySeconds: 10 13 | strategy: 14 | type: RollingUpdate 15 | rollingUpdate: 16 | maxUnavailable: 1 17 | maxSurge: 1 18 | template: 19 | metadata: 20 | labels: 21 | name: k8uiworkshop 22 | version: "1.0.0" 23 | release: stable 24 | tier: fe 25 | zone: prod 26 | managed-by: m2 27 | spec: 28 | containers: 29 | - name: k8uiworkshop-ctr 30 | image: metamagicglobal/k8uiworkshop:v1.0 31 | imagePullPolicy: Always 32 | ports: 33 | - containerPort: 80 -------------------------------------------------------------------------------- /yaml/k8s-1-Basic/9-app-2-ui/k8uiworkshop-deploymentv1.1.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1beta2 2 | kind: Deployment 3 | metadata: 4 | name: k8uiworkshop-deploy 5 | namespace: shoppingportal 6 | spec: 7 | replicas: 1 8 | selector: 9 | matchLabels: 10 | name: k8uiworkshop 11 | zone: prod 12 | minReadySeconds: 10 13 | strategy: 14 | type: RollingUpdate 15 | rollingUpdate: 16 | maxUnavailable: 1 17 | maxSurge: 1 18 | template: 19 | metadata: 20 | labels: 21 | name: k8uiworkshop 22 | version: "1.0.0" 23 | release: stable 24 | tier: fe 25 | zone: prod 26 | managed-by: m2 27 | spec: 28 | containers: 29 | - name: k8uiworkshop-ctr 30 | image: metamagicglobal/k8uiworkshop:v1.1 31 | imagePullPolicy: Always 32 | ports: 33 | - containerPort: 80 -------------------------------------------------------------------------------- /yaml/k8s-1-Basic/9-app-2-ui/k8uiworkshop-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: k8uiworkshopservice 5 | namespace: shoppingportal 6 | spec: 7 | type: NodePort 8 | selector: 9 | name: k8uiworkshop 10 | ports: 11 | - protocol: TCP 12 | targetPort: 80 13 | port: 80 14 | name: http 15 | 16 | -------------------------------------------------------------------------------- /yaml/k8s-2-App-setup/2-configMap/configMap-literals.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | name: special-config 5 | namespace: default 6 | data: 7 | SPECIAL_LEVEL: very 8 | SPECIAL_TYPE: charm 9 | -------------------------------------------------------------------------------- /yaml/k8s-2-App-setup/2-configMap/configmap-vol-pod.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Pod 3 | metadata: 4 | name: configmap-vol-pod 5 | spec: 6 | containers: 7 | - name: configmap-container 8 | image: metamagic/podshelltomcat:9 9 | volumeMounts: 10 | - name: config-volume 11 | mountPath: /home/podadmin 12 | volumes: 13 | - name: config-volume 14 | configMap: 15 | # Provide the name of the ConfigMap containing the files you want 16 | # to add to the container 17 | name: special-config 18 | restartPolicy: Never 19 | -------------------------------------------------------------------------------- /yaml/k8s-2-App-setup/2-configMap/configmaptest-pod.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Pod 3 | metadata: 4 | name: configmaptest-pod 5 | spec: 6 | containers: 7 | - name: test-container 8 | image: busybox 9 | command: [ "/bin/sh", "-c", "env" ] 10 | envFrom: 11 | - configMapRef: 12 | name: special-config 13 | restartPolicy: Never 14 | -------------------------------------------------------------------------------- /yaml/k8s-2-App-setup/4-secrets/README.md: -------------------------------------------------------------------------------- 1 | # Secrets 2 | Objects of type secret are intended to hold sensitive information, such as passwords, OAuth tokens, and ssh keys. Putting this information in a secret is safer and more flexible than putting it verbatim in a pod definition or in a docker image. 3 | 4 | ## Create secret file 5 | ``` 6 | kubectl create -f https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/master/yaml/secrets/productreview-secret.yaml 7 | ``` 8 | 9 | Above exectiong will set secret key with name as "secretkey", which can be access in deployment using enviorment. 10 | 11 | ## Execute below deployment and service 12 | 13 | ``` 14 | kubectl create -f https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/master/yaml/secrets/productreview-deployment.yaml 15 | kubectl create -f https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/master/yaml/secrets/productreview-service.yaml 16 | ``` 17 | 18 | -------------------------------------------------------------------------------- /yaml/k8s-2-App-setup/4-secrets/productreview-secret.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Secret 3 | metadata: 4 | name: productreviewmssecret 5 | namespace: shoppingportal 6 | type: Opaque 7 | data: 8 | secretkey: cm9vdA== 9 | -------------------------------------------------------------------------------- /yaml/k8s-2-App-setup/4-secrets/productreview-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: productreviewservice 5 | namespace: shoppingportal 6 | spec: 7 | type: NodePort 8 | selector: 9 | name: productreview 10 | ports: 11 | - protocol: TCP 12 | targetPort: 8082 13 | port: 80 14 | name: http -------------------------------------------------------------------------------- /yaml/k8s-2-App-setup/4-secrets/secrets_stringdata.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Secret 3 | metadata: 4 | name: Example-secret 5 | type: Opaque 6 | data: 7 | username: YWRtaW4= 8 | stringData: 9 | username: administrator 10 | -------------------------------------------------------------------------------- /yaml/k8s-3-Networking/1-network-policy/01-policy-demo-ns.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Namespace 3 | metadata: 4 | name: policy-demo -------------------------------------------------------------------------------- /yaml/k8s-3-Networking/1-network-policy/02-networking-ns.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Namespace 3 | metadata: 4 | name: networking -------------------------------------------------------------------------------- /yaml/k8s-3-Networking/1-network-policy/03-web-pod.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Pod 3 | metadata: 4 | name: web 5 | namespace: networking 6 | labels: 7 | name: web 8 | spec: 9 | containers: 10 | - name: web 11 | image: nginx 12 | imagePullPolicy: IfNotPresent 13 | -------------------------------------------------------------------------------- /yaml/k8s-3-Networking/1-network-policy/04-web-svc-networking.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: web 5 | namespace: networking 6 | spec: 7 | selector: 8 | name: web 9 | ports: 10 | - protocol: TCP 11 | targetPort: 80 12 | port: 80 13 | name: http 14 | -------------------------------------------------------------------------------- /yaml/k8s-3-Networking/1-network-policy/05-prod-pod.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Pod 3 | metadata: 4 | name: prod 5 | namespace: networking 6 | labels: 7 | zone: prod 8 | name: prod-app 9 | spec: 10 | containers: 11 | - name: prod 12 | image: metamagic/oshell 13 | imagePullPolicy: IfNotPresent 14 | -------------------------------------------------------------------------------- /yaml/k8s-3-Networking/1-network-policy/06-prod-ntw-svc.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: prod 5 | namespace: networking 6 | spec: 7 | selector: 8 | zone: prod 9 | ports: 10 | - protocol: TCP 11 | targetPort: 80 12 | port: 80 13 | name: http -------------------------------------------------------------------------------- /yaml/k8s-3-Networking/1-network-policy/07-pod-np.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Pod 3 | metadata: 4 | name: nginx 5 | namespace: policy-demo 6 | labels: 7 | env: test 8 | spec: 9 | containers: 10 | - name: nginx 11 | image: nginx 12 | imagePullPolicy: IfNotPresent 13 | -------------------------------------------------------------------------------- /yaml/k8s-3-Networking/1-network-policy/08-prod-pd-pod.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Pod 3 | metadata: 4 | name: prod 5 | namespace: policy-demo 6 | labels: 7 | name: prod 8 | spec: 9 | containers: 10 | - name: prod 11 | image: metamagic/oshell 12 | imagePullPolicy: IfNotPresent 13 | -------------------------------------------------------------------------------- /yaml/k8s-3-Networking/1-network-policy/09-nginx-policydemo-svc.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: nginx 5 | namespace: policy-demo 6 | spec: 7 | selector: 8 | env: test 9 | ports: 10 | - protocol: TCP 11 | targetPort: 80 12 | port: 80 13 | name: http -------------------------------------------------------------------------------- /yaml/k8s-3-Networking/1-network-policy/10-prod-svc-policy-demo.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: prod 5 | namespace: policy-demo 6 | spec: 7 | selector: 8 | zone: prod 9 | ports: 10 | - protocol: TCP 11 | targetPort: 80 12 | port: 80 13 | name: http -------------------------------------------------------------------------------- /yaml/k8s-3-Networking/1-network-policy/11-hello-pod.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Pod 3 | metadata: 4 | name: hello-pod 5 | namespace: networking 6 | labels: 7 | app: hello 8 | zone: prod 9 | version: v1 10 | spec: 11 | containers: 12 | - name: hello-cntr 13 | image: metamagicglobal/hello:v1.0 14 | imagePullPolicy: IfNotPresent 15 | ports: 16 | - containerPort: 80 17 | -------------------------------------------------------------------------------- /yaml/k8s-3-Networking/1-network-policy/12-hello-svc.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: hello-svc 5 | namespace: networking 6 | labels: 7 | app: hello-svc 8 | spec: 9 | selector: 10 | app: hello 11 | ports: 12 | - port: 80 13 | targetPort: 80 14 | -------------------------------------------------------------------------------- /yaml/k8s-3-Networking/1-network-policy/13-hello-pod-pd.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Pod 3 | metadata: 4 | name: hello-pod 5 | namespace: policy-demo 6 | labels: 7 | app: hello 8 | zone: prod 9 | version: v1 10 | spec: 11 | containers: 12 | - name: hello-cntr 13 | image: metamagicglobal/hello:v1.0 14 | imagePullPolicy: IfNotPresent 15 | ports: 16 | - containerPort: 80 17 | -------------------------------------------------------------------------------- /yaml/k8s-3-Networking/1-network-policy/14-hello-svc-pd.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: hello-svc-pd 5 | namespace: policy-demo 6 | labels: 7 | app: hello-svc 8 | spec: 9 | selector: 10 | app: hello 11 | type: NodePort 12 | ports: 13 | - port: 80 14 | targetPort: 80 -------------------------------------------------------------------------------- /yaml/k8s-3-Networking/1-network-policy/20-web-deny-all.yaml: -------------------------------------------------------------------------------- 1 | kind: NetworkPolicy 2 | apiVersion: networking.k8s.io/v1 3 | metadata: 4 | name: web-deny-all 5 | namespace: networking 6 | spec: 7 | podSelector: 8 | matchLabels: 9 | name: web 10 | ingress: [] -------------------------------------------------------------------------------- /yaml/k8s-3-Networking/1-network-policy/21-web-allow-prod.yml: -------------------------------------------------------------------------------- 1 | kind: NetworkPolicy 2 | apiVersion: networking.k8s.io/v1 3 | metadata: 4 | name: web-allow-prod 5 | namespace: networking 6 | spec: 7 | podSelector: 8 | matchLabels: 9 | name: web 10 | ingress: 11 | - from: 12 | - podSelector: 13 | matchLabels: 14 | zone: prod 15 | -------------------------------------------------------------------------------- /yaml/k8s-3-Networking/1-network-policy/22-deny-from-other-namespaces.yaml: -------------------------------------------------------------------------------- 1 | kind: NetworkPolicy 2 | apiVersion: networking.k8s.io/v1 3 | metadata: 4 | namespace: networking 5 | name: deny-from-other-namespaces 6 | spec: 7 | podSelector: 8 | matchLabels: 9 | ingress: 10 | - from: 11 | - podSelector: {} -------------------------------------------------------------------------------- /yaml/k8s-3-Networking/1-network-policy/23-web-allow-from-all-ns.yml: -------------------------------------------------------------------------------- 1 | kind: NetworkPolicy 2 | apiVersion: networking.k8s.io/v1 3 | metadata: 4 | namespace: networking 5 | name: web-allow-all-namespaces 6 | spec: 7 | podSelector: 8 | matchLabels: 9 | name: web 10 | ingress: 11 | - from: 12 | - namespaceSelector: {} -------------------------------------------------------------------------------- /yaml/k8s-3-Networking/1-network-policy/24-allowall-ns.yml: -------------------------------------------------------------------------------- 1 | kind: NetworkPolicy 2 | apiVersion: networking.k8s.io/v1 3 | metadata: 4 | name: allow-svc-networking 5 | namespace: networking 6 | spec: 7 | podSelector: 8 | matchLabels: 9 | ingress: 10 | - from: 11 | - namespaceSelector: 12 | matchLabels: 13 | purpose: production 14 | 15 | ## note: kubectl label namespace/policy-demo purpose=production -------------------------------------------------------------------------------- /yaml/k8s-3-Networking/1-network-policy/allow-ns.policy.yml: -------------------------------------------------------------------------------- 1 | kind: NetworkPolicy 2 | apiVersion: networking.k8s.io/v1 3 | metadata: 4 | name: web-allow-prod 5 | spec: 6 | podSelector: 7 | matchLabels: 8 | app: web 9 | ingress: 10 | - from: 11 | - namespaceSelector: 12 | matchLabels: 13 | zone: prod 14 | -------------------------------------------------------------------------------- /yaml/k8s-3-Networking/1-network-policy/block-np.yml: -------------------------------------------------------------------------------- 1 | kind: NetworkPolicy 2 | apiVersion: networking.k8s.io/v1 3 | metadata: 4 | name: default-deny 5 | namespace: policy-demo 6 | spec: 7 | podSelector: 8 | matchLabels: {} -------------------------------------------------------------------------------- /yaml/k8s-3-Networking/1-network-policy/pod-np.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Pod 3 | metadata: 4 | name: nginx 5 | namespace: policy-demo 6 | labels: 7 | env: test 8 | spec: 9 | containers: 10 | - name: nginx 11 | image: nginx 12 | imagePullPolicy: IfNotPresent 13 | -------------------------------------------------------------------------------- /yaml/k8s-3-Networking/1-network-policy/policy-allow-pod.yml: -------------------------------------------------------------------------------- 1 | kind: NetworkPolicy 2 | apiVersion: networking.k8s.io/v1 3 | metadata: 4 | name: access-nginx 5 | namespace: policy-demo 6 | spec: 7 | podSelector: 8 | matchLabels: 9 | run: nginx 10 | ingress: 11 | - from: 12 | - podSelector: 13 | matchLabels: 14 | run: access -------------------------------------------------------------------------------- /yaml/k8s-3-Networking/2-cilium_demo/01-policy-demo-ns.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Namespace 3 | metadata: 4 | name: policy-demo -------------------------------------------------------------------------------- /yaml/k8s-3-Networking/2-cilium_demo/02-networking-ns.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Namespace 3 | metadata: 4 | name: networking -------------------------------------------------------------------------------- /yaml/k8s-3-Networking/2-cilium_demo/03-web-pod.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Pod 3 | metadata: 4 | name: web 5 | namespace: networking 6 | labels: 7 | name: web 8 | spec: 9 | containers: 10 | - name: web 11 | image: nginx 12 | imagePullPolicy: IfNotPresent 13 | -------------------------------------------------------------------------------- /yaml/k8s-3-Networking/2-cilium_demo/04-web-svc-networking.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: web 5 | namespace: networking 6 | spec: 7 | selector: 8 | name: web 9 | ports: 10 | - protocol: TCP 11 | targetPort: 80 12 | port: 80 13 | name: http 14 | -------------------------------------------------------------------------------- /yaml/k8s-3-Networking/2-cilium_demo/05-prod-pod.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Pod 3 | metadata: 4 | name: prod 5 | namespace: networking 6 | labels: 7 | zone: prod 8 | name: prod-app 9 | spec: 10 | containers: 11 | - name: prod 12 | image: metamagic/oshell 13 | imagePullPolicy: IfNotPresent 14 | -------------------------------------------------------------------------------- /yaml/k8s-3-Networking/2-cilium_demo/06-prod-ntw-svc.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: prod 5 | namespace: networking 6 | spec: 7 | selector: 8 | zone: prod 9 | ports: 10 | - protocol: TCP 11 | targetPort: 80 12 | port: 80 13 | name: http -------------------------------------------------------------------------------- /yaml/k8s-3-Networking/2-cilium_demo/07-pod-np.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Pod 3 | metadata: 4 | name: nginx 5 | namespace: policy-demo 6 | labels: 7 | env: test 8 | spec: 9 | containers: 10 | - name: nginx 11 | image: nginx 12 | imagePullPolicy: IfNotPresent 13 | -------------------------------------------------------------------------------- /yaml/k8s-3-Networking/2-cilium_demo/08-prod-pd-pod.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Pod 3 | metadata: 4 | name: prod 5 | namespace: policy-demo 6 | labels: 7 | name: prod 8 | spec: 9 | containers: 10 | - name: prod 11 | image: metamagic/oshell 12 | imagePullPolicy: IfNotPresent 13 | -------------------------------------------------------------------------------- /yaml/k8s-3-Networking/2-cilium_demo/09-nginx-policydemo-svc.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: nginx 5 | namespace: policy-demo 6 | spec: 7 | selector: 8 | env: test 9 | ports: 10 | - protocol: TCP 11 | targetPort: 80 12 | port: 80 13 | name: http -------------------------------------------------------------------------------- /yaml/k8s-3-Networking/2-cilium_demo/10-prod-svc-policy-demo.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: prod 5 | namespace: policy-demo 6 | spec: 7 | selector: 8 | zone: prod 9 | ports: 10 | - protocol: TCP 11 | targetPort: 80 12 | port: 80 13 | name: http -------------------------------------------------------------------------------- /yaml/k8s-3-Networking/2-cilium_demo/11-hello-pod.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Pod 3 | metadata: 4 | name: hello-pod 5 | namespace: networking 6 | labels: 7 | app: hello 8 | zone: prod 9 | version: v1 10 | spec: 11 | containers: 12 | - name: hello-cntr 13 | image: metamagicglobal/hello:v1.0 14 | imagePullPolicy: IfNotPresent 15 | ports: 16 | - containerPort: 80 17 | -------------------------------------------------------------------------------- /yaml/k8s-3-Networking/2-cilium_demo/12-hello-svc.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: hello-svc 5 | namespace: networking 6 | labels: 7 | app: hello-svc 8 | spec: 9 | selector: 10 | app: hello 11 | ports: 12 | - port: 80 13 | targetPort: 80 14 | -------------------------------------------------------------------------------- /yaml/k8s-3-Networking/2-cilium_demo/13-hello-pod-pd.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Pod 3 | metadata: 4 | name: hello-pod 5 | namespace: policy-demo 6 | labels: 7 | app: hello 8 | zone: prod 9 | version: v1 10 | spec: 11 | containers: 12 | - name: hello-cntr 13 | image: metamagicglobal/hello:v1.0 14 | imagePullPolicy: IfNotPresent 15 | ports: 16 | - containerPort: 80 17 | -------------------------------------------------------------------------------- /yaml/k8s-3-Networking/2-cilium_demo/14-hello-svc-pd.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: hello-svc-pd 5 | namespace: policy-demo 6 | labels: 7 | app: hello-svc 8 | spec: 9 | selector: 10 | app: hello 11 | type: NodePort 12 | ports: 13 | - port: 80 14 | targetPort: 80 -------------------------------------------------------------------------------- /yaml/k8s-3-Networking/2-cilium_demo/20-web-deny-all.yaml: -------------------------------------------------------------------------------- 1 | kind: NetworkPolicy 2 | apiVersion: networking.k8s.io/v1 3 | metadata: 4 | name: web-deny-all 5 | namespace: networking 6 | spec: 7 | podSelector: 8 | matchLabels: 9 | name: web 10 | ingress: [] -------------------------------------------------------------------------------- /yaml/k8s-3-Networking/2-cilium_demo/21-web-allow-prod.yml: -------------------------------------------------------------------------------- 1 | kind: NetworkPolicy 2 | apiVersion: networking.k8s.io/v1 3 | metadata: 4 | name: web-allow-prod 5 | namespace: networking 6 | spec: 7 | podSelector: 8 | matchLabels: 9 | name: web 10 | ingress: 11 | - from: 12 | - podSelector: 13 | matchLabels: 14 | zone: prod 15 | -------------------------------------------------------------------------------- /yaml/k8s-3-Networking/2-cilium_demo/22-deny-from-other-namespaces.yaml: -------------------------------------------------------------------------------- 1 | kind: NetworkPolicy 2 | apiVersion: networking.k8s.io/v1 3 | metadata: 4 | namespace: networking 5 | name: deny-from-other-namespaces 6 | spec: 7 | podSelector: 8 | matchLabels: 9 | ingress: 10 | - from: 11 | - podSelector: {} -------------------------------------------------------------------------------- /yaml/k8s-3-Networking/2-cilium_demo/23-web-allow-from-all-ns.yml: -------------------------------------------------------------------------------- 1 | kind: NetworkPolicy 2 | apiVersion: networking.k8s.io/v1 3 | metadata: 4 | namespace: networking 5 | name: web-allow-all-namespaces 6 | spec: 7 | podSelector: 8 | matchLabels: 9 | name: web 10 | ingress: 11 | - from: 12 | - namespaceSelector: {} -------------------------------------------------------------------------------- /yaml/k8s-3-Networking/2-cilium_demo/24-allowall-ns.yml: -------------------------------------------------------------------------------- 1 | kind: NetworkPolicy 2 | apiVersion: networking.k8s.io/v1 3 | metadata: 4 | name: allow-svc-networking 5 | namespace: networking 6 | spec: 7 | podSelector: 8 | matchLabels: 9 | ingress: 10 | - from: 11 | - namespaceSelector: 12 | matchLabels: 13 | purpose: production 14 | 15 | ## note: kubectl label namespace/policy-demo purpose=production -------------------------------------------------------------------------------- /yaml/k8s-3-Networking/2-cilium_demo/allow-2pod.yml: -------------------------------------------------------------------------------- 1 | apiVersion: networking.k8s.io/v1 2 | kind: NetworkPolicy 3 | metadata: 4 | name: podallow 5 | namespace: networking 6 | spec: 7 | podSelector: 8 | matchLabels: 9 | app: pod1 10 | ingress: 11 | - from: 12 | - podSelector: 13 | matchLabels: 14 | app: pod2 15 | policyTypes: 16 | - Ingress -------------------------------------------------------------------------------- /yaml/k8s-3-Networking/2-cilium_demo/block-np.yml: -------------------------------------------------------------------------------- 1 | kind: NetworkPolicy 2 | apiVersion: networking.k8s.io/v1 3 | metadata: 4 | name: default-deny 5 | namespace: policy-demo 6 | spec: 7 | podSelector: 8 | matchLabels: {} -------------------------------------------------------------------------------- /yaml/k8s-3-Networking/2-cilium_demo/cilium-product-productreview.yml: -------------------------------------------------------------------------------- 1 | apiVersion: cilium.io/v2 2 | kind: CiliumNetworkPolicy 3 | metadata: 4 | name: productreviews 5 | namespace: shoppingportal 6 | specs: 7 | - endpointSelector: 8 | matchLabels: 9 | zone: prod 10 | app: productreviewms 11 | ingress: 12 | - fromEndpoints: 13 | - matchLabels: 14 | zone: prod 15 | app: productms 16 | toPorts: 17 | - ports: 18 | - port: "80" 19 | protocol: TCP 20 | rules: 21 | http: 22 | - method: POST 23 | path: "/productreviewms/[0-9]*" 24 | -------------------------------------------------------------------------------- /yaml/k8s-3-Networking/2-cilium_demo/cilium_allow-within-namespace.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: "cilium.io/v2" 2 | kind: CiliumNetworkPolicy 3 | metadata: 4 | name: "allow-within-namespace" 5 | namespace: empire 6 | specs: 7 | - endpointSelector: 8 | matchLabels: {} 9 | egress: 10 | - toEndpoints: 11 | - matchLabels: 12 | "k8s:io.kubernetes.pod.namespace": empire 13 | ingress: 14 | - fromEndpoints: 15 | - matchLabels: 16 | "k8s:io.kubernetes.pod.namespace": empire -------------------------------------------------------------------------------- /yaml/k8s-3-Networking/2-cilium_demo/policy-allow-pod.yml: -------------------------------------------------------------------------------- 1 | kind: NetworkPolicy 2 | apiVersion: networking.k8s.io/v1 3 | metadata: 4 | name: access-nginx 5 | namespace: policy-demo 6 | spec: 7 | podSelector: 8 | matchLabels: 9 | run: nginx 10 | ingress: 11 | - from: 12 | - podSelector: 13 | matchLabels: 14 | run: access -------------------------------------------------------------------------------- /yaml/k8s-4-Advanced/Assigning Pods to Nodes/README.md: -------------------------------------------------------------------------------- 1 | scenario: If you want to attach pods to the specific node 2 | 3 | Step One: Attach label to the node 4 | commands: 5 | kubectl get nodes -----------------> to get the names of your cluster’s nodes. 6 | kubectl label nodes = --------------> Attach label to the node 7 | kubectl get nodes --show-labels ------------------------------> node now has a label 8 | 9 | Step two:Add a nodeSelector field to your pod configuration 10 | command: kubectl create -f pod-nginx-node.yml 11 | 12 | ADVANCE: 13 | pod-affinity --->https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ 14 | node-affinity---->https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ 15 | -------------------------------------------------------------------------------- /yaml/k8s-4-Advanced/Assigning Pods to Nodes/pod-nginx-node.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Pod 3 | metadata: 4 | name: nginx 5 | labels: 6 | env: test 7 | spec: 8 | containers: 9 | - name: nginx 10 | image: nginx 11 | imagePullPolicy: IfNotPresent 12 | nodeSelector: 13 | disktype: ssd 14 | -------------------------------------------------------------------------------- /yaml/k8s-4-Advanced/external-services/endpoints.yml: -------------------------------------------------------------------------------- 1 | kind: Endpoints 2 | apiVersion: v1 3 | metadata: 4 | name: mysql-without-container 5 | namespace: helloworld 6 | subsets: 7 | - addresses: 8 | - ip: 1.2.3.4 9 | ports: 10 | - port: 3306 11 | -------------------------------------------------------------------------------- /yaml/k8s-4-Advanced/external-services/ext-name-svc.yml: -------------------------------------------------------------------------------- 1 | kind: Service 2 | apiVersion: v1 3 | metadata: 4 | name: externalName-service 5 | namespace: helloworld 6 | spec: 7 | type: ExternalName 8 | externalName: my.database.desire3d.com -------------------------------------------------------------------------------- /yaml/k8s-4-Advanced/external-services/hello-without-selector-svc.yml: -------------------------------------------------------------------------------- 1 | kind: Service 2 | apiVersion: v1 3 | metadata: 4 | name: mysql-without-container 5 | namespace: helloworld 6 | spec: 7 | ports: 8 | - protocol: TCP 9 | port: 80 10 | targetPort: 3306 -------------------------------------------------------------------------------- /yaml/k8s-4-Advanced/jobs/README.md: -------------------------------------------------------------------------------- 1 | CRONJOB: 2 | print current time and then say hello. 3 | 4 | kubectl get jobs --watch -------> will Watch for the job to be created. 5 | kubectl get cronjob hello-----> status of job 6 | 7 | -------------------------------------------------------------------------------- /yaml/k8s-4-Advanced/jobs/cronjob.yml: -------------------------------------------------------------------------------- 1 | apiVersion: batch/v1beta1 2 | kind: CronJob 3 | metadata: 4 | name: hello 5 | spec: 6 | schedule: "*/1 * * * *" 7 | jobTemplate: 8 | spec: 9 | template: 10 | spec: 11 | containers: 12 | - name: hello 13 | image: busybox 14 | args: 15 | - /bin/sh 16 | - -c 17 | - date; echo Hello from the Kubernetes cluster 18 | restartPolicy: OnFailure 19 | -------------------------------------------------------------------------------- /yaml/k8s-4-Advanced/jobs/hellokubernetes-job.yml: -------------------------------------------------------------------------------- 1 | apiVersion: batch/v1 2 | kind: Job 3 | metadata: 4 | name: hellokubernetes 5 | spec: 6 | template: 7 | spec: 8 | containers: 9 | - name: hellokubernetes 10 | image: metamagic/podshell 11 | command: ["echo", "Hello Kubernetes!!!"] 12 | restartPolicy: Never 13 | -------------------------------------------------------------------------------- /yaml/k8s-4-Advanced/jobs/perl-job.yml: -------------------------------------------------------------------------------- 1 | apiVersion: batch/v1 2 | kind: Job 3 | metadata: 4 | name: pi 5 | spec: 6 | template: 7 | spec: 8 | containers: 9 | - name: pi 10 | image: perl 11 | command: ["perl","-Mbignum=bpi", "-wle","print bpi(2000)"] 12 | restartPolicy: Never 13 | backoffLimit: 4 14 | -------------------------------------------------------------------------------- /yaml/k8s-4-Advanced/liveness/README.md: -------------------------------------------------------------------------------- 1 | # Liveness 2 | 3 | The kubelet uses liveness probes to know when to restart a Container. For example, liveness probes could catch a deadlock, where an application is running, but unable to make progress. 4 | Restarting a Container in such a state can help to make the application more available despite bugs. 5 | 6 | ``` 7 | kubectl create -f https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/master/yaml/liveness/productreview-deployment.yaml 8 | kubectl create -f https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/master/yaml/liveness/productreview-service.yaml 9 | ``` 10 | 11 | In deployment we have added liveness, which hit HTTP request every 15 seconds. If this request fails consecutively pod is restarted 12 | -------------------------------------------------------------------------------- /yaml/k8s-4-Advanced/liveness/productreview-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: productreviewservice 5 | namespace: shoppingportal 6 | spec: 7 | type: NodePort 8 | selector: 9 | name: productreview 10 | ports: 11 | - protocol: TCP 12 | targetPort: 8082 13 | port: 80 14 | name: http -------------------------------------------------------------------------------- /yaml/k8s-4-Advanced/multipleport_services/hello-pod.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Pod 3 | metadata: 4 | name: hello-pod 5 | namespace: helloworld 6 | labels: 7 | app: hello 8 | zone: prod 9 | version: v1 10 | spec: 11 | containers: 12 | - name: hello-cntr 13 | image: metamagicglobal/hello:v1.0 14 | imagePullPolicy: IfNotPresent 15 | ports: 16 | - containerPort: 80 17 | -------------------------------------------------------------------------------- /yaml/k8s-4-Advanced/multipleport_services/multiport-svc.yml: -------------------------------------------------------------------------------- 1 | kind: Service 2 | apiVersion: v1 3 | metadata: 4 | name: hello-service 5 | namespace: helloworld 6 | spec: 7 | selector: 8 | app: hello 9 | ports: 10 | - name: http 11 | protocol: TCP 12 | port: 80 13 | targetPort: 80 14 | - name: https 15 | protocol: TCP 16 | port: 443 17 | targetPort: 443 -------------------------------------------------------------------------------- /yaml/k8s-4-Advanced/mysqlfiles/mysql-dep.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: mysql-dep 5 | namespace: shoppingportal 6 | spec: 7 | selector: 8 | matchLabels: 9 | app: mysql 10 | version: v1 11 | template: 12 | metadata: 13 | labels: 14 | app: mysql 15 | version: v1 16 | spec: 17 | containers: 18 | - image: docker.io/mysql 19 | name: mysql-cntr 20 | env: 21 | - name: MYSQL_ROOT_PASSWORD 22 | valueFrom: 23 | secretKeyRef: 24 | name: mysecret 25 | key: password 26 | ports: 27 | - containerPort: 3306 28 | volumeMounts: 29 | - name: mysql-persistent-storage 30 | mountPath: /var/lib/mysql/ 31 | volumes: 32 | - name: mysql-persistent-storage 33 | hostPath: 34 | path: /tmp/mysql/ 35 | 36 | -------------------------------------------------------------------------------- /yaml/k8s-4-Advanced/mysqlfiles/mysql-pv.yaml: -------------------------------------------------------------------------------- 1 | kind: PersistentVolume 2 | apiVersion: v1 3 | metadata: 4 | name: mysql-pv-volume 5 | namespace: shoppingportal 6 | labels: 7 | type: local 8 | spec: 9 | storageClassName: manual 10 | capacity: 11 | storage: 20Gi 12 | accessModes: 13 | - ReadWriteOnce 14 | hostPath: 15 | path: "/var/lib/mysql" 16 | -------------------------------------------------------------------------------- /yaml/k8s-4-Advanced/mysqlfiles/mysql-pvc.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: mysql-pv-claim 5 | namespace: shoppingportal 6 | spec: 7 | storageClassName: manual 8 | accessModes: 9 | - ReadWriteOnce 10 | resources: 11 | requests: 12 | storage: 2Mi 13 | -------------------------------------------------------------------------------- /yaml/k8s-4-Advanced/mysqlfiles/mysql-secret.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Secret 3 | metadata: 4 | name: mysecret 5 | namespace: shoppingportal 6 | type: Opaque 7 | data: 8 | password: cm9vdA== 9 | -------------------------------------------------------------------------------- /yaml/k8s-4-Advanced/mysqlfiles/mysql-svc.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: mysql 5 | namespace: shoppingportal 6 | spec: 7 | type: NodePort 8 | selector: 9 | app: mysql 10 | ports: 11 | - port: 3306 12 | targetPort: 3306 13 | protocol: TCP 14 | 15 | -------------------------------------------------------------------------------- /yaml/k8s-5-Volume/volume-Diagrams/K8s-Volume-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/yaml/k8s-5-Volume/volume-Diagrams/K8s-Volume-1.jpg -------------------------------------------------------------------------------- /yaml/k8s-5-Volume/volume-Diagrams/K8s-Volume-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/df65e3e4c0ff9a94ec72d226d5aaa5cbdf99838d/yaml/k8s-5-Volume/volume-Diagrams/K8s-Volume-2.jpg -------------------------------------------------------------------------------- /yaml/k8s-5-Volume/volume-aws/cleanup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | kubectl delete -f https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/master/yaml/volume-aws/v-aws-storage.yaml 3 | kubectl delete -f https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/master/yaml/volume-aws/v-aws-volume.yaml 4 | kubectl delete -f https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/master/yaml/volume-aws/v-aws-pvc.yaml 5 | kubectl delete -f https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/master/yaml/volume-aws/v-omega-dep.yaml 6 | kubectl delete -f https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/master/yaml/volume-aws/v-omega-ns.yaml 7 | 8 | -------------------------------------------------------------------------------- /yaml/k8s-5-Volume/volume-aws/create_static_volume.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | kubectl create -f https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/master/yaml/volume-aws/v-omega-ns.yaml 3 | kubectl create -f https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/master/yaml/volume-aws/v-aws-storage.yaml 4 | kubectl create -f https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/master/yaml/volume-aws/v-aws-volume.yaml 5 | kubectl create -f https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/master/yaml/volume-aws/v-aws-pvc.yaml 6 | kubectl create -f https://raw.githubusercontent.com/meta-magic/kubernetes_workshop/master/yaml/volume-aws/v-omega-dep.yaml 7 | kubectl get pv,pvc,sc,deploy,pods -n omega-aws 8 | -------------------------------------------------------------------------------- /yaml/k8s-5-Volume/volume-aws/v-aws-pvc-dynamic.yml: -------------------------------------------------------------------------------- 1 | kind: PersistentVolumeClaim 2 | apiVersion: v1 3 | metadata: 4 | name: omega-pvc-aws-dynamic 5 | namespace: omega-aws 6 | spec: 7 | storageClassName: omega-sc-aws-slow 8 | accessModes: 9 | - ReadWriteOnce 10 | resources: 11 | requests: 12 | storage: 4Gi 13 | -------------------------------------------------------------------------------- /yaml/k8s-5-Volume/volume-aws/v-aws-pvc.yaml: -------------------------------------------------------------------------------- 1 | kind: PersistentVolumeClaim 2 | apiVersion: v1 3 | metadata: 4 | name: omega-pvc-aws 5 | namespace: omega-aws 6 | spec: 7 | storageClassName: omega-sc-aws-slow 8 | accessModes: 9 | - ReadWriteMany 10 | resources: 11 | requests: 12 | storage: 2Gi 13 | -------------------------------------------------------------------------------- /yaml/k8s-5-Volume/volume-aws/v-aws-storage.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: storage.k8s.io/v1 2 | kind: StorageClass 3 | metadata: 4 | name: omega-sc-aws-slow 5 | provisioner: kubernetes.io/aws-ebs 6 | parameters: 7 | type: io1 8 | zone: us-east-1b 9 | iopsPerGB: "10" 10 | -------------------------------------------------------------------------------- /yaml/k8s-5-Volume/volume-aws/v-aws-volume.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolume 3 | metadata: 4 | name: omega-volume-aws 5 | labels: 6 | name: storage-aws 7 | spec: 8 | storageClassName: omega-sc-aws-slow 9 | capacity: 10 | storage: 30Gi 11 | accessModes: 12 | - ReadWriteMany 13 | awsElasticBlockStore: 14 | # Volume ID is auto generated by AWS 15 | # $ aws ec2 create-volume --size 100 16 | # Returns the volume ID 17 | # with volume size of 100 Gi 18 | volumeID: vol-06e25d93b3b4e3302 19 | fsType: ext4 20 | -------------------------------------------------------------------------------- /yaml/k8s-5-Volume/volume-aws/v-omega-ns.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Namespace 3 | metadata: 4 | name: omega-aws 5 | labels: 6 | name: omega-a 7 | -------------------------------------------------------------------------------- /yaml/k8s-5-Volume/volume-examples/nfs-pvc.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolumeClaim 3 | metadata: 4 | name: nfs-pvc 5 | spec: 6 | accessModes: 7 | - ReadWriteMany 8 | resources: 9 | requests: 10 | storage: 1Gi 11 | -------------------------------------------------------------------------------- /yaml/k8s-5-Volume/volume-examples/pod-volume.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolume 3 | metadata: 4 | name: nfs-pv 5 | spec: 6 | capacity: 7 | storage: 1Gi 8 | accessModes: 9 | - ReadWriteMany 10 | persistentVolumeReclaimPolicy: Retain 11 | nfs: 12 | path: /home/ubuntu/data-files 13 | server: x.x.x.x 14 | readOnly: false 15 | -------------------------------------------------------------------------------- /yaml/k8s-5-Volume/volume-local/cleanup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | kubectl delete sc omega-sc-local 3 | kubectl delete pv omega-volume-local 4 | kubectl delete pvc omega-pvc-local -n omega-local 5 | kubectl delete pvc omega-pvc-local-dynamic -n omega-local 6 | kubectl delete deploy omega-local-deploy -n omega-local 7 | kubectl delete deploy omega-local-deploy-dynamic -n omega-local 8 | kubectl get sc,pv,pvc,pods -n omega-local 9 | kubectl delete ns omega-local 10 | kubectl get ns 11 | -------------------------------------------------------------------------------- /yaml/k8s-5-Volume/volume-local/createLocalVolume.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | kubectl create -f v-local-omega-ns.yaml 3 | kubectl create -f v-local-storage.yaml 4 | kubectl create -f v-local-volume.yaml 5 | kubectl create -f v-local-pvc.yaml 6 | kubectl create -f v-local-pvc-dynamic.yaml 7 | kubectl create -f v-local-dep.yaml 8 | kubectl create -f v-local-dep-dynamic.yaml 9 | kubectl get sc,pv,pvc,pods -n omega-local 10 | -------------------------------------------------------------------------------- /yaml/k8s-5-Volume/volume-local/v-local-omega-ns.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Namespace 3 | metadata: 4 | name: omega-local 5 | labels: 6 | name: omega-l 7 | -------------------------------------------------------------------------------- /yaml/k8s-5-Volume/volume-local/v-local-pvc-dynamic.yaml: -------------------------------------------------------------------------------- 1 | kind: PersistentVolumeClaim 2 | apiVersion: v1 3 | metadata: 4 | name: omega-pvc-local-dynamic 5 | namespace: omega-local 6 | spec: 7 | storageClassName: omega-sc-local 8 | accessModes: 9 | - ReadWriteMany 10 | resources: 11 | requests: 12 | storage: 4Gi 13 | -------------------------------------------------------------------------------- /yaml/k8s-5-Volume/volume-local/v-local-pvc.yaml: -------------------------------------------------------------------------------- 1 | kind: PersistentVolumeClaim 2 | apiVersion: v1 3 | metadata: 4 | name: omega-pvc-local 5 | namespace: omega-local 6 | spec: 7 | storageClassName: omega-sc-local 8 | accessModes: 9 | - ReadWriteMany 10 | resources: 11 | requests: 12 | storage: 2Gi 13 | -------------------------------------------------------------------------------- /yaml/k8s-5-Volume/volume-local/v-local-storage.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: storage.k8s.io/v1 2 | kind: StorageClass 3 | metadata: 4 | name: omega-sc-local 5 | provisioner: k8s.io/minikube-hostpath 6 | volumeBindingMode: Immediate 7 | -------------------------------------------------------------------------------- /yaml/k8s-5-Volume/volume-local/v-local-volume.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolume 3 | metadata: 4 | name: omega-volume-local 5 | labels: 6 | name: storage-local 7 | spec: 8 | storageClassName: omega-sc-local 9 | capacity: 10 | storage: 10Gi 11 | volumeMode: Filesystem 12 | accessModes: 13 | - ReadWriteMany 14 | persistentVolumeReclaimPolicy: Retain 15 | hostPath: 16 | path: "/Users/arafkarsh/data/" 17 | -------------------------------------------------------------------------------- /yaml/k8s-5-Volume/volume-nfs-gcppd-scenarios/pv-nfs-rwx-1gb-disk.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolume 3 | metadata: 4 | name: pv-nfs-rwx-1gb-disk 5 | spec: 6 | capacity: 7 | storage: 1Gi 8 | accessModes: 9 | - ReadWriteMany 10 | # Filesystem or Block (v1.13) Default = Filesystem 11 | volumeMode: Filesystem 12 | nfs: 13 | server: nfs-server.default.svc.cluster.local 14 | path: "/" -------------------------------------------------------------------------------- /yaml/k8s-5-Volume/volume-nfs-gcppd-scenarios/pv-nfs-rwx-2gb-disk.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolume 3 | metadata: 4 | name: pv-nfs-rwx-2gb-disk 5 | spec: 6 | capacity: 7 | storage: 2Gi 8 | accessModes: 9 | - ReadWriteMany 10 | # Filesystem or Block (v1.13) Default = Filesystem 11 | volumeMode: Filesystem 12 | nfs: 13 | server: nfs-server.default.svc.cluster.local 14 | path: "/" -------------------------------------------------------------------------------- /yaml/k8s-5-Volume/volume-nfs-gcppd-scenarios/pv-nfs-rwx-3gb-disk.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolume 3 | metadata: 4 | name: pv-nfs-rwx-3gb-disk 5 | spec: 6 | capacity: 7 | storage: 3Gi 8 | accessModes: 9 | - ReadWriteMany 10 | # Filesystem or Block (v1.13) Default = Filesystem 11 | volumeMode: Filesystem 12 | nfs: 13 | server: nfs-server.default.svc.cluster.local 14 | path: "/" -------------------------------------------------------------------------------- /yaml/k8s-5-Volume/volume-nfs-gcppd-scenarios/pv-nfs-rwx-4gb-disk.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolume 3 | metadata: 4 | name: pv-nfs-rwx-4gb-disk 5 | spec: 6 | capacity: 7 | storage: 4Gi 8 | accessModes: 9 | - ReadWriteMany 10 | # Filesystem or Block (v1.13) Default = Filesystem 11 | volumeMode: Filesystem 12 | nfs: 13 | server: nfs-server.default.svc.cluster.local 14 | path: "/" -------------------------------------------------------------------------------- /yaml/k8s-5-Volume/volume-nfs-gcppd-scenarios/pvc-gce-pd-rwo-3gb-disk-tc1.yaml: -------------------------------------------------------------------------------- 1 | kind: PersistentVolumeClaim 2 | apiVersion: v1 3 | metadata: 4 | name: pvc-gce-pd-rwo-3gb-disk-tc1 5 | spec: 6 | storageClassName: "sc-gce-pd-disk-" 7 | accessModes: 8 | - ReadWriteOnce 9 | # Filesystem or Block (v1.13) Default = Filesystem 10 | volumeMode: Filesystem 11 | resources: 12 | requests: 13 | storage: 3Gi -------------------------------------------------------------------------------- /yaml/k8s-5-Volume/volume-nfs-gcppd-scenarios/pvc-nfs-rwx-1gb-disk.yaml: -------------------------------------------------------------------------------- 1 | kind: PersistentVolumeClaim 2 | apiVersion: v1 3 | metadata: 4 | name: pvc-nfs-rwx-1gb-disk 5 | spec: 6 | accessModes: 7 | - ReadWriteMany 8 | # Filesystem or Block (v1.13) Default = Filesystem 9 | volumeMode: Filesystem 10 | storageClassName: "" 11 | resources: 12 | requests: 13 | storage: 1Gi -------------------------------------------------------------------------------- /yaml/k8s-5-Volume/volume-nfs-gcppd-scenarios/pvc-nfs-rwx-2gb-disk.yaml: -------------------------------------------------------------------------------- 1 | kind: PersistentVolumeClaim 2 | apiVersion: v1 3 | metadata: 4 | name: pvc-nfs-rwx-2gb-disk 5 | spec: 6 | accessModes: 7 | - ReadWriteMany 8 | # Filesystem or Block (v1.13) Default = Filesystem 9 | volumeMode: Filesystem 10 | storageClassName: "" 11 | resources: 12 | requests: 13 | storage: 2Gi -------------------------------------------------------------------------------- /yaml/k8s-5-Volume/volume-nfs-gcppd-scenarios/pvc-nfs-rwx-3gb-disk.yaml: -------------------------------------------------------------------------------- 1 | kind: PersistentVolumeClaim 2 | apiVersion: v1 3 | metadata: 4 | name: pvc-nfs-rwx-3gb-disk 5 | spec: 6 | accessModes: 7 | - ReadWriteMany 8 | # Filesystem or Block (v1.13) Default = Filesystem 9 | volumeMode: Filesystem 10 | storageClassName: "" 11 | resources: 12 | requests: 13 | storage: 3Gi -------------------------------------------------------------------------------- /yaml/k8s-5-Volume/volume-nfs-gcppd-scenarios/pvc-nfs-rwx-4gb-disk.yaml: -------------------------------------------------------------------------------- 1 | kind: PersistentVolumeClaim 2 | apiVersion: v1 3 | metadata: 4 | name: pvc-nfs-rwx-4gb-disk 5 | spec: 6 | accessModes: 7 | - ReadWriteMany 8 | # Filesystem or Block (v1.13) Default = Filesystem 9 | volumeMode: Filesystem 10 | storageClassName: "" 11 | resources: 12 | requests: 13 | storage: 4Gi -------------------------------------------------------------------------------- /yaml/k8s-5-Volume/volume-nfs-gcppd-scenarios/sc-gce-pd-disk-tc1.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: storage.k8s.io/v1 2 | kind: StorageClass 3 | metadata: 4 | name: sc-gce-pd-disk-tc1 5 | provisioner: kubernetes.io/gce-pd 6 | parameters: 7 | type: pd-standard 8 | replication-type: none 9 | zone: us-central1-a -------------------------------------------------------------------------------- /yaml/k8s-5-Volume/volume-nfs-gcppd-scenarios/tc2-nfs-rom-pv.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolume 3 | metadata: 4 | name: pv-nfs-rox-5gb-disk 5 | spec: 6 | capacity: 7 | storage: 5Gi 8 | accessModes: 9 | - ReadOnlyMany 10 | # Filesystem or Block (v1.13) Default = Filesystem 11 | volumeMode: Filesystem 12 | nfs: 13 | server: nfs-server.default.svc.cluster.local 14 | path: "/" -------------------------------------------------------------------------------- /yaml/k8s-5-Volume/volume-nfs-gcppd-scenarios/tc2-nfs-rom-pvc-5gb.yaml: -------------------------------------------------------------------------------- 1 | kind: PersistentVolumeClaim 2 | apiVersion: v1 3 | metadata: 4 | name: pvc-nfs-rox-5gb-disk 5 | spec: 6 | accessModes: 7 | - ReadOnlyMany 8 | # Filesystem or Block (v1.13) Default = Filesystem 9 | volumeMode: Filesystem 10 | storageClassName: "" 11 | resources: 12 | requests: 13 | storage: 5Gi -------------------------------------------------------------------------------- /yaml/k8s-5-Volume/volume-nfs-gcppd-scenarios/tc2-nfs-rwm-pv.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolume 3 | metadata: 4 | name: pv-nfs-rwx-10gb-disk 5 | spec: 6 | capacity: 7 | storage: 10Gi 8 | accessModes: 9 | - ReadWriteMany 10 | # Filesystem or Block (v1.13) Default = Filesystem 11 | volumeMode: Filesystem 12 | nfs: 13 | server: nfs-server.default.svc.cluster.local 14 | path: "/" -------------------------------------------------------------------------------- /yaml/k8s-5-Volume/volume-nfs-gcppd-scenarios/tc2-nfs-rwm-pvc-10gb.yaml: -------------------------------------------------------------------------------- 1 | kind: PersistentVolumeClaim 2 | apiVersion: v1 3 | metadata: 4 | name: pvc-nfs-rwx-10gb-disk 5 | spec: 6 | accessModes: 7 | - ReadWriteMany 8 | # Filesystem or Block (v1.13) Default = Filesystem 9 | volumeMode: Filesystem 10 | storageClassName: "" 11 | resources: 12 | requests: 13 | storage: 10Gi -------------------------------------------------------------------------------- /yaml/k8s-5-Volume/volume-nfs-gcppd-scenarios/tc3-gce-pd-rwo-pvc-3gb.yaml: -------------------------------------------------------------------------------- 1 | kind: PersistentVolumeClaim 2 | apiVersion: v1 3 | metadata: 4 | name: pvc-gce-pd-rwo-3gb-disk 5 | spec: 6 | storageClassName: "sc-gce-pd-disk" 7 | accessModes: 8 | - ReadWriteOnce 9 | # Filesystem or Block (v1.13) Default = Filesystem 10 | volumeMode: Filesystem 11 | resources: 12 | requests: 13 | storage: 3Gi -------------------------------------------------------------------------------- /yaml/k8s-5-Volume/volume-nfs-gcppd-scenarios/tc3-gce-pd-rwo-sc.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: storage.k8s.io/v1 2 | kind: StorageClass 3 | metadata: 4 | name: sc-gce-pd-disk 5 | provisioner: kubernetes.io/gce-pd 6 | parameters: 7 | type: pd-standard 8 | replication-type: none 9 | zone: us-central1-a -------------------------------------------------------------------------------- /yaml/k8s-5-Volume/volume-nfs-gcppd-scenarios/tc4-nfs-rwm-pv.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolume 3 | metadata: 4 | name: pv-nfs-rwm-3gb-disk 5 | spec: 6 | capacity: 7 | storage: 3Gi 8 | # Filesystem or Block (v1.13) Default = Filesystem 9 | volumeMode: Filesystem 10 | accessModes: 11 | - ReadWriteMany 12 | nfs: 13 | server: nfs-server.default.svc.cluster.local 14 | path: "/" -------------------------------------------------------------------------------- /yaml/k8s-5-Volume/volume-nfs-gcppd-scenarios/tc4-nfs-rwm-pvc-3gb.yaml: -------------------------------------------------------------------------------- 1 | kind: PersistentVolumeClaim 2 | apiVersion: v1 3 | metadata: 4 | name: pvc-nfs-rwm-3gb-disk 5 | spec: 6 | storageClassName: "" 7 | accessModes: 8 | - ReadWriteMany 9 | # Filesystem or Block (v1.13) Default = Filesystem 10 | volumeMode: Filesystem 11 | resources: 12 | requests: 13 | storage: 3Gi -------------------------------------------------------------------------------- /yaml/k8s-5-Volume/volume-nfs-setup/001-nfs-server.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: extensions/v1beta1 2 | kind: Deployment 3 | metadata: 4 | name: nfs-server 5 | spec: 6 | replicas: 1 7 | selector: 8 | matchLabels: 9 | role: nfs-server 10 | template: 11 | metadata: 12 | labels: 13 | role: nfs-server 14 | spec: 15 | containers: 16 | - name: nfs-server 17 | image: gcr.io/google_containers/volume-nfs:0.8 18 | ports: 19 | - name: nfs 20 | containerPort: 2049 21 | - name: mountd 22 | containerPort: 20048 23 | - name: rpcbind 24 | containerPort: 111 25 | securityContext: 26 | privileged: true 27 | volumeMounts: 28 | - mountPath: /exports 29 | name: mypvc 30 | volumes: 31 | - name: mypvc 32 | gcePersistentDisk: 33 | pdName: my-data-disk 34 | fsType: ext4 -------------------------------------------------------------------------------- /yaml/k8s-5-Volume/volume-nfs-setup/002-nfs-server-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: nfs-server 5 | spec: 6 | # clusterIP: 10.3.240.20 7 | ports: 8 | - name: nfs 9 | port: 2049 10 | - name: mountd 11 | port: 20048 12 | - name: rpcbind 13 | port: 111 14 | selector: 15 | role: nfs-server -------------------------------------------------------------------------------- /yaml/k8s-5-Volume/volume-nfs/efs-ns.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Namespace 3 | metadata: 4 | name: omega-efs 5 | labels: 6 | name: omega-efs 7 | -------------------------------------------------------------------------------- /yaml/k8s-5-Volume/volume-nfs/v-efs-pvc.yml: -------------------------------------------------------------------------------- 1 | kind: PersistentVolumeClaim 2 | apiVersion: v1 3 | metadata: 4 | name: efs 5 | namespace: omega-efs 6 | annotations: 7 | volume.beta.kubernetes.io/storage-class: "aws-efs" 8 | spec: 9 | accessModes: 10 | - ReadWriteMany 11 | resources: 12 | requests: 13 | storage: 10Gi -------------------------------------------------------------------------------- /yaml/k8s-5-Volume/volume-nfs/v-efs-volume.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolume 3 | metadata: 4 | name: efs 5 | labels: 6 | name: efs-aws 7 | spec: 8 | storageClassName: aws-efs 9 | capacity: 10 | storage: 30Gi 11 | accessModes: 12 | - ReadWriteMany 13 | nfs: 14 | server: fs-6efa3c24.efs.us-east-1.amazonaws.com 15 | path: / -------------------------------------------------------------------------------- /yaml/k8s-5-Volume/volume_with_storage/pvc-gke.yml: -------------------------------------------------------------------------------- 1 | kind: PersistentVolumeClaim 2 | apiVersion: v1 3 | metadata: 4 | name: app-pv-claim 5 | namespace: desire3d 6 | spec: 7 | storageClassName: volume-storage 8 | accessModes: 9 | - ReadWriteOnce 10 | resources: 11 | requests: 12 | storage: 30Gi 13 | -------------------------------------------------------------------------------- /yaml/k8s-5-Volume/volume_with_storage/storage-gke.yml: -------------------------------------------------------------------------------- 1 | apiVersion: storage.k8s.io/v1 2 | kind: StorageClass 3 | metadata: 4 | name: volume-storage 5 | namespace: desire3d 6 | provisioner: kubernetes.io/gce-pd 7 | parameters: 8 | type: pd-standard 9 | replication-type: none 10 | zone: us-east1-b 11 | -------------------------------------------------------------------------------- /yaml/k8s-6-helm_charts/cluster-role-binding-tiller.yml: -------------------------------------------------------------------------------- 1 | apiVersion: rbac.authorization.k8s.io/v1beta1 2 | kind: ClusterRoleBinding 3 | metadata: 4 | name: tiller 5 | roleRef: 6 | apiGroup: rbac.authorization.k8s.io 7 | kind: ClusterRole 8 | name: cluster-admin 9 | subjects: 10 | - kind: ServiceAccount 11 | name: tiller 12 | namespace: kube-system 13 | -------------------------------------------------------------------------------- /yaml/k8s-6-helm_charts/sa-tiller.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ServiceAccount 3 | metadata: 4 | name: tiller 5 | namespace: kube-system 6 | -------------------------------------------------------------------------------- /yaml/k8s-7-rbac/dep.yml: -------------------------------------------------------------------------------- 1 | apiVersion: extensions/v1beta1 2 | kind: Deployment 3 | metadata: 4 | name: nginx-deployment 5 | namespace: helloworld 6 | labels: 7 | app: nginx 8 | spec: 9 | replicas: 1 10 | template: 11 | metadata: 12 | labels: 13 | app: nginx 14 | spec: 15 | serviceAccountName: helloworld-sa 16 | containers: 17 | - name: nginx 18 | image: nginx:1.13 19 | ports: 20 | - containerPort: 80 -------------------------------------------------------------------------------- /yaml/k8s-7-rbac/hello-ns.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Namespace 3 | metadata: 4 | name: helloworld 5 | -------------------------------------------------------------------------------- /yaml/k8s-7-rbac/hello-svc.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: hello-svc 5 | namespace: helloworld 6 | spec: 7 | selector: 8 | app: nginx 9 | ports: 10 | - port: 80 11 | targetPort: 80 12 | -------------------------------------------------------------------------------- /yaml/k8s-7-rbac/helloworld-sa.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ServiceAccount 3 | metadata: 4 | name: helloworld-sa 5 | namespace: helloworld -------------------------------------------------------------------------------- /yaml/k8s-7-rbac/rbac-helloworld.yml: -------------------------------------------------------------------------------- 1 | apiVersion: rbac.authorization.k8s.io/v1 2 | kind: RoleBinding 3 | metadata: 4 | name: rb-helloworld 5 | namespace: helloworld 6 | subjects: 7 | - kind: ServiceAccount 8 | name: helloworld-sa 9 | roleRef: 10 | kind: Role 11 | name: r-helloworld 12 | apiGroup: rbac.authorization.k8s.io -------------------------------------------------------------------------------- /yaml/k8s-7-rbac/role-helloworld.yml: -------------------------------------------------------------------------------- 1 | kind: Role 2 | apiVersion: rbac.authorization.k8s.io/v1 3 | metadata: 4 | name: r-helloworld 5 | namespace: helloworld 6 | rules: 7 | - apiGroups: 8 | - "" 9 | resources: 10 | - pods 11 | - deployments 12 | verbs: 13 | - get 14 | - list 15 | - watch -------------------------------------------------------------------------------- /yaml/k8s-7-rbac/role-svc-helloworld: -------------------------------------------------------------------------------- 1 | kind: Role 2 | apiVersion: rbac.authorization.k8s.io/v1 3 | metadata: 4 | name: r-helloworld 5 | namespace: helloworld 6 | rules: 7 | - apiGroups: 8 | - "" 9 | resources: 10 | - pods 11 | - deployments 12 | - services 13 | verbs: 14 | - get 15 | - list 16 | - watch --------------------------------------------------------------------------------