Git Product home page Git Product logo

modern_app_jumpstart_workshop's Introduction

Modern Applications Jumpstart Workshop

This repository contains the content for the F5 Modern Applications Jumpstart Workshop.

Lab Documentation

Support

For support, please open a GitHub issue. Note, the code in this repository is community supported and is not supported by F5 Networks. For a complete list of supported projects please reference SUPPORT.md.

Community Code of Conduct

Please refer to the F5 DevCentral Community Code of Conduct.

License

Apache License 2.0

Copyright

Copyright 2014-2022 F5 Networks Inc.

F5 Networks Contributor License Agreement

Before you start contributing to any project sponsored by F5 Networks, Inc. (F5) on GitHub, you will need to sign a Contributor License Agreement (CLA).

If you are signing as an individual, we recommend that you talk to your employer (if applicable) before signing the CLA since some employment agreements may have restrictions on your contributions to other projects. Otherwise by submitting a CLA you represent that you are legally entitled to grant the licenses recited therein.

If your employer has rights to intellectual property that you create, such as your contributions, you represent that you have received permission to make contributions on behalf of that employer, that your employer has waived such rights for your contributions, or that your employer has executed a separate CLA with F5.

If you are signing on behalf of a company, you represent that you are legally entitled to grant the license recited therein. You represent further that each employee of the entity that submits contributions is authorized to submit such contributions on behalf of the entity pursuant to the CLA.

modern_app_jumpstart_workshop's People

Contributors

aknot242 avatar boreal321 avatar codygreen avatar glenwillms avatar jmcalalang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

modern_app_jumpstart_workshop's Issues

Brewz Access Method Returning 404

The Brewz Access Method is returning a 404 not found.

k describe pod nginx-plus-ingress-nginx-ingress-755dccf9b5-wctkt -n nginx-ingress
Name:         nginx-plus-ingress-nginx-ingress-755dccf9b5-wctkt
Namespace:    nginx-ingress
Priority:     0
Node:         k3s/10.1.1.5
Start Time:   Wed, 06 Jul 2022 21:15:20 -0500
Labels:       app=nginx-plus-ingress-nginx-ingress
              pod-template-hash=755dccf9b5
Annotations:  prometheus.io/port: 9113
              prometheus.io/scheme: http
              prometheus.io/scrape: true
Status:       Running
IP:           10.42.0.13
IPs:
  IP:           10.42.0.13
Controlled By:  ReplicaSet/nginx-plus-ingress-nginx-ingress-755dccf9b5
Containers:
  nginx-plus-ingress-nginx-ingress:
    Container ID:  containerd://aadd973ed77bc866aba5d492d7193267d75c0a97298e5064239b346e520d498e
    Image:         ghcr.io/codygreen/nginx-plus-ingress:2.2.2-SNAPSHOT-a88b7fe
    Image ID:      ghcr.io/codygreen/nginx-plus-ingress@sha256:af2db8b7fa32a2b021ea6e2a453bca4c05f6a1897dd1c3c82fbee42d9a49c0b8
    Ports:         80/TCP, 443/TCP, 9113/TCP, 8081/TCP
    Host Ports:    0/TCP, 0/TCP, 0/TCP, 0/TCP
    Args:
      -nginx-plus=true
      -nginx-reload-timeout=60000
      -enable-app-protect=true
      -enable-app-protect-dos=true
      -app-protect-dos-debug=false
      -app-protect-dos-max-daemons=0
      -app-protect-dos-max-workers=0
      -app-protect-dos-memory=0
      -nginx-configmaps=$(POD_NAMESPACE)/nginx-plus-ingress-nginx-ingress
      -default-server-tls-secret=$(POD_NAMESPACE)/nginx-plus-ingress-nginx-ingress-default-server-tls
      -ingress-class=nginx
      -health-status=false
      -health-status-uri=/nginx-health
      -nginx-debug=false
      -v=1
      -nginx-status=true
      -nginx-status-port=9000
      -nginx-status-allow-cidrs=0.0.0.0/0
      -report-ingress-status
      -external-service=nginx-plus-ingress-nginx-ingress
      -enable-leader-election=true
      -leader-election-lock-name=nginx-plus-ingress-nginx-ingress-leader-election
      -enable-prometheus-metrics=true
      -prometheus-metrics-listen-port=9113
      -prometheus-tls-secret=
      -enable-custom-resources=true
      -enable-snippets=true
      -enable-tls-passthrough=false
      -enable-preview-policies=false
      -enable-cert-manager=false
      -enable-oidc=false
      -ready-status=true
      -ready-status-port=8081
      -enable-latency-metrics=false
    State:          Running
      Started:      Wed, 06 Jul 2022 21:15:35 -0500
    Ready:          True
    Restart Count:  0
    Readiness:      http-get http://:readiness-port/nginx-ready delay=0s timeout=1s period=1s #success=1 #failure=3
    Environment:
      POD_NAMESPACE:  nginx-ingress (v1:metadata.namespace)
      POD_NAME:       nginx-plus-ingress-nginx-ingress-755dccf9b5-wctkt (v1:metadata.name)
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-t7rvl (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             True 
  ContainersReady   True 
  PodScheduled      True 
Volumes:
  kube-api-access-t7rvl:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   BestEffort
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:                      <none>

Rate limiting seems to be triggering too soon

Rate limiting seems to be stepping in much earlier than the configured setting. Is it aggregating counts from all the /location blocks, or just the location block it is applied to?

add ab as a lab requirement

ab is used to test API rate-limiting, we need to either:

  • tell user to install on their laptop
  • add to K3s server and tell the user to use the web shell to execute the ab command

updated YAML block in documentation when configuring a dark mode option

In step 3 of the documentation, the step for editing the virtual-server.yaml file says that the routes section of the file "should look like this"

     - path: /
       matches:
         - conditions:
           - cookie: "app_version"
             value: "dark"
           action:
             pass: spa-dark

I believe it should say that we are updating one part of the routes section, and that the yaml block for the path of / should look like this:

    - path: /
      action:
        pass: spa
      matches:
        - conditions:
          - cookie: "app_version"
            value: "dark"
          action:
            pass: spa-dark

thanks!

Add Export to KUBECONF

users need to understand that they have to export the KUBECONFIG variable in their shell.

cUrl commands in WAF lab fail in VMs

User reported that the cUrl commands in the WAF lab require the -k option to bypass authentication of the UDF proxy.

This may be isolated to a specific scenario. Monitor and see if others are running into it.

documentation suggestions: don't accidentally commit your kubeconfig file

Instructions for generating the local kubeconfig don't specify where you should save your kubeconfig file.

It's likely someone will accidentally commit their kubeconfig file if they put it in the directory of the repo and then commit all changes.

  • can we remind people to NOT commit their kubeconfig file? Probably best to put that note along where the instructions tell you to commit your changes.
  • also, could we get an example of exporting the KUBECONFIG env var? Might help folks based on class questions today.

thanks!!

Deploy Day-3 Infrastructure via Argo CD

Change the lab so the student deploys NGINX-Ingress, Grafana, and Prometheus via Argo CD using manifests that drive Helm deployments.

We also need Argo CD to update the deployment once a modification to the underlying helm chart is committed in the student's repo.

Day-3 NAP Lab

Extract OpenAPI Spec from the existing application and build a base NAP configuration to protect the Brewz application.

Kubeconfig generation is no longer running correctly

Errors from syslog:

Jul 2 15:29:02 k3s udf-setup.sh[818]: The connection to the server 10.1.1.5:6443 was refused - did you specify the right host or port?
Jul 2 15:29:02 k3s udf-setup.sh[751]: waiting for kube api to be up...
Jul 2 15:29:12 k3s udf-setup.sh[1217]: No resources found in default namespace.
Jul 2 15:29:13 k3s udf-setup.sh[1311]: Error from server (NotFound): serviceaccounts "udf-sa" not found
Jul 2 15:40:48 k3s udf-setup.sh[8047]: fatal: not a git repository (or any of the parent directories): .git
Jul 2 15:40:48 k3s udf-setup.sh[8049]: fatal: not a git repository (or any of the parent directories): .git
Jul 2 15:40:48 k3s udf-setup.sh[8056]: Failed to print the table: Broken pipe
Jul 2 15:40:50 k3s udf-setup.sh[8074]: No resources found in default namespace.

Readiness probe fails when installing NIC for ingress lab

                         node.kubernetes.io/unreachable:NoExecute op=Exists for 300s

Events:
Type Reason Age From Message


Normal Scheduled 14m default-scheduler Successfully assigned nginx-ingress/nginx-plus-ingress-nginx-ingress-cb8f8d56f-f4bxp to k3s
Normal Pulling 14m kubelet Pulling image "ghcr.io/aknot242/nginx-plus-ingress:2.3.0-SNAPSHOT-979db22"
Normal Pulled 14m kubelet Successfully pulled image "ghcr.io/aknot242/nginx-plus-ingress:2.3.0-SNAPSHOT-979db22" in 15.826648273s
Normal Created 14m kubelet Created container nginx-plus-ingress-nginx-ingress
Normal Started 14m kubelet Started container nginx-plus-ingress-nginx-ingress
Warning Unhealthy 14m (x2 over 14m) kubelet Readiness probe failed: Get "http://10.42.0.13:8081/nginx-ready": dial tcp 10.42.0.13:8081: connect: connection refused

UDF blueprint reference in docs

Include a link to the UDF blueprint to use in the documentation so that a user can start from the blueprint or the documentation.

split single complex step into discrete steps

https://f5devcentral.github.io/modern_app_jumpstart_workshop/ingress/install_nic.html

The final step in the Update Helm values and Argo CD application manifest includes multiple actions and may result in errors if someone skims it. (I did).

In place of

  • Save the file. Stage both changed files, and commit them to your local infra repository. Push the changes to your remote infra repository.

Please consider

  • Save the file.
  • Stage both changed files, and commit them to your local infra repository.
  • Push the changes to your remote infra repository.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.